Music duration

René Micout rmicout at online.fr
Sun Feb 22 10:26:20 EST 2009


Hello Beat,
Naturally I will be (so) glad to receive your MidiLib...
Thank you
Bons souvenirs de Paris
René

Le 20 févr. 09 à 15:55, Beat Cornaz a écrit :

> Hi René ,
>
> I have been abroad and could not react earlier. Fortunalety Kurt  
> has helped you out quite a bit.
>
> Maybe the following can be of use to you. The thing that took the  
> longest time for me in the Midi code to 'crack' was the 'Delta  
> time' , being the time to the next midi event (whether a Note on,  
> Note off or Midi message). As the Delta time cannot be fixed into a  
> fixed data format (it must be flexible tpo accomodate for long  
> Delta times), the Midi format uses 'Variable Length coding', which  
> can accomodate any Delta Time.
> As it is some years ago that I have coded my 'MakeMidiFile' script,  
> I can't remember exactly how the Variable Length coding works, but  
> I can send you the
> handler or post it here if someone else is ineterested.
>
> Another thing I remember, is that one of the Rev functions -  
> baseconvert() or  BinaryDecode() would not work anymore as the  
> number to convert got too big. I have made a workaround.  I just  
> looked in my MidiLib, but could not find it anymore. Maybe it has  
> been fixed in the newer Rev versions, as I tried big numbers and  
> they converted just fine.But I realised that my MidiLib needs some  
> serious cleaning up!!
>
> In a midi file (as Kurt already explained), some (Hex) stuff is  
> always there, like the Header , Tempo, TimeSignature and Key. The  
> actual data for the Tempo (e.g. 120) etc. is given by you of course  
> (in Hex). Track 1 contains all this information and the actual  
> notes start in track 2. (In any case in a midi file with more than  
> 1 track). After you have the whole Midifile in Hex, you convert it  
> to Binary (with BinaryEncode). Of course, the binary encode can be  
> done earlier on, like after each Hex duplet or Hex part has been  
> established (I think I remember Kurt does it that way).
>
> In the header of each track, you'll need the specify the length of  
> the data of that track (the number of Hex digits in that track).
>
> So basically you have to convert decimal data (like noteNrs,  
> velocity, duration etc) to Hex and the whole Hex data to binary.
>
> I can send you my MidiLib, so you can see how I have done it. I  
> will have to clean it up before I send it, it's too messy, but it  
> works fine.
> I have not yet experimented with the QT synth, as I was (am) aiming  
> to directly address Logic. But I guess I will try with the QT synth  
> as well, as my bigger goal is quite a challange it seems.
>
> In my MidiLib, there is also a handler to import a MidiFile. I use  
> it to import from Logic, then make variantions of the theme in my  
> Rev stack and make a new MidiFile which I drag into my sequencer.
>
> Don't let the dataformat of the Midi file get to you. It takes a  
> while to get it. I have been 'struggling' with it for some months  
> untill the handler finally worked. Bit by bit, you'll get to  
> understand it better. I'll be gladly  helping you, but  
> unfortunately I don't have the time to read the usergroup's mails  
> on a daily basis.
>
> I hope this helps some,
>
> kind regards, Beat
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>




More information about the Use-livecode mailing list