How to show the correct key signature in Synthesia

Have questions? Just saying hello? This is the place.
No explicit, hateful, or hurtful language. Nothing illegal.
Post Reply
megakotaro
Posts: 2

Post by megakotaro »

Hello everyone, I have a question: how to show the correct key signature in Synthesia?

I compose a minor song by using Musescore and I export it to midi file. Then I play it in synthesia which shows it as a major song. (Although it "sounds" minor). For example, when I create an E minor scale in Musescore, Synthesia shows it as G major.

Image

Image

I have checked the topic about how to show Major or Minor in synthesia and I also tried extreme_key_signatures.mid which really works.

When I asked my question on Musescore forum, somebody replied me that MIDI doesn't carry these type of information.

Now I'm confused and have some questions:
1. Does this problem caused by MIDI or Synthesia?
2. Does anybody use Musescore compose music and sign major or minor label in midi file?
3. Which software can sign the correct key signature?
Nicholas
Posts: 13137

Post by Nicholas »

The people from Musescore are wrong.

Choose "Key Signature" from the sidebar on this page. The second ("mi") data byte is a flag that specifies major/minor.

As best as I can tell though, very few MIDI-exporting applications seem to use that flag. Synthesia knows how to interpret it. It sounds like Musescore doesn't know how to write it.

If you use a tool like this one that can disassemble a MIDI file, you should see a line like this in the output MTX file someplace:

Code: Select all

0 KeySig 1 major
If you change that "major" to "minor" and convert it back from MTX to a MIDI file, it will show up in Synthesia correctly.

For reference: the "1" in that line means "one sharp". A "-3" would mean "three flats", etc. That leading zero just means the key signature event happens at time zero (i.e., the very beginning of the song).
megakotaro
Posts: 2

Post by megakotaro »

Thank you Nicholas. I successfully change the key signature by using MtxConverter. This is my first time disassemble the midi file. It's pretty awesome that this type of music is a bunch of code. :mrgreen:

I've tried MtxConverter and MIDI file DisAssembler. Here are the results.

First I use DisAssembler to convert extreme_key_signatures.mid into txt file, then I convert it into midi again, Synthesia shows that all the scales are major. :shock:

Image

Second I use MtxConverter to convert extreme_key_signatures.mid into extreme_key_signatures.mtx, then edit it on visual studio code. And convert it into midi again. Synthesia shows the correct key signature.

Image

Maybe Synthesia only know some type of code or it's tool's bug.
Nicholas
Posts: 13137

Post by Nicholas »

I suspect it's just a bug in the DisAssembler. (That one is much older and is known to have a couple other bugs, too.)

One way to get a second opinion: take the MIDI produced by the DisAssembler and the deconstruct it again using the MTX converter. It'll probably report "Major", too. Even a round-trip back through the DisAssembler again will probably show it as "Major" after the second time.

If that's the case, that's one more reason to avoid that tool. (I might edit that old post and warn away from it a little more vehemently.) My preference is definitely the MTX converter. Whoever wrote that seems to have done a nice job. You should be able to convert back and forth as many times as you like and have an exact replica of the original file down to the byte. I've never seen the MTX converter do any different, while the DisAssembler has lots of options and tools for filtering and making changes to the file.

In any event, all of this could be avoided if Musescore did the right thing in the first place. It might be worth posting over there again to mention the presence of the major/minor flag in the key signature MIDI event. If they believe that "MIDI doesn't carry this type of information", they are missing an opportunity.
Post Reply