'=========================================================================== ' Subject: ROLAND FORMAT Date: Unknown Date (00:00) ' Author: Unknown Author(s) Code: TEXT ' Origin: ROLAND,FORMAT Packet: SOUND.ABC '=========================================================================== Ok, here's the ROL file format, as requested by someone. This I got from the 80XXX Assembler echo where Emil Gilliam posted it. I hope others will be able to use this. Remind me to post the BNK file format later, ok? This is in Assembler format, but I'll try tell explain how non-assembly programmers can read this too. Remember, I got it from the Assembler echo, so this to be expected. Ok, well, the first field is the name of the area. The second is the data type: db - Bytes dw - Words (2 bytes) dd - Double word (4 bytes) The next field is either a question mark, or a DUP. A dup is duplicate, meaning a whole bunch of bytes. So, a '32 dup (0)' is 32 bytes. The zereo is of no use to Basic programmers. The last field is a comment, this tells about the stuff. ___O_/____________________| SNIP |_____________________O_/___ O \ | HERE | O \ file_version_major dw ? ;Should equal 0 file_version_minor dw ? ;Should equal 4 db 40 dup (0) ;Unused ticks_per_beat dw ? beats_per_measure dw ? editing_scale_y_axis dw ? ;Used by Visual Composer editing_scale_x_axis dw ? db 0 ;Unused mode db ? ;0=percussive (6 voices & 3 ; drums), 1=melodic (9 voices) db 90 dup (0) ;Should equal 0 db 38 dup (0) ;Filler db 15 dup (0) ;Filler basic_tempo dd ? ;Beats per minute (I think) ; This is a "float" type ;This tells how many times to repeat time_of_event and tempo_multiplier number_of_tempo_events dw ? ;(The tempo events thing is because of the fact that the tempo might change ;during the song. The tempo for each tempo event (from 0.01 to 10.0) is ;multiplied by the basic tempo.) ;These two are repeated the number of times given in number_of_tempo_events time_of_event dw ? ;Time of event, in ticks ; (Not sure if this is the ; length of the event or the ; elapsed time in ticks since ; the start of the song.) tempo_multiplier dd ? ;This is a "float" type ;Okay. Now all of the rest of the fields are repeated for each of the ;eleven voices. db 15 dup (0) ;Filler time_of_last_note dw ? ;Time (in ticks) of last note ; + 1 ;These next two fields are repeated while the summation of note_duration is ;less than time_of_last_note... note_number dw ? ;0=silence, 12 to 107 = normal ; note, subtract 60 from this ; value for the value to give ; the AdLib sound driver ;60=middle C, 61=C#, 12=C three ;octaves below middle C, etc. note_duration dw ? ;Note duration in ticks db 15 dup (0) ;Filler (gee, this is getting ; rather wasteful...) Not ; repeated with note_number or ; or note_duration ;number_of_inst_events tells how many times to repeat the four fields that ;come after it (the time_of_inst_event, instrument_name, filler, and unused) number_of_inst_events dw ? ;Number of instrument events ;These 4 are repeated as many times as number_of_inst_events says time_of_inst_event dw ? ;Time of event in ticks instrument_name db 9 dup (?) ;Instrument name db 0 ;Filler dw 0 ;Unused ;NOT repeated with time_of_inst_event or instrument_name or the filler and ;unused fields following them db 15 dup (0) ;Filler ;number_of_vol_events tells how many times to repeat the two fields that ;come after it (the time_of_vol_event and volume_multiplier) number_of_vol_events dw ? ;Number of volume events ;Repeat these two as many times as number_of_vol_events says time_of_vol_event dw ? ;Time of event, in ticks volume_multiplier dd ? ;Volume multiplier (0.0 to 1.0, ; a "float" ;NOT repeated with time_of_vol_events and volume_multiplier db 15 dup (0) ;Filler ;number_of_pitch_events tells how many times to repeat the two fields that ;come after it (the time_of_pitch_event and pitch_variation). number_of_pitch_events dw ? ;Number of pitch events ;Repeat these two as many times as number_of_pitch_events says time_of_pitch_event dw ? ;Time of pitch event, in ticks pitch_variation dd ? ;Pitch variation, a "float", ; from 0.0 to 2.0, 1.0 is ; normal) Well, I hope this helps who ever is into FM music and stuff. The easiest way of playing ROLs is to use the SB-SOUND.COM or SOUND.COM sound drivers. They even play it in the background.