User Tools

Site Tools


base:macro_player

Macro Player

by Geir Tjelta.

The binary include file (and the source) is included in this archive: macroplayersource.rar.

;---------------------------- Macro Player, $180 hex bytes of code approx. +/- (made just for fun) ----------------
;
;The reason: How small and efficient can a player be, and still sound like A-class ? Plus I want to compose tunes in text/assembler.
;It has been paid attention of code length and rastertime, not data length, but still taken notice of.
;
;Macro Player handles ADSR, calc-frequency changes, pulse, and waveforms using one table that includes branch jumps (to macros).
;These branch jumps triggers other tables aswell, like Filter and pulse sweeps. This method free's up the player for init code.
;Branch calls also free's up code when usually CMP's is used for what tasks to do. Tempo is also used in a similar way.
;
;The conductor has patterns that looks just like an Amiga/PC tracker, but has commands for crunching rests/holds (used when tune is done)
;You can compose music directly in text format, all channels synchronized. Make notice that pattern data left to right is voice 3-1, when using ring-mod.
;The sequencer handles note data, gate on/off, and triggers "fxt" table, that includes all branches for the main player.
;Tie-notes, arpeggio, filter, slides and vibrato (etc..) can be made in the sound-table (fxt). When understood, everything is readable..
;How you edit determines the length of the tunes. 
;
;Player by Geir Tjelta (C) 2008.
;Music composed by Jeroen Tel (C) 1987. 
;Cloned by Geir, March 2009. 
;
;Make notice that this tune doesn't use all features originally, then not improven either. Like Hard Restart, gate on/offs...
;But when that is said, it doesn't have to be improved. Hard Restart didn't sound any good at all on this tune...
;With all respect of Jeroen Tel, I still had to add a few slides to show that the player could handle such, since this tune didn't have any originally.
;Also the Bass guitar has vibrato, which is not in the original. 
;
;------------------------------------------------------------------------------------------------------------------

         *= $0810 ;-------> Location for IRQ

notebit  = $4a   ;Only used on framecall
zero     = $4b	 ;Can not be used outside player, this is the pattern zeropage
zero2    = $4d   ;Only used on framecall
sid	 = $3400 ;SID register

key      = $9090 ;$8080=0,$8282=2  / Transpose all note >definitions<

;------------------------- Patttern commands
ooo      = $8080 ; >c3-ooo = "ooo" is a command so that pattern only uses one byte for each voice on note calls
efx      = $80   ; efx,xxx = xxx=macro definition
fix      = $81   ; fix,xxx = xxx=macro definition
end      = $ff   ; .byte end = Pattern end

xxxxxxx  = $00 ;gate off command
ooooooo  = $f8 ;1 rest
ooxxxxx  = $f9 ;2 rests, used when tune is finished to crunch data (see patterns in this tune for examples)
oooxxxx  = $fa ;3 rests, -"-
ooooxxx  = $fb ;4 rests, -"-
oooooxx  = $fc ;5 rests, -"-
oooooox  = $fd ;6 rests, -"-

;------------------------- Note definitions / macro examples for pattern
;Example1: >c3-ooo = C-3   
;Example2: ooooooo = one note rest
;Example3: xxxxxxx = gate off
;Example4: <c3-ooo = C#3
;Example5: >c3,bd1 = c-3 + start macro definition "bd1" (bassdrum sound)
;Example6: efx,vib = start macro definition "vib". efx means just an xx call for "fxt" macro definitions.
;Example7: efx,pi1 = start macro definition "pi1", a pitch-bend macro call from the "fxt" macro definitions.

c0       = $0101+key
d0       = $0203+key
e0       = $0404+key
f0       = $0506+key
g0       = $0708+key
a0       = $090a+key
b0       = $0b0b+key
c1       = $0c0d+key
d1       = $0e0f+key
e1       = $1010+key
f1       = $1112+key
g1       = $1314+key
a1       = $1516+key
b1       = $1717+key
c2       = $1819+key
d2       = $1a1b+key
e2       = $1c1c+key
f2       = $1d1e+key
g2       = $1f20+key
a2       = $2122+key
b2       = $2323+key
c3       = $2425+key
d3       = $2627+key
e3       = $2828+key
f3       = $292a+key
g3       = $2b2c+key
a3       = $2d2e+key
b3       = $2f2f+key
c4       = $3031+key
d4       = $3233+key
e4       = $3434+key
f4       = $3536+key
g4       = $3738+key
a4       = $393a+key
b4       = $3b3b+key
c5       = $3c3d+key
d5       = $3e3f+key
e5       = $4040+key
f5       = $4142+key
g5       = $4344+key
a5       = $4546+key
b5       = $4747+key
c6       = $4849+key
d6       = $4a4b+key
e6       = $4c4c+key
f6       = $4d4e+key
g6       = $4f50+key
a6       = $5152+key
b6       = $5353+key
c7       = $5455+key
d7       = $5657+key
e7       = $5858+key
f7       = $595a+key
g7       = $5b5c+key
a7       = $5d5e+key
b7       = $5f5f+key

;------------------------------ IRQ routine
	 jsr $e544
	 
	 lda #<tekst
	 ldy #>tekst
	 jsr $ab1e
	 
	 lda #$16
	 sta $d018
         sei
         lda #$01
         sta $d01a
         sta $dc0d
         lda #$37
         sta $01
         jsr $1800
         lda #start-patternl
         jsr playinit
         lda #<int
         sta $0314
         lda #>int
         sta $0315
         cli
         jmp *
         
int      lsr $d019
         lda #$1b
         sta $d011
         lda #$8a
         sta $d012
         lda #$0c
         sta $d020
         lda $d012
         sta raster+1
tuneras  jsr player
	 lda $d012
         ldy #$00
         sty $d020
         sty $d021
         sec
raster   sbc #$8b
	 
         pha
         lsr
         lsr
         lsr
         lsr
         cmp #$0a
         ora #$30
         bcc *+4
         sbc #$39
         sta $05b9
         pla
         and #$0f
         cmp #$0a
         ora #$30
         bcc *+4
         sbc #$39
         sta $05ba
         
         lda #$24
         sta $05b8
         
tunebac  jsr $1806

	 lda #<player
	 sta tuneras+1
	 lda #>player
	 sta tuneras+2
	 lda #6
	 sta tunebac+1
	 lda #$18
	 sta tunebac+2

	 ldx #$18 
	 lda #>sid       
         ldy $dc01
         cpy #$ef
         bne nospace
	 lda #6
	 sta tuneras+1
	 lda #$18
	 sta tuneras+2
	 lda #<player
	 sta tunebac+1
	 lda #>player
	 sta tunebac+2

         lda #$24
nospace  sta sc_jt+2       
         
sc_jt    lda sid,x
         sta $d400,x
         dex
         bpl sc_jt

         jmp $ea7e
         
tekst
.byte $99,$93,$05
.text "macro player BY geir tjelta (c) 2009",$0d,$99
.text "music composed BY jeroen tel/mon (c)1987",$0d
.text "nEW SIZE/RASTERTIME: $7E8/$0D",$0d
.text "oLD SIZE/RASTERTIME: $983/$25",$0d,$0d
.text "hOLD SPACE FOR ORIGINAL SOUND AND PLAYER"
.text "mACRO PLAYER CODE SIZE: $164",0

;------------------------------------ Player Code
         *= $1000		    

conduct  ldx #<frame_end-frametask
pattern  ldy patternc+1
         lda (zero),y
         adc #1
         bne filter
         sta patternc+1

patternp ldy #$00
         cpy #<patt_end-patternh
         bcc *+3
         tay
         lda patternl,y
         sta zero
         lda patternh,y
         sta zero+1
         iny
         sty patternp+1
         bne filter
;------------------------------- Start of Player (IRQ call -> jsr player)
player   sec
         ldx #$0e
loop_    bpl *+2

tempoc   ldx #0
         lda frametask,x
         sta loop_+1
         dex
;------------------------------- Filter routine table
         bmi conduct           
filter   ldy #$00      
         lda d416,y
         beq nofilt
         sta sid+22
filtdir  iny
         sty filter+1
nofilt   stx tempoc+1
         rts
;-------------------------------
chk_seq  lda note2,x
;         bne seq_2		;Pattern gate control, not used in this tune
;gateoff  lda #$f6
;         sta gate,x
seq_2    cmp #$f6
         bcs table_
         and #$7f
         beq settable
         sta note,x
         sta freqadd,x
;        inc gate,x
settable ldy tabley2,x
         bcc jp_chk

clr_sr;  lda gate,x		;Hard Restart, not used in this tune	
      ;  adc #1
      ;  bne table_
      ;  lda #2 
      ;  sta sid+6,x
      ;  bne table_

;-----------------------------> Pattern code, with a duration/rest packer command ($f8 and above).. See pattern data and source header for info.
patternc ldy #$00
         lda (zero),y
         sta note2,x
         beq nonote
hold     cmp #$f8
         bcc nohold
         bne holdinc
         lda #$f8
         sta hold+1
         bne nonote
holdinc  inc hold+1
         bne table_

nohold   asl a
         beq efxonly
;        lda #$fe		;Gate off in pattern, not used in this tune
;        sta gate,x
         bcc nonote
efxonly  iny
         lda (zero),y
         sta tabley2,x
nonote   iny
         sty patternc+1
         
;-----------------------------> Start of macro codes... (wavetable if you like..)         
table_   clc
         ldy tabley,x
jp_chk   lda fxt,y
         bmi jp_pitch
         sta jp1-1
         iny
         lda fxt,y
         iny
         bne jp1
jp1
jp_goto  tay
         bne jp_chk

jp_wadsr sta wavef,x
         lda fxt,y
         sta sid+5,x
	 iny
         lda fxt,y
         iny
jp_sr    sta sid+6,x
         bne jp_pitch-3

jp_fi0   sta filter+1
         bne jp_chk

jp_pprg  sta pulsex,x
         bne jp_chk

jp_finad adc freqadd,x
         sta freqadd,x
         bne jp_chk

jp_gf6 ; sta gate,x		;Gate control, not used in this tune
       ; bne jp_pitch-3

         sec
jp_wf    sta wavef,x
         bcc *+4
         lda #$80
jp_mode  sta wavef2,x
         lda fxt,y

jp_pitch iny
         sta notebit
         tya
         sta tabley,x
         lda wavef,x
;        and gate,x		;Tune do not use gate control
         sta sid+4,x
         asl a
         bpl nopulse            ;Only run Pulse Routine if pulse waveform is used... Look in Pulse table for its features.

         ldy pulsex,x
         lda put,y
         cmp #1
         beq p_dir
         cmp #$fd
         bne p_sum
         lda #$ff
p_dir    sta pulsdir,x
         tya
         adc put,y
         tay
         lda put,y
p_sum    sta sid+2,x
         sta sid+3,x
         tya
         clc
         adc pulsdir,x
         sta pulsex,x
nopulse

;----------------------------------------> Pitch-routine... Handles everything that has to do with the frequency register.
         lda #0
         sta zero2+1
         lda notebit
         ldy wavef2,x
         bpl finetune
         tay
         bmi fqfixed
         clc
         adc note,x
fqfixed  and #$7f
         tay
         lda #0
         beq fqcenter+3

finetune and #$7f
         beq fqcenter
         clc
         adc freqadd,x
         tay
         cmp #$60
         bcc nohival
         lda fqhi-$60,y
         sta zero2+1
nohival  lda fqhi,y
fqcenter ldy note,x
         sta zero2
         lda fqlo,y
         bit notebit
         bmi bm1
         clc
         adc zero2
         sta sid+0,x

         lda fqhi,y
         adc zero2+1
         bcc sethi
bm1      sec
         sbc zero2
setfreq  sta sid+0,x
         lda fqhi,y
         sbc zero2+1
sethi    sta sid+1,x

         lda #$ff
         .byte $cb,7
         jmp loop_

pulsdir  .byte 1
tabley2  .byte 0
freqadd  .byte 0
wavef2   .byte 0
note2    .byte 0
pulsex   .byte 0
gate     .byte 0

         .byte 1
         brk
         brk
         brk
         brk
         brk
         brk

         .byte 1
         brk
         brk
         brk
         brk
         brk
         brk

notes    = <chk_seq-loop_-2
;soft     = <gateoff-loop_-2
hard     = <clr_sr-loop_-2
seq      = <patternc-loop_-2
table    = <table_-loop_-2

frametask .byte notes
          .byte table
          .byte table   ;change this to ".byte hard", and remember to enable hard restart code above for Hard Restart
          .byte seq
          .byte table
frame_end .byte table
;----------------------------------------------- This tune used NTSC table..
fqhi
.byte $01,$01,$01,$01,$01,$01,$01,$01		;note freqs high
.byte $01,$01,$01,$01,$02,$02,$02,$02 
.byte $02,$02,$02,$03,$03,$03,$03,$03 ;10
.byte $04,$04,$04,$04,$05,$05,$05,$06
.byte $06,$07,$07,$07,$08,$08,$09,$09 ;20
.byte $0a,$0b,$0b,$0c,$0d,$0e,$0e,$0f
.byte $10,$11,$12,$13,$15,$16,$17,$19 ;30
.byte $1a,$1c,$1d,$1f,$21,$23,$25,$27
.byte $2a,$2c,$2f,$32,$35,$38,$3b,$3f ;40
.byte $43,$47,$4b,$4f,$54,$59,$5e,$64
.byte $6a,$70,$77,$7e,$86,$8e,$96,$9f ;50
.byte $a8,$b3,$bd,$c8,$d4,$e1,$ee,$fd

fqlo
.byte $0c,$1c,$2d,$3e,$51,$66,$7b,$91		;note freqs low
.byte $a9,$c3,$dd,$fa,$18,$38,$5a,$7d
.byte $a3,$cc,$f6,$23,$53,$86,$bb,$f4 ;10
.byte $30,$70,$b4,$fb,$47,$98,$ed,$47
.byte $a7,$0c,$77,$e9,$61,$e1,$68,$f7 ;20
.byte $8f,$30,$da,$8f,$4e,$18,$ef,$d2
.byte $c3,$c3,$d1,$ef,$1f,$60,$b5,$1e ;30
.byte $9c,$31,$df,$a5,$87,$86,$a2,$df
.byte $3e,$c1,$6b,$3c,$39,$63,$be,$4b ;40
.byte $0f,$0c,$45,$bf,$7d,$83,$d6,$79
.byte $73,$c7,$7c,$97,$1e,$18,$8b,$7e ;50
.byte $fa,$06,$ac,$f3,$e6,$8f,$f8,$2e

wavef    .byte 0
note     .byte 0
tabley   .byte 0
unused1  .byte 0
unused2  .byte 0
unused3  .byte 0
unused4  .byte 0

         brk
         brk
         brk
         brk
         brk
         brk
         brk

         brk
         brk
         brk
         brk
         brk
         brk
         brk

;---------------------------------------- Player init, A = conductor position.
playinit sta patternp+1
	 ldx #0
       ; ldx #<frame_end-frametask
         lda #$f8
         sta hold+1
	 lda #seq
	 sta loop_+1
         lda #$b4
         sta sid+23
         lda #$1f
         sta sid+24
         ldy #$14
         lda #0
clr      sta sid+0,y
         dey
         bpl clr
         jmp patternp-3

;---------------------------------------------------------------------------> SOUND DATA
;Macros for "fxt" table
;
;$80-$ff =				;Since branches is not longer than $00-$7f, $80-$ff is used as a direct jump to pitch routine.. 
filt     = <jp_fi0-jp1 			;filt,xx  	then checks next macro
puls     = <jp_pprg-jp1                 ;puls,xx  	then checks next macro 
fineadd  = <jp_finad-jp1                ;fineadd,xx	then checks next macro
gt       = <jp_gf6-jp1  		;gt,$f7,xx / gt,$f6,xx (gate on/off)  xx=pitch. Then exits macro routine
wadsr    = <jp_wadsr-jp1 		;wadsr,$11,8,$e9,xx  Waveform,AD,SR,pitch. Then exits macro routine
sr       = <jp_sr-jp1   		;sr,$88,xx	Set SR only xx=pitch. Then exits macro routine
n        = <jp_pitch+1-jp1 ;+yy		;n,xx		xx=note ($80+ is fixed notes). Then exits macro routine
goto     = <jp_goto-jp1 ;+yy		;goto,xx	jump, then checks next macro
wf       = <jp_wf-jp1			;wf,$41,xx	xx=pitch, wf means waveform with finetune pitch value ($80 is center,$81+ is finetune subtract). Then exits macro routine
wn       = <jp_wf-1-jp1			;wn,$41,xx	xx=note, wn means waveform with note value ($80+ is fixed notes). Then exits macro routine
mode     = <jp_mode-jp1			;mode,0,xx / mode,$80,xx  toggle between wf / wn mode   xx=finetune/note
;
;Make notice that macro code above $80-$ff means either note values or finetune values depending on the "mode" command you're in...
;---------------------------------------------------------------------------
;
;					The Macro Table with definitions used in the patterns...
;
fxt

pi1      = <*-fxt 	;Pitch		;pitch-bend, then runs directly into vib datas
         .byte $a7,$a0,$98,$93,$8a,$84

vib      = <*-fxt	;Vibrato	;Trick to find correct xx/yy values by names instead of numbers...
         .byte $80,$8e,$97,$8e        	;Vibrate subs    $80=center
         .byte $80,n,$0e,n,$17,n,$0e  	;Vibrate Adds
         .byte fineadd,3	      	;Vibrate/finetune expander
         .byte goto,vib			;jump to "vib" start....

bas      = <*-fxt ;Bass guitar
         .byte wadsr,$41,0,$ee,0
         .byte filt,0
         .byte puls,p3
         .byte wn,$81,$c9
	 .byte wf,$40,0
bs2      = <*-fxt
	 .byte $80,$80
         .byte goto,vib

ld1      = <*-fxt ;Lead1
         .byte wadsr,$21,0,$be,0
         .byte puls,p1
         .byte goto,ld2_

ld2      = <*-fxt ;Lead2
         .byte wadsr,$21,0,$be,0
         .byte puls,p2
ld2_     = <*-fxt    
         .byte wf,$21,0,wf,$20,0
 	 .byte wf,$40,0
         .byte goto,vib

arp      = <*-fxt ;Intro arpeggio stab
         .byte wadsr,$41,$00,$a7,0
         .byte puls,p4
         .byte wn,$41,$18,wn,$40,$0c
arp_     = <*-fxt
	 .byte n,$00,n,$18,n,$0c
	 .byte goto,arp_

sin      = <*-fxt ;Drums fill-in sound
         .byte wadsr,$11,0,$e8,0
	 .byte wn,$81,$c9
	 .byte wf,$11,0
	 .byte wf,$10,0
sin_     = <*-fxt
	 .byte $80
	 .byte goto,sin_
         
bd1      = <*-fxt ;Bassdrum
         .byte wadsr,$11,0,$c8,0
         .byte puls,p08
         .byte wn,$81,$c4
         .byte wn,$41,$a7
	 .byte wn,$40 
         .byte $a3,$9e,$9b,$97,$92,$92,$8b,$8b,$80,$80,$8b,$92,$8b
bd1_     = <*-fxt
         .byte $80
         .byte goto,bd1_

sn1      = <*-fxt ;Snaredrum
         .byte wadsr,$11,0,$e8,0
	 .byte puls,p08
         .byte wn,$81,$bb
         .byte wn,$41,$ad,wn,$40,$aa
         .byte wn,$80,$c3,$b5,$bb,$af,$c3
sn1_     = <*-fxt         
         .byte wn,$10,$ac
         .byte goto,sn1_+2

;--------------------------------------------------> Pulse table <-----------------------------------
; Pulse routine use a method of ping-pong, or loopback.. 1=forward, $fd(253)=backwards
; Make note that first value after command "1" is not heard, this is due to the ping-pong method, not to repeat the same value next frame.
; Only 8-bits used, instead of 14... lo/hi stored in one byte...
;
put     

p08      = <*-put ;Drums pulse
         .byte 1,$08,$08,253

p1       = <*-put ;Lead1 pulse    ;Slow pulse sweep, but this data was needed... I wanted to keep it as original as possible.
         .byte 1,$01,$81,$02,$12 
         .byte $22,$32,$42,$52
         .byte $62,$72,$82,$92
         .byte $a2,$b2,$c2,$d2
         .byte $e2,$f2,$03,$13
         .byte $23,$33,$43,$53
         .byte $63,$73,$83,$93
         .byte $a3,$b3,$c3,$d3 
         .byte $e3,$f3,$04,$14
	 .byte $24,$34,$44,$54,$64,$74,$84,$94
	 .byte $a4,$b4,$c4,$d4,$e4,$f4,$05,$15
	 .byte $25,$35,$45,$55,$65,$75,$85,$95
	 .byte $a5,$b5,$c5,$d5,$e5,$f5,$06,$16
	 .byte $26,$36,$46,$56,$66,$76,$86,$96
	 .byte $a6,$b6,$c6,$d6,$e6,$f6,$07,$17
	 .byte $27,$37,$47,$57,$67,$77,$87,$97
	 .byte 253

p2       = <*-put ;Lead 2 pulse  ;This lead instrument has a more varied pulse sweep, then possible to backwards the data earlier...
         .byte 1,$0a,$8a,$ca,$0b,$4b,$8b,$cb
         .byte $0c,$4c,$8c,$cc,$0d,$4d,$8d,$cd
         .byte $4e,$ce,$4f,$ce,$4e,$cd,$4d,$cc
	 .byte $4c,$cb,$4b,$ca,$4a,$c9,$49,$c8
	 .byte $48,$c7,$47,$c6,$46,$c5,$45,$c4
	 .byte $44,$c3,$43,$c2,$42,$c1,$41,$c0
	 .byte 253

p3       = <*-put ;Bass pulse    ;This program uses two "1" commands, so you can loop the pulse "tale". 
         .byte 1,$00,$42,$e2,$83
         .byte 1,$83,$e3,$44,$a4 ;I add an extra $83, because command "1" will skip it, but not on the return... 
         .byte $05,$45,$85,$c5,$06
	 .byte $07,$47,$87,$c7,$08
         .byte 253                ;I'll explain this command.. It will reverse the direction, but jump back to value $c7 in this program, so that value $08 doesn't get repeated again.
                                  ;Player was designed with this value ($fd, or 253), because this value will make it reverse correctly.
                                  
p4       = <*-put ;Arp stab pulse
         .byte 1,$08,$a8,$49,$e9,$8a
         .byte 1,$8a,$ea,$4b,$ab
         .byte $0c,$8c,$0d,$8d
	 .byte $0e,$8e,$0f
         .byte 253
         
         
;--------------------------------------------------> Filter table <-----------------------------------
;Routine explains itself...

         ;0 = end table

d416     .byte $c0,$b0,$a0,$90,$80,$78,$70,$68,$60,$58,$50,$44,$38,$2c,$20,$12
         .byte $04,0

;--------------------------------------------------> Conductor calls <-----------------------------------         

patternl
	 ;Intro
start	 .byte <noisy
	 .byte <noisy
	 
	 ;Melody1 
	 .byte <noisy2
	 .byte <noisy3
 	 .byte <noisy2
	 .byte <noisy4
	 
	 .byte <noisy2
	 .byte <noisy3
 	 .byte <noisy2
	 .byte <noisy4
	 
	 ;Melody2
	 .byte <noisy5
	 .byte <noisy6
	 .byte <noisy7
	 .byte <noisy8

	 ;intro
	 .byte <noisy
	 .byte <noisy
	 
	 ;Funky end 
	 .byte <noisy9
	 .byte <noisy9_2
	 .byte <noisy10
	 .byte <noisy10_2
	 .byte <noisy9
	 .byte <noisy9_3
	 .byte <noisy10_3
	 .byte <noisy10_3_2
	 .byte <noisy10_4
	 
	 .byte <noisy9
	 .byte <noisy9_2
	 .byte <noisy10
	 .byte <noisy10_2
	 .byte <noisy9
	 .byte <noisy9_3
	 .byte <noisy10_3
	 .byte <noisy10_3_2
	 .byte <noisy10_4
    
patternh
	 .byte >noisy
         .byte >noisy
         
         .byte >noisy2
	 .byte >noisy3
 	 .byte >noisy2
	 .byte >noisy4
	 
	 .byte >noisy2
	 .byte >noisy3
 	 .byte >noisy2
	 .byte >noisy4
	 
     	 .byte >noisy5
	 .byte >noisy6
	 .byte >noisy7
	 .byte >noisy8  
	 
	 .byte >noisy
         .byte >noisy

	 .byte >noisy9
	 .byte >noisy9_2
	 .byte >noisy10
	 .byte >noisy10_2
	 .byte >noisy9
	 .byte >noisy9_3
	 .byte >noisy10_3
	 .byte >noisy10_3_2
	 .byte >noisy10_4
	 
	 .byte >noisy9
	 .byte >noisy9_2
	 .byte >noisy10
	 .byte >noisy10_2
	 .byte >noisy9
	 .byte >noisy9_3
	 .byte >noisy10_3
	 .byte >noisy10_3_2
	 .byte >noisy10_4
         
patt_end

;--------------------------------------------------> Patterns <-----------------------------------   
;This source has had the patterns packed... 15 mins of slavework by the way.... :-)  (ooxxxxx, oooxxxx, meaning: two and three rests etc...)

noisy	.byte >c1,bas,fix,bd1,<d3,arp
	.byte ooxxxxx,>d3-ooo
	.byte ooooooo,>c5,sin,>c3-ooo
	.byte >c1-ooo,>c4-ooo,<d3-ooo
	
	.byte ooooooo,fix,sn1,>d3-ooo
	.byte ooxxxxx,>c3-ooo
	.byte <a0-ooo,fix,bd1,<d3-ooo
	.byte ooxxxxx,>f3-ooo

	.byte >c1-ooo,ooooooo,>g3-ooo
	.byte ooooooo,>c4,sin,<d3-ooo
	.byte ooooooo,>c5-ooo,>c3-ooo
	.byte >c1-ooo,fix,bd1,>g3-ooo
	
	.byte ooooooo,fix,sn1,<d3-ooo
	.byte >c1-ooo,fix,bd1,>c3-ooo
	.byte >d1-ooo,>c4,sin,>g3-ooo
	.byte <d1-ooo,>c5-ooo,<a3-ooo

	.byte <g0-ooo,fix,bd1,<g3-ooo
	.byte ooxxxxx,<d3-ooo
	.byte ooooooo,>c5,sin,>c3-ooo
	.byte <g0-ooo,>c4-ooo,<g3-ooo
	
	.byte ooooooo,fix,sn1,<d3-ooo
	.byte ooxxxxx,>c3-ooo
	.byte <g0-ooo,fix,bd1,<g3-ooo
	.byte ooooooo,<c0-ooo,>c4-ooo

	.byte <a0-ooo,ooooooo,<a3-ooo
	.byte ooooooo,>c5,sin,>f3-ooo
	.byte ooxxxxx,>d3-ooo
	.byte <a0-ooo,>c4-ooo,<a3-ooo
	
	.byte ooooooo,fix,sn1,>f3-ooo
	.byte ooxxxxx,>d3-ooo
	.byte >b0-ooo,<c0-ooo,<a3-ooo
	.byte ooooooo,<c0-ooo,>f3-ooo
	
	.byte end

noisy2  .byte >c1,bas,fix,bd1,>c3,ld1
	.byte ooxxxxx,>c3-ooo
	.byte ooooooo,>c5,sin,>c3-ooo
	.byte >c1-ooo,>c4-ooo,>c3-ooo
	
	.byte ooooooo,fix,sn1,>c3-ooo
	.byte oooxxxx;ooooooo,ooooooo
	.byte <a0-ooo,fix,bd1,>c3-ooo
	.byte ooxxxxx,<d3-ooo

	.byte >c1-ooo,ooxxxxx;ooooooo
	.byte ooooooo,>c4,sin,<d3-ooo
	.byte ooooooo,>c5-ooo,>d3-ooo
	.byte >c1-ooo,fix,bd1,ooxxxxx
	
	.byte fix,sn1,>c3-ooo
	.byte >c1-ooo,fix,bd1,ooooooo
	.byte >d1-ooo,>c4,sin,<a2-ooo
	.byte <d1-ooo,>c5-ooo,ooooooo
	
	.byte end

noisy3  .byte <g0-ooo,fix,bd1,>c3-ooo
	.byte ooxxxxx,>c3-ooo
	.byte ooooooo,>c5,sin,>c3-ooo
	.byte <g0-ooo,>c4-ooo,>c3-ooo
	
	.byte ooooooo,fix,sn1,>c3-ooo
	.byte oooxxxx;ooooooo,ooooooo
	.byte <g0-ooo,fix,bd1,>c3-ooo
	.byte ooooooo,<c0-ooo,<d3-ooo

	.byte <a0-ooo,oooxxxx;ooooooo
	.byte >c5,sin,<d3-ooo
	.byte ooxxxxx,>d3-ooo
	.byte <a0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,>c3-ooo
	.byte oooxxxx;ooooooo,ooooooo
	.byte >b0-ooo,<c0-ooo,<a2-ooo
	.byte ooooooo,<c0-ooo,ooooooo
	
	.byte end
	
noisy4  .byte <g0-ooo,fix,bd1,>c3-ooo
	.byte ooxxxxx,>c3-ooo
	.byte ooooooo,>c5,sin,>g3-ooo
	.byte <g0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,>f3-ooo
	.byte oooxxxx;ooooooo,ooooooo
	.byte <g0-ooo,fix,bd1,<d3-ooo
	.byte ooooooo,<c0-ooo,>f3-ooo

	.byte <a0-ooo,oooxxxx;ooooooo
	.byte >c5,sin,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <a0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte >b0-ooo,<c0-ooo,ooxxxxx
	.byte <c0-ooo,ooooooo
	
	.byte end
	
noisy5	.byte >c1,bas,fix,bd1,<d3,ld2
	.byte ooooxxx;ooooooo,ooooooo
	.byte >c5,sin,ooooooo
	.byte >c1-ooo,>c4-ooo,>d3-ooo
	
	.byte ooooooo,fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <a0-ooo,fix,bd1,<a2-ooo
	.byte oooxxxx;ooooooo,ooooooo

	.byte >c1-ooo,ooooooo,>c3-ooo
	.byte ooooooo,>c4,sin,ooxxxxx
	.byte >c5-ooo,ooooooo
	.byte >c1-ooo,fix,bd1,>g2-ooo
	
	.byte ooooooo,fix,sn1,ooooooo
	.byte >c1-ooo,fix,bd1,ooooooo
	.byte >d1-ooo,>c4,sin,>c3-ooo
	.byte <d1-ooo,>c5-ooo,ooooooo

	.byte <g0-ooo,fix,bd1,<d3-ooo
	.byte ooooxxx;ooooooo,ooooooo
	.byte >c5,sin,>d3-ooo
	.byte <g0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,<d3-ooo
	.byte oooxxxx;ooooooo,ooooooo
	.byte <g0-ooo,fix,bd1,>f3-ooo
	.byte ooooooo,<c0-ooo,>g3,pi1

	.byte <a0-ooo,oooxxxx;ooooooo
	.byte >c5,sin,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <a0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte >b0-ooo,<c0-ooo,ooxxxxx
	.byte <c0-ooo,ooooooo
	
	.byte end

noisy6	.byte >c1,bas,fix,bd1,>c4,ld2
	.byte ooooxxx;ooooooo,ooooooo
	.byte >c5,sin,ooooooo
	.byte >c1-ooo,>c4-ooo,<a3-ooo
	
	.byte ooooooo,fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <a0-ooo,fix,bd1,>g3-ooo
	.byte oooxxxx;ooooooo,ooooooo

	.byte >c1-ooo,ooooooo,<a3-ooo
	.byte ooooooo,>c4,sin,ooxxxxx
	.byte >c5-ooo,ooooooo
	.byte >c1-ooo,fix,bd1,>c4-ooo
	
	.byte ooooooo,fix,sn1,ooooooo
	.byte >c1-ooo,fix,bd1,ooooooo
	.byte >d1-ooo,>c4,sin,<d4,pi1
	.byte <d1-ooo,>c5-ooo,ooooooo

	.byte <g0-ooo,fix,bd1,>d4,ld2
	.byte ooooxxx;ooooooo,ooooooo
	.byte >c5,sin,ooooooo
	.byte <g0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,>c4-ooo
	.byte oooxxxx;ooooooo,ooooooo
	.byte <g0-ooo,fix,bd1,ooxxxxx
	.byte <c0-ooo,ooooooo

	.byte <a0-ooo,ooooooo,<a3-ooo
	.byte ooooooo,>c5,sin,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <a0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte >b0-ooo,<c0-ooo,ooxxxxx
	.byte <c0-ooo,ooooooo
	
	.byte end

noisy7	.byte >c1,bas,fix,bd1,>c4-ooo
	.byte ooooxxx;ooooooo,ooooooo
	.byte >c5,sin,ooooooo
	.byte >c1-ooo,>c4-ooo,>g3-ooo
	
	.byte ooooooo,fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <a0-ooo,fix,bd1,>c4-ooo
	.byte oooxxxx;ooooooo,ooooooo

	.byte >c1-ooo,ooooooo,<d4-ooo
	.byte ooooooo,>c4,sin,ooxxxxx
	.byte >c5-ooo,ooooooo
	.byte >c1-ooo,fix,bd1,>d4-ooo
	
	.byte ooooooo,fix,sn1,ooooooo
	.byte >c1-ooo,fix,bd1,ooooooo
	.byte >d1-ooo,>c4,sin,>c4-ooo
	.byte <d1-ooo,>c5-ooo,ooooooo

	.byte <g0-ooo,fix,bd1,<g3-ooo
	.byte ooooxxx;ooooooo,ooooooo
	.byte >c5,sin,ooooooo
	.byte <g0-ooo,>c4-ooo,>c4-ooo
	
	.byte ooooooo,fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <g0-ooo,fix,bd1,<g3-ooo
	.byte ooooooo,<c0-ooo,ooooooo

	.byte <a0-ooo,ooooooo,>f3,pi1
	.byte ooooooo,>c5,sin,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <a0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte >b0-ooo,<c0-ooo,ooxxxxx
	.byte <c0-ooo,ooooooo
	
	.byte end

noisy8	.byte >c1,bas,fix,bd1,>g3,ld2
	.byte ooooxxx;ooooooo,ooooooo
	.byte >c5,sin,ooooooo
	.byte >c1-ooo,>c4-ooo,>c4-ooo
	
	.byte ooooooo,fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <a0-ooo,fix,bd1,>g3-ooo
	.byte oooxxxx;ooooooo,ooooooo

	.byte >c1-ooo,ooooooo,<d3,pi1
	.byte ooooooo,>c4,sin,ooxxxxx
	.byte >c5-ooo,ooooooo
	.byte >c1-ooo,fix,bd1,>c4,ld2
	
	.byte ooooooo,fix,sn1,ooooooo
	.byte >c1-ooo,fix,bd1,ooooooo
	.byte >d1-ooo,>c4,sin,<d3-ooo
	.byte <d1-ooo,>c5-ooo,ooooooo

	.byte <g0-ooo,fix,bd1,>d3-ooo
	.byte ooooxxx;ooooooo,ooooooo
	.byte >c5,sin,ooooooo
	.byte <g0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <g0-ooo,fix,bd1,ooxxxxx
	.byte <c0-ooo,ooooooo

	.byte <a0-ooo,ooooooo,<a2-ooo
	.byte ooooooo,>c5,sin,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte <a0-ooo,>c4-ooo,ooxxxxx
	
	.byte fix,sn1,ooooxxx
       ;.byte ooooooo,ooooooo,ooooooo
	.byte >b0-ooo,<c0-ooo,ooxxxxx
	.byte <c0-ooo,ooooooo
	
	.byte end

noisy9	.byte >f1,bas,fix,bd1,>f4,ld1
	.byte oooxxxx;ooooooo,ooooooo
	.byte >f1-ooo,>c5,sin,ooxxxxx
	.byte >c4-ooo,ooooooo
	
	.byte >f2-ooo,fix,sn1,ooooooo
	.byte >f1-ooo,oooxxxx;ooooooo
	.byte >c5,sin,ooooooo
	.byte <d1-ooo,fix,bd1,ooooooo

	.byte >f1-ooo,<c0-ooo,ooxxxxx
	.byte >c5,sin,ooooooo
	.byte >f1-ooo,fix,bd1,ooxxxxx
	.byte >c4,sin,ooooooo
	
	.byte >f2-ooo,fix,sn1,ooooooo
	.byte <d2-ooo,>c5,sin,ooooooo
	.byte >c2-ooo,fix,bd1,ooooooo
	.byte <d2-ooo,>c4,sin,ooooooo

	.byte end

noisy9_2 .byte >f1-ooo,fix,bd1,<d4,ld1
	.byte oooxxxx;ooooooo,ooooooo
	.byte >f1-ooo,>c5,sin,ooooooo
	.byte >f1-ooo,>c4-ooo,ooooooo
	
	.byte >f2-ooo,fix,sn1,>f4-ooo
	.byte >f1-ooo,ooxxxxx;ooooooo
	.byte ooo-ooo,>c5,sin,ooooooo
	.byte <d1-ooo,fix,bd1,ooooooo

	.byte >f1-ooo,<c0-ooo,>c4-ooo
	.byte >f2-ooo,>c5,sin,ooxxxxx
	.byte fix,bd1,ooooooo
	.byte >c2-ooo,>c4,sin,ooooooo
	
	.byte >c2-ooo,fix,sn1,<a3-ooo
	.byte <d2-ooo,>c5,sin,ooooooo
	.byte <a1-ooo,fix,sn1,ooooooo
	.byte >c2-ooo,<c0-ooo,ooooooo
	
	.byte end
	
noisy9_3 .byte >f1-ooo,fix,bd1,>g4,ld1
	.byte oooxxxx;ooooooo,ooooooo
	.byte >f1-ooo,>c5,sin,ooooooo
	.byte >f1-ooo,>c4-ooo,ooooooo
	
	.byte >f2-ooo,fix,sn1,<a4-ooo
	.byte >f1-ooo,oooxxxx;ooooooo
	.byte >c5,sin,ooooooo
	.byte <d1-ooo,fix,bd1,ooooooo

	.byte >f1-ooo,<c0-ooo,>g4-ooo
	.byte >f2-ooo,>c5,sin,ooxxxxx
	.byte fix,bd1,ooooooo
	.byte >c2-ooo,>c4,sin,ooooooo
	
	.byte >c2-ooo,fix,sn1,<a4-ooo
	.byte <d2-ooo,>c5,sin,ooooooo
	.byte <a1-ooo,fix,sn1,ooooooo
	.byte >c2-ooo,<c0-ooo,ooooooo
	
	.byte end

noisy10 .byte >c1,bas,fix,bd1,>c4-ooo
noisy10_3_2 .byte oooxxxx;ooooooo,ooooooo
	.byte >c1-ooo,>c5,sin,ooxxxxx
	.byte >c4-ooo,ooooooo
	
	.byte >c2-ooo,fix,sn1,ooooooo
	.byte >c1-ooo,oooxxxx;ooooooo
	.byte >c5,sin,ooooooo
	.byte <a0-ooo,fix,bd1,ooooooo

	.byte >c1-ooo,<c0-ooo,ooxxxxx
	.byte >c5,sin,ooooooo
	.byte >c1-ooo,fix,bd1,ooxxxxx
	.byte >c4,sin,ooooooo
	
	.byte >c2-ooo,fix,sn1,ooooooo
	.byte <a1-ooo,>c5,sin,ooooooo
	.byte >g1-ooo,fix,bd1,ooooooo
	.byte <a1-ooo,>c4,sin,ooooooo

	.byte end

noisy10_2 .byte >c1-ooo,fix,bd1,>c4,arp
	.byte oooxxxx;ooooooo,ooooooo
	.byte >c1-ooo,>c5,sin,>c4-ooo
	.byte >c1-ooo,>c4-ooo,ooooooo
	
	.byte >c2-ooo,fix,sn1,<a3-ooo
	.byte >c1-ooo,oooxxxx;ooooooo
	.byte >c5,sin,>g3-ooo
	.byte <a0-ooo,fix,bd1,>f3-ooo

	.byte >c1-ooo,<c0-ooo,ooooooo
	.byte >c2-ooo,>c5,sin,<d3-ooo
	.byte ooooooo,fix,bd1,ooooooo
	.byte >g1-ooo,>c4,sin,>f3-ooo
	
	.byte >g1-ooo,fix,sn1,>g3-ooo
	.byte <a1-ooo,>c5,sin,>f3-ooo
	.byte >f1-ooo,fix,sn1,<d3-ooo
	.byte >g1-ooo,<c0-ooo,>c3-ooo
	
	.byte end

noisy10_3 .byte >c1,bas,fix,bd1,>c5-ooo
	
	.byte end

noisy10_4 .byte >c1-ooo,fix,bd1,>c4,arp
	.byte oooxxxx;ooooooo,ooooooo
	.byte >c1-ooo,>c5,sin,>c4-ooo
	.byte >c1-ooo,>c4-ooo,ooooooo
	
	.byte >c2-ooo,fix,sn1,<a3-ooo
	.byte >c1-ooo,oooxxxx;ooooooo
	.byte >c5,sin,>g3-ooo
	.byte <a0-ooo,fix,bd1,<a3-ooo

	.byte >c1-ooo,<c0-ooo,ooooooo
	.byte >c2-ooo,>c5,sin,>c4-ooo
	.byte ooooooo,fix,bd1,ooooooo
	.byte >g1-ooo,>c4,sin,<d4-ooo
	
	.byte >g2-ooo,>c1,bas,>c3,bas
	.byte oooxxxx;ooooooo,ooooooo
	.byte >g2-ooo,>c1-ooo,>c3-ooo
	.byte >g2-ooo,>c1-ooo,>c3-ooo
	
	.byte end
	
;--------------------------------------------------> The End <-----------------------------------         

* =$1800

.binary noisyjt.bin
base/macro_player.txt · Last modified: 2015-04-17 04:32 by 127.0.0.1