Raster Music Tracker
From Atariki
(Różnice między wersjami)
| Wersja z dnia 11:08, 6 mar 2011 Tebe (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 11:30, 6 mar 2011 Tebe (Dyskusja | wkład) Next diff → |
||
| Linia 3: | Linia 3: | ||
| http://raster.infos.cz/atari/rmt/rmt1.gif | http://raster.infos.cz/atari/rmt/rmt1.gif | ||
| - | |||
| - | <BR> | ||
| - | Format zapisu modułu RMT: | ||
| - | <pre> | ||
| - | RMT 1.x module format | ||
| - | -------------------------------- | ||
| - | |||
| - | |||
| - | header struct | ||
| - | ============= | ||
| - | |||
| - | offset type desc | ||
| - | ------ ---- ---- | ||
| - | 00 WORD header string 'RMT4' or 'RMT8' | ||
| - | 04 BYTE track len ($00 means 256) | ||
| - | 05 BYTE song speed | ||
| - | 06 BYTE player freq | ||
| - | 07 BYTE format version number ($01 for player routine 1.x compatible format) | ||
| - | 08 WORD pointer to instruments table | ||
| - | 0a WORD pointer to tracks table (lo) | ||
| - | 0c WORD pointer to tracks table (hi) | ||
| - | 0e WORD pointer to tracks list (SONG) | ||
| - | |||
| - | |||
| - | instrument struct | ||
| - | ================= | ||
| - | |||
| - | offset type desc | ||
| - | ------ ---- ---- | ||
| - | 00 BYTE tlen (pointer to end of table of notes) | ||
| - | 01 BYTE tgo (pointer to loop of table of notes) | ||
| - | 02 BYTE elen (pointer to end of envelope) | ||
| - | 03 BYTE ego (pointer to loop of envelope) | ||
| - | 04 BYTE tspd (bit 0-5), tmode (bit 6), ttype (bit 7) | ||
| - | 05 BYTE audctl | ||
| - | 06 BYTE vslide | ||
| - | 07 BYTE vmin(bit 4-7) | ||
| - | 08 BYTE delay ($00 for no vibrato & no fshift) | ||
| - | 09 BYTE vibrato | ||
| - | 0a BYTE fshift | ||
| - | 0b BYTE unused | ||
| - | 0c table of notes | ||
| - | ? envelope | ||
| - | |||
| - | |||
| - | TABLE OF NOTES struct | ||
| - | ===================== | ||
| - | BYTE note or frequence (according to the ttype) | ||
| - | |||
| - | |||
| - | ENVELOPE struct | ||
| - | =============== | ||
| - | BYTE volume (bit 0-3 left channel) (bits 4-7 right channel | ||
| - | (in RMT4 it's the same as bits 0-3)) | ||
| - | BYTE portamento (bit 0), distortion(bit 1-3), | ||
| - | command (bit 4-6), filter (bit 7) | ||
| - | BYTE XY | ||
| - | |||
| - | |||
| - | TRACK struct | ||
| - | ============ | ||
| - | |||
| - | BYTE | ||
| - | bit 0-5 note | ||
| - | bit 6-7 volume(HI) or pause(1-3 beats) or special | ||
| - | |||
| - | if note is $00-$3c: | ||
| - | BYTE | ||
| - | bit 0-1 volume(LO) | ||
| - | bit 2-7 instrument number | ||
| - | |||
| - | if note is $3d: | ||
| - | BYTE | ||
| - | bit 0-1 volume(LO) volume only | ||
| - | |||
| - | if note is $3e: | ||
| - | bit 6-7 pause | ||
| - | if pause is $01-$03: pause 1-3 beats | ||
| - | if pause is $00: next byte pause 1-255 beats | ||
| - | |||
| - | if note is $3f: | ||
| - | if bit 6-7 is zero: next byte speed $01-$ff | ||
| - | if bit 6 is zero, 7 is set up: next byte is track jump pointer | ||
| - | (go to $00-$ff from the begin of track data) | ||
| - | if bit 6-7 is set up: END of track | ||
| - | |||
| - | INSTRUMENTS TABLE | ||
| - | ================= | ||
| - | WORD ptr_instr0 | ||
| - | WORD ptr_instr1 | ||
| - | WORD ptr_instr3 | ||
| - | ... | ||
| - | |||
| - | TRACKS TABLE (LO) | ||
| - | ================= | ||
| - | BYTE lowbyte_of_ptr_track0 | ||
| - | BYTE lowbyte_of_ptr_track1 | ||
| - | BYTE lowbyte_of_ptr_track2 | ||
| - | ... | ||
| - | |||
| - | TRACKS TABLE (HI) | ||
| - | ================= | ||
| - | BYTE highbyte_of_ptr_track0 | ||
| - | BYTE highbyte_of_ptr_track1 | ||
| - | BYTE highbyte_of_ptr_track2 | ||
| - | ... | ||
| - | |||
| - | TRACK LIST struct (SONG) | ||
| - | ======================== | ||
| - | BYTE tracknumL1,tracknumL2,tracknumL3,tracknumL4,[tracknumR1,..,tracknumR4] | ||
| - | BYTE tracknumL1,tracknumL2,tracknumL3,tracknumL4,[tracknumR1,..,tracknumR4] | ||
| - | BYTE tracknumL1,tracknumL2,tracknumL3,tracknumL4,[tracknumR1,..,tracknumR4] | ||
| - | ... | ||
| - | |||
| - | if tracknum is FF, then empty track is used | ||
| - | |||
| - | if tracknumL1 is FE, then gotoline(BYTE)=tracknumL2, goto_pointer(WORD)=(tracknumL3,4) | ||
| - | Note: gotoline(BYTE) is not used in player (but tracker uses it) | ||
| - | </pre> | ||
| - | |||
| ==Zobacz też== | ==Zobacz też== | ||
Wersja z dnia 11:30, 6 mar 2011
Program działający w środowisku MS Windows umożliwiający tworzenie 4- jak i 8-kanałowych (Stereo) modułów dla ośmiobitowego Atari przy wykorzystaniu bibliotek emulujących układy 6502 i POKEY. Autorem jest Raster/C.P.U. Program jest ciągle rozwijany, najnowsza dostępna obecnie wersja to 1.28.
Zobacz też
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.
