10.9 preview r5766 - Label and Marker Updates

Archived development update discussion from past versions
Archived development updates.
Locked
Nicholas
Posts: 13170

Post by Nicholas »

SYNTHESIA 10.9.5766
Download from the pink box above.

CHANGES SINCE r5686
  • Synthesia for PC now requires a 64-bit version of Windows.
  • Lots of improvements to key labels and markers (see below).
  • Settings → Advanced → Zero Volume Key Lights: sends a "channel volume 0" message to key light channels (so you won't faintly hear them anymore).
  • Settings → Advanced → Reduce Motion: defaults to your OS's equivalent setting and prevents things like the new marker bounce effect and the title text slide-in at the start of a song. This will be expanded to include more things over time.
  • The mouse cursor now auto-hides after a few seconds of no movement. (Disable via Settings → Gameplay → Auto-Hide Mouse Cursor.)
  • BASSMIDI has been updated to the latest version, which now supports loading SF3 SoundFont files.
  • Non-MusicXML files with a .xml extension should no longer appear in the song list.
  • Adjust "Midi.A4TuningStandardHz" advanced setting to finely control the A4 tuning pitch. This causes Synthesia to send out MIDI Registered Parameter (or RPN) messages that many digital keyboards respond to.
  • About 10 other small fixes. See the readme for the complete list.


New Marker Animation



There is now a subtle scale "bounce" when a key marker is first shown. You'll also notice that labels and markers are now overlapping (and when they appear together, the label's color is inverted to increase the contrast).

This is one of those intangible "it makes it feel more fun" things. If you prefer, the animation can be disabled via Settings → Advanced → Reduce Motion.


Labels Remain Visible



You guys have been asking (for years!) for labels that remain visible while the keyboard is mostly tucked away. This was more work than you'd probably expect, but now the white key labels automatically get narrower so they fit on the little key isthmus, alongside the black key labels. This was the main reason for combining labels and markers: so they could appear simultaneously when the keyboard is nearly completely hidden.


Label Scaling



It's hard to make everyone happy with how close the labels get to the bounding boxes of the keys/notes, so now everyone can tweak it to their own preference. :)



One of several invisible changes this time around is a great efficiency increase in the label drawing system. I mentioned it last month, but when labels are enabled Synthesia now asks the operating system for memory something on the order of a quarter million fewer times per second than it did before. There's still a long way to go in this area, but this was Synthesia's most egregious abuse of our modern, handheld supercomputers. I could probably pitch this as a slight battery life increase for tablet users, but really I did it because knowing it was there made my brain itch. :lol:

Again, 10.9 isn't very focused but it should end up being a nice bag of quality of life updates while we continue our inexorable march toward Synthesia 11. Coming next: a quick Free Play recording polishing pass. Step one is to get the pedal recorded, too.
Bavi_H
Posts: 124

Post by Bavi_H »

I'm trying out the new preview (preview-10.9.5766 on my Windows 8.1 PC) and noticed the following:

In the Free Play mode, a key signature display "C major" now appears just above the left side of the keyboard. There's no apparent way to change the key or turn off this display.

Is this intended as part of some new feature? (Perhaps to change the key for Free Play mode key labels and note labels when using movable-do or scale numbers?)

If this is intended, can you add a way to change the key, and a way to hide the key signature display?

___
(And also, from the readme.html file: "Synthesia 10.9 — SOMETHING SOMETHING"... I guess that's what you'd call a "technical term." :) )
Nicholas
Posts: 13170

Post by Nicholas »

Bavi_H wrote: 05-17-22 3:09 pmIn the Free Play mode, a key signature display "C major" now appears just above the left side of the keyboard.
Hmm, I don't remember this being a deliberate change. Although, those (and the other margin) labels were semi-connected to the same caching system as the key/note labels. I broke that system in two during the key/note label revamp, so I am very willing to admit it may have been something I overlooked. :lol:

I wanted to use the excuse that the upcoming Free Play feature pass in the next preview was finally going to allow changing the key signature, but I just checked the list and that's not on it. :anxious:

... maybe I should add it? People have been asking for a way to affect the key/note labels on that screen or even do cooler things with the chord names. Those items were already part of the list, just a lot farther down (around line 580). So bumping them up wouldn't technically be adding new lines!
Bavi_H wrote: 05-17-22 3:09 pm(And also, from the readme.html file: "Synthesia 10.9 — SOMETHING SOMETHING"... I guess that's what you'd call a "technical term." :) )
That's a little looser than I usually play it, but man, I'm having a hard time giving this release a title. There is nothing cohesive about the eventual final feature list. We're going to end up with something like "Synthesia 10.9 — Variety Hour". hehe.



EDIT: Something I didn't highlight above is the new art for the segment button. I think this was the very last of the old-style controls:

SegmentButton.png
SegmentButton.png (7.53 KiB) Viewed 34173 times
Bavi_H
Posts: 124

Post by Bavi_H »

Nicholas wrote: 05-17-22 10:46 amAdjust "Midi.A4TuningStandardHz" advanced setting to finely control the A4 tuning pitch. This causes Synthesia to send out MIDI Registered Parameter (or RPN) messages that many digital keyboards respond to.
Did I tell you I am a MIDI nerd? It looks like you are using the tuning RPN incorrectly.

You are incorrectly using Registered Parameter Number 2 Channel Coarse Tuning as if both the Data Entry MSB and LSB values are used. You are incorrectly treating Data Entry MSB and LSB values of decimal 0 0 to 64 0 to 127 127 as representing -163.84 to 0 to +163.83 -81.92 to 0 to +81.91 semitones offset from A440 tuning. You are incorrectly treating the step between each value as 0.01 semitone (1 cent).

In the thread where the tuning ability was requested, jimhenry's post that suggested using tuning RPNs happened to quote a post I made on the midi.org forum about tuning messages. Let me rephrase from my midi.org post about how the tuning RPNs work:

In Registered Parameter Number 2 Channel Coarse Tuning, only the Data Entry MSB value is used, the Data Entry LSB value is not used. Data Entry MSB values of decimal 0 to 64 to 127 represent -64 to 0 to +63 semitones offset from A440 tuning. The step between each value is 1 semitone.

In Registered Parameter Number 1 Channel Fine Tuning, both the Data Entry MSB and Data Entry LSB values are used. Data Entry MSB and LSB values of decimal 0 0 to 64 0 to 127 127 represent -1 to 0 to +8191/8192 semitone offset from A440 tuning. The step between each value is 1/8192 semitone.


References

In the MIDI 1.0 Detailed Specification, see PDF page 23 (printed page 18) for specifications of Registered Parameter Number 1 (originally called) Master Fine Tuning and Registered Parameter Number 2 (originally called) Master Coarse Tuning.

Redefinition of RPN01 and RPN02 (Channel Fine/Coarse Tuning) explains these Registered Parameters were renamed to Channel Fine Tuning and Channel Coarse Tuning.

You can also see the same definitions of Registered Parameter Numbers 1 and 2 as part of the requirements of General MIDI Level 2 on PDF pages 16 and 17 (printed pages 12 and 13), where they are called by their new names Channel Fine Tuning and Channel Coarse Tuning.

Note that the specs describe the Channel Coarse Tuning Data Entry MSB values range from (100)*(-64) cents to (100)*(+63) cents with a resolution of 100 cents, but this is the same as -64 semitones to +63 semitones with a resolution of 1 semitone that I described above.

The specs describe the Channel Fine Tuning combined Data Entry MSB and LSB values range from (100/8192)*(-8192) cents to (100/8192)*(+8191) cents with a resolution of 100/8192 cents, but this is the same as -1 semitone to +8191/8192 semitone with a resolution of 1/8192 semitone that I described above.


Code Snippets

I wrote the attached JavaScript code snippets to help me calculate the incorrect and correct RPN Data Entry values. You can go to about:blank in your browser, open the F12 Developer tools Console window and paste in the functions, then enter example function calls and observe the results.

code-snippets.txt
(870 Bytes) Downloaded 1298 times


Test

If you temporarily change your browser settings to use "Stereo Mix" as the microphone, you can use this example tuner web app to listen to the audio output from Synthesia. (You may have to click "use oscillator" or "use demo audio" first before "use live input" will work correctly.)

If you use a virtual MIDI cable like loopMIDI and open MIDI-OX, you can set Synthesia to send a copy of its MIDI output to the virtual cable and set MIDI-OX to display the MIDI messages coming in from the virtual cable.

The attached test.mid plays an A4, then sends the correct tuning RPN messages to set A4 to 450 Hz, then plays another A4.

test.mid
(127 Bytes) Downloaded 1307 times

To begin testing, change the Midi.A4TuningStandardHz setting to 450.

Open test.mid in Synthesia and play it, then look at the tuner app.

The tuner will show about 440 Hz for the first note, then show about 450 Hz for the second note.

If you are monitoring Synthesia's MIDI messages in MIDI-OX, you can compare the RPN messages that Synthesia sent and the RPN messages that the MIDI file sent.

When you are done, change your browser settings to use your normal microphone again and remove microphone access from the tuner app.
Disable the virtual cable output in Synthesia, disable the virtual cable input in MIDI-OX, and close the virtual cable loopMIDI program.
Change Midi.A4TuningStandardHz back to 440.
Last edited by Bavi_H on 05-22-22 11:08 pm, edited 1 time in total.
User avatar
jimhenry
Posts: 1907

Post by jimhenry »

Bavi_H wrote: 05-18-22 2:37 am Did I tell you I am a MIDI nerd?
That's an understatement! I'm a MIDI Nerd. You are a MIDI Ninja! We need you on the MIDI standards committee. (Although, in my humble opinion, being the work of a committee is what is wrong with MIDI 2.0 and not being the work of a committee is why MIDI 1.0 has had such a phenomenally long life and will still be important for many more years.)
Jim Henry
Author of the Miditzer, a free virtual theatre pipe organ
http://www.Miditzer.org/
Nicholas
Posts: 13170

Post by Nicholas »

You wouldn't believe the trouble I just had trying to get my output audio routed back to my input audio for that tuner app. Something like 45 minutes later, my desk is covered in wires and adapters and various microphones, I have an external Roland Quad-Capture connected that's been in a box for years, and the eventual solution was to just stick a MacBook next to my development machine's speakers (and even then it only worked in Chrome after three tries; never in Safari). What a bizarre state of affairs for computer audio. Nothing works, ever.

At any rate, I think it's fixed now. Your post was very... thorough. :lol:

I set the tuning to 600Hz and this is Synthesia's output in MIDI-OX:

600Hz.png
600Hz.png (8.15 KiB) Viewed 34142 times

That matches your JS code's values and your midi.org forum post's format.

The tuner webpage was usually off by up to ±2Hz for any given test frequency, but it's pretty twitchy. If they gave us control over the length of the FFT window they're using, I bet it would have cleared that up.

(And speaking of the MMA, Synthesia LLC finally became a member after all these years. Our SysEx Manufacturer ID is 0x00 0x02 0x45, so now we can do cool things more officially than before.) :)
Mike33
Posts: 1

Post by Mike33 »

Synthesia program terminates on Windows 10 when I try to assign "Menu Continue" shortcut to a piano key.
It works for computer keyboard.
Nicholas
Posts: 13170

Post by Nicholas »

Thanks for the report. I was able to reproduce (and fix!) the problem. That'll show up in the next dev preview.
Locked