Hi. I've looked everywhere to try and understand those midi setup messages at the start of midi files. I have used Evolution Audio Lite (which was free many years back) and this still is easy, but has no editing in list view. Key info - I gig in a duo and use a live midi player called Merish 2. I edit the midi to do things like add a 4 hi-hat intro, add lyrics for the display etc. So VERY interested in XGWorks if it can prepare / edit the midi track to get the right setup of the midi file. Hope above helps. I'm hoping that it is possible to output XGWorks via midi to my Merish - or my Yamaha PSR series keyboard. I don't have a Yamaha soundcard, just a Soundblaster Live (very old !) but even that has good enough voices. Anyway - some specific questions will follow if you can accept me a slightly different member. It's all midi at the end of the day - JohnG your articles are brilliant !! Andy
Hi all - just a follow-on from my intro that I wrote on application - this forum looks brilliant and have learnt a lot so far. Totally baffling at first - but as John says many times if you re-read it a few times it begins to make a bit more sense. As mentioned before my setup is a little different with using a Merish 2, but I've just brought out the PSR630 to hook up which will comply with XG. Very interesting the section on the Ketron - as John has written a section on using a non XG device and I think some of the techniques will be very similiar for outputting to the Merish. Currently am struggling with getting sound out from a std midi file. I think I've set up the midi out ports correctly but get no sound playing a std midi file. However - on the piano roll I get sounds by pressing the notes on the left of the screen. So getting closer !! I might be asking for some suggestions if get no further ! Many thanks
And a very warm welcome to the forum. Thanks very much, in your original post, for the compliments. Very much appreciated I assure you. Often many hours go into the preparation of a tutorial. It's always good to know that they "hit the spot" and meet my intended purpose, namely, to get more people understanding and using MIDI.
If you're getting no sound form the file, it may be because the voice set up is incorrect for the Merish or PSR. Often 'Bank Select' messages, found at the beginning of each track/channel, can be set to, e.g. a Roland voice, that isn't available in the device your sending the file to.
Hi John Many thanks for your reply Yes - got sound working now out of XGWorks into my Merish 2 Midi file player (using its internal soundset). The problem was very strange - I'd called up an old midi file, fiddled about, pressed buttons etc. Then noticed in list view that the velocity of every note was 1 (!?). It was the same on all other tracks. Reloaded the file and got all the sound ! Hooray ! In using XGWorks and outputting direct midi to the Merish2, I am hoping that the final edit will sound exactly the same once I've saved the project, then option saved the file as .mid, and loaded it into the Merish memory card. So far this seems to work.
1st observation (and question)
It's interesting looking at a number of midi files I've had loaded direct on the Merish and played successfully via a playlist. A number of them start with XG Program Sys XG System On, eg Track 1 in list view 0001 01 000 : XG Program Sys XG System On : XG System On : 43 10 4C 00 00 7E 00 F7 : 7
Despite the Merish not being XG, it all seems to work. So is it common for modernish devices that are non XG to just ignore it ? And should I edit them to do a GM System On instead ?
2nd observation I see a lot of files where the Program Change, Volume,Pan, Reverb, Chorus are all at 0001 01 000. This is same on the other tracks. The Master track (Tempo etc are also all at 0001 01 000) So my conclusion is that somehow the midi file sees the commands, and somehow sends them all serially, even though they are defined at the same time point. Again (so far) the Merish seems to cope with it.
Should I worry - or edit to spread them out as per one of your detailed tutorials ?
Any more questions - which is best place to post them ?
To answer your last question first, there's a section specifically for "Technical Questions" all on its own, after the "General" section and before the "Tutorials".
Next, referring to the XG System On message, whether you leave it in place, remove it, or replace it with a GM reset message probably matters not a lot, if it plays okay. The Merrish player should read the 43H in the message as being Yamaha specific and ignore it. My own preference is to put, at the start, the correct message for the device being addressed. So in the case of the Merrish player I'd replace the XG sysex with a GM reset. The added effect of this particular message is to reset the vast majority of MIDI controller (CC#'s) to their default values. For example, one MIDI file may set the pitch bend range to +/- an octave. The next MIDI file may expect +/- a tone and, as this is the default value, may not specifically set it that way. The result is that the second file will play extremely oddly if the pitch bend range isn't reset. A GM reset at the start of every file should fix this IF the playback system follows the recommendations in the MIDI specification.
Lastly, sticking all these messages at the same point is, in my view, bad practice. If one edits one of them, it automatically gets resequenced to the end of the set of messages. It's necessary, for instance, to put the bank select messages, where needed, before the Program change message. If one changes one of the bank select messages, it will automatically be put after the program change if they all occupy the same exact point in the sequence. Many DAW programs are guilty of this bad practice I'm afraid.
But worse: Suppose I change the XG reset to a GM on, it's likely to get placed at the end of the list. So all the control values are sent to set up the song, then the GM reset cancels them all. How clever is that? It's important, even if one leaves all the other controllers lumped together, to have the GM/XG (or both) setup messages first.
As you say, the controllers are sent sequentially, one at a time (one bit at a time), and most playback systems will have a "read buffer" that stores them temporarily until the device/program can obey them. The MIDI stream is sequential, whether over a MIDI cable, USB, LAN or even internal to a VSTi.
So, should you worry? It's only really necessary to be concerned about the sort of issues I've outlined above. Where the sequence of the commands, if they get altered somehow, would cause incorrect playback. Being somewhat overly zealous myself, and trying to practise what I preach, I do tend to make any files I either create or use with at least a gap of a tick between commands. I try also to make sure that there's a larger gap after the GM reset or XG system on. You'll find examples of what I do in the detailed set up tutorial. I do actually do that.
I don't suppose you've come across this yet, but some MIDI files can send a significant number of sysex messages to set up various parameters within a synthesizer, for example. There can be dozens and dozens of rather long messages. If these are lumped together too much it can overwhelm the input buffer of the receiving device, which will then "give up" and display an error message.
A few Pan, Volume, Expression, Reverb messages lumped together shouldn't cause problems though.
Being an assembler programmer in my youth, using computers which were very much slower than today's machines (we're talking early to mid sixties), I'm aware of how the machine has to react to the command I send. So if I issued a command to read a card from the card reader, it was necessary to wait until the contents had been transferred to memory before one could process the data on the card, and so forth.
Sending a MIDI Program Change means the device has to allocate an instrument to a specific channel somehow. It won't take long, but it won't be instantaneous.
Many thanks John - all very clear I'll edit one of them for fun and practice, just to get used to a bit of editing (not having done that before). Also I'll have a go at editing in a programme change or two and a couple of controller changes and listen for the changes - having only ever done that before from selecting voices within the main view in Evolution Audio Lite. It goes to show that your tutorials have had a big effect - I think I've understood a bit of it already !!
Yes, a bit of trial editing was how I started on this stuff way ... way back. Grief! Was that 1988 or thereabouts? I think it was. I did just as you are planning to do. I started with someone else's sequence, and looked through that, and then did some editing. Then I came across some official Yamaha created songs and studied those at some length. At this point it all started to become much clearer. The real key is to experiment, keep backup copies of the original files, and just try out panning, volume changes, adding reverb and so on. The other thing is then to try to work out exactly what the playback unit you're using is capable of and experiment with settings.
Good luck. Let us know how you get on. Kind regards, JohnG.