I'll read it.. Thanks Maarten
On 10/08/06, stephane richard <[EMAIL PROTECTED]> wrote:
I think you'll find your answer in the "timing and formulas" section of my article: http://www.petesqbsite.com/sections/express/issue20/#midiprogramming3 ----- Original Message ----- From: "Maarten de Vries" <[EMAIL PROTECTED]> To: "REALbasic NUG" <[email protected]> Sent: Thursday, August 10, 2006 2:45 PM Subject: Re: MIDI type 1 > Well.. I'm using a thread to play the songs while showing the notes on a > virtual piano... The thread has units of a tick (a dictionary with the > keys > as time in ticks), so I need to synchronize it with that... And right now > it's not about saving files, but loading them... So, I need to populate > the > dictionary with the MIDI file. And the delta time has to be translated to > ticks. It does play all the tracks ATM, but it starts them all at the same > time, while that's not what it's supposed to do. And some of the > instruments > are wrong, but that's for later concern... And I'm not sure about the > tempo > either. > > Thanks, > Maarten > > > On 10/08/06, stephane richard <[EMAIL PROTECTED]> wrote: >> >> FIrst thing I need to know is do you need to synchronize anything that is >> not MIDI with your midi file? >> >> if not, you don't need these events. >> >> Let me know... >> ----- Original Message ----- >> From: "Maarten de Vries" <[EMAIL PROTECTED]> >> To: "REALbasic NUG" <[email protected]> >> Sent: Thursday, August 10, 2006 1:35 PM >> Subject: Re: MIDI type 1 >> >> >> >I think I made a mistake.. my script (which I used to search) didn't >> search >> > correctly. Whenever an undefined meta event was encountered, it was >> > supposed >> > to ignore everything until the end byte. But it was ignoring everything >> > including the end byte. So, it started ignoring everything somewhere >> > before >> > the first &h9* command... But now I have a new questions :-(. This MIDI >> > stuff is awfully complicated. >> > >> > I need help on using some meta events.. these to be exact: >> > >> > FF 51 03 tttttt* Set Tempo, in microseconds per MIDI quarter-note* >> >> This event indicates a tempo change. Another way of putting >> "microseconds >> >> per quarter-note" is "24ths of a microsecond per MIDI clock". >> >> Representing >> >> tempos as time per beat instead of beat per time allows absolutely >> exact >> >> long-term synchronization with a time-based sync protocol such as >> >> SMPTE >> >> time >> >> code or MIDI time code. This amount of accuracy provided by this tempo >> >> resolution allows a four-minute piece at 120 beats per minute to be >> >> accurate >> >> within 500 usec at the end of the piece. Ideally, these events should >> >> only >> >> occur where MIDI clocks would be located Q this convention is intended >> to >> >> guarantee, or at least increase the likelihood, of compatibility with >> >> other >> >> synchronization devices so that a time signature/tempo map stored in >> this >> >> format may easily be transferred to another device. >> >> >> >> FF 54 05 hr mn se fr ff* SMPTE Offset* >> >> This event, if present, designates the SMPTE time at which the track >> >> chunk >> >> is supposed to start. It should be present at the beginning of the >> track, >> >> that is, before any nonzero delta-times, and before any transmittable >> >> MIDI >> >> events. The hour must be encoded with the SMPTE format, just as it is >> in >> >> MIDI Time Code. In a format 1 file, the SMPTE Offset must be stored >> with >> >> the >> >> tempo map, and has no meaning in any of the other tracks. The ff field >> >> contains fractional frames, in 100ths of a frame, even in SMPTE-based >> >> tracks >> >> which specify a different frame subdivision for delta-times. >> >> >> >> FF 58 04 nn dd cc bb* Time Signature* >> >> The time signature is expressed as four numbers. nn and dd represent >> the >> >> numerator and denominator of the time signature as it would be >> >> notated. >> >> The >> >> denominator is a negative power of two: 2 represents a quarter-note, 3 >> >> represents an eighth-note, etc. The cc parameter expresses the number >> of >> >> MIDI clocks in a metronome click. The bb parameter expresses the >> >> number >> >> of >> >> notated 32nd-notes in a MIDI quarter- note (24 MIDI Clocks). This was >> >> added >> >> because there are already multiple programs which allow the user to >> >> specify >> >> that what MIDI thinks of as a quarter-note (24 clocks) is to be >> >> notated >> >> as, >> >> or related to in terms of, something else. >> >> >> > >> > First off all, the tempo change. I use units of a tick. I'm not sure, >> but >> > a >> > division of 30 seems to be that (I expected 60, but that was to fast). >> > Anyway, how do I convert the delta time from the files to ticks? Of >> > cource, >> > I'll need the division in the header to... >> > >> > The SMPTE offset seems clear, except for the fr and ff. What do they >> mean? >> > >> > And then time signature... Do I even need this? And if so, what >> influence >> > does it have? >> > >> > I'm sorry if this seems a bit stupid, but it's just to much dividing >> > and >> > stuff. I get it all mixed in my head... >> > >> > Thanks again, >> > Maarten >> > >> > On 10/08/06, stephane richard <[EMAIL PROTECTED]> wrote: >> >> >> >> What does the file play in media player? >> >> >> >> You can have sysex messages stored in a midi file of course, but they >> >> wouldn't play sounds per se (though some might play effects of some >> >> sort).... >> >> >> >> So if the midi file without &H9* events plays a song, i'd like to see >> >> it... >> >> >> >> I supposed you can play notes in Sysex only ultimately, but that's >> >> like >> >> the >> >> hard way to do things ;-). if it doesn't infringe any copyrights, I'd >> >> like >> >> to have that midi file so I can take it apart ;-). >> >> >> >> .. >> >> ----- Original Message ----- >> >> From: "Maarten de Vries" <[EMAIL PROTECTED]> >> >> To: "REALbasic NUG" <[email protected]> >> >> Sent: Thursday, August 10, 2006 8:15 AM >> >> Subject: Re: MIDI type 1 >> >> >> >> >> >> >I have another question. Or a problem actually. I'm trying to load a >> >> >type >> >> 1 >> >> > MIDI file, but nowhere in the entire file is a byte with &h9*. So, >> >> > there >> >> > isn't a single play note status byte in the entire file. If I open >> >> > it >> >> with >> >> > media player it works fine though. There are a few FF bytes. They >> seam >> >> to >> >> > mean "reset", but what can I do with that? I really don't understand >> >> > how >> >> > you >> >> > can make a MIDI file withough any &h9* in it... >> >> > >> >> > Thanks, >> >> > Maarten >> >> > >> >> > >> >> > On 10/08/06, stephane richard <[EMAIL PROTECTED]> wrote: >> >> >> > >> >> >> > internally, on the sound card, it wouldn't make a difference...if >> >> >> > you >> >> >> > have 2 >> >> >> > midi instruments on these two channels, then you should play them >> on >> >> >> > the >> >> >> > >> >> >> > same channel (hence the same instrument). >> >> >> >
_______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives of this list here: <http://support.realsoftware.com/listarchives/lists.html>
