[source lang="cpp"]struct note { char midiVal; /* MIDI value, or note value */ char timeStmp [3]; /* Time value, sometimes called timestamp, basically when the note will play on the timeline. It is organized by mm:ss:ms, or minutes, seconds, milliseconds, respectively. As you guess, there is an inherent limit of 99 minutes per song. */ char channel; /* The software channel. There are 0-255 channels. Channels organize groups of similar notes, like a "nation of notes" if you will. Channels can be manipulated as one whole unit or as individual notes. */ float physChannel; /* The actual physical channel, of no relation to the previous data. It is, of course, left and right audio streams, and each note will contain data for how much it will blend on either side of the audio stream. A positive number is right stream, negative is left. */ char duration [3]; /* The duration of the note based on the same timing conventions used earlier for timestamp data. Used to specify the duration, and yet again, the limit for a single note's duration is 99 minutes. pah. */ char instrument; /* Specifies, out of a bank of a mere possible 256, which instrument a not belongs to. */ char volume; /* Dictates what volume a note will be. based off of a scale of 0-255, zero being mute, and 255 being the mortal enemy of your grandmother. */ ULINT name; /* Not really a name, more like a serial number. Anyway, this puts a limit on possible notes as well (do you like my limits?). Now, there is a ceiling of only 4,294,967,296 notes in a piece, and that piece can be 99 minutes long. */ };[/source]
The code comments can be a bit basic at times, but they were written so that someone with no clue of what I am doing could pick up on at least a little of what I was talking about and recognize similarities with other API's. I didn't mean to offend anyone with dumb humor or elementary explanations on basic subjects.
EDIT: "ULINT" is an unsigned long integer, fyi.
Edited by MrJoshL, 14 December 2012 - 08:34 PM.







