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
-----------------------------------------------------------------