Home » Personal collection » Acorn hard disk » files » music » !MakeMIDI/old/MReader

!MakeMIDI/old/MReader

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Personal collection » Acorn hard disk » files » music
Filename: !MakeMIDI/old/MReader
Read OK:
File size: 1374 bytes
Load address: 0000
Exec address: 0000
File contents
   10MODE0
   20 SYS "MIDI_SoundEnable"
   30 SYS "MIDI_TxStart"
   40ON ERROR SYS"Hourglass_Smash":REPORT:PRINT" @ ";ERL:END
   50*RAM
   60PROCsetupconvert
   70F$="MUSICFILE"
   80SYS"Hourglass_On"
   90PROCloadmusic
  100PROCdoconversion
  110SYS"Hourglass_Off"
  120END
  130:
  140DEFPROCsetupconvert
  150DIM S &9000
  160DIM queue%(7),clef%(7),note%(7),count%(7),pos%(7),midi%(7,7),midisend%(1,31,1)
  170DIMaccstatus%(7),sharpseq%(6),flatseq%(6)
  180PROCreaddata
  190ENDPROC
  200:
  210DEFPROCloadmusic
  220FILE%=OPENIN F$
  230M$="":FORR%=1TO7:M$+=CHR$BGET#FILE%:NEXT
  240IFM$<>"Maestro"THENPRINT"Maestro file is corrupt":END
  250B%=BGET#FILE%:B2%=BGET#FILE%:B3%=BGET#FILE%
  260IFB%<>&A ORB2%<>2 ORB3%<>1THENPRINT"This Maestro file is in a non-standard format. Please load it into Maestro and  resave it.":CLOSE#FILE%:END
  270INPUT#FILE%,gates%:FORR%=0TO7:INPUT#FILE%,queue%(R%):NEXT
  280FORR%=1TOgates%:?(S+R%)=BGET#FILE%:NEXT
  290FORV%=0TO7
  300 IFqueue%(V%)<>0THENFORR%=1TOqueue%(V%):?(S+R%+&1000*V%+&1000)=BGET#FILE%:NEXT
  310NEXT
  320B%=BGET#FILE%:IFB%<>2 THENPRINT"This Maestro file is in a non-standard format. Please load it into Maestro and  resave it.":CLOSE#FILE%:END
  330staves%=BGET#FILE%+4*BGET#FILE%
  340CLOSE#FILE%
  350ENDPROC
  360:
  370DEFPROCdoconversion
  380FORR%=0TO7:pos%(R%)=S+&1000*R%+&1001:clef%(R%)=0:count%(R%)=0:accstatus%(R%)=0:NEXT
  390keyflat=FALSE:noaccidents%=0:PROCbarline
  400position%=S+1:timer%=0:PROCreadgates
  410REPEAT
  420 timer%=0
  430 REPEAT
  440  moveon=FALSE:timer%=timer%+1
  450  FORR%=0TO7
  460   IFcount%(R%)=1THEN
  470    moveon=TRUE
  480    IFnote%(R%)<>0THENPROCsendmidi(3,&80+midi%(staves%,R%),note%(R%),0)
  490   ENDIF
  500   IFcount%(R%)<>0THENcount%(R%)=count%(R%)-1
  510  NEXT
  520  FORwait=0TO125:NEXT
  530 UNTIL moveon
  540 PROCreadgates
  550 SYS"Hourglass_Percentage",INT((position%-S)/gates%*100)
  560UNTILposition%>(gates%+S)
  570ENDPROC
  580:
  590DEFPROCreadgates
  600LOCALtype%
  610 type%=?position%
  620 IF type%=0THEN
  630  PROCspecial(?(position%+1)):position%=position%+2
  640  IFNOT(position%>(gates%+S))THENPROCreadgates
  650 ELSE
  660  PROCaddnotes(type%):position%=position%+1
  670 ENDIF
  680ENDPROC
  690:
  700DEFPROCaddnotes(queues%)
  710LOCALR%
  720 FORR%=0TO7
  730  IF(queues%MOD2)=1THENPROCgetqueue(R%)
  740  queues%=queues%DIV2
  750 NEXT
  760ENDPROC
  770:
  780DEFPROCgetqueue(q%)
  790LOCALnotepos%,note%,accidentals%,lenbits%,dots%
  800 notepos%=(?pos%(q%))DIV8
  810 accidentals%=FNrevbits(?(pos%(q%)+1),0,3)
  820 IFaccidentals%<>0THENPROCchangeaccstatus(midisend%(clef%(q%),notepos%,1),accidentals%)
  830 note%=midisend%(clef%(q%),notepos%,0)+accstatus%(midisend%(clef%(q%),notepos%,1))
  840 IF note%<>0THENPROCsendmidi(3,&90+midi%(staves%,q%),note%,&3F)
  850 note%(q%)=note%
  860 lenbits%=FNrevbits(?(pos%(q%)+1),5,3)
  870 dots%=FNrevbits(?(pos%(q%)+1),3,2)
  880 count%(q%)=INT((2^(8-lenbits%))*4*(1.5^dots%))
  890 REM PRINTq%,note%,count%(q%)
  900 pos%(q%)=pos%(q%)+2
  910ENDPROC
  920:
  930DEFFNrevbits(bits%,first%,no%)
  940 LOCALR%,out%
  950 out%=0
  960 FORR%=0TOno%-1
  970  out%=out%-(2^R%)*((bits%AND(2^(first%+R%)))<>0)
  980 NEXT
  990=out%
 1000:
 1010DEFPROCspecial(type%)
 1020 IF(type%AND1)=1THENPROCtimsig
 1030 IF(type%AND3)=2THENPROCkeysig
 1040 IF(type%AND7)=4THENPROCclefset
 1050 IF(type%AND63)=32THENPROCbarline
 1060ENDPROC
 1070:
 1080DEFPROCtimsig
 1090ENDPROC
 1100:
 1110DEFPROCkeysig
 1120 keyflat=((type%AND4)=4)
 1130 noaccidents%=FNrevbits(type%,3,3)
 1140 PROCbarline
 1150ENDPROC
 1160:
 1170DEFPROCclefset
 1180 LOCALclef%,stave%
 1190 clef%=(type%AND16)DIV16
 1200 stave%=((type%AND32)DIV32)*2+((type%AND64)DIV64)
 1210 FORR%=0TO7
 1220  IFmidi%(staves%,R%)=stave% THENclef%(R%)=clef%
 1230 NEXT
 1240ENDPROC
 1250:
 1260DEFPROCbarline
 1270 IF keyflat THEN
 1280  FORR%=0TO6
 1290   IFflatseq%(R%)<noaccidents%THENaccstatus%(R%)=-1 ELSEaccstatus%(R%)=0
 1300  NEXT
 1310 ELSE
 1320  FORR%=0TO6
 1330   IFsharpseq%(R%)<noaccidents%THENaccstatus%(R%)=1 ELSEaccstatus%(R%)=0
 1340  NEXT
 1350 ENDIF
 1360ENDPROC
 1370:
 1380DEFPROCchangeaccstatus(key%,type%)
 1390 CASE type% OF
 1400  WHEN 1:accstatus%(key%)=0
 1410  WHEN 2:accstatus%(key%)=1
 1420  WHEN 3:accstatus%(key%)=-1
 1430 ENDCASE
 1440ENDPROC
 1450:
 1460DEFPROCsendmidi(n,x,y,z)
 1470 SYS "MIDI_TxByte",x
 1480 IFn>1 THENSYS "MIDI_TxByte",y
 1490 IFn>2 THENSYS "MIDI_TxByte",z
 1500ENDPROC
 1510:
 1520DEFPROCreaddata
 1530 RESTORE
 1540 FORstaves%=0TO7
 1550  FORR%=0TO7:READmidi%(staves%,R%):NEXT
 1560 NEXT
 1570 FORclef%=0TO1
 1580  FORnote%=0TO31
 1590   FORdata%=0TO1
 1600    READmidisend%(clef%,note%,data%)
 1610   NEXT
 1620  NEXT
 1630 NEXT
 1640 REM Below represents "Father Christmas Goes Down All Escalators Backwards!"
 1650 sharpseq%(0)=4:flatseq%(0)=2:REM A
 1660 sharpseq%(1)=6:flatseq%(1)=0:REM B
 1670 sharpseq%(2)=1:flatseq%(2)=5:REM C
 1680 sharpseq%(3)=3:flatseq%(3)=3:REM D
 1690 sharpseq%(4)=5:flatseq%(4)=1:REM E
 1700 sharpseq%(5)=0:flatseq%(5)=6:REM F
 1710 sharpseq%(6)=2:flatseq%(6)=4:REM G
 1720ENDPROC
 1730ENDPROC
 1740:
 1750REM MIDI Voice allocations to each queue
 1760DATA0,0,0,0,0,0,0,0
 1770DATA0,0,0,0,1,1,1,1
 1780DATA0,1,1,1,1,2,2,2
 1790DATA0,0,1,1,2,2,3,3
 1800DATA0,0,0,0,0,0,0,9
 1810DATA0,0,0,0,1,1,1,9
 1820DATA0,1,1,1,1,2,2,9
 1830DATA0,0,1,1,2,2,3,9
 1840:
 1850REM Treble Clef (Maestro line no/accidental --> MIDI Note)
 1860DATA0,7
 1870DATA45,0
 1880DATA47,1
 1890DATA48,2
 1900DATA50,3
 1910DATA52,4
 1920DATA53,5
 1930DATA55,6
 1940DATA57,0
 1950DATA59,1
 1960DATA60,2
 1970DATA62,3
 1980DATA64,4
 1990DATA65,5
 2000DATA67,6
 2010DATA69,0
 2020DATA71,1
 2030DATA72,2
 2040DATA74,3
 2050DATA76,4
 2060DATA77,5
 2070DATA79,6
 2080DATA81,0
 2090DATA83,1
 2100DATA84,2
 2110DATA86,3
 2120DATA88,4
 2130DATA89,5
 2140DATA91,6
 2150DATA93,0
 2160DATA95,1
 2170DATA96,2
 2180:
 2190REM Bass Clef (Maestro line no/accidental --> MIDI Note)
 2200DATA0,7
 2210DATA24,2
 2220DATA26,3
 2230DATA28,4
 2240DATA29,5
 2250DATA31,6
 2260DATA33,0
 2270DATA35,1
 2280DATA36,2
 2290DATA38,3
 2300DATA40,4
 2310DATA41,5
 2320DATA43,6
 2330DATA45,0
 2340DATA47,1
 2350DATA48,2
 2360DATA50,3
 2370DATA52,4
 2380DATA53,5
 2390DATA55,6
 2400DATA57,0
 2410DATA59,1
 2420DATA60,2
 2430DATA62,3
 2440DATA64,4
 2450DATA65,5
 2460DATA67,6
 2470DATA69,0
 2480DATA71,1
 2490DATA72,2
 2500DATA74,3
 2510DATA76,4

�0
 ș "MIDI_SoundEnable"
 ș "MIDI_TxStart"
((� � ș"Hourglass_Smash":�:�" @ ";�:�
2*RAM
<�setupconvert
FF$="MUSICFILE"
Pș"Hourglass_On"
Z�loadmusic
d�doconversion
nș"Hourglass_Off"
x�
�:
���setupconvert
�
� S &9000
�P� queue%(7),clef%(7),note%(7),count%(7),pos%(7),midi%(7,7),midisend%(1,31,1)
�+�accstatus%(7),sharpseq%(6),flatseq%(6)
�
�readdata
��
�:
���loadmusic
�FILE%=� F$
� M$="":�R%=1�7:M$+=��#FILE%:�
�/�M$<>"Maestro"��"Maestro file is corrupt":�
�&B%=�#FILE%:B2%=�#FILE%:B3%=�#FILE%
��B%<>&A �B2%<>2 �B3%<>1��"This Maestro file is in a non-standard format. Please load it into Maestro and  resave it.":�#FILE%:�
/�#FILE%,gates%:�R%=0�7:�#FILE%,queue%(R%):�
"�R%=1�gates%:?(S+R%)=�#FILE%:�
"�V%=0�7
,E �queue%(V%)<>0��R%=1�queue%(V%):?(S+R%+&1000*V%+&1000)=�#FILE%:�
6�
@~B%=�#FILE%:�B%<>2 ��"This Maestro file is in a non-standard format. Please load it into Maestro and  resave it.":�#FILE%:�
Jstaves%=�#FILE%+4*�#FILE%
T�#FILE%
^�
h:
r��doconversion
|Q�R%=0�7:pos%(R%)=S+&1000*R%+&1001:clef%(R%)=0:count%(R%)=0:accstatus%(R%)=0:�
�%keyflat=�:noaccidents%=0:�barline
�%position%=S+1:timer%=0:�readgates
��
�
 timer%=0
� �
�  moveon=�:timer%=timer%+1
�
  �R%=0�7
�   �count%(R%)=1�
�    moveon=�
�D    �note%(R%)<>0��sendmidi(3,&80+midi%(staves%,R%),note%(R%),0)
�   �
�-   �count%(R%)<>0�count%(R%)=count%(R%)-1
�  �
  �wait=0�125:�

 � moveon
 �readgates
&9 ș"Hourglass_Percentage",�((position%-S)/gates%*100)
0�position%>(gates%+S)
:�
D:
N��readgates
X
�type%
b type%=?position%
l � type%=0�
v4  �special(?(position%+1)):position%=position%+2
�)  �(position%>(gates%+S))��readgates
� �
�,  �addnotes(type%):position%=position%+1
� �
��
�:
���addnotes(queues%)
��R%
� �R%=0�7
�"  �(queues%�2)=1��getqueue(R%)
�  queues%=queues%�2
� �
��
:
��getqueue(q%)
/�notepos%,note%,accidentals%,lenbits%,dots%
  notepos%=(?pos%(q%))�8
*- accidentals%=�revbits(?(pos%(q%)+1),0,3)
4T �accidentals%<>0��changeaccstatus(midisend%(clef%(q%),notepos%,1),accidentals%)
>V note%=midisend%(clef%(q%),notepos%,0)+accstatus%(midisend%(clef%(q%),notepos%,1))
H< � note%<>0��sendmidi(3,&90+midi%(staves%,q%),note%,&3F)
R note%(q%)=note%
\) lenbits%=�revbits(?(pos%(q%)+1),5,3)
f& dots%=�revbits(?(pos%(q%)+1),3,2)
p1 count%(q%)=�((2^(8-lenbits%))*4*(1.5^dots%))
z � PRINTq%,note%,count%(q%)
� pos%(q%)=pos%(q%)+2
��
�:
�ݤrevbits(bits%,first%,no%)
�
 �R%,out%
� out%=0
� �R%=0�no%-1
�3  out%=out%-(2^R%)*((bits%�(2^(first%+R%)))<>0)
� �
�	=out%
�:
���special(type%)
� �(type%�1)=1��timsig
 �(type%�3)=2��keysig
 �(type%�7)=4��clefset
 �(type%�63)=32��barline
$�
.:
8��timsig
B�
L:
V��keysig
` keyflat=((type%�4)=4)
j% noaccidents%=�revbits(type%,3,3)
t
 �barline
~�
�:
�
��clefset
� �clef%,stave%
� clef%=(type%�16)�16
�- stave%=((type%�32)�32)*2+((type%�64)�64)
� �R%=0�7
�0  �midi%(staves%,R%)=stave% �clef%(R%)=clef%
� �
��
�:
�
��barline
� � keyflat �

  �R%=0�6

E   �flatseq%(R%)<noaccidents%�accstatus%(R%)=-1 �accstatus%(R%)=0
  �
 �
(
  �R%=0�6
2E   �sharpseq%(R%)<noaccidents%�accstatus%(R%)=1 �accstatus%(R%)=0
<  �
F �
P�
Z:
d!��changeaccstatus(key%,type%)
n Ȏ type% �
x  � 1:accstatus%(key%)=0
�  � 2:accstatus%(key%)=1
�  � 3:accstatus%(key%)=-1
� �
��
�:
���sendmidi(n,x,y,z)
� ș "MIDI_TxByte",x
� �n>1 �ș "MIDI_TxByte",y
� �n>2 �ș "MIDI_TxByte",z
��
�:
���readdata
� �
 �staves%=0�7
"  �R%=0�7:�midi%(staves%,R%):�
 �
" �clef%=0�1
,  �note%=0�31
6   �data%=0�1
@%    �midisend%(clef%,note%,data%)
J   �
T  �
^ �
hN � Below represents "Father Christmas Goes Down All Escalators Backwards!"
r% sharpseq%(0)=4:flatseq%(0)=2:� A
|% sharpseq%(1)=6:flatseq%(1)=0:� B
�% sharpseq%(2)=1:flatseq%(2)=5:� C
�% sharpseq%(3)=3:flatseq%(3)=3:� D
�% sharpseq%(4)=5:flatseq%(4)=1:� E
�% sharpseq%(5)=0:flatseq%(5)=6:� F
�% sharpseq%(6)=2:flatseq%(6)=4:� G
��
��
�:
�*� MIDI Voice allocations to each queue
��0,0,0,0,0,0,0,0
��0,0,0,0,1,1,1,1
��0,1,1,1,1,2,2,2
��0,0,1,1,2,2,3,3
�0,0,0,0,0,0,0,9
�0,0,0,0,1,1,1,9
�0,1,1,1,1,2,2,9
&�0,0,1,1,2,2,3,9
0:
:<� Treble Clef (Maestro line no/accidental --> MIDI Note)
D�0,7
N	�45,0
X	�47,1
b	�48,2
l	�50,3
v	�52,4
�	�53,5
�	�55,6
�	�57,0
�	�59,1
�	�60,2
�	�62,3
�	�64,4
�	�65,5
�	�67,6
�	�69,0
�	�71,1
�	�72,2
�	�74,3
	�76,4
	�77,5
	�79,6
 	�81,0
*	�83,1
4	�84,2
>	�86,3
H	�88,4
R	�89,5
\	�91,6
f	�93,0
p	�95,1
z	�96,2
�:
�:� Bass Clef (Maestro line no/accidental --> MIDI Note)
��0,7
�	�24,2
�	�26,3
�	�28,4
�	�29,5
�	�31,6
�	�33,0
�	�35,1
�	�36,2
�	�38,3
�	�40,4
		�41,5
		�43,6
		�45,0
	$	�47,1
	.	�48,2
	8	�50,3
	B	�52,4
	L	�53,5
	V	�55,6
	`	�57,0
	j	�59,1
	t	�60,2
	~	�62,3
	�	�64,4
	�	�65,5
	�	�67,6
	�	�69,0
	�	�71,1
	�	�72,2
	�	�74,3
	�	�76,4
�
00000000  0d 00 0a 06 eb 30 0d 00  14 1a 20 c8 99 20 22 4d  |.....0.... .. "M|
00000010  49 44 49 5f 53 6f 75 6e  64 45 6e 61 62 6c 65 22  |IDI_SoundEnable"|
00000020  0d 00 1e 16 20 c8 99 20  22 4d 49 44 49 5f 54 78  |.... .. "MIDI_Tx|
00000030  53 74 61 72 74 22 0d 00  28 28 ee 20 85 20 c8 99  |Start"..((. . ..|
00000040  22 48 6f 75 72 67 6c 61  73 73 5f 53 6d 61 73 68  |"Hourglass_Smash|
00000050  22 3a f6 3a f1 22 20 40  20 22 3b 9e 3a e0 0d 00  |":.:." @ ";.:...|
00000060  32 08 2a 52 41 4d 0d 00  3c 11 f2 73 65 74 75 70  |2.*RAM..<..setup|
00000070  63 6f 6e 76 65 72 74 0d  00 46 12 46 24 3d 22 4d  |convert..F.F$="M|
00000080  55 53 49 43 46 49 4c 45  22 0d 00 50 14 c8 99 22  |USICFILE"..P..."|
00000090  48 6f 75 72 67 6c 61 73  73 5f 4f 6e 22 0d 00 5a  |Hourglass_On"..Z|
000000a0  0e f2 6c 6f 61 64 6d 75  73 69 63 0d 00 64 11 f2  |..loadmusic..d..|
000000b0  64 6f 63 6f 6e 76 65 72  73 69 6f 6e 0d 00 6e 15  |doconversion..n.|
000000c0  c8 99 22 48 6f 75 72 67  6c 61 73 73 5f 4f 66 66  |.."Hourglass_Off|
000000d0  22 0d 00 78 05 e0 0d 00  82 05 3a 0d 00 8c 12 dd  |"..x......:.....|
000000e0  f2 73 65 74 75 70 63 6f  6e 76 65 72 74 0d 00 96  |.setupconvert...|
000000f0  0d de 20 53 20 26 39 30  30 30 0d 00 a0 50 de 20  |.. S &9000...P. |
00000100  71 75 65 75 65 25 28 37  29 2c 63 6c 65 66 25 28  |queue%(7),clef%(|
00000110  37 29 2c 6e 6f 74 65 25  28 37 29 2c 63 6f 75 6e  |7),note%(7),coun|
00000120  74 25 28 37 29 2c 70 6f  73 25 28 37 29 2c 6d 69  |t%(7),pos%(7),mi|
00000130  64 69 25 28 37 2c 37 29  2c 6d 69 64 69 73 65 6e  |di%(7,7),midisen|
00000140  64 25 28 31 2c 33 31 2c  31 29 0d 00 aa 2b de 61  |d%(1,31,1)...+.a|
00000150  63 63 73 74 61 74 75 73  25 28 37 29 2c 73 68 61  |ccstatus%(7),sha|
00000160  72 70 73 65 71 25 28 36  29 2c 66 6c 61 74 73 65  |rpseq%(6),flatse|
00000170  71 25 28 36 29 0d 00 b4  0d f2 72 65 61 64 64 61  |q%(6).....readda|
00000180  74 61 0d 00 be 05 e1 0d  00 c8 05 3a 0d 00 d2 0f  |ta.........:....|
00000190  dd f2 6c 6f 61 64 6d 75  73 69 63 0d 00 dc 0e 46  |..loadmusic....F|
000001a0  49 4c 45 25 3d 8e 20 46  24 0d 00 e6 20 4d 24 3d  |ILE%=. F$... M$=|
000001b0  22 22 3a e3 52 25 3d 31  b8 37 3a 4d 24 2b 3d bd  |"":.R%=1.7:M$+=.|
000001c0  9a 23 46 49 4c 45 25 3a  ed 0d 00 f0 2f e7 4d 24  |.#FILE%:..../.M$|
000001d0  3c 3e 22 4d 61 65 73 74  72 6f 22 8c f1 22 4d 61  |<>"Maestro".."Ma|
000001e0  65 73 74 72 6f 20 66 69  6c 65 20 69 73 20 63 6f  |estro file is co|
000001f0  72 72 75 70 74 22 3a e0  0d 00 fa 26 42 25 3d 9a  |rrupt":....&B%=.|
00000200  23 46 49 4c 45 25 3a 42  32 25 3d 9a 23 46 49 4c  |#FILE%:B2%=.#FIL|
00000210  45 25 3a 42 33 25 3d 9a  23 46 49 4c 45 25 0d 01  |E%:B3%=.#FILE%..|
00000220  04 83 e7 42 25 3c 3e 26  41 20 84 42 32 25 3c 3e  |...B%<>&A .B2%<>|
00000230  32 20 84 42 33 25 3c 3e  31 8c f1 22 54 68 69 73  |2 .B3%<>1.."This|
00000240  20 4d 61 65 73 74 72 6f  20 66 69 6c 65 20 69 73  | Maestro file is|
00000250  20 69 6e 20 61 20 6e 6f  6e 2d 73 74 61 6e 64 61  | in a non-standa|
00000260  72 64 20 66 6f 72 6d 61  74 2e 20 50 6c 65 61 73  |rd format. Pleas|
00000270  65 20 6c 6f 61 64 20 69  74 20 69 6e 74 6f 20 4d  |e load it into M|
00000280  61 65 73 74 72 6f 20 61  6e 64 20 20 72 65 73 61  |aestro and  resa|
00000290  76 65 20 69 74 2e 22 3a  d9 23 46 49 4c 45 25 3a  |ve it.":.#FILE%:|
000002a0  e0 0d 01 0e 2f e8 23 46  49 4c 45 25 2c 67 61 74  |..../.#FILE%,gat|
000002b0  65 73 25 3a e3 52 25 3d  30 b8 37 3a e8 23 46 49  |es%:.R%=0.7:.#FI|
000002c0  4c 45 25 2c 71 75 65 75  65 25 28 52 25 29 3a ed  |LE%,queue%(R%):.|
000002d0  0d 01 18 22 e3 52 25 3d  31 b8 67 61 74 65 73 25  |...".R%=1.gates%|
000002e0  3a 3f 28 53 2b 52 25 29  3d 9a 23 46 49 4c 45 25  |:?(S+R%)=.#FILE%|
000002f0  3a ed 0d 01 22 0b e3 56  25 3d 30 b8 37 0d 01 2c  |:..."..V%=0.7..,|
00000300  45 20 e7 71 75 65 75 65  25 28 56 25 29 3c 3e 30  |E .queue%(V%)<>0|
00000310  8c e3 52 25 3d 31 b8 71  75 65 75 65 25 28 56 25  |..R%=1.queue%(V%|
00000320  29 3a 3f 28 53 2b 52 25  2b 26 31 30 30 30 2a 56  |):?(S+R%+&1000*V|
00000330  25 2b 26 31 30 30 30 29  3d 9a 23 46 49 4c 45 25  |%+&1000)=.#FILE%|
00000340  3a ed 0d 01 36 05 ed 0d  01 40 7e 42 25 3d 9a 23  |:...6....@~B%=.#|
00000350  46 49 4c 45 25 3a e7 42  25 3c 3e 32 20 8c f1 22  |FILE%:.B%<>2 .."|
00000360  54 68 69 73 20 4d 61 65  73 74 72 6f 20 66 69 6c  |This Maestro fil|
00000370  65 20 69 73 20 69 6e 20  61 20 6e 6f 6e 2d 73 74  |e is in a non-st|
00000380  61 6e 64 61 72 64 20 66  6f 72 6d 61 74 2e 20 50  |andard format. P|
00000390  6c 65 61 73 65 20 6c 6f  61 64 20 69 74 20 69 6e  |lease load it in|
000003a0  74 6f 20 4d 61 65 73 74  72 6f 20 61 6e 64 20 20  |to Maestro and  |
000003b0  72 65 73 61 76 65 20 69  74 2e 22 3a d9 23 46 49  |resave it.":.#FI|
000003c0  4c 45 25 3a e0 0d 01 4a  1d 73 74 61 76 65 73 25  |LE%:...J.staves%|
000003d0  3d 9a 23 46 49 4c 45 25  2b 34 2a 9a 23 46 49 4c  |=.#FILE%+4*.#FIL|
000003e0  45 25 0d 01 54 0b d9 23  46 49 4c 45 25 0d 01 5e  |E%..T..#FILE%..^|
000003f0  05 e1 0d 01 68 05 3a 0d  01 72 12 dd f2 64 6f 63  |....h.:..r...doc|
00000400  6f 6e 76 65 72 73 69 6f  6e 0d 01 7c 51 e3 52 25  |onversion..|Q.R%|
00000410  3d 30 b8 37 3a 70 6f 73  25 28 52 25 29 3d 53 2b  |=0.7:pos%(R%)=S+|
00000420  26 31 30 30 30 2a 52 25  2b 26 31 30 30 31 3a 63  |&1000*R%+&1001:c|
00000430  6c 65 66 25 28 52 25 29  3d 30 3a 63 6f 75 6e 74  |lef%(R%)=0:count|
00000440  25 28 52 25 29 3d 30 3a  61 63 63 73 74 61 74 75  |%(R%)=0:accstatu|
00000450  73 25 28 52 25 29 3d 30  3a ed 0d 01 86 25 6b 65  |s%(R%)=0:....%ke|
00000460  79 66 6c 61 74 3d a3 3a  6e 6f 61 63 63 69 64 65  |yflat=.:noaccide|
00000470  6e 74 73 25 3d 30 3a f2  62 61 72 6c 69 6e 65 0d  |nts%=0:.barline.|
00000480  01 90 25 70 6f 73 69 74  69 6f 6e 25 3d 53 2b 31  |..%position%=S+1|
00000490  3a 74 69 6d 65 72 25 3d  30 3a f2 72 65 61 64 67  |:timer%=0:.readg|
000004a0  61 74 65 73 0d 01 9a 05  f5 0d 01 a4 0d 20 74 69  |ates......... ti|
000004b0  6d 65 72 25 3d 30 0d 01  ae 06 20 f5 0d 01 b8 1e  |mer%=0.... .....|
000004c0  20 20 6d 6f 76 65 6f 6e  3d a3 3a 74 69 6d 65 72  |  moveon=.:timer|
000004d0  25 3d 74 69 6d 65 72 25  2b 31 0d 01 c2 0d 20 20  |%=timer%+1....  |
000004e0  e3 52 25 3d 30 b8 37 0d  01 cc 15 20 20 20 e7 63  |.R%=0.7....   .c|
000004f0  6f 75 6e 74 25 28 52 25  29 3d 31 8c 0d 01 d6 10  |ount%(R%)=1.....|
00000500  20 20 20 20 6d 6f 76 65  6f 6e 3d b9 0d 01 e0 44  |    moveon=....D|
00000510  20 20 20 20 e7 6e 6f 74  65 25 28 52 25 29 3c 3e  |    .note%(R%)<>|
00000520  30 8c f2 73 65 6e 64 6d  69 64 69 28 33 2c 26 38  |0..sendmidi(3,&8|
00000530  30 2b 6d 69 64 69 25 28  73 74 61 76 65 73 25 2c  |0+midi%(staves%,|
00000540  52 25 29 2c 6e 6f 74 65  25 28 52 25 29 2c 30 29  |R%),note%(R%),0)|
00000550  0d 01 ea 08 20 20 20 cd  0d 01 f4 2d 20 20 20 e7  |....   ....-   .|
00000560  63 6f 75 6e 74 25 28 52  25 29 3c 3e 30 8c 63 6f  |count%(R%)<>0.co|
00000570  75 6e 74 25 28 52 25 29  3d 63 6f 75 6e 74 25 28  |unt%(R%)=count%(|
00000580  52 25 29 2d 31 0d 01 fe  07 20 20 ed 0d 02 08 13  |R%)-1....  .....|
00000590  20 20 e3 77 61 69 74 3d  30 b8 31 32 35 3a ed 0d  |  .wait=0.125:..|
000005a0  02 12 0d 20 fd 20 6d 6f  76 65 6f 6e 0d 02 1c 0f  |... . moveon....|
000005b0  20 f2 72 65 61 64 67 61  74 65 73 0d 02 26 39 20  | .readgates..&9 |
000005c0  c8 99 22 48 6f 75 72 67  6c 61 73 73 5f 50 65 72  |.."Hourglass_Per|
000005d0  63 65 6e 74 61 67 65 22  2c a8 28 28 70 6f 73 69  |centage",.((posi|
000005e0  74 69 6f 6e 25 2d 53 29  2f 67 61 74 65 73 25 2a  |tion%-S)/gates%*|
000005f0  31 30 30 29 0d 02 30 19  fd 70 6f 73 69 74 69 6f  |100)..0..positio|
00000600  6e 25 3e 28 67 61 74 65  73 25 2b 53 29 0d 02 3a  |n%>(gates%+S)..:|
00000610  05 e1 0d 02 44 05 3a 0d  02 4e 0f dd f2 72 65 61  |....D.:..N...rea|
00000620  64 67 61 74 65 73 0d 02  58 0a ea 74 79 70 65 25  |dgates..X..type%|
00000630  0d 02 62 15 20 74 79 70  65 25 3d 3f 70 6f 73 69  |..b. type%=?posi|
00000640  74 69 6f 6e 25 0d 02 6c  0f 20 e7 20 74 79 70 65  |tion%..l. . type|
00000650  25 3d 30 8c 0d 02 76 34  20 20 f2 73 70 65 63 69  |%=0...v4  .speci|
00000660  61 6c 28 3f 28 70 6f 73  69 74 69 6f 6e 25 2b 31  |al(?(position%+1|
00000670  29 29 3a 70 6f 73 69 74  69 6f 6e 25 3d 70 6f 73  |)):position%=pos|
00000680  69 74 69 6f 6e 25 2b 32  0d 02 80 29 20 20 e7 ac  |ition%+2...)  ..|
00000690  28 70 6f 73 69 74 69 6f  6e 25 3e 28 67 61 74 65  |(position%>(gate|
000006a0  73 25 2b 53 29 29 8c f2  72 65 61 64 67 61 74 65  |s%+S))..readgate|
000006b0  73 0d 02 8a 06 20 cc 0d  02 94 2c 20 20 f2 61 64  |s.... ....,  .ad|
000006c0  64 6e 6f 74 65 73 28 74  79 70 65 25 29 3a 70 6f  |dnotes(type%):po|
000006d0  73 69 74 69 6f 6e 25 3d  70 6f 73 69 74 69 6f 6e  |sition%=position|
000006e0  25 2b 31 0d 02 9e 06 20  cd 0d 02 a8 05 e1 0d 02  |%+1.... ........|
000006f0  b2 05 3a 0d 02 bc 17 dd  f2 61 64 64 6e 6f 74 65  |..:......addnote|
00000700  73 28 71 75 65 75 65 73  25 29 0d 02 c6 07 ea 52  |s(queues%).....R|
00000710  25 0d 02 d0 0c 20 e3 52  25 3d 30 b8 37 0d 02 da  |%.... .R%=0.7...|
00000720  22 20 20 e7 28 71 75 65  75 65 73 25 83 32 29 3d  |"  .(queues%.2)=|
00000730  31 8c f2 67 65 74 71 75  65 75 65 28 52 25 29 0d  |1..getqueue(R%).|
00000740  02 e4 17 20 20 71 75 65  75 65 73 25 3d 71 75 65  |...  queues%=que|
00000750  75 65 73 25 81 32 0d 02  ee 06 20 ed 0d 02 f8 05  |ues%.2.... .....|
00000760  e1 0d 03 02 05 3a 0d 03  0c 12 dd f2 67 65 74 71  |.....:......getq|
00000770  75 65 75 65 28 71 25 29  0d 03 16 2f ea 6e 6f 74  |ueue(q%).../.not|
00000780  65 70 6f 73 25 2c 6e 6f  74 65 25 2c 61 63 63 69  |epos%,note%,acci|
00000790  64 65 6e 74 61 6c 73 25  2c 6c 65 6e 62 69 74 73  |dentals%,lenbits|
000007a0  25 2c 64 6f 74 73 25 0d  03 20 1b 20 6e 6f 74 65  |%,dots%.. . note|
000007b0  70 6f 73 25 3d 28 3f 70  6f 73 25 28 71 25 29 29  |pos%=(?pos%(q%))|
000007c0  81 38 0d 03 2a 2d 20 61  63 63 69 64 65 6e 74 61  |.8..*- accidenta|
000007d0  6c 73 25 3d a4 72 65 76  62 69 74 73 28 3f 28 70  |ls%=.revbits(?(p|
000007e0  6f 73 25 28 71 25 29 2b  31 29 2c 30 2c 33 29 0d  |os%(q%)+1),0,3).|
000007f0  03 34 54 20 e7 61 63 63  69 64 65 6e 74 61 6c 73  |.4T .accidentals|
00000800  25 3c 3e 30 8c f2 63 68  61 6e 67 65 61 63 63 73  |%<>0..changeaccs|
00000810  74 61 74 75 73 28 6d 69  64 69 73 65 6e 64 25 28  |tatus(midisend%(|
00000820  63 6c 65 66 25 28 71 25  29 2c 6e 6f 74 65 70 6f  |clef%(q%),notepo|
00000830  73 25 2c 31 29 2c 61 63  63 69 64 65 6e 74 61 6c  |s%,1),accidental|
00000840  73 25 29 0d 03 3e 56 20  6e 6f 74 65 25 3d 6d 69  |s%)..>V note%=mi|
00000850  64 69 73 65 6e 64 25 28  63 6c 65 66 25 28 71 25  |disend%(clef%(q%|
00000860  29 2c 6e 6f 74 65 70 6f  73 25 2c 30 29 2b 61 63  |),notepos%,0)+ac|
00000870  63 73 74 61 74 75 73 25  28 6d 69 64 69 73 65 6e  |cstatus%(midisen|
00000880  64 25 28 63 6c 65 66 25  28 71 25 29 2c 6e 6f 74  |d%(clef%(q%),not|
00000890  65 70 6f 73 25 2c 31 29  29 0d 03 48 3c 20 e7 20  |epos%,1))..H< . |
000008a0  6e 6f 74 65 25 3c 3e 30  8c f2 73 65 6e 64 6d 69  |note%<>0..sendmi|
000008b0  64 69 28 33 2c 26 39 30  2b 6d 69 64 69 25 28 73  |di(3,&90+midi%(s|
000008c0  74 61 76 65 73 25 2c 71  25 29 2c 6e 6f 74 65 25  |taves%,q%),note%|
000008d0  2c 26 33 46 29 0d 03 52  14 20 6e 6f 74 65 25 28  |,&3F)..R. note%(|
000008e0  71 25 29 3d 6e 6f 74 65  25 0d 03 5c 29 20 6c 65  |q%)=note%..\) le|
000008f0  6e 62 69 74 73 25 3d a4  72 65 76 62 69 74 73 28  |nbits%=.revbits(|
00000900  3f 28 70 6f 73 25 28 71  25 29 2b 31 29 2c 35 2c  |?(pos%(q%)+1),5,|
00000910  33 29 0d 03 66 26 20 64  6f 74 73 25 3d a4 72 65  |3)..f& dots%=.re|
00000920  76 62 69 74 73 28 3f 28  70 6f 73 25 28 71 25 29  |vbits(?(pos%(q%)|
00000930  2b 31 29 2c 33 2c 32 29  0d 03 70 31 20 63 6f 75  |+1),3,2)..p1 cou|
00000940  6e 74 25 28 71 25 29 3d  a8 28 28 32 5e 28 38 2d  |nt%(q%)=.((2^(8-|
00000950  6c 65 6e 62 69 74 73 25  29 29 2a 34 2a 28 31 2e  |lenbits%))*4*(1.|
00000960  35 5e 64 6f 74 73 25 29  29 0d 03 7a 1f 20 f4 20  |5^dots%))..z. . |
00000970  50 52 49 4e 54 71 25 2c  6e 6f 74 65 25 2c 63 6f  |PRINTq%,note%,co|
00000980  75 6e 74 25 28 71 25 29  0d 03 84 18 20 70 6f 73  |unt%(q%).... pos|
00000990  25 28 71 25 29 3d 70 6f  73 25 28 71 25 29 2b 32  |%(q%)=pos%(q%)+2|
000009a0  0d 03 8e 05 e1 0d 03 98  05 3a 0d 03 a2 1f dd a4  |.........:......|
000009b0  72 65 76 62 69 74 73 28  62 69 74 73 25 2c 66 69  |revbits(bits%,fi|
000009c0  72 73 74 25 2c 6e 6f 25  29 0d 03 ac 0d 20 ea 52  |rst%,no%).... .R|
000009d0  25 2c 6f 75 74 25 0d 03  b6 0b 20 6f 75 74 25 3d  |%,out%.... out%=|
000009e0  30 0d 03 c0 10 20 e3 52  25 3d 30 b8 6e 6f 25 2d  |0.... .R%=0.no%-|
000009f0  31 0d 03 ca 33 20 20 6f  75 74 25 3d 6f 75 74 25  |1...3  out%=out%|
00000a00  2d 28 32 5e 52 25 29 2a  28 28 62 69 74 73 25 80  |-(2^R%)*((bits%.|
00000a10  28 32 5e 28 66 69 72 73  74 25 2b 52 25 29 29 29  |(2^(first%+R%)))|
00000a20  3c 3e 30 29 0d 03 d4 06  20 ed 0d 03 de 09 3d 6f  |<>0).... .....=o|
00000a30  75 74 25 0d 03 e8 05 3a  0d 03 f2 14 dd f2 73 70  |ut%....:......sp|
00000a40  65 63 69 61 6c 28 74 79  70 65 25 29 0d 03 fc 19  |ecial(type%)....|
00000a50  20 e7 28 74 79 70 65 25  80 31 29 3d 31 8c f2 74  | .(type%.1)=1..t|
00000a60  69 6d 73 69 67 0d 04 06  19 20 e7 28 74 79 70 65  |imsig.... .(type|
00000a70  25 80 33 29 3d 32 8c f2  6b 65 79 73 69 67 0d 04  |%.3)=2..keysig..|
00000a80  10 1a 20 e7 28 74 79 70  65 25 80 37 29 3d 34 8c  |.. .(type%.7)=4.|
00000a90  f2 63 6c 65 66 73 65 74  0d 04 1a 1c 20 e7 28 74  |.clefset.... .(t|
00000aa0  79 70 65 25 80 36 33 29  3d 33 32 8c f2 62 61 72  |ype%.63)=32..bar|
00000ab0  6c 69 6e 65 0d 04 24 05  e1 0d 04 2e 05 3a 0d 04  |line..$......:..|
00000ac0  38 0c dd f2 74 69 6d 73  69 67 0d 04 42 05 e1 0d  |8...timsig..B...|
00000ad0  04 4c 05 3a 0d 04 56 0c  dd f2 6b 65 79 73 69 67  |.L.:..V...keysig|
00000ae0  0d 04 60 1a 20 6b 65 79  66 6c 61 74 3d 28 28 74  |..`. keyflat=((t|
00000af0  79 70 65 25 80 34 29 3d  34 29 0d 04 6a 25 20 6e  |ype%.4)=4)..j% n|
00000b00  6f 61 63 63 69 64 65 6e  74 73 25 3d a4 72 65 76  |oaccidents%=.rev|
00000b10  62 69 74 73 28 74 79 70  65 25 2c 33 2c 33 29 0d  |bits(type%,3,3).|
00000b20  04 74 0d 20 f2 62 61 72  6c 69 6e 65 0d 04 7e 05  |.t. .barline..~.|
00000b30  e1 0d 04 88 05 3a 0d 04  92 0d dd f2 63 6c 65 66  |.....:......clef|
00000b40  73 65 74 0d 04 9c 12 20  ea 63 6c 65 66 25 2c 73  |set.... .clef%,s|
00000b50  74 61 76 65 25 0d 04 a6  18 20 63 6c 65 66 25 3d  |tave%.... clef%=|
00000b60  28 74 79 70 65 25 80 31  36 29 81 31 36 0d 04 b0  |(type%.16).16...|
00000b70  2d 20 73 74 61 76 65 25  3d 28 28 74 79 70 65 25  |- stave%=((type%|
00000b80  80 33 32 29 81 33 32 29  2a 32 2b 28 28 74 79 70  |.32).32)*2+((typ|
00000b90  65 25 80 36 34 29 81 36  34 29 0d 04 ba 0c 20 e3  |e%.64).64).... .|
00000ba0  52 25 3d 30 b8 37 0d 04  c4 30 20 20 e7 6d 69 64  |R%=0.7...0  .mid|
00000bb0  69 25 28 73 74 61 76 65  73 25 2c 52 25 29 3d 73  |i%(staves%,R%)=s|
00000bc0  74 61 76 65 25 20 8c 63  6c 65 66 25 28 52 25 29  |tave% .clef%(R%)|
00000bd0  3d 63 6c 65 66 25 0d 04  ce 06 20 ed 0d 04 d8 05  |=clef%.... .....|
00000be0  e1 0d 04 e2 05 3a 0d 04  ec 0d dd f2 62 61 72 6c  |.....:......barl|
00000bf0  69 6e 65 0d 04 f6 10 20  e7 20 6b 65 79 66 6c 61  |ine.... . keyfla|
00000c00  74 20 8c 0d 05 00 0d 20  20 e3 52 25 3d 30 b8 36  |t .....  .R%=0.6|
00000c10  0d 05 0a 45 20 20 20 e7  66 6c 61 74 73 65 71 25  |...E   .flatseq%|
00000c20  28 52 25 29 3c 6e 6f 61  63 63 69 64 65 6e 74 73  |(R%)<noaccidents|
00000c30  25 8c 61 63 63 73 74 61  74 75 73 25 28 52 25 29  |%.accstatus%(R%)|
00000c40  3d 2d 31 20 8b 61 63 63  73 74 61 74 75 73 25 28  |=-1 .accstatus%(|
00000c50  52 25 29 3d 30 0d 05 14  07 20 20 ed 0d 05 1e 06  |R%)=0....  .....|
00000c60  20 cc 0d 05 28 0d 20 20  e3 52 25 3d 30 b8 36 0d  | ...(.  .R%=0.6.|
00000c70  05 32 45 20 20 20 e7 73  68 61 72 70 73 65 71 25  |.2E   .sharpseq%|
00000c80  28 52 25 29 3c 6e 6f 61  63 63 69 64 65 6e 74 73  |(R%)<noaccidents|
00000c90  25 8c 61 63 63 73 74 61  74 75 73 25 28 52 25 29  |%.accstatus%(R%)|
00000ca0  3d 31 20 8b 61 63 63 73  74 61 74 75 73 25 28 52  |=1 .accstatus%(R|
00000cb0  25 29 3d 30 0d 05 3c 07  20 20 ed 0d 05 46 06 20  |%)=0..<.  ...F. |
00000cc0  cd 0d 05 50 05 e1 0d 05  5a 05 3a 0d 05 64 21 dd  |...P....Z.:..d!.|
00000cd0  f2 63 68 61 6e 67 65 61  63 63 73 74 61 74 75 73  |.changeaccstatus|
00000ce0  28 6b 65 79 25 2c 74 79  70 65 25 29 0d 05 6e 0f  |(key%,type%)..n.|
00000cf0  20 c8 8e 20 74 79 70 65  25 20 ca 0d 05 78 1c 20  | .. type% ...x. |
00000d00  20 c9 20 31 3a 61 63 63  73 74 61 74 75 73 25 28  | . 1:accstatus%(|
00000d10  6b 65 79 25 29 3d 30 0d  05 82 1c 20 20 c9 20 32  |key%)=0....  . 2|
00000d20  3a 61 63 63 73 74 61 74  75 73 25 28 6b 65 79 25  |:accstatus%(key%|
00000d30  29 3d 31 0d 05 8c 1d 20  20 c9 20 33 3a 61 63 63  |)=1....  . 3:acc|
00000d40  73 74 61 74 75 73 25 28  6b 65 79 25 29 3d 2d 31  |status%(key%)=-1|
00000d50  0d 05 96 06 20 cb 0d 05  a0 05 e1 0d 05 aa 05 3a  |.... ..........:|
00000d60  0d 05 b4 17 dd f2 73 65  6e 64 6d 69 64 69 28 6e  |......sendmidi(n|
00000d70  2c 78 2c 79 2c 7a 29 0d  05 be 17 20 c8 99 20 22  |,x,y,z).... .. "|
00000d80  4d 49 44 49 5f 54 78 42  79 74 65 22 2c 78 0d 05  |MIDI_TxByte",x..|
00000d90  c8 1d 20 e7 6e 3e 31 20  8c c8 99 20 22 4d 49 44  |.. .n>1 ... "MID|
00000da0  49 5f 54 78 42 79 74 65  22 2c 79 0d 05 d2 1d 20  |I_TxByte",y.... |
00000db0  e7 6e 3e 32 20 8c c8 99  20 22 4d 49 44 49 5f 54  |.n>2 ... "MIDI_T|
00000dc0  78 42 79 74 65 22 2c 7a  0d 05 dc 05 e1 0d 05 e6  |xByte",z........|
00000dd0  05 3a 0d 05 f0 0e dd f2  72 65 61 64 64 61 74 61  |.:......readdata|
00000de0  0d 05 fa 06 20 f7 0d 06  04 11 20 e3 73 74 61 76  |.... ..... .stav|
00000df0  65 73 25 3d 30 b8 37 0d  06 0e 22 20 20 e3 52 25  |es%=0.7..."  .R%|
00000e00  3d 30 b8 37 3a f3 6d 69  64 69 25 28 73 74 61 76  |=0.7:.midi%(stav|
00000e10  65 73 25 2c 52 25 29 3a  ed 0d 06 18 06 20 ed 0d  |es%,R%):..... ..|
00000e20  06 22 0f 20 e3 63 6c 65  66 25 3d 30 b8 31 0d 06  |.". .clef%=0.1..|
00000e30  2c 11 20 20 e3 6e 6f 74  65 25 3d 30 b8 33 31 0d  |,.  .note%=0.31.|
00000e40  06 36 11 20 20 20 e3 64  61 74 61 25 3d 30 b8 31  |.6.   .data%=0.1|
00000e50  0d 06 40 25 20 20 20 20  f3 6d 69 64 69 73 65 6e  |..@%    .midisen|
00000e60  64 25 28 63 6c 65 66 25  2c 6e 6f 74 65 25 2c 64  |d%(clef%,note%,d|
00000e70  61 74 61 25 29 0d 06 4a  08 20 20 20 ed 0d 06 54  |ata%)..J.   ...T|
00000e80  07 20 20 ed 0d 06 5e 06  20 ed 0d 06 68 4e 20 f4  |.  ...^. ...hN .|
00000e90  20 42 65 6c 6f 77 20 72  65 70 72 65 73 65 6e 74  | Below represent|
00000ea0  73 20 22 46 61 74 68 65  72 20 43 68 72 69 73 74  |s "Father Christ|
00000eb0  6d 61 73 20 47 6f 65 73  20 44 6f 77 6e 20 41 6c  |mas Goes Down Al|
00000ec0  6c 20 45 73 63 61 6c 61  74 6f 72 73 20 42 61 63  |l Escalators Bac|
00000ed0  6b 77 61 72 64 73 21 22  0d 06 72 25 20 73 68 61  |kwards!"..r% sha|
00000ee0  72 70 73 65 71 25 28 30  29 3d 34 3a 66 6c 61 74  |rpseq%(0)=4:flat|
00000ef0  73 65 71 25 28 30 29 3d  32 3a f4 20 41 0d 06 7c  |seq%(0)=2:. A..||
00000f00  25 20 73 68 61 72 70 73  65 71 25 28 31 29 3d 36  |% sharpseq%(1)=6|
00000f10  3a 66 6c 61 74 73 65 71  25 28 31 29 3d 30 3a f4  |:flatseq%(1)=0:.|
00000f20  20 42 0d 06 86 25 20 73  68 61 72 70 73 65 71 25  | B...% sharpseq%|
00000f30  28 32 29 3d 31 3a 66 6c  61 74 73 65 71 25 28 32  |(2)=1:flatseq%(2|
00000f40  29 3d 35 3a f4 20 43 0d  06 90 25 20 73 68 61 72  |)=5:. C...% shar|
00000f50  70 73 65 71 25 28 33 29  3d 33 3a 66 6c 61 74 73  |pseq%(3)=3:flats|
00000f60  65 71 25 28 33 29 3d 33  3a f4 20 44 0d 06 9a 25  |eq%(3)=3:. D...%|
00000f70  20 73 68 61 72 70 73 65  71 25 28 34 29 3d 35 3a  | sharpseq%(4)=5:|
00000f80  66 6c 61 74 73 65 71 25  28 34 29 3d 31 3a f4 20  |flatseq%(4)=1:. |
00000f90  45 0d 06 a4 25 20 73 68  61 72 70 73 65 71 25 28  |E...% sharpseq%(|
00000fa0  35 29 3d 30 3a 66 6c 61  74 73 65 71 25 28 35 29  |5)=0:flatseq%(5)|
00000fb0  3d 36 3a f4 20 46 0d 06  ae 25 20 73 68 61 72 70  |=6:. F...% sharp|
00000fc0  73 65 71 25 28 36 29 3d  32 3a 66 6c 61 74 73 65  |seq%(6)=2:flatse|
00000fd0  71 25 28 36 29 3d 34 3a  f4 20 47 0d 06 b8 05 e1  |q%(6)=4:. G.....|
00000fe0  0d 06 c2 05 e1 0d 06 cc  05 3a 0d 06 d6 2a f4 20  |.........:...*. |
00000ff0  4d 49 44 49 20 56 6f 69  63 65 20 61 6c 6c 6f 63  |MIDI Voice alloc|
00001000  61 74 69 6f 6e 73 20 74  6f 20 65 61 63 68 20 71  |ations to each q|
00001010  75 65 75 65 0d 06 e0 14  dc 30 2c 30 2c 30 2c 30  |ueue.....0,0,0,0|
00001020  2c 30 2c 30 2c 30 2c 30  0d 06 ea 14 dc 30 2c 30  |,0,0,0,0.....0,0|
00001030  2c 30 2c 30 2c 31 2c 31  2c 31 2c 31 0d 06 f4 14  |,0,0,1,1,1,1....|
00001040  dc 30 2c 31 2c 31 2c 31  2c 31 2c 32 2c 32 2c 32  |.0,1,1,1,1,2,2,2|
00001050  0d 06 fe 14 dc 30 2c 30  2c 31 2c 31 2c 32 2c 32  |.....0,0,1,1,2,2|
00001060  2c 33 2c 33 0d 07 08 14  dc 30 2c 30 2c 30 2c 30  |,3,3.....0,0,0,0|
00001070  2c 30 2c 30 2c 30 2c 39  0d 07 12 14 dc 30 2c 30  |,0,0,0,9.....0,0|
00001080  2c 30 2c 30 2c 31 2c 31  2c 31 2c 39 0d 07 1c 14  |,0,0,1,1,1,9....|
00001090  dc 30 2c 31 2c 31 2c 31  2c 31 2c 32 2c 32 2c 39  |.0,1,1,1,1,2,2,9|
000010a0  0d 07 26 14 dc 30 2c 30  2c 31 2c 31 2c 32 2c 32  |..&..0,0,1,1,2,2|
000010b0  2c 33 2c 39 0d 07 30 05  3a 0d 07 3a 3c f4 20 54  |,3,9..0.:..:<. T|
000010c0  72 65 62 6c 65 20 43 6c  65 66 20 28 4d 61 65 73  |reble Clef (Maes|
000010d0  74 72 6f 20 6c 69 6e 65  20 6e 6f 2f 61 63 63 69  |tro line no/acci|
000010e0  64 65 6e 74 61 6c 20 2d  2d 3e 20 4d 49 44 49 20  |dental --> MIDI |
000010f0  4e 6f 74 65 29 0d 07 44  08 dc 30 2c 37 0d 07 4e  |Note)..D..0,7..N|
00001100  09 dc 34 35 2c 30 0d 07  58 09 dc 34 37 2c 31 0d  |..45,0..X..47,1.|
00001110  07 62 09 dc 34 38 2c 32  0d 07 6c 09 dc 35 30 2c  |.b..48,2..l..50,|
00001120  33 0d 07 76 09 dc 35 32  2c 34 0d 07 80 09 dc 35  |3..v..52,4.....5|
00001130  33 2c 35 0d 07 8a 09 dc  35 35 2c 36 0d 07 94 09  |3,5.....55,6....|
00001140  dc 35 37 2c 30 0d 07 9e  09 dc 35 39 2c 31 0d 07  |.57,0.....59,1..|
00001150  a8 09 dc 36 30 2c 32 0d  07 b2 09 dc 36 32 2c 33  |...60,2.....62,3|
00001160  0d 07 bc 09 dc 36 34 2c  34 0d 07 c6 09 dc 36 35  |.....64,4.....65|
00001170  2c 35 0d 07 d0 09 dc 36  37 2c 36 0d 07 da 09 dc  |,5.....67,6.....|
00001180  36 39 2c 30 0d 07 e4 09  dc 37 31 2c 31 0d 07 ee  |69,0.....71,1...|
00001190  09 dc 37 32 2c 32 0d 07  f8 09 dc 37 34 2c 33 0d  |..72,2.....74,3.|
000011a0  08 02 09 dc 37 36 2c 34  0d 08 0c 09 dc 37 37 2c  |....76,4.....77,|
000011b0  35 0d 08 16 09 dc 37 39  2c 36 0d 08 20 09 dc 38  |5.....79,6.. ..8|
000011c0  31 2c 30 0d 08 2a 09 dc  38 33 2c 31 0d 08 34 09  |1,0..*..83,1..4.|
000011d0  dc 38 34 2c 32 0d 08 3e  09 dc 38 36 2c 33 0d 08  |.84,2..>..86,3..|
000011e0  48 09 dc 38 38 2c 34 0d  08 52 09 dc 38 39 2c 35  |H..88,4..R..89,5|
000011f0  0d 08 5c 09 dc 39 31 2c  36 0d 08 66 09 dc 39 33  |..\..91,6..f..93|
00001200  2c 30 0d 08 70 09 dc 39  35 2c 31 0d 08 7a 09 dc  |,0..p..95,1..z..|
00001210  39 36 2c 32 0d 08 84 05  3a 0d 08 8e 3a f4 20 42  |96,2....:...:. B|
00001220  61 73 73 20 43 6c 65 66  20 28 4d 61 65 73 74 72  |ass Clef (Maestr|
00001230  6f 20 6c 69 6e 65 20 6e  6f 2f 61 63 63 69 64 65  |o line no/accide|
00001240  6e 74 61 6c 20 2d 2d 3e  20 4d 49 44 49 20 4e 6f  |ntal --> MIDI No|
00001250  74 65 29 0d 08 98 08 dc  30 2c 37 0d 08 a2 09 dc  |te).....0,7.....|
00001260  32 34 2c 32 0d 08 ac 09  dc 32 36 2c 33 0d 08 b6  |24,2.....26,3...|
00001270  09 dc 32 38 2c 34 0d 08  c0 09 dc 32 39 2c 35 0d  |..28,4.....29,5.|
00001280  08 ca 09 dc 33 31 2c 36  0d 08 d4 09 dc 33 33 2c  |....31,6.....33,|
00001290  30 0d 08 de 09 dc 33 35  2c 31 0d 08 e8 09 dc 33  |0.....35,1.....3|
000012a0  36 2c 32 0d 08 f2 09 dc  33 38 2c 33 0d 08 fc 09  |6,2.....38,3....|
000012b0  dc 34 30 2c 34 0d 09 06  09 dc 34 31 2c 35 0d 09  |.40,4.....41,5..|
000012c0  10 09 dc 34 33 2c 36 0d  09 1a 09 dc 34 35 2c 30  |...43,6.....45,0|
000012d0  0d 09 24 09 dc 34 37 2c  31 0d 09 2e 09 dc 34 38  |..$..47,1.....48|
000012e0  2c 32 0d 09 38 09 dc 35  30 2c 33 0d 09 42 09 dc  |,2..8..50,3..B..|
000012f0  35 32 2c 34 0d 09 4c 09  dc 35 33 2c 35 0d 09 56  |52,4..L..53,5..V|
00001300  09 dc 35 35 2c 36 0d 09  60 09 dc 35 37 2c 30 0d  |..55,6..`..57,0.|
00001310  09 6a 09 dc 35 39 2c 31  0d 09 74 09 dc 36 30 2c  |.j..59,1..t..60,|
00001320  32 0d 09 7e 09 dc 36 32  2c 33 0d 09 88 09 dc 36  |2..~..62,3.....6|
00001330  34 2c 34 0d 09 92 09 dc  36 35 2c 35 0d 09 9c 09  |4,4.....65,5....|
00001340  dc 36 37 2c 36 0d 09 a6  09 dc 36 39 2c 30 0d 09  |.67,6.....69,0..|
00001350  b0 09 dc 37 31 2c 31 0d  09 ba 09 dc 37 32 2c 32  |...71,1.....72,2|
00001360  0d 09 c4 09 dc 37 34 2c  33 0d 09 ce 09 dc 37 36  |.....74,3.....76|
00001370  2c 34 0d ff                                       |,4..|
00001374