'MENU '- PIANO ROLL '- PROJECT SEQUENCER ' - INTRUMENT SELECTOR ' - SOUND MIXER ' - LFO MENU ' - RATE/DEPTH XY-PAD ' - LFO SETTINGS ' - WAVE ' - PULSE WIDTH ' - VOLUME ' - INVERT ON/OFF ' - ENV ON/OFF ' - TRIG ON/OFF ' - SYNTH MENU ' - WAVE ' - PULSE WIDTH ' - ADSR AND LENGTH 'TO DO '- GENERAL ' - THE LINK BETWEEN MTRACK AND SYNTH MAY BE A LITTLE UNSOLID ' - THE VOLUMES ARE STORED PER NOTE, NOT PER SYNTH ' - SYNTHS ARE ASSIGNED TO NOTES ' - PARAMETERS AND COMMANDS PER NOTE CAN BE USED FOR EFFECT AUTOMATION ' - EXPERIMENT WITH THEM BEFORE ADDING THIS AS A FEATURE ' - MAKE A NEW PAGE FOR FX AUTOMATION OR USE THE INSTRUMENTS PAGE (SWITCH A MODE ON) ' - MAKE THE TRACK SELECTOR (COUNTER) IN THE TOP BAR WORK ' - REASSIGN "PRESSED" NUMBERS TO ITEMS (TO CLEAN THIS UP) ' - CLEAN UP CODE: ' - DO EVERYTHING THE SAME WAY ' - USE MORE FUNCTIONS ' - WHEN DONE: SEARCH FOR "TRACE" AND REMOVE THE DEBUGGING THINGS ' - IT PLAYS A NOTE WITH PITCH 0 BETWEEN TWO NOTES (TA(0,)=0) ' - DEFINE THE TRACK TO PLAY FOR MENU 2 (M=2) CURRENTLY IT'S LOUDER ' - ADD A NEW VAR: "LM" (LAST MENU) ' - IT IS EITHER 0 OR 2 DEPENDING ON WHICH MENU WAS VISITED LAST ' - IN MENU 2 (M=2) THE TRACK FROM THE PREVIOUS MENU WILL CONTINUE PLAYING ' - INCREASE THE BUTTON DELAY (SOME DEVICES SEEM TO RUN THE CODE FASTER) ' - AND ADD TAP TO SOME BUTTONS ' '- MENU 0 BASICALLY DONE ' - MAKE THE OCTAVE COUNTER INCREMENT/DECREMENT 1 PITCH VALUE AT A TIME ' - FOR BETTER WORKFLOW ' - USE THE COUNTER DISPLAY TO DISPLAY THE LOWEST VISIBLE NOTE (LIKE "C#2") ' - (CURRENTLY, THE DISPLAY DISPLAYS THE OCTAVE) ' '- MENU 1 BASICALLY DONE ' - TURN ALL INSTRUMENT SETTINGS INTO ARRAYS (OR ADD A DIMENSION) ' - FOR 16 INDEPENDENT INSTRUMENTS ' '- MENU 2 NOT STARTED ' - ADD LOOP/STOP/START BUTTONS SOMEWERE ' - ADD A WAY TO SELECT WHICH TRACK IS PLAYING: ' - PLAY THE SELECTED TRACK IN MENU 0 ' - PLAY THE WHOLE SEQUENCE IN MENU 2 ' - PROJECT SEQUENCER ' - MAKE THE TIME COUNTER ' - [DONE] DISPLAY THE SECOND HEX TRACK VALUES ON THE GRID EVERY SECOND OR SO ' - OR MAKE A BUTTON TO DO THE ABOVE ' - USE THE SEQ ' - SEQ(VOICE,TIME\32) -> TRACK PLAYING NOW ' - TSYNTH(SEQ(VOICE,TIME\32))-> SYNTH USED NOW ' - SET THE PLAYBACK TIME BY TAPPING THE TIME BAR (0-F) ' - THE PLAYING TIME IS SELECTED, FLAG BUTTONS WILL BE APPLIED ON THIS TIME ' - MAYBE SELECT A TIME ON THE TIME BAR TO ADD FLAGS OR ADD FLAGS TO THE SELECTED TRACK ' - MIXERS (ONE LITTLE FUNCTION CAN HANDLE ALL FADERS) ' - ADD 4 BUTTONS TO PAN THE SELECTED INSTRUMENT LEFT,RIGHT,BOTH OR, MUTE ' - SAVE/LOAD ' - GUI: MAKE THE COUNTER AND DETECT THE BUTTONS ' - MAKE THE ENCODER 'MAYBE '- MAYBE REPLACE THE FADER SLIDERS WITH SPRITES (HIGHER RES) 'DONE '- MENU 2 ' - DONE X/Y PAD MAKE IT CONTROL 2 FADERS IN CFADERS() ' - DONE LFO PW AND V FADERS SHOULD ALSO BE PUT IN CFADERS() ' - DONE APPLY THE ONE-BUTTON-PRESSED-AT-A-TIME TNING (WITH THE "PRESSED" VARIABLE) ' - DONE REFRESH UPON ENTERING THIS MENU ' - DONE ASSIGN FUNCTIONS TO THE VARIABLES (OF THE FADERS AND SWITCHES) 'SOUND DATA FORMAT (WITH COMMENTS) 'THIS IS THE FORMAT USED FOR THE PLAY, MUSIC AND TRACK COMMANDS. IT'S VALID TO STORE ONLY THE SOUND PRESETS, IF NO MUSIC OR TRACK COMMANDS ARE USED WITH THIS DATA. IF ANY TRACKS ARE AVAILABLE, ALL PATTERNS MUST BE STORED. EMPTY TRACKS AFTER THE LAST USED ONE DON'T NEED TO BE STORED. ' 'OFFSET - CONTENT '0 - 16 SOUND PRESETS '128 - 64 PATTERNS '384 - 64 TRACKS ' ' 'EACH SOUND PRESET OCCUPIES 8 BYTES AND MATCHES THE FORMAT OF THE AUDIO REGISTERS OF ONE VOICE, BUT WITHOUT THE FIRST 4 BYTES. ' USE: ' - SFADERS(FADER,SYNTH) ' - BUTTONS(BUTTON,SYNTH) ' - VCOWAVE(SYNTH) ' - LFOWAVE(SYNTH) ' '- ATTRIBUTES: ' BIT PURPOSE ' 0-3 PULSE WIDTH ' 4-5 WAVE: ' 0: SAWTOOTH ' 1: TRIANGLE ' 2: PULSE ' 3: NOISE ' 6 TIMEOUT ENABLED '- LENGTH (TIMEOUT) '- ENVELOPE BYTE 1: ' BIT PURPOSE ' 0-3 ATTACK ' 4-7 DECAY '- ENVELOPE BYTE 2: ' BIT PURPOSE ' 0-3 SUSTAIN ' 4-7 RELEASE '- LFO ATTRIBUTES: ' BIT PURPOSE ' 0-1 WAVE: ' 0: TRIANGLE ' 1: SAWTOOTH ' 2: SQUARE ' 3: RANDOM ' 2 INVERT ' 3 ENV MODE ENABLED ' 4 TRIGGER ENABLED '- LFO SETTINGS BYTE 1: ' BIT PURPOSE ' 0-3 LFO RATE ' 4-7 FREQUENCY AMOUNT '- LFO SETTINGS BYTE 2: ' BIT PURPOSE ' 0-3 VOLUME AMOUNT ' 4-7 PULSE WIDTH AMOUNT '- RESERVED ' ' 'EACH TRACK OCCUPIES 96 BYTES AND CONSISTS OF 32 ENTRIES WITH EACH 3 BYTES: ' '- NOTE PITCH (0 = EMPTY) (USE TA(0,TRACK,TIME) :PIANO ROLL) '- DATA (IGNORED IF NOTE IS 0): ' BIT PURPOSE ' 0-3 VOLUME (USE VFADERS(SYNTH) :MIXER) ' 4-7 SOUND (USE TSYNTH (TRACK) :SYNTH SELECTOR) '- CONTROL: ' BIT PURPOSE ' 0-3 PARAMETER ' 4-7 COMMAND ' 'SOUND COMMANDS 'THESE COMMANDS ALLOW YOU TO CHANGE PARAMETERS DYNAMICALLY WHILE PLAYBACK. USE THEM IN THE TRACK EDITOR. 'C P PURPOSE '0 0 NO COMMAND '0 X MIX (1=LEFT, 2=RIGHT, 3=CENTER/BOTH) '1 X ATTACK TIME '2 X DECAY TIME '3 X SUSTAIN LEVEL '4 X RELEASE TIME '5 X LFO RATE '6 X LFO FREQUENCY AMOUNT '7 X LFO VOLUME AMOUNT '8 X LFO PULSE WIDTH AMOUNT '9 X PULSE WIDTH 'D X SLOW SPEED (LIKE E, BUT +16) 'E X SPEED (TICKS PER ROW, 8 BY DEFAULT) 'F 0 BREAK TRACK/PATTERN 'F 1 CUT NOTE / VOLUME 0 ' ' 'EACH PATTERN OCCUPIES 4 BYTES: ' ' (STILL NEED TO ADD FLAG BUTTONS) ' ' (USE SEQ(VOICE,TRACK) :PROJECT SEQUENCER) ' '- VOICE 0: ' BIT PURPOSE ' 0-6 TRACK INDEX ' (64 = VOICE UNUSED) ' 7 FLAG LOOP START '- VOICE 1: ' BIT PURPOSE ' 0-6 TRACK INDEX ' (64 = VOICE UNUSED) ' 7 FLAG LOOP END '- VOICE 2: ' BIT PURPOSE ' 0-6 TRACK INDEX ' (64 = VOICE UNUSED) ' 7 FLAG SONG STOP '- VOICE 3: ' BIT PURPOSE ' 0-6 TRACK INDEX ' (64 = VOICE UNUSED) ' ' M=1 S=0 BG 1 BG SOURCE ROM(4),20,16 BG COPY 320*0,0,20,16 TO 0,0 BG 0 BG SOURCE ROM(3) BG COPY 320*(M-1),0,20,16 TO 0,0 TOUCHSCREEN 'TRACK ATTRIBUTES DIM GLOBAL TA(3,63,31) DIM GLOBAL TSYNTH(63) DIM GLOBAL SFADERS(9,15) DIM GLOBAL SWITCHES(2,15) DIM GLOBAL VCOWAVE(15) DIM GLOBAL LFOWAVE(15) DIM GLOBAL VFADERS(15) DIM GLOBAL PAN(15) DIM GLOBAL SEQ(3,63) 'DIM GLOBAL FXFADERS(63,31,3) GLOBAL TX,TY,PTX,PTY,TOUCHED,M,LM,SYNTH,MTRACK,OCT,BT,ST,ET,BPM,PLAYING,C,TIME,TM,FILE,TSEL 'BUTTON TIME (PRESS DURATION) BT=0 'SOUND TIME ST=0 'EDIT TIME (LOCATION) ET=0 OCT=4 BPM=100 PLAYING=0 C=0 LM=1 TIME=0 TM=0 MTRACK=0 FILE=0 TSEL=0 FOR J=0 TO 63 FOR I=0 TO 31 TA(1,J,I)=15 NEXT I NEXT J FOR J=0 TO 63 FOR I=0 TO 31 TA(2,J,I)=6 NEXT I NEXT J FOR I=0 TO 15 'VFADERS(I)=15 PAN(I)=3 NEXT I FOR J=0 TO 3 FOR I=0 TO 63 SEQ(J,I)=-1 NEXT I NEXT J FOR I=0 TO 9 READ X FOR J=0 TO 15 SFADERS(I,J)=X NEXT J NEXT I DATA 5,5,5,5,15,5,0,15,15,15 '7-SEGMENT DISPLAY LOGIC FOR I=0 TO 63 READ V POKE $B000+I,V NEXT I DATA 82,82,82,82 DATA 80,64,80,64 DATA 67,83,83,67 DATA 67,83,67,83 DATA 81,81,65,81 DATA 83,67,67,83 DATA 83,67,83,83 DATA 66,82,64,80 DATA 83,83,83,83 DATA 83,83,67,83 DATA 83,83,81,81 DATA 81,65,83,83 DATA 82,66,82,66 DATA 65,81,83,83 DATA 83,67,83,67 DATA 83,67,81,65 'TEMPORARY TETRIS THEME FOR J=0 TO 3 FOR I=0 TO 31 READ TA(0,J,I) NEXT I NEXT J REM MELODY DATA 65,0,60,61,63,0,61,60,58,0,58,61,65,0,63,61 DATA 60,0,60,61,63,0,65,0,61,0,58,0,58,0,0,0 DATA 63,0,0,66,70,0,68,66,65,0,0,61,65,0,63,61 DATA 60,0,60,61,63,0,65,0,61,0,58,0,58,0,0,0 DATA 53,0,0,0,49,0,0,0,51,0,0,0,48,0,0,0 DATA 49,0,0,0,46,0,0,0,45,0,0,0,48,0,0,0 DATA 53,0,0,0,49,0,0,0,51,0,0,0,48,0,0,0 DATA 49,0,53,0,58,58,0,57,0,0,0,0,0,0,0,0 CALL REFRESH0 CALL REFRESH_SOUND TINT 0,0 PAL 3 DO IF TAP THEN TOUCHED=1 IF TOUCH THEN PTX=TOUCH.X PTY=TOUCH.Y TX=PTX\8 TY=PTY\8 CALL GUI IF TOUCHED=1 THEN TOUCHED=0 END IF IF M=3 AND TIMER MOD 128=0 THEN CALL REFRESH_SEQ IF M=3 AND TIME MOD 32=0 THEN CALL TIMELINE CALL PLAYBACK 'TRACE SYNTH WAIT VBL LOOP SUB REFRESH_SOUND IF LM=3 THEN FOR V=0 TO 3 IF SEQ(V,TIME\32)>-1 THEN S=TSYNTH(SEQ(V,TIME\32)) CALL REFRESHING_SOUND(V,S) END IF NEXT V ELSE IF LM=1 THEN V=0 S=TSYNTH(MTRACK) 'TRACE S CALL REFRESHING_SOUND(V,S) END IF END SUB SUB REFRESHING_SOUND(V,S) VOLUME V,15-VFADERS(0),PAN(0) SOUND V,VCOWAVE(S),15-SFADERS(4,S),(15-SFADERS(5,S))*16 ENVELOPE V,15-SFADERS(0,S),15-SFADERS(1,S),15-SFADERS(2,S),15-SFADERS(3,S) LFO V,SFADERS(6,S),15-SFADERS(7,S),15-SFADERS(9,S),15-SFADERS(8,S) LFO WAVE V,LFOWAVE(S),SWITCHES(0,S),SWITCHES(1,S),SWITCHES(2,S) END SUB SUB PLAYBACK IF PLAYING AND TIMER>ST THEN ST=TIMER+3600/(BPM*4) 'FRAMES PER 4 TIME UNITS IF LM=1 THEN V=0 NOTE=TA(0,MTRACK,TIME MOD 32) VOL= TA(1,MTRACK,TIME MOD 32) CMD= TA(2,MTRACK,TIME MOD 32) PAR= TA(3,MTRACK,TIME MOD 32) STOP V ENVELOPE V,,,, IF NOTE<>0 THEN PLAY 0,NOTE ELSE STOP 0 END IF VOLUME V,VOL, CALL RUN_CMD(V,CMD,PAR) 'SPRITES CHAR 4 PAL 1 INC TIME IF TIME>31 THEN TIME=0 ELSE IF LM=3 THEN FOR V=0 TO 3 IF SEQ(V,TIME\32)>-1 THEN NOTE=TA(0,SEQ(V,TIME\32),TIME MOD 32) VOL= TA(1,SEQ(V,TIME\32),TIME MOD 32) CMD= TA(2,SEQ(V,TIME\32),TIME MOD 32) PAR= TA(3,SEQ(V,TIME\32),TIME MOD 32) STOP V ENVELOPE V,,,, IF NOTE<>0 THEN PLAY V,NOTE ELSE STOP V END IF VOLUME V,VOL, CALL RUN_CMD(V,CMD,PAR) ELSE STOP V END IF NEXT V 'SPRITES CHAR 4 PAL 1 INC TIME IF TIME>2047 THEN TIME=0 END IF END IF IF M=1 THEN SPT=(TIME MOD 16)*8 'AN ATTEMPT TO MAKE A SMOOTH LINE -(ST-TIMER)*BPM/3600) (TIME UNITS PER FRAME) IF TIME\16=ET AND PLAYING THEN FOR I=0 TO 11 SPRITE I,SPT+8,32+I*8,4 SPRITE I PAL 1 NEXT I ELSE SPRITE OFF 0 TO 11 END IF END IF END SUB 'C P PURPOSE '0 0 NO COMMAND '0 X MIX (1=LEFT, 2=RIGHT, 3=CENTER/BOTH) '1 X ATTACK TIME '2 X DECAY TIME '3 X SUSTAIN LEVEL '4 X RELEASE TIME '5 X LFO RATE '6 X LFO FREQUENCY AMOUNT '7 X LFO VOLUME AMOUNT '8 X LFO PULSE WIDTH AMOUNT '9 X PULSE WIDTH 'D X SLOW SPEED (LIKE E, BUT +16) 'E X SPEED (TICKS PER ROW, 8 BY DEFAULT) 'F 0 BREAK TRACK/PATTERN 'F 1 CUT NOTE / VOLUME 0 SUB RUN_CMD(V,CMD,PAR) IF CMD\4=0 THEN IF CMD=0 THEN IF PAR<>0 THEN VOLUME V,,PAR ELSE IF CMD=1 THEN ENVELOPE V,PAR,,, ELSE IF CMD=2 THEN ENVELOPE V,,PAR,, ELSE IF CMD=3 THEN ENVELOPE V,,,PAR, END IF ELSE IF CMD\4=1 THEN IF CMD=4 THEN ENVELOPE V,,,,PAR ELSE IF CMD=5 THEN LFO V,PAR,,, ELSE IF CMD=6 THEN LFO V,,PAR,, ELSE IF CMD=7 THEN LFO V,,,PAR, END IF ELSE IF CMD\4=2 THEN IF CMD=8 THEN LFO V,,,,PAR ELSE IF CMD=9 THEN SOUND V,,PAR, ELSE IF CMD=10 THEN ELSE IF CMD=11 THEN END IF ELSE IF CMD\4=3 THEN IF CMD=12 THEN ELSE IF CMD=13 THEN 'SLOW SPEED (LIKE E, BUT +16) ELSE IF CMD=14 THEN 'SPEED (TICKS PER ROW, 8 BY DEFAULT) ELSE IF CMD=15 THEN IF PAR=0 THEN 'BREAK TRACK/PATTERN ELSE STOP V END IF END IF END IF END SUB SUB GUI 'MENU TY2=(TY+1)\2 IF (TX\2=9 AND TY2>4 AND TY2<8 AND (TOUCHED=1 OR TOUCHED=2)) THEN TOUCHED=2 IF M<>TY2-4 THEN M=4-TY2 END IF IF M<0 THEN M=-M STOP IF M<>2 THEN LM=((M-1) MOD 3)+1 BG COPY 320*(M-1),0,20,16 TO 0,0 IF M=1 THEN CALL REFRESH0 ELSE IF M=2 THEN CALL REFRESH1 ELSE IF M=3 THEN CALL REFRESH2 END IF IF M=2 THEN TINT SYNTH,0 PAL 3 ELSE TINT MTRACK,0 PAL 3 END IF SPRITE OFF TY2=(TX+15)\16 'SYNTH / MUSIC TRACK SELECTOR ELSE IF TY=0 AND TX>-1 AND TX<16 AND (TOUCHED=1 OR TOUCHED=3) THEN TOUCHED=3 BG TINT 0,0 TO 15,0 PAL 5 TINT TX,0 PAL 3 SYNTH=TSYNTH(MTRACK) IF M=2 THEN SYNTH=TX TSYNTH(MTRACK)=TX BG COPY 340,0,20,15 TO 0,1 CALL REFRESH1 CALL REFRESH_SOUND ELSE V=(MTRACK\16)*16+TX IF MTRACK<>V THEN MTRACK=V IF M=1 THEN TIME=0 END IF CALL REFRESH_SOUND END IF IF M=3 THEN CALL M2SYNTH IF M=1 THEN CALL REFRESH_P END IF IF M<>2 AND (TX=17 OR TX=19) AND TY=0 AND (TOUCHED=1 OR TOUCHED=4) AND (BT+8)63 THEN ADD MTRACK,-16 PAL 5 CELL 18,0,128+MTRACK\16 SYNTH=TSYNTH(MTRACK) IF M=1 THEN CALL REFRESH_P END IF IF M=4 THEN CALL FX ELSE IF M=1 THEN CALL M0 ELSE IF M=2 THEN CALL M1 ELSE IF M=3 THEN CALL M2 END IF END SUB SUB FX IF TY\2=1 AND TX\2=0 AND (BT+5)0 AND TX<17 AND (TOUCHED=1 OR TOUCHED=6) THEN 'TIME SELECTOR TOUCHED=6 BG TINT 1,15 TO 16,15 PAL 5 TINT TX,15 PAL 3 TSEL=TX-1 PAR=TA(2,MTRACK,TSEL) CALL FXDISPLAY(PAR) BG TINT 1,6 TO 18,6 PAL 5 TINT PAR+(PAR-1)\4+(PAR)\10+(PAR\12),6 PAL 3 IF PAR>11 THEN BG TINT 16,6 TO 18,6 PAL 3 ELSE IF TY=6 AND TX>0 AND TX<19 AND (TOUCHED=1 OR TOUCHED=4) THEN 'FX TYPE SELECTION (COMMAND) TOUCHED=4 IF TX MOD 5<>0 AND TX<>12 THEN BG TINT 1,6 TO 18,6 PAL 5 TINT TX,6 PAL 3 PAR=TX-TX\5-TX\12-(TX\15)*(TX-16) TA(2,MTRACK,TSEL)=PAR CALL FXDISPLAY(PAR) END IF IF TX>15 THEN BG TINT 16,6 TO 18,6 PAL 3 ELSE IF TX>0 AND TX<17 AND TY>6 AND TY<15 AND (TOUCHED=1 OR TOUCHED=5) THEN 'FX FADERS (PARAMETER) TOUCHED=5 TA(3,MTRACK,TX-1)=PTY\4 -14 'REFRESH FADER FOR I=0 TO 7 ATTR CELL.A(TX,7+I) CELL TX,7+I,12+ABS(((I+5)\6) MOD 2 -1) NEXT I ATTR CELL.A(TX,TY) CELL TX,TY,14+ABS(((TY-2)\6) MOD 2 -1) FLIP 0,0 T=TX-1 BG TINT 1,15 TO 16,15 PAL 5 TINT TX,15 PAL 3 ELSE IF TX\2=1 AND TY\2=1 AND (TOUCHED=1 OR TOUCHED=13) AND (BT+5)1 THEN DEC ET PAL 7 CELL 17,2,128+ET\10 CELL 18,2,128+ET MOD 10 CALL REFRESH_P ELSE IF (TX3=5 OR TX2=3) AND (TOUCHED=1 OR TOUCHED=5) THEN 'BPM COUNTER TOUCHED=5 IF TX3=5 THEN INC BPM ELSE IF TX2=3 THEN DEC BPM IF BPM<1 THEN INC BPM ELSE IF BPM>255 THEN DEC BPM PAL 3 CELL 7,2,128+ BPM\100 CELL 8,2,128+(BPM\10) MOD 10 CELL 9,2,128+ BPM MOD 10 ELSE IF TX3=1 AND (TOUCHED=1 OR TOUCHED=6) THEN 'PLAY/PAUSE BUTTON TOUCHED=6 PLAYING=NOT(PLAYING) TIME=0 PAL 2 IF NOT(PLAYING) THEN STOP IF PLAYING THEN CALL BIGCELL(2,2,46) ELSE CALL BIGCELL(2,2,44) END IF ELSE IF TX2=9 AND (TY2=2 OR TY2=3) AND (BT+5)7 THEN DEC OCT PAL 7 CELL 17,3,128+OCT\10 CELL 18,3,128+OCT MOD 10 CALL REFRESH_P ELSE IF TX>=1 AND TX<=16 AND TY>=4 AND TY<=15 AND (TOUCHED=1 OR TOUCHED=8) THEN 'PIANO ROLL IF TOUCHED=1 THEN C=CELL.A(TX,TY) MOD 8 TOUCHED=8 T=TX-1+ET*16 IF (TA(0,MTRACK,T)-1)\12=OCT THEN TINT TX,15-(TA(0,MTRACK,T)-1) MOD 12 PAL 2 'TRACE TA(0,MTRACK,T),(TA(0,MTRACK,T)-1)\12,15-(TA(0,MTRACK,T)-1) MOD 12 IF C=2 THEN TA(0,MTRACK,T)=16-TY+OCT*12 'TRACE TX-1+ET*16,16-TY+OCT*12 TINT TX,TY PAL 0 ELSE IF C=0 THEN TA(0,MTRACK,T)=0 TINT TX,TY PAL 2 END IF END IF END SUB SUB M1 'TRACE SYNTH 'TRACE TX,TY 'FADERS 'VCO FADERS IF TX<>4 AND TX>-1 AND TX<7 AND TY>6 AND TY<15 AND (TOUCHED=1 OR TOUCHED=3+TX-TX\4) THEN TOUCHED=3+TX-TX\4 SFADERS(TX-TX\4,SYNTH)=PTY\4 -14 'TRACE TX-TX\4,PTY\4 -14 'REFRESH FADER FOR I=0 TO 7 ATTR CELL.A(TX,7+I) CELL TX,7+I,12+ABS(((I+5)\6) MOD 2 -1) NEXT I ATTR CELL.A(TX,TY) CELL TX,TY,14+ABS(((TY-2)\6) MOD 2 -1) FLIP 0,0 'X/Y PAD WITH LFO RATE AND DEPTH ELSE IF TX>7 AND TX<16 AND TY>6 AND TY<15 AND (TOUCHED=1 OR TOUCHED=9) THEN TOUCHED=9 SFADERS(6,SYNTH)=PTX\4 -16 SFADERS(7,SYNTH)=PTY\4 -14 'REFRESH FADER PAL 4 BG FILL 8,7 TO 15,14 CHAR 8 CELL TX,TY,9 'OTHER LFO FADERS ELSE IF TX>17 AND TX<20 AND TY>1 AND TY<6 AND (TOUCHED=1 OR TOUCHED=TX-8) THEN TOUCHED=TX-8 SFADERS(TX-10,SYNTH)=PTY\2 -8 'REFRESH FADER FOR I=0 TO 3 ATTR CELL.A(TX,2+I) CELL TX,2+I,12+ABS(((I+1)\2) MOD 2 -1) NEXT I ATTR CELL.A(TX,TY) CELL TX,TY,14+ABS(((TY+3)\2) MOD 2 -1) FLIP 0,0 END IF 'SWITCHES IF (BT+8)1 AND TY<4 AND TX>0 AND TX<7 AND (TOUCHED=1 OR TOUCHED=12) THEN TOUCHED=12 'TRACE 1,TX,TY ADD VCOWAVE(SYNTH),1,0 TO 3 CALL WAVENAMES(1,3,3,VCOWAVE(SYNTH)) ELSE IF (TX+1)\2=1 AND TY\2=2 AND (TOUCHED=1 OR TOUCHED=13) THEN 'PLAY/PAUSE BUTTON TOUCHED=13 PLAYING=NOT(PLAYING) TIME=0 PAL 2 IF NOT(PLAYING) THEN STOP IF PLAYING THEN CALL BIGCELL(1,4,46) ELSE CALL BIGCELL(1,4,44) 'LFO SETTINGS ELSE IF TY>1 AND TY<6 AND TX>7 AND TX<18 THEN 'TRACE TY-2,TX,TY 'LFO WAVE IF TY=2 AND (TOUCHED=1 OR TOUCHED=14) THEN TOUCHED=14 ADD LFOWAVE(SYNTH),1,0 TO 3 CALL WAVENAMES(13,2,3,LFOWAVE(SYNTH)) 'BOOLEAN LFO SETTINGS ELSE IF (TOUCHED=1 OR TOUCHED=TY+12) THEN Y1=TY-3 TOUCHED=15+Y1 'SWITCH BETWEEN PAL 3 AND 5 SWITCHES(Y1,SYNTH)=NOT(SWITCHES(Y1,SYNTH)) FOR I=8 TO 15 TINT I,TY PAL ABS(NOT(SWITCHES(Y1,SYNTH)))*2+3 NEXT I END IF END IF END IF CALL REFRESH_SOUND END SUB SUB M2 'TRACE TX,TY 'PROJECT SEQUENCER IF TX>0 AND TX<17 AND TY>2 AND TY<7 AND (TOUCHED=1 OR TOUCHED=22) THEN IF TOUCHED=1 THEN C=SEQ(TY-3,TX-1+TM*16) TOUCHED=22 PAL 5 'TRACE C IF C=MTRACK THEN SEQ(TY-3,TX-1+TM*16)=-1 ELSE 'IF C=-1 OR WHEN C<>-1 SEQ(TY-3,TX-1+TM*16)=MTRACK END IF CALL REFRESH_SEQ 'SEQ TIME COUNTER ELSE IF (TX+1)\2=9 AND (TY+1)\4=1 AND (TOUCHED=1 OR TOUCHED=31) AND (BT+8)14 AND TX<17 AND TY>13 AND TY<16 AND (TOUCHED=1 OR TOUCHED=21) AND (BT+8)15 THEN DEC SYNTH TSYNTH(MTRACK)=SYNTH CALL M2SYNTH 'SET PLAYBACK TIME ELSE IF TY=2 AND TX>0 AND TX<17 AND (TOUCHED=1 OR TOUCHED=25) THEN TOUCHED=25 TIME=(TX-1+TM*16)*32 'SYNTH SELECTOR 2 (BUTTON BAR) ELSE IF TY=12 AND TX>-1 AND TX<16 AND (TOUCHED=1 OR TOUCHED=19) THEN TOUCHED=19 SYNTH=TX TSYNTH(MTRACK)=SYNTH CALL M2SYNTH 'VOLUME MIXING FADERS ELSE IF TX>-1 AND TX<16 AND TY>7 AND TY<12 AND (TOUCHED=1 OR TOUCHED=TX+3) THEN TOUCHED=TX+3 VFADERS(TX)=PTY\2 -32 'REFRESH FADER FOR I=0 TO 3 ATTR CELL.A(TX,8+I) CELL TX,8+I,12+ABS(((I+1)\2) MOD 2 -1) NEXT I ATTR CELL.A(TX,TY) CELL TX,TY,14+ABS(((TY-7)\2) MOD 2 -1) FLIP 0,0 ELSE IF TX=16 AND TY>7 AND TY<10 AND (TOUCHED=1 OR TOUCHED=22) AND (BT+8)0 AND PAR<5 THEN IF PAR=1 THEN T1$="ENV " T2$="ATTACK" ELSE IF PAR=2 THEN T1$="ENV " T2$="DECAY " ELSE IF PAR=3 THEN T1$="ENV " T2$="SUSTAI" ELSE IF PAR=4 THEN T1$="ENV " T2$="RELEAS" END IF ELSE IF PAR>4 AND PAR<9 THEN IF PAR=5 THEN T1$="LFO " T2$="RATE " ELSE IF PAR=6 THEN T1$="LFO " T2$="FREQ " ELSE IF PAR=7 THEN T1$="LFO " T2$="VOLUME" ELSE IF PAR=8 THEN T1$="LFO " T2$="PWIDTH" END IF ELSE IF PAR>8 AND PAR<12 THEN IF PAR=9 THEN T1$="PULSE " T2$="WIDTH " ELSE IF PAR=10 THEN T1$="SLOW " T2$="SPEED " ELSE IF PAR=11 THEN T1$="HIGH " T2$="SPEED " END IF ELSE IF PAR=12 THEN T1$="CMD " T2$=" " ELSE IF PAR=13 THEN T1$="CMD " T2$=" " ELSE IF PAR=14 THEN T1$="CMD " T2$=" " ELSE IF PAR=15 THEN T1$="CMD " T2$=" " ELSE IF PAR=0 THEN T1$="CMD " T2$=" " END IF END IF CALL DRAWTEXT(5,2,6,T1$) CALL DRAWTEXT(5,3,6,T2$) END SUB SUB WAVENAMES(AX,AY,P,NAME) IF NAME=0 THEN T$="SAW" ELSE IF NAME=1 THEN T$="TRI" ELSE IF NAME=2 THEN T$="PULSE" ELSE IF NAME=3 THEN T$="NOISE" END IF CALL DRAWTEXT(AX,AY,P,T$) END SUB SUB DRAWTEXT(AX,AY,P,T$) L=LEN(T$)-1 PAL P FOR I=0 TO L C=ASC(MID$(T$,I+1,1)) IF C>60 THEN ADD C,73 ELSE ADD C,80 CELL AX+I,AY,C NEXT I IF L=2 THEN PAL 0 FOR I=0 TO 1 CELL AX+I+3,AY,0 NEXT I END IF END SUB SUB M2SYNTH FOR I=0 TO 15 TINT I,12 PAL 5 NEXT I TINT SYNTH,12 PAL 3 PAL 3 CELL 18,1,128+SYNTH 'REFRESH MIX BUTTONS TINT 16,8 PAL ABS(NOT(-(PAN(SYNTH) MOD 2))*2+4) TINT 16,9 PAL ABS(NOT(-(PAN(SYNTH)\2)*2+4)) END SUB SUB TIMELINE BG TINT 1,2 TO 16,2 PAL 6 BG TINT 1,3 TO 16,6 PAL 5 IF TM=TIME\512 THEN T=(TIME\32 MOD 16)+1 TINT T,2 PAL 7 BG TINT T,3 TO T ,6 PAL 3 END IF CALL REFRESH_SOUND END SUB SUB REFRESH_P FOR J=0 TO 11 FOR I=0 TO 15 TINT I+1,J+4 PAL 2 NEXT I NEXT J FOR I=0 TO 15 TINT I+1,J+4 PAL 2 T=I+ET*16 IF (TA(0,MTRACK,T)-1)\12=OCT THEN TINT I+1,15-(TA(0,MTRACK,T)-1) MOD 12 PAL 0 'TRACE (TA(0,MTRACK,T)-1)\12,15-(TA(0,MTRACK,T)-1) MOD 12 NEXT I END SUB SUB REFRESH_SEQ PAL 5 T=(TIMER MOD 256)\128 IF T=0 THEN FOR J=0 TO 3 FOR I=0 TO 15 IF SEQ(J,I+TM*16)>-1 THEN CELL I+1,J+3,128+(SEQ(J,I+TM*16) MOD 16) ELSE CELL I+1,J+3,4 END IF NEXT I NEXT J ELSE FOR J=0 TO 3 FOR I=0 TO 15 IF SEQ(J,I+TM*16)>-1 THEN CELL I+1,J+3,128+(SEQ(J,I+TM*16)\16) ELSE CELL I+1,J+3,4 END IF NEXT I NEXT J END IF CALL TIMELINE END SUB SUB REFRESH0 'PLAY/PAUSE PAL 2 IF PLAYING THEN CALL BIGCELL(2,2,46) ELSE CALL BIGCELL(2,2,44) 'TIME PAL 7 CELL 17,2,128+ET\10 CELL 18,2,128+ET MOD 10 'OCTAVE CELL 17,3,128+OCT\10 CELL 18,3,128+OCT MOD 10 'BPM PAL 3 CELL 7,2,128+ BPM\100 CELL 8,2,128+(BPM\10) MOD 10 CELL 9,2,128+ BPM MOD 10 CALL REFRESH_P END SUB SUB REFRESH1 'ADSR FOR I=0 TO 5 TY=SFADERS(I,SYNTH)\2+7 TX=I+I\4 ATTR CELL.A(TX,TY) CELL TX,TY,14+ABS(((TY-2)\6) MOD 2 -1) NEXT I FLIP 0,0 'X/Y PAD FOR LFO PAL 4 CELL (SFADERS(6,SYNTH)\2)+16\2,(SFADERS(7,SYNTH)\2)+14\2,9 'OTHER LFO FADERS FOR I=8 TO 9 TY=SFADERS(I,SYNTH)\4+2 TX=I+10 ATTR CELL.A(TX,TY) CELL TX,TY,14+ABS(((TY+3)\2) MOD 2 -1) NEXT I FLIP 0,0 'PLAY/PAUSE PAL 2 IF PLAYING THEN CALL BIGCELL(1,4,46) ELSE CALL BIGCELL(1,4,44) 'VCO WAVE CALL WAVENAMES(1,3,3,VCOWAVE(SYNTH)) 'LFO WAVE CALL WAVENAMES(13,2,3,LFOWAVE(SYNTH)) 'OTHER LFO SETTINGS FOR J=3 TO 5 FOR I=8 TO 15 TINT I,J PAL ABS(NOT(SWITCHES(J-3,SYNTH)))*2+3 NEXT I NEXT J END SUB SUB REFRESH2 'VOLUME FADERS FOR I=0 TO 15 TY=VFADERS(I)\4+8 TX=I ATTR CELL.A(TX,TY) CELL TX,TY,14+ABS(((TY+1)\2) MOD 2 -1) NEXT I FLIP 0,0 'SYNTH SELECTOR TINT SYNTH,12 PAL 3 PAL 3 CELL 18,1,128+SYNTH 'PLAY/PAUSE PAL 2 IF PLAYING THEN CALL BIGCELL(15,14,46) ELSE CALL BIGCELL(15,14,44) CALL SEG7(2,14,FILE) CALL REFRESH_SEQ END SUB #1:MAIN PALETTES 00020B01003F0206003F0106000B0101 003F02010002010000030000003F0000 #2:MAIN CHARACTERS 00000000000000000000000000000000 0020303830200000FEDECEC6CEDEFE00 0028282828280000FED6D6D6D6D6FE00 0000000000000000FFFFFFFFFFFFFF00 0000000000000000FEFEFEFEFEFEFE00 0000000000000000FFFFFFFFFFFFFFFF 00000000000000000000FFFFFFFF0000 00000000000000003C3C3C3C3C3C3C3C 01010101010101FF01010101010101FF 01013939390101FF01394545453901FF 01010101010101010101010101010101 00000000000000FF00000000000000FF 24242424242424243C3C3C3C3C3C3C3C 1824242424242424183C3C3C3C3C3C3C 24247EFFFF7E24243C3C7EC3C37E3C3C 18247EFFFF7E2424183C7EC3C37E3C3C FEC6BEBEBEC6FE000038404040380000 0038404040380000FCC6BEBEBEC6FC00 FE8EB6B6B68EFE000070484848700000 0070484848700000FC8EB6B6B68EFC00 FE86BE86BE86FE000078407840780000 FE86BE86BEBEFE000078407840400000 0078407840400000FC86BE86BEBEFC00 FE86BEA6B686FE000078405848780000 0078405848780000FC86BEA6B686FC00 FE86B686B6B6FE000078487848480000 0078487848480000FC86B686B6B6FC00 FE8EB68EB68EFE000070487048700000 00000000000002000000000000000000 00000000040000000000000000000000 00002000000000000000000000000000 00000000000000000000000000000000 000000000103070E003F7F7F7E7C7871 0000000080C0E07000FCFEFE7E3E1E8E 0000000303010000003F7F7C7C7E7F7F 0000000080C0E07000FCFEFE7E3E1E8E 00000000002B2B2B7FFFFFFFFFC0C0C0 0000000000565656FFFFFFFFFF010101 0000003F2F3E3F3F7FFFFFFFFAEBFFEA 000000FEBEEAFEFEFFFFFFFFEBBFFFAB 00001F111F171F047FC0DFDFDFDBDBC0 0000ECECFCECEC40FF01EDA9C5ED6D01 0000001C1113070F003F7F7F7E7C7870 0000003888C8E0F000FCFEFE7E3E1E0E 0000000607070707003F7F7978787878 000000000080C0E000FCFEFEFE7E3E1E 0000000006060606003F7F7F79797979 000000006060606000FCFEFE9E9E9E9E 1C1800000000000063677F7F7F7F3F00 3818000000000000C6E6FEFEFEFEFC00 00000103030000007F7F7E7C7C7F3F00 70E0C080000000008E1E3E7EFEFEFC00 3F3F000000000000C0C0FFFFFFFF7F00 FEFE0000000000000101FFFFFFFFFF00 3E3B2F3F3F000000EBEEFAEAFFFF7F00 FEBAEEFEFE000000ABEFBBABFFFFFF00 1E1E1E171E000000DAD6DCDEDEC07F00 FCF4FCF4FC000000DDFDDD3DFD01FF00 0D0111111D000000727E7E7E7E7F3F00 B0808888B80000004E7E7E7E7EFEFC00 070707070600000078787878797F3F00 E0C08000000000001E3E7EFEFEFEFC00 0606060600000000797979797F7F3F00 60606060000000009E9E9E9EFEFEFC00 0000070F0C0C0C0D3F7FFFFFFFFFFFFF 0000070F0C0C0C0D3F7FFFFFFFFFFFFE 0000070F0C0C0C0D3F7FF8FCFFFFFFFF 0000070F0C0C0C0D3F7FF8FCFFFFFFFE 00183060301800007CE6CE9ECEE67C00 0030180C183000007CCEE6F2E6CE7C00 005864004C3400007CFEFEFEB2CA7C00 005864004C3400007CA69AFEFEFE7C00 00003838380000007CFEC6C6C6FE7C00 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000060606003F7F7F7F797979 000000000060606000FCFEFEFE9E9E9E 000000001F181E18003F7F7F60676167 000000008000CC7800FCFEFE7EFE3286 0000070F0C0C0C0D3F7FFFF3F3F3F3F3 0000070F0C0C0C0D3F7FFFF3F3F3F3F2 0000070F0C0C0C0D3F7FF8F0F3F3F3F3 0000070F0C0C0C0D3F7FF8F0F3F3F3F2 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0603010000000000797C7E7F7F7F3F00 60C08000000000009E3E7EFEFEFEFC00 181800000000000067677F7F7F7F3F00 3078CCCC00000000CE863232FEFEFC00 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 003C666E76663C00FEC298908898C200 0018381818187E00FEE6C6E6E6E68000 003C660C18307E00FEC298F2E6CE8000 003C660C06663C00FEC298F2F898C200 0066667E06060600FE989880F8F8F800 007E607C06067C00FE809E82F8F88200 001C307C66663C00FEE2CE829898C200 007E060C18303000FE80F8F2E6CECE00 003C663C66663C00FEC298C29898C200 003C663E06663C00FEC298C0F898C200 00183C667E666600FEE6C29880989800 007C667C66667C00FE82988298988200 003C666060663C00FEC2989E9E98C200 00786C66666C7800FE86929898928600 007E607860607E00FE809E869E9E8000 007E607860606000FE809E869E9E9E00 003C606E66663C00FEC29E909898C200 0066667E66666600FE98988098989800 003C181818183C00FEC2E6E6E6E6C200 001E060606663C00FEE0F8F8F898C200 00666C78786C6600FE98928686929800 0060606060607E00FE9E9E9E9E9E8000 0042667E7E666600FEBC988080989800 0066767E6E666600FE98888090989800 003C666666663C00FEC298989898C000 007C667C60606000FE8298829E9E9E00 003C66666A6C3E00FEC298989492C000 007C667C786C6600FE82988286929800 003E603C06067C00FEC09EC2F8F88200 007E181818181800FE80E6E6E6E6E600 0066666666663C00FE9898989898C200 00666666663C1800FE98989898C2E600 0066667E7E664200FE9898808098BC00 00663C183C666600FE98C2E6C2989800 0066663C18181800FE9898C2E6E6E600 007E0C1830607E00FE80F2E6CE9E8000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00181818180018000000000000000000 006C6C24000000000000000000000000 00247E24247E24000000000000000000 00083E380E3E08000000000000000000 00626408102646000000000000000000 001C34386E643A000000000000000000 00181830000000000000000000000000 000C183030180C000000000000000000 0030180C0C1830000000000000000000 000024187E1824000000000000000000 000018187E1818000000000000000000 00000000181830000000000000000000 000000007E0000000000000000000000 00000000001818000000000000000000 00060C18306040000000000000000000 003C666E76663C000000000000000000 0018381818187E000000000000000000 003C660C18307E000000000000000000 003C660C06663C000000000000000000 0066667E060606000000000000000000 007E607C06067C000000000000000000 001C307C66663C000000000000000000 007E060C183030000000000000000000 003C663C66663C000000000000000000 003C663E06663C000000000000000000 00000018001800000000000000000000 00000018001830000000000000000000 00000C1830180C000000000000000000 0000007E007E00000000000000000000 000030180C1830000000000000000000 003C660C180018000000000000000000 003C666E6E603C000000000000000000 00183C667E6666000000000000000000 007C667C66667C000000000000000000 003C666060663C000000000000000000 00786C66666C78000000000000000000 007E607860607E000000000000000000 007E6078606060000000000000000000 003C606E66663C000000000000000000 0066667E666666000000000000000000 003C181818183C000000000000000000 001E060606663C000000000000000000 00666C78786C66000000000000000000 0060606060607E000000000000000000 0042667E7E6666000000000000000000 0066767E6E6666000000000000000000 003C666666663C000000000000000000 007C667C606060000000000000000000 003C66666A6C3E000000000000000000 007C667C786C66000000000000000000 003E603C06067C000000000000000000 007E1818181818000000000000000000 0066666666663C000000000000000000 00666666663C18000000000000000000 0066667E7E6642000000000000000000 00663C183C6666000000000000000000 0066663C181818000000000000000000 007E0C1830607E000000000000000000 003C303030303C000000000000000000 006030180C0602000000000000000000 003C0C0C0C0C3C000000000000000000 00183C66000000000000000000000000 0000000000007E000000000000000000 #3:MAIN BG 00001440800581058205830584058505 86058705880589058A058B058C058D05 8E058F05000044058005450506019907 92078A079707980706019B0798079507 95070601060106010601060106010601 060106014E024F022C022D020000230B 220B810380038003220323030000230A 220A220223028007800700005E025F02 3C023D020000330B320B8B0399039603 320333030000330A320A320233028007 840700001B0204020402040204020402 04020402040204020402040204020402 0402040204022002210200101A020402 04020402040204020402040204020402 04020402040204020402040204023002 31020010190204020402040204020402 04020402040204020402040204020402 04020402040230123112001018020402 04020402040204020402040204020402 04020402040204020402040204022012 21120010170204020402040204020402 04020402040204020402040204020402 04020402040200000000000016020402 04020402040204020402040204020402 04020402040204020402040204020000 24012501150204020402040204020402 04020402040204020402040204020402 04020402040200003401350114020402 04020402040204020402040204020402 04020402040204020402040204020000 28022902130204020402040204020402 04020402040204020402040204020402 04020402040200123802390212020402 04020402040204020402040204020402 04020402040204020402040204020012 26022702110204020402040204020402 04020402040204020402040204020402 04020402040200023602370210020402 04020402040204020402040204020402 04020402040204020402040204020002 00020002800581058205830584058505 86058705880589058A058B058C058D05 8E058F05920697069C069D0606019F07 8C079807060106010601060195078F07 98070601060106010601060106010601 060106010701A0078A079F078E070000 00000701A0078A079F078E0700009D03 9B039203000000000D040D0407019D03 9B039203000000000000070192059705 9F058E059B059D050005001500100000 0C040C0407012C022D02000000000000 000007018E0597059F058E0595059805 99058E05001000000C040C0407013C02 3D02000000000000000007019D059B05 9205900590058E059B05000500100000 0D140D14060106010601060106010601 060107010B040B040B040B040B040B04 0B040B040000000099079F070D040D04 0D040D0400000D040D04070108040804 0804080408040804080408048D070000 000000000C040C040C040C0400000C04 0C040701080408040804080408040804 080408048E070000000000000C040C04 0C040C0400000C040C04070108040804 08040804080408040804080499070000 240225020C040C040C040C0400000C04 0C040701080408040804080408040804 080408049D070000340235020C040C04 0C040C0400000C040C04070108040804 08040804080408040804080491070000 280129010C040C040C040C0400000C04 0C040701080408040804080408040804 0804080400000000380139010C040C04 0C040C0400000C040C04070108040804 08040804080408040804080400000000 260227020D140D140D140D1400000D14 0D140701080408040804080408040804 0804080400000000360237028A078D07 9C079B0700009907950707019B078A07 9D078E07000000040000000000000004 00020002800581058205830584058505 86058705880589058A058B058C058D05 8E058F05000044058005450506019907 9B07980793078E078C079D0706019C07 8E079A07060106010601060106014403 80034503000080068106820683068406 850686068706880689068A068B068C06 8D068E068F0680068006000080060402 04020402040204020402040204020402 04020402040204020402040204022202 23020000810604020402040204020402 04020402040204020402040204020402 04020402040232023302000082060402 04020402040204020402040204020402 0402040204020402040204020402230A 220A0000830604020402040204020402 04020402040204020402040204020402 040204020402330A320A000006029607 9207A1078E079B070602060206020602 06020602060206020602060206020602 060206020D040D040D040D040D040D04 0D040D040D040D040D040D040D040D04 0D040D0495030000000000000C040C04 0C040C040C040C040C040C040C040C04 0C040C040C040C040C040C049B030000 240225020C040C040C040C040C040C04 0C040C040C040C040C040C040C040C04 0C040C0400000000340235020D140D14 0D140D140D140D140D140D140D140D14 0D140D140D140D140D140D1400000000 28022902800581058205830584058505 86058705880589058A058B058C058D05 8E058F05000000023802390206028D07 8A079D078A0706020602060206020602 06020602060206020602060206020000 26012701230A220A5302430A22022302 00002A022B023A123B12000007024602 48022C022D02000036013701330A320A 5112411A3202330200003A023B022A12 2B1200000702470200003C023D020000 00000000800581058205830584058505 86058705880589058A058B058C058D05 8E058F05000044058005450506018E07 8F078F078E078C079D0706018A079E07 9D07980796078A079D07920798079707 060106014E034F032C022D0200009506 8F0698060000000000004C024D02230A 220A220223028007800700085E035F03 3C023D0200009B068A069D068E060000 00005C025D02330A320A320233020008 00080008060206020602060206020602 06020602060206020602060206020602 06020602060206020602060200008A06 8D069C069B06000095068F0698060000 9906A00600009C0699068D0600000000 00000000000081058205830584050000 85038605870588050000890500008A05 8B0500008C0596058D05000099060D04 0D040D040D040D040D040D040D040D04 0D040D040D040D040D040D040D040000 000000008A060C040C040C040C040C04 0C040C040C040C040C040C040C040C04 0C040C040C0400000000000097060C04 0C040C040C040C040C040C040C040C04 0C040C040C040C040C040C040C040000 2401250100000E040E040E040E040E04 0E040E040E040E040E040E040E040E04 0E040E040E040000340135018C060C04 0C040C040C040C040C040C040C040C04 0C040C040C040C040C040C040C040000 280229029D060C040C040C040C040C04 0C040C040C040C040C040C040C040C04 0C040C040C040000380239029B060C14 0C140C140C140C140C140C140C140C14 0C140C140C140C140C140C140C140000 2602270295060D140D140D140D140D14 0D140D140D140D140D140D140D140D14 0D140D140D1400003602370200008005 81058205830584058505860587058805 89058A058B058C058D058E058F050000 00000000 #4:STARS 000A001200121D0A00021C120002001A 0002001A000A000A000A001200021C0A 000A00120002000A001A000A001A000A 1D1A000A001A0002000A00020012001A 00021C12000A001A0012001A1C0A0012 001200020012000200121C0A1D0A001A 001A001A000A00121C1200121D0A0012 0012000A000A00020002001A00021D02 1D02001A001200020002000A00020002 00021C021C0200020012001200121D0A 1D0A001A001A1C02000A000A00120002 1D0200020002000A1C0A000A0002001A 001A000A001A001A001A00121C1A1D1A 000200021C1A00121D0200021D02001A 001200021C0A1D02000A0012000A0002 000A001A0002001A000A001A0002000A 1C0A001A000A001A0002000200120002 0012000A001A00021C1A1C021C1A0002 000A1C021D02000A0002000A001A001A 000A0002000A000A00121C0A001A1C02 0002000200121D020002000A00020012 000A001A0002001A000A001200120002 000A0012001A001A0012001A001A1D12 00021D12001200021D1A001A001A0012 001A0012000A000A0002000A000A0002 001A1D12000A000200120012000A000A 0002000A00120002000A00021D0A001A 1D1A00020002000A001200120002001A 000A0002001200120002000A0012000A 0002000A001A0012000200120002000A 001200121C0A000A0002000A0012001A 001A001A001A000A1D0A00120012000A 1C12001A000A000A0012000200120012 000A1D0200121D02001A000A00020002 1C0A00021C021D021C12000A1D020002 0002001A0012001A0012000200120012 1C1A001A0012001A0012001A000A0002 001A000200021C12001A001A1C1A0002 000A0012001A000A00121C121C0A001A 0002000A000A001200020002000A0012 1D02