Fine control over MIDI export

• May 2, 2017 - 22:00

I've spent a couple of hours researching this, but it doesn't seem to be in the manual and Google pulls up endless bug reports and such that don't seem relevant to what I'm trying to do.

I play guitar and bass. My keyboard skills are improving, but still not sufficient to play all the parts I conceive. Once I write a keyboard part, I'd like to be able to export it as a MIDI file that my keyboard can play back on autopilot. So far, so good. It works...but...the voice is a horrible PLINK, PLINK, PLINK tone that's unbearable. The Yamaha MM8 owner's manual has a table with the values needed to address all the various voices the keyboard can produce--what I need is a way to hack the value that MuseScore sends out (some version of GM?) to identify the voice to be used by the keyboard. According to the Yamaha rep, this should be do-able. All I need is access to that value before exporting the MIDI file. It seems like a simple thing to do, conceptually, but I've been unable to find any information as to how to get the job done.

Thanks.


Comments

I'm not following. Are you saying your keyboard has a piano sound you want to use *other* than the default? Most keyboards put their best piano sound in that #program 1 slot. Is your keybaord not General MIDI compatible, then? Which program #1 do you want to use instead? Should be as simple as finding out which General MIDI sound is at that program number and specifying that in the Mixer.

In reply to by Marc Sabatella

I most definitely don't want the default, whatever it is. There are two or three piano sounds in the Yamaha MM8 that are actually quite good, none of them are GMs; they're Yamaha voices. Whatever the default is, is horrid.

According to Tony Escueta (Field Product Support Manager for Yamaha), the MM8's software was some sort of hybrid between the Motif and a portable model(?). He says the addressing for the voices isn't necessarily like other keyboards.

If I can get this figured out, I can access all the other voices in the keyboard as well. One I particularly need is "Digi Stuff far" (where the hell do they get these names?)...I assure you, it's not a GM anything and I need it badly.

I find it odd that in a world filled to the brim with thousand-voice keyboards, we can only get to the GM voices. Some of the GM voices are good, some are merely okay, and some are abominable. The Yamaha has a wide array of GM voices, but they're not what I want. It'd be a shame if there's no way to hack the MIDI file to get to those other voices. Surely, it's as simple as taking the eighth, ninth, and tenth bytes and changing their values. This can't be that complicated. Why settle for such a limited tonal palette when there are so many other options available?

In reply to by Grey Rollins

Well like I said, if you know the program #, you should be able to substitute that. Do you know the program #? And FWIW, whether a sound is provided by Yamaha or not has nothing to do with it being GM or not. GM isn't a provider of sounds; the manufacturer still provides them itself. GM is just a convention for which sounds is at which program # (well that and a few other things they standardize). Still seems odd Yamaha wouldn't put its best piano sound at #1, but if it's some other number, just use the corresponding GM sound and it should come out right.

In reply to by Marc Sabatella

What someone else calls "best" doesn't necessarily mean I would agree. The MM8 has 15 piano voices, only 5 of which are GMs (Grand, Bright, Electric, Honky-tonk, and Harpsichord...okay, technically not a piano, but it's under Piano). The piano I usually use is Yamaha's Bright Piano (*not* the GM Bright Piano, they're different), although sometimes I use Power Grand or Aggressive.

According to Tony Escueta, the way to access a voice is to enter the MSB, LSB, and MIDI Program Change numbers. For Yamaha's Bright Piano, that would be 0, 112, 2. I have no earthly idea what the MM8 defaults to or what MuseScore sends to identify "piano" as the voice to use, but the Yamaha MM8 GM Bright Piano codes as 0,0,2...so, something different from the non-GM Bright Piano.

For what it's worth, "Digi Stuff far" is 0, 113, 89. That's not going to be easy to find as some random GM thing.

Given that MuseScore has a few dozen GM addresses (I haven't counted the exact number) and that the MM8 has hundreds of voices--and it's only a fairly modest keyboard compared to the top of the line models--it's easy to see that there are quite a few voices that aren't covered by the basic GM nomenclature. Surely I'm not the only person who's ever wanted to access other voices. It just seems that there should be a straightforward way to get to them, given that we (presumably) only need to change three bytes. If I can't do it in MuseScore--and I'm assuming that the answer is no, given that you didn't say, "Oh, that's easy, all you have to do is enter the numbers in the popup window..." then can the MIDI file itself be edited? Is there a utility that will do this gracefully or do I need to go in and enter the bytes in hexadecimal? Where in the MIDI file do I look to find the identifier for the MIDI instrument?

In reply to by Grey Rollins

Sounds like you are saying the sound you want cannot be accessed with a regular MIDI program change message, probably it's organized in different banks or some such. If so, then indeed you might not be able to access it from MuseScore. That's getting outside my area of expertise.

It is certainly possible to edit MIDI files, there are programs that are dedicated to that purpose. Generally a "sequencer" is the kind of program you would probably want, although really you don't need fancy sequencing features, just basic MIDI editing.

In reply to by Ziya Mete Demircan

Thanks, I already had the manual open to the voice listings. In the event that this thread keeps going and that someone else needs to reference the table, please note that there must be more than one edition of the manual, as mine has the Piano listings on page 87. Digi Stuff far is on (my) page 89. There are other voices that are of interest to me, but if I can get the process down, then it should work for anything.

After Marc Sabatella suggested sequencer software, I Googled for programs and was methodically working my way down the list, looking at "best of" lists and so forth. Interestingly, the Sekaiju link was the one after the link I was on when I stopped to get some sleep. I've got it downloading now.

I'm open to other peoples' thoughts as to sequencer programs. Is Sekaiju the best choice? (My fingers are crossed that I can import my sheet music files from MuseScore directly into Sekaiju.)

I still find it hard to believe that people own keyboards with hundreds of voices, yet they're content with such a small subset of the available sounds. Oh, well. Hopefully this thread will be of some use to anyone else who hits the same wall I did.

In reply to by Grey Rollins

Sekaiju gives two warnings when opening Musecore's midi files. You can say "OK" to both. (One about format-0 and the other about Time / Key signature)

I don't know any better software than that to set what you want.

When exporting to a MIDI file, Musescore can send three separate program change messages to the same track. For example: For Strings: normal, pizz, tremolo.
If you encounter this, you can do this by opening the event-edit in the Strings track and deleting unnecessary Program-Change messages.

It is not necessary to install Sekaiju anyway. Everything works in your folder you've unzipped.
If you do not like it, just delete the folder. It does not harm the system.

I hope it works the way you want.

In reply to by Grey Rollins

(Lack of) Progress report:
Okay, I've spent over two hours with Sekaiju and I'm midway between pissed and frustrated, with a side order of exasperation thrown in for good measure. Yes, the program has fields where you can enter numbers, but as far as I can tell it ignores the MSB and LSB values as soon as you set the voice, which means you're back to having 128 voices--only.

Or maybe the Yamaha is ignoring what it's being told to do. I have no way of telling where the problem lies.

Examples:
I decided to go for Digi Stuff far, rather than try to parse subtle differences in piano sounds. I thought it would be easier to tell. I set the MSB, LSB, and voice to 0, 113, 89. When I set 89 as the voice, it decided that the voice was "Warm Pad," but I didn't let that bother me--it's the sound that's important, right? Well, as you can guess, it didn't play Digi Stuff far. As far as I can tell it played Yamaha's "GM Warm Pad" (0, 0, 90--note that the 90 is one digit higher than Digi Stuff far's 89). Being a clever lad, I decided to decrement to 88, so that when it added one, it would be at 89, where it should be. Right? Wrong. As near as I can tell 0, 113, 88 actually plays the Yamaha's 0, 113, 101 (Sekaiju says Fantasia, Yamaha says Bell Pad, take your pick), which sent me back to the drawing board. All the Yamaha musical voices have an MSB of 0 (percussion is a different matter, I'm talking voices that play pitched notes), so I left the MSB at 0 and set the LSB to 0 also (0, 0, 88--according to the Yamaha table, this should be GM Bass & Lead). Why not? It might be instructive. Nothing changed. It still plays whatever the voice is set to, be it 88, 89, whatever. Hmmm.

Thoughts?

In reply to by Grey Rollins

Best I can do is suggest you find a copy of the MIDI spec itself and read it to see if you can find anything useful. My guess is that what you need to do is not possible through *program change* messages, and that's what MuseScore is sending. More likely you need to create a *control change* message to set the proper back (that's presumably what the MSB / LSB stuff is about), and then *after* doing that, also send a *program change* to set the sound within the bank. At least that's the way some keyboards I know do things.

In reply to by Grey Rollins

Do not look at the names Sekaiju has listed. They are GM/GS names.

Make sure you give the message MSB / LSB + Program change correctly.
while LSB and MSB numbes as is, do not forget to subtract "1" from Program Change numbers listed by Yamaha.

Directly from the Your User Manual:

"Program Numbers 001 to 128 directly relate to MIDI Program Change Numbers 000 to 127. That is, Program Numbers and Program Change Numbers differ by a value of 1.
Remember to take this into consideration. "

Attachment Size
MM8_Test.mid 294 bytes

In reply to by Ziya Mete Demircan

The problem is that the MSB and LSB don't do anything at all. All the Yamaha voices have 0 for the MSB, so that's easy. The LSB varies, according to the voice you select, or at least it's supposed to. I have varied the LSB from 0 to 127 and it makes no difference whatsoever. The voice does not change. The only thing that makes a difference is changing the voice.

Once you decrement the number by 1 the names correlate, more or less. What Yamaha calls GM Metallic Pad (0, 0, 94) is Metal Pad (93...no idea what the MSB and LSB are, it doesn't say) in Sekaiju, for instance. I did not listen to the voice, so I have no opinion about whether it's what it's supposed to be, but at least the names tracked fairly closely over the ten to fifteen values that I looked at.

Note that if the MSB needs to be decremented in order to be read as 0 by the Yamaha, then I'm doomed. There's no way to enter -1 so that it can increment back up to 0. If it's reading the 0 that I'm entering as 1, then there's not a thing I can do about it.

Sekaiju does save the values of the MSB and LSB. They're there the next time I open the file. The problem is that they don't do anything. Only the voice parameter works.

I'm trying to work up the courage to enter some music directly into Sekaiju and see if there's some problem between MuseScore and Sekauju--probably not, but a test file wouldn't have to be more than a half dozen notes long, so maybe it's worth a try. The problem is that I don't have an infinite amount of time and I'm pretty bummed about the difficulties surrounding what I (perhaps foolishly) thought would be a fairly easy process.

Another avenue is to talk to Yamaha, I guess. Maybe they can offer some insights as to what's going wrong.

In reply to by Grey Rollins

Update:
I got in touch with a nice fellow named Louis at Yamaha. He has replicated the problem on his end, using different software to generate a MIDI file and their MM8, so...maybe the problem is with the firmware and/or software of the MM8. Actually I guess it's technically all firmware since the MM8 can't be reprogrammed. He's working in it. I will report back here if he finds anything.

In reply to by Grey Rollins

(*wailing in a most pitiful voice...*) Why do these things always happen to *me*?

I appear to have unwittingly jumped down a rabbit hole of a most peculiar nature. I didn't mean to...I swear...all I wanted was control over my keyboard's voices.

(*sinister voice*) Actions have consequences, puny human!

As I understand things--and with the disclaimer that I've not studied MIDI and don't know how the files are, or are supposed to be, put together--it appears that Sekaiju puts the MSB (aka CC0), LSB (aka CC32), and Program Change (aka Voice) information in the wrong places, at least for the Yamaha MM8. According to Louis, those three commands need to be the last three commands immediately preceding the notes, and in that order. Sekaiju puts "PC event at the top and MSB/LSB way down at the bottom." I'm assuming that means that Program Change (PC) is at the beginning of the file and MSB/LSB are lower, closer to the notes; the editor he's using displays things vertically as opposed to horizontally, the way Sekaiju does. He says that MIDI files have to be edited to work properly sometimes.

Okay...

I sent him a test file that I had created in MuseScore, then edited in Sekaiju. He said that the Program Change 89 shown by Sekaiju was actually written to the file as 90. I'd already deduced that by the way that the MM8 behaved. However, due to the fact that the MSB & LSB were separated from the PC, they were ignored, so my attempt to decrement the PC number was doomed to failure...which I'd also deduced, as detailed above. Well, goody, goody gumdrops, I get my Sherlock Holmes merit badge for deduction.

However...

This still leaves me in the lurch. He edited the test file I sent such that it actually does use Digi Stuff far for the voice, so as a proof of concept it demonstrates that the MM8 can be used the way I want to use it. What's missing is a way for me to get the job done on my end. Sekaiju does not appear to allow control over where the parameters are placed in the file. If it does, please tell me where to look and I'll get right on it. I was also unable to find a way to do in it Anvil. Note that it was a busy weekend and I haven't had much time to hammer at these things, so maybe one or both of these programs can do what I need and I just didn't look in the right place.

I tried taking the working file he sent me and simply editing the notes in MuseScore. Bad idea. Somehow that screwed things up in such a way that it sounded like Donald Duck was singing the notes in falsetto at double speed. Attempts to remedy the BPM problem left the riff sounding like it was being sung underwater. An interesting effect, but not what I wanted. No, I have not tried changing the notes in Sekaiju--the prospect of having to hand-reenter every single note I've got in MuseScore is daunting, to say the least.

Does anyone know of a program that will allow me to actually get into the file itself and rearrange the position of the parameters such that they will be written to the file in a user-selected way?

Several years back, I had this silly dream of using the internal voices of the MM8 (some of which are quite nice, actually) to play the things I could not yet play. I have finally reached the point where I'm ready to (attempt to) make that dream a reality, but it seems to be slipping from my grasp. I'm reminded of the expression about the road to hell being paved with good intentions.

In reply to by Grey Rollins

in Sekaiju, Use event list window.

See page 60, Sekaiju_en.PDF -> Help>Documentation(PDF)

quote 1:
Each track should be setup in the first measure. There are default events for setup in the first measure(*), CC#0(Bank Select MSB). CC#32(Bank Select LSB), Program number, CC#0(modulation), CC#7(volume), CC#10(pan), CC#11(expression), CC#91(reverb), CC#93(chorus), and CC#94(delay). Some of these event's value can be set in the track list window. Each event must be put with interval at least 5 ticks.
 
(*)overlined section applies to a new midi document that you will create in Sekaiju. //ziya

 

quote 2:
Patch change (CC#0, CC#32, and program change event) must be send in this order sequentially. Also NRPN change (CC#99, CC#98, and CC#6 event) must be send in this order sequentially. Also RPN change (CC#101, CC#100, and CC#6 event) must be sent in this order sequentially.

 

Attachment Size
MM8_Test.mid 294 bytes

In reply to by Ziya Mete Demircan

EXCELLENT! Thank you.

I need to figure out how to insert control lines where I need them. If I highlight where I want the new line, then hit insert, the new line goes in at the top of that section, which doesn't quite follow intuitively. I have to manually roll the existing commands (e.g. Reset) up into the newly added line in order to get the space down to where I need it (e.g. MSB & LSB above the Program Change). It's a pain in the butt, but it gets the job done.

There's probably a trick to this. I'll try to fiddle with this more later.

Notes for anyone who might need to follow this path:
1) Apparently, the MSB, LSB, and Program Change do not need to be immediately above the notes for the MM8 as I was told, but they do need to be in that order. For whatever reason, they're thrown in out of sequence if you do them from the wrong screen and need to be rearranged manually. I think this is a quirk in Sekaiju.
2) In the file I'm working on, the MuseScore MIDI file shows only the voice; no MSB or LSB, so those have to be created on the fly in Sekaiju. (Hence my need to add lines for the MSB and LSB...they ain't there.)

The process wasn't elegant, but I've got a MIDI file that will play through the MM8's USB port and use the right voice, at the right tempo, etc. I will try to figure out some way to streamline the process later.

Again, thanks.

Do you still have an unanswered question? Please log in first to post your question.