home *** CD-ROM | disk | FTP | other *** search
- var
- milleseconds : real;
-
- (****************************************************************************)
- (* INITIALIZE MUSIC VARIABLES *)
- (****************************************************************************)
- procedure
- initialize_music;
- var
- j,k : integer;
- begin
-
- { Frequencies for Octave 4. }
-
- scale[ 0 ] := 1661.220; { A }
- scale[ 1 ] := 1760.000;
- scale[ 2 ] := 1864.640;
-
- scale[ 3 ] := 1864.640; { B }
- scale[ 4 ] := 1975.540;
- scale[ 5 ] := 1975.540;
-
- scale[ 6 ] := 987.770; { C }
- scale[ 7 ] := 1046.500;
- scale[ 8 ] := 1108.740;
-
- scale[ 9 ] := 1108.740; { D }
- scale[ 10 ] := 1174.700;
- scale[ 11 ] := 1244.500;
-
- scale[ 12 ] := 1244.500; { E }
- scale[ 13 ] := 1318.500;
- scale[ 14 ] := 1318.500;
-
- scale[ 15 ] := 1318.500; { F }
- scale[ 16 ] := 1396.900;
- scale[ 17 ] := 1479.980;
-
- scale[ 18 ] := 1479.980; { G }
- scale[ 19 ] := 1568.000;
- scale[ 20 ] := 1661.224;
-
- factor[ 0 ] := 0.0625;
- factor[ 1 ] := 0.1250;
- factor[ 2 ] := 0.2500;
- factor[ 3 ] := 0.5000;
- factor[ 4 ] := 1.0000;
- factor[ 5 ] := 2.0000;
- factor[ 6 ] := 4.0000;
-
- notes[ 49 ] := 1047;
- notes[ 50 ] := 1109;
- notes[ 51 ] := 1175;
- notes[ 52 ] := 1245;
- notes[ 53 ] := 1319;
- notes[ 54 ] := 1397;
- notes[ 55 ] := 1480;
- notes[ 56 ] := 1568;
- notes[ 57 ] := 1661;
- notes[ 58 ] := 1760;
- notes[ 59 ] := 1865;
- notes[ 60 ] := 1976;
- k := 48;
- while k > 0 do begin
- notes[ k ] := notes[ k+12 ] div 2;
- k := k - 1;
- end;
- k := 61;
- while k < 85 do begin
- notes[ k ] := notes[ k-12 ] * 2;
- k := k + 1;
- end;
-
- dnote[ 0 ] := 1.0;
- dnote[ 1 ] := 1.5;
- dnote[ 2 ] := 1.75;
- dnote[ 3 ] := 1.875;
- dnote[ 4 ] := 1.9375;
- dnote[ 5 ] := 1.96875;
- dnote[ 6 ] := 1.984375;
-
- milleseconds := wait_increment * 3.003003;
- tempo := 120.0;
- music_mode := 0.875;
- rest_mode := 0.125;
- octave := 4;
- note_length := 4;
- tune_number := round(random * 3.0);
- end;
-
- procedure
- play_note( note,length,dcnt : integer );
- var
- dur : real;
- begin
- dur := 240.0 / tempo * milleseconds / length * dnote[dcnt] - 2.0;
- if note > 100 then
- sound( notes[ note - 100 ] )
- else
- if note <= 20 then
- sound( round( scale[ note ] * factor[ octave ] ) )
- else
- nosound;
- delay( round(dur * music_mode) );
- if rest_mode > 0.09 then begin
- nosound;
- delay( round(dur * rest_mode) );
- end;
- end;
-
- function
- mval( s : strtype; var i : integer ) : integer;
- var
- v : integer;
- begin
- v:=0;
- i:=i+1;
- while s[i] in [ '0'..'9' ] do begin
- v:= ( v * 10 ) + ord(s[i]) - ord('0');
- i:=i+1;
- end;
- mval:=v;
- end;
-
- procedure
- play( ms : strtype );
- var
- i : integer;
- l : integer;
- n : integer;
- begin
- if silent_mode then exit;
- i := 1;
- while i < length( ms ) do begin
- if ms[i] in [ 'A'..'G','P' ] then begin
- n := ( ( ord(ms[i]) - ord('A') ) * 3 ) + 1;
- case ms[i+1] of
- '#','+' : begin
- i:=i+1;
- n:=n+1;
- end;
- '-' : begin
- i:=i+1;
- n:=n-1;
- end;
- end;
- l:=mval( ms,i );
- if l=0 then l:=note_length;
- dots:=0;
- while ms[i]='.' do begin
- i:=i+1;
- dots:=dots+1;
- end;
- play_note(n,l,dots);
- end
- else begin
- case ms[i] of
- 'T' : begin
- tempo:=mval( ms,i );
- if tempo<32 then tempo:=32;
- if tempo>255 then tempo:=255;
- end;
- 'O' : begin
- octave:=mval( ms,i );
- if octave>6 then octave:=6;
- end;
- '>' : begin
- if octave < 6 then octave := octave + 1;
- i:=i+1;
- end;
- '<' : begin
- if octave > 0 then octave := octave - 1;
- i:=i+1;
- end;
- 'L' : begin
- note_length:=mval( ms,i );
- if note_length=0 then note_length:=4;
- end;
- 'N' : begin
- n:=mval( ms,i )+100;
- if n>184 then n:=184;
- dots:=0;
- while ms[i]='.' do begin
- i:=i+1;
- dots:=dots+1;
- end;
- play_note(n,note_length,dots);
- end;
- 'M' : begin
- i:=i+1;
- case ms[i] of
- 'N' : begin
- music_mode := 0.875;
- rest_mode := 0.125;
- end;
- 'L' : begin
- music_mode := 1.0;
- rest_mode := 0.0;
- end;
- 'S' : begin
- music_mode := 0.75;
- rest_mode := 0.25;
- end;
- end;
- i:=i+1;
- end;
- else
- i:=i+1;
- end;
- end;
- end;
- nosound;
- escape_mode := false;
- end;
-
- procedure
- music_box;
- begin
- case tune_number of
- 0 : begin
- play('L16T155O2MNB4P8MSBBMNB4P8MSBBB8G#8E8G#8B8G#8B8O3E8O2B8G#8E8G#8B8G#8B8O3E8O2MNB4P8MSBBMNB4 ');
- play('P8MSBBMNB4P8MSBBMNB4P8MSBBB8BBB8B8B8BBB8B8B8BBB8B8B8BBB8B8MLB2B2B8P8P4P4P8MSO1BBB8BBB8BBO2E8F#8G#8O1BB ');
- play('B8BBO2E8G#G#F#8D#8O1B8BBB8BBB8BBO2E8F#8G#8EG#MLB4BMSAG#F#E8G#8E8O3BBB8BBB8BBO4E8F#8 ');
- play('G#8O3BBB8BBO4E8G#G#F#8D#8O3B8BBB8BBB8BBO4E8F#8G#8MLEG#B4BAG#F#MSE8G#8E8O3G#G#G#8G#G#G#8G#G# ');
- play('G#8O4C#8O3G#8O4C#8O3G#8O4C#8O3G#8F#8E8D#8C#8G#G#G#8G#G#G#8G#G#G#8O4C#8O3G#8O4C#8O3G#8O4C#8 ');
- play('O3B8A#8B8A#8B8G#G#G#8G#G#G#8G#G#G#8O4C#8O3G#8O4C#8O3G#8O4C#8O3G#8F#8 ');
- play('E8D#8C#8G#G#G#8G#G#G#8G#G#G#8O4C#8O3G#8O4C#8O3G#8O4C#8O3B8A#8B8O2BBB8F#F#F#8F#F#F#8G#8A8F#4MNA8MSG#8MNE4 ');
- play('MSG#8F#8F#8F#8O3F#F#F#8F#F#F#8G#8A8MNF#4MSA8G#8MNE4MSG#8F#8O2BBB8O1BBB8BBB8BBO2MNE8F#8G#8O1BB ');
- play('B8BBO2E8G#G#F#8D#8O1B8BBB8BBB8BBO2E8F#8G#8EG#MLB4MNBAG#F#E8G#8E8O3BBB8BBB8BBO4E8F#8 ');
- play('G#8O3BBB8BBO4E8G#G#F#8D#8O3B8BBB8BBB8BBO4E8F#8G#8MLEG#MLB4MNBAG#F#MNE8G#8E8 ');
- play('O3MLE56F56G56A56B56O4C56D56MNE8EEE8E8G#4.F#8E8D#8E8C#8MSO3BO4C#O3BO4C#O3B ');
- play('O4C#D#EO3ABABABO4C#D#O3G#AG#AG#ABO4C#O3F#G#F#G#F#G#F#G#F#G#F#D#O2BO3MLBO4C#D#E8D#8E8 ');
- play('C#8O3MSBO4C#O3BO4C#O3BO4C#D#EO3ABABABO4C#D#O3G#AG#AG#ABO4C#O3F#G#F#G#F#AF#EMNE8P8MLC#4 ');
- play('MNC#O2CMSO3C#O2CO3D#C#O2BAAG#EC#C#C#C#C#ED#O1CG#G#G#G#G#G#O2C#EG#O3C#C#C#C#C#O2CO3C#O2CO3D# ');
- play('C#O2BAAG#EC#C#C#C#C#ED#O1CG#G#G#G#G#MNG#O2C#EG#O3MSC#ED#C#D#O2CG#G#G#O3G#EC#D#O2CG#G#G# ');
- play('O3G#EC#D#O2BG#G#A#GD#D#G#GG#GG#AG#F#EO1BA#BO2EO1BO2F#O1BO2G#ED#EG#EAF#BO3G#F#ED# ');
- play('F#EC#O2BO3C#O2BO3C#D#EF#G#O2ABABO3C#D#EF#O2G#AG#ACO3C#D#EO2F#G#F#G#F#G#F#G#F#G#F#D#O1B ');
- play('CO2C#D#EO1BA#BO2EO1BO2F#O1BO2G#ED#EG#EAF#BO3G#F#ED#F#EC#O2BO3C#O2BO3C#D#EF#G#O2ABABO3C# ');
- play('D#EF#O2G#AG#ABO3C#D#EO2F#O3C#O2CO3C#D#C#O2AF#MNEO3MLEF#G#ABO4C#D#MNE8MSEEE8E8G#4. ');
- play('MSF8MSE8D#8E8C#8O3BO4C#O3BO4C#O3BO4C#D#EO3ABABABO4C#D#O3G#AG#AG#ABO4C#O3F#G#F#G#F# ');
- play('G#F#G#F#G#F#D#O2BO3MLBO4C#D#MNE8EEE8E8G#4.MSF#8E8D#8E8C#8O3BO4C#O3BO4C#O3B ');
- play('O4C#D#EO3ABABABO4C#D#O3G#AG#AG#ABO4C#O3F#G#F#G#F#AG#F#E8O2B8O3E8G#G#G#8MNG#G#G#8 ');
- play('G#G#G#8O4C#8O3G#8O4C#8O3G#8O4C#8O3G#8F#8E8D#8C#8G#G#G#8G#G#G#8G#G#G#8O4C#8O3G#8 ');
- play('O4C#8O3G#8O4C#8O3B8A#8B8A#8B8G#G#G#8G#G#G#8G#G#G#8O4C#8O3G#8O4C#8O3G#8O4C#8O3G#8 ');
- play('F#8E8D#8C#8G#G#G#8G#G#G#8G#G#G#8O4C#8O3G#8O4C#8O3G#8O4C#8O3B8A#8B8A#8B8 ');
- play('O2F#F#F#8F#F#F#8G#8A8F#4A8G#8E4G#8F#8O0B8O1B8O2F#F#F#8F#F#F#8G#8A8F#4A8G#8E4G#8F#8 ');
- play('BBB8O1BBB8BBB8BBO2E8F#8G#8O1BBB8BBO2E8G#G#F#8D#8O1B8BBB8BBB8BBO2E8F#8G#8EG#MLB4MNB ');
- play('AG#F#E8O1B8O2E8O3BBB8BBB8BBO4E8F#8G#8O3BBB8BBO4E8G#G#F#8D#8O3B8BBB8BBB8BBO4E8F#8G#8O3EG#MLB4 ');
- play('MNBAG#F#MLEF#G#MNAMLG#ABO4MNC#MLO3BO4C#D#MNEMLD#EF#MNG#AO3BO4AO3BO4AO3BO4AO3BO4AO3BO4AO3BO4AO3BO4AO3BMLE ');
- play('F#G#MNAMLG#ABMNO4C#MLO3BO4C#D#MNEMLD#EF#MNG#AO3BO4AO3BO4AO3BO4AO3BO4AO3BO4AO3BO4AO3BO4AO3BP16 ');
- play('MLG#O4G#O3MNG#P16MLD#O4D#O3MND#P16MLEO4EO3MNEP16MLAO4AO3MNAP16MLG#O4G#O3MNG#P16MLD#O4D#O3MND#P16MLEO4EO3MNEP16 ');
- end;
- 1 : begin
- play('L32T70 O1E-CE-GO2CE-DCO1BGBO2DGFE-DE-CE-G ');
- play('L32T70 O3CE-DCDCO2BAGFE-DE-CE-GO3C ');
- play('L32T70O2 E-DCO2BBBO3DGFE-FE- ');
- play('L32T70 O3CE-GO4CE-DCDCO3BAGFE-DE-CO2GE- ');
- play('L32T70O2 CO4CO3GE-A-O1FA-O2CFA-O3CE-DO2B-FDO1B- ');
- play('L32T70 O3B-FDGO1E-GB-O2E-GB-O3DCO2AG#AO3CO2 ');
- play('L32T70O2 AGAO3E-CO2GAO3E-CO2GAO3DCO2F#A ');
- play('L32T70 O3ACO2F#AO3F#CO2DAO3CO2AF#DB- ');
- play('L32T70 O0GB-O1DGB-AGF#DF#AO2DCO1B-A ');
- play('L32T70O2 B-GB-O2DGB-AGAGF#EDCO1B-AB-A-B-O2DGB-AGF#DF# ');
- play('L32T70O2 AO3DCO2B-A-B-GB-O3DGB-AGAGF#AO2DCO1B-AB-GB-O3D ');
- play('L32T70O2 GDO2B-GP32O3GDO2BGBO3DGP32O2GO3G ');
- play('L32T70 O2GP32O2GO3GO2GO2B-GO3GO2GO2DGO3GO2G ');
- play('L32T70 O3E-CE-GO4CO3GE-CP32O4CO2GECEGO4C ');
- play('L32T70 P32O3CO4CO3CO2AO3CO4CO3CO2GO3CB-CP32O3CB-CAO0 ');
- play('L32T70O2 FA-O1CFA-GFECEGO2CO1B-A-GFGFAO2CFAGFGFEDCO1B-A-GA-FA-C ');
- play('L32T70O2 FA-GFECEGO3CO2B-A-GA-FA-CO3FA-GFGFEDC ');
- play('L32T70O2 B-A-GA-O3FCO2A-FO3CO2A-FCA-FCO1A-O2FCO1A-O0L16D-.P32 ');
- play('L32T70 O3A-FEFGFEFO0L16C.P32L32O2AFEFGF ');
- play('L32T70O2 EFO0L16B-.P32L32O4DO3FGA-GFE-D ');
- play('L32T70 O3E-GO4DO3GB-A-GFEL16O0E-P16L32O3E-.L64E-DE-DC ');
- play('L32T70O2 DO2E-GO3GO2GO0CO2GO3GO2GO0B-O2GO3FO2GO0DO2GO3FO2GB-G ');
- play('L32T70 O3EO2GP32O2GO3EO2GL64FAL32O3E-O5CO3E-L64O3FAL32O3E-O5C ');
- play('L32T70 O3E-O1A-O2FO3DO2FO1A-O2FO3DO2FL64E-GL32O3D-O4B- ');
- play('L32T70 O0F#O2E-O3CO2E-P32O2E-O3CO2E-P32E- ');
- play('L32T70 O3CO2E-O0F#O3CO4CO3CO0F#O3CO4CO3CO0GO3CE-G ');
- play('L32T70 O4CO3GE-CGE-CO2GO3FDO2BFE-O1CE-GO2CE-DCO1BGBO2DGFE-DE-CE-GO3CE-D ');
- play('L32T70O2 CDCO2BAGFE-DE-CE-GO3CE-DCO2BGBO3DGFE-DE-CE- ');
- play('L32T70O2 GO4CE-DO3BO4C ');
- end;
- 2 : begin
- play('T120O3L32P32B-O4CDCO3L16B-O4FDB-FDL32FE-DE-L16FO3B-O4DO3FA-GL32E-FGFL16E-B-GO4E-O3B-GL32B-A-GA- ');
- play('L16B-E-GCE-O2AL32O3CDE-DL16CAFO4CO3AO4E-L32O3FGAGL16FO4CO3AO4FCD4P4P16L32GFE-FL16GC8P8P16 ');
- play('L32FE-DE-F16O3B-8P8P16E-DCDE-16O3A16O4CO3B-AB-O4C16O3F8P8O4F8O3F8A8O4C8F4P4 ');
- play('P8O3F8B-8O4D8F4P4P8O3G8B-8O4C8E4P4P16O3FGAGL16FO4CO3AO4FCAL32E-DCD ');
- play('L16E-O3AO4CO3F+AL8B-O4DO3B-GA-O4FO3AFG16L32CDE-DL16CGE-O4CO3GO4DL32 ');
- play('O3A-GFGL16A-DFO2BO3GE-8P8P16L32CDE-DC16O4C8.O3B-16A-16FGA-GF16O4F8.E-16D16O3B-O4CDCO3B-16 ');
- play('O4B-8.A-16G16B-A-GA-B-16E-16GFE-FG16C16E-DCDE-16O3A16O4CDE-DC16F16O3A-GFGA-16G16B- ');
- play('O4CDCO3B-16O4E-16O3GFE-FG16F16AB-O4CO3B-A16O4D16O3FE-DE-F16E-16GAB-AG16O4C16O3E-DCDE-16D16 ');
- play('P8.P16B-O4CDCO3B-16L16O4FDB-FDL32FE-DE-L16FO3B-O4E-O3B-O4E-O3GL32E-FGFL16E-B-GO4E-O3B-G ');
- play('L32B-A-GA-B-16E-8O4E-8E-16E-DCDE-16O3E-8O4E-8E-16CDE-DC16F16DCO3B-O4CD16L16O3FB-O4CO3A-B-2P2 ');
- end;
- 3 : begin
- play('T175O2G+8A8O3C8E-4D8D-8C8O2G+8A8O3C8E-4D8D-8C8O2G+8A8O3C8E-8O2G+8A8O3C8E-8O2G+8A8O3C8 ');
- play('E-4D8D-8C8O2C+8D8F8A-4G8G-8F8C+8D8F8A-4G8G-8F8G+8A8O3C8E-4D8D-8C8O2G+8A8O3C8 ');
- play('E-4D8D-8C8O2D+8E8G8B-4A8A-8A8C+8D8F8A-4G8G-8F8G+8A8O3C8P8F3F4F8F3C8O2F3P4 ');
- play('O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8 ');
- play('O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8 ');
- play('C+8D8F8C+8D8F8C+8D8F8C+8D8F8C+8D8F8C+8D8F8C+8D8F8C+8D8F8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8 ');
- play('O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8O2G+8A8O3C8D+8E8G8E8E3P4C+8D8F8D8D3P4 ');
- play('P8F3F4F8F4C8D8O2F8P8G+8A8O3C8O2G+8A8O3C8E-4D8D-8C8O2G+8A8O3C8E-8O2G+8A8O3C8E-8O2G+8A8O3C8 ');
- play('E-4D8D-8C8O2C+8D8F8A-4G8G-8F8C+8D8F8A-4G8G-8F8G+8A8O3C8E-4D8D-8C8O2G+8A8O3C8 ');
- play('E-4D8D-8C8O2D+8E8G8B-4A8A-8A8C+8D8F8A-4G8G-8F8G+8A8O3C8P8F3F4F8F3C8O2F3P4 ');
- end;
- end;
- tune_number := tune_number + 1;
- if tune_number > 3 then tune_number := 0;
- end;