mark
New Member
Posts: 9
|
Post by mark on Jul 28, 2013 13:45:14 GMT
Hi,
I try to create a MIDI medley with several MIDI Files songs. I suppose that the only tools to do it, are MIDI editors. Are they others tools ? To do this task on editor, what kind of advices ?
In my opinion : We have to work with MIDI format 0 1°) calculate bpm on each MIDI songs 2°) sort MIDI songs with progressive bpm 3°) create an intermediate short MIDI file and insert it between 2 songs and synchronize the beats on drums and increase the beats up to the value of following bpm (next song).
Other idea ?
Mark
|
|
|
Post by JohnG on Jul 28, 2013 17:36:58 GMT
Hi, I try to create a MIDI medley with several MIDI Files songs. I suppose that the only tools to do it, are MIDI editors. Are they others tools ? To do this task on editor, what kind of advices ? In my opinion : We have to work with MIDI format 0 1°) calculate bpm on each MIDI songs 2°) sort MIDI songs with progressive bpm 3°) create an intermediate short MIDI file and insert it between 2 songs and synchronize the beats on drums and increase the beats up to the value of following bpm (next song). Other idea ? Mark Hi Mark, Yes the first thing is a MIDI sequencer which you know how to use. No, not a type 0 file, because each track and channel may be assigned to a different instrument and we need to match the tracks and channels, e.g. track 1 in the first song may be a saxophone assigned to channel 1, but on song 2 it may be a trumpet assigned to channel 3, whereas track 5 may be channel 5 on song 1 assigned to trumpet. In other words you can't guarantee that instrument assignments, tracks and channels will be the same from one song to the next. So a type 1 file is the only way to match one song to the other. Where the tracks are separated. So it means making the tracks and channels align between each song and the next to be added into the medley. The it means looking for a sensible way to cross fade between the songs like a DJ does with a mixing desk. The end of the first song may need to be cut off and maybe part of the beginning of the next song. Then, as you say, sliding tempos to match. If the MIDI files already exist, then the tempo information will already be contained within the file. That's how I've done it in the past. regards, JohnG.
|
|
mark
New Member
Posts: 9
|
Post by mark on Jul 29, 2013 17:22:15 GMT
Hi John,
Thank you for your reply.
Do you know a machine working like a sequencer and mixing MIDI files?
Regards Mark
|
|
|
Post by JohnG on Jul 30, 2013 8:10:54 GMT
Hi Mark,
My pleasure.
Sadly I'm not aware of any such piece of hardware, nor even a program that attempts to do the job for you automatically. It's really a different skill from the DJ's job of just a segue from one track to the next.
I believe it actually requires a human brain to do this.
It does require a bit of organisation and I use pencil and paper initially.
I list the songs in the order that I want them played. Then I work out, for each song, how much of that song I want played, a verse, a verse and a chorus or more. I try to keep in mind what is most memorable from the song.
Then I investigate the tempo of each song and try to visualise how I will go from one to the next, a straight cut, a fill of some kind, etc. Once I have a clear structure of what I want to achieve, then I look at the MIDI file of each and initially just at the instrumentation used.
I put each instrument, where they are duplicated between each song, on the same track and assign the same MIDI channel to it. Drums are always on channel 10, maybe bass is on 5, piano on 2, and so on.
Then I get to work doing a copy and paste job, an instrument at a time, into a completely new MIDI file. So I'll end up with probably 90% of the medley. These will all be at the tempo of the first song. During this phase I may have to insert program changes at the start of the song I'm adding to get the instrumentation correct where there are new instruments not in the earlier song, etc.
Then it's a case usually of creating the links between the sections, which are often just some clips from the end of a song. Then I work on tempo alterations through the medley.
That's my formula, and I imagine it's what most people do but not necessarily in the same order.
Any help? Regards, John.
|
|
mark
New Member
Posts: 9
|
Post by mark on Jul 30, 2013 20:28:41 GMT
Hi John,
Thanks a lot for your response. It is very interesting.
Can you explain what "program change" code you insert at the start of the song ? Is it necessary to look at the MIDI events in the begining of each song ? I suppose by example that all GM reset code have to be deleted ... in the second, the third, ... etc.. midi file. Would you please, explain the end "to get instrumentation correct where there are new instruments not in the earlier song" ?
Regards Mark
|
|
|
Post by JohnG on Jul 31, 2013 6:59:59 GMT
Hi Mark, My pleasure. A 'program change' is the MIDI message that must be inserted at the start of any MIDI channel data if you don't want it to default to 'grand piano'. There is a list of 128 possible instruments defined within the MIDI specification. Roland's GS and Yamaha's XG expand this list to potentially thousands of instruments by using one or two 'bank select' messages before the program change. GM2 expanded the list by a further 128 instruments also using the bank select mechanism. Let's say that we are using all 16 of the possible channels for one MIDI port and, part way through a song, you want say an oboe, (defined at the start of the song), to be changed to a flute, then a program change message must be inserted at the appropriate point in the MIDI channel data for that channel. Later on a program change back to oboe could be inserted. Often, in a jazz band, saxophonists also play clarinets. They put one instrument down and pick up another, then later swap back again. In effect, we're telling our MIDI sound platyer to do the same. N.B. Usually this technique doesn't work though for virtual instruments.The General MIDI 'sound set' can be found, published in tabular form, at the MMA site (the MIDI Manufacturers Association), here: www.midi.org/techspecs/gm1sound.php. The table of all the possible MIDI messages is also on their site here: www.midi.org/techspecs/midimessages.php#1. You will find 'program change' amongst them. So, at the very beginning of a MIDI file, there should be a GM reset. This is a System Exclusive message that sets all controllers for every channel back to the default state (then you don't need a separate message on each channel). After this each channel will have a program change message, defining what instrument should play, followed usually by a volume message, a pan message and maybe others defining level of reverb send etc. Clearly if you are doing a cut and paste job, assembling a medley from various other files, then these messages need to be inserted in the right place for every channel with a changed set of instruments, for every new song added to the previous one. With some sequencing software there is not an obvious way to do it. This is why I still use the ancient program XGworks, because inserting control changes of any kind is a relatively simple thing to do. Article #7 in the MIDI Basics section sets out the contents of a MIDI file. Hope that helps? Regards, JohnG.
|
|
mark
New Member
Posts: 9
|
Post by mark on Jul 31, 2013 22:04:42 GMT
Hi John, Thank you for your explanation. Another question about possibilities ... On one port you can use 16 channels : one for drums and the others for instruments. So, I suppose mixing a medley with 3 songs. The 3 songs have differents instruments and I don't want to change the original instruments. To change instrument on a channel is it correct to insert program change (PC) and control change (CC) on each channel in the beginning of each song ? At the beginning of the first song, I put some CC (volume, reverb, portamento, ...). Before we start the second song, I decide not use reverb and portamento, so the best way is to reset all CC (CC=121), or is it changing value to 0 for reverb and value off for portamento (cc=65) using different CC ? In the event time, how long does it take to the computer or the MIDI machine to recognize PC and CC on each channel, is it immediate or we have to wait for an half on a second? The picture below is it correct ? regards Mark
|
|
|
Post by JohnG on Aug 1, 2013 8:37:08 GMT
Hi Mark,
Partly correct. I'm afraid the picture you posted isn't displaying for some reason.
At the start of the song, at the very beginning (measure 1, beat 1, tick 0), it's a good idea to insert just one General MIDI reset (sometimes called System On) message. This message, by tradition, is put in track one assigned to channel 1. Actually, as it's a SysEx message, it is not channel specific, but in this case applies to all channels. It sets all controllers to their default values and thus nulls any controllers that may have been set to non-default values by a MIDI file that may have been played before this one.
This message can take up to 200 milliseconds (0.2 secs) to be implemented by some hardware, so it's a good idea to put the set up messages, like program change, a little later.
You will see, in my tutorials (which I urge you to read, a lot is explained there), that I suggest that people have a set up measure before the music begins in measure 2. This set up measure can be as short as you like, but if just a 2/4 measure with a tempo of 120 it will take just 1 second to 'play'. A fresh tempo meta data command can be put at the start of measure 2 for the real tempo of the song. So, if the 1st measure is at 120 bpm and the sequencer works at 480 ppqn then we can start the program changes and other CC's at 01:01:200.
Having inserted all the PC (program changes) for each channel and the CC messages we need for each channel for the first song, we can go to the point where the 2nd song will start. We insert the PC, if needed, for the next song on the channels that are having the instrument changed, and also the CC values we want changed, e.g volume, pan and any others (including the RPN messages to change the pitch bend range if necessary).
And, BTW, 'reset all controllers' doesn't reset ALL controllers. If you were to read the MIDI specification you would see that in fact it means reset MOST controllers. If the pitch bend range, for instance, has been changed using RPN messages, it doesn't reset it.
I don't advocate putting in a reset all controllers, because one may inadvertently reset something that you don't want changed. Much better, in my view, to change the specific controller to its new value. This is just a better way to sequence.
A controller is typically a three byte message. It therefore takes about a millisecond to transmit across a MIDI connection (around 3000 bytes per second), it will be actioned immediately, i.e. in about a thousandth of a second, if not faster.
Often one can squeeze in a few controllers between a note finishing and the next note playing. Sometimes it's better to work in List View to get this absolutely correct. They can usually be inserted just one tick apart.
Then the same procedure between songs two and three.
This is why it's a good idea to sit and analyse each song before starting the process, making a note of the PC's, the CC's and any pitch bend range changes that apply to each song.
Regards, JohnG.
|
|