Header[]
typedef struct{ char signature[6]; //"Org-02" Uint16 tempo; Uint8 steps; //the number of steps per bar Uint8 beats; //the number of beats per step Uint32 loopstart; Uint32 loopend; } orgheader_t;
Instruments[]
Instruments are stored in 16 6-byte long entries at the end of the header. Each entry contains the following:
typedef struct{ Uint16 pitch; //Pitch, default 1000 Uint8 instrument; Uint8 pi; //00=off, 01=on Uint16 notes; //Number of notes played. Sustained notes count as one. } orginstrument_t;
- The first block of values defines the actual note. 5F is the highest note possible, and 00 is the lowest. This is for each actual instance of a note, and not each step. You'll know why in a second...
- The second block defines the length of each individual note. The values are simple - 01 for a length of 1 step, 02 for 2, etc. This is how you can get a sustained note and only have one entry in the first block.
- The third block defines volume for each note. Volume seems to only be able to go up to F8 - values any larger show up blank in OrgMaker.
- The fourth block is panning - a value of 06 is center, and it goes from 00 to 0C.