From plaiho@vipunen (Pertti V P Laiho) Mon Jan 4 14:41:14 1993 X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["2974" "Sun" "3" "January" "1993" "12:18:18" "GMT" "Pertti V P Laiho" "plaiho@vipunen.hut.fi " nil "90" "Re: ___ ROL format ___" "^From:" nil nil "1"]) Newsgroups: comp.music Message-ID: <1993Jan3.121818.19942@nntp.hut.fi> Nntp-Posting-Host: vipunen.hut.fi Reply-To: plaiho@vipunen.hut.fi (Pertti V P Laiho) Organization: Helsinki University of Technology References: <721@vercors.frec.bull.fr> Lines: 90 From: plaiho@vipunen.hut.fi (Pertti V P Laiho) Subject: Re: ___ ROL format ___ Date: Sun, 3 Jan 1993 12:18:18 GMT In article <721@vercors.frec.bull.fr> frank@mapd.frec.bull.fr () writes: >Does anyone have the details of .ROL files used by AdLib and compatible >cards on PC? I need it for my Turbo C ROL editor... >Thanx. OK. Here it is... From: holmes@mrx.webo.dg.com (Chris Holmes) Subject: Adlib .ROL file format Date: Wed, 26 Aug 92 12:04:43 GMT I requested this a while back and got a couple of requests for a summary, so here goes: Files containing note information (i.e. songs) are suffixed with ".ROL". ("File version" and "editing scale" are non-musical information used by Visual Composer (TM).) Structure of .ROL files: __________________________________________________________________ fld # size type description (bytes) 1 2 int file version, major 2 2 int file version, minor 3 40 char unused 4 2 int ticks per beat 5 2 int beats per measure 6 2 int editing scale (Y axis) 7 2 int editing scale (X axis) 8 1 char unused 9 1 char 0 = percussive mode 1 = melodic mode 10 90 char unused 11 38 char filler 12 15 char filler 13 4 float basic tempo Field 14 indicates the number of times to repeat fields 15 and 16: 14 2 int number of tempo events 15 2 int time of events, in ticks 16 4 float tempo multiplier (0.01 - 10.0) The remaining fields (17 to 34) are to be repeated for each of 11 voices: 17 15 char filler 18 2 int time (in ticks) of last note +1 Repeat the next two fields (19 and 20) while the summation of field 20 is less than the value of field 18: 19 2 int note number: 0 => silence from 12 to 107 => normal note (you must subtract 60 to obtain the correct value for the sound driver) 20 2 int note duration, in ticks 21 15 char filler Field 22 indicates the number of times to repeat fields 23 to 26: 22 2 int number of instrument events 23 2 int time of events, in ticks 24 9 char instrument name 25 1 char filler 26 2 int unused 27 15 char filler Field 28 indicates the number of times to repeat fields 29 and 30: 28 2 int number of volume events 29 2 int time of events, in ticks 30 4 float volume multiplier (0.0 - 1.0) 31 15 char filler Field 32 indicates the number of times to repeat fields 33 and 34: 32 2 int number of pitch events 33 2 int time of events, in ticks 34 4 float pitch variation (0.0 - 2.0, nominal is 1.0) Notes _____ Fields #1 and #2 should be set to 0 and 4 respectively. Field #10 should be filled with zeros. PS: a 4 byte 'float' in the 80x86 family look like follows: Sign biased -bit exponent significant 31 30..23 22..0 ^ `- here an implicite "1." is assumed exponent bias = 127 (0x7F) eg. 0.5 = 1* 2^(-1) ==> sign=0, exp=127-1, signif=(1.)0000000 10987654 32109876 54321098 76543210 33222222 22221111 11111100 00000000 0 0000000 00000000 00000000 0111111 0 -----------------------------------------------------------------