1987 - 1989 - 1996 - 1998 - 2001 - 2002 - 2003 - 2004 - 2006



amiga defpac synthesizer mp3s:

orbital-mega
paradroid_synth
strange
apathetic
sound91
aged_five
mic0002
the eidolon
+game
time0002
time2
orbital-n1
perfect_endtime
suntronic-k4
suntronic10
myplay9
suntronic3
nebulus3
new
nebulus6
tsm-first
snake3
suntronic-ko2

soundtracker mp3s:

oks
ok, oh well

stream all - m3u

hier liegen
alle 214 suntronic titel und zum abspielen der deliplayer.
zum dekomprimieren kann man
winrar verwenden.

Holger Benl, mein Sandkastenfreund, hat mich überhaupt erst zum Computer und damit zur elektronsichen Musik gebracht. Er schrieb 1988 in Assembler einen Softwaresynthesizer auf dem Amiga 500, dessen Sourcecode hier unten abgebildet ist. Ich verwendete ihn um über 200 experimentelle Musiken zu schreiben, und zwar in der selben Umgebung in der auch der Sourcecode programmiert wurde, im Defpac Assember - das war meine Benutzeroberfläche, nicht mehr als ein Texteditor. Zwei Jahre arbeiteten wir so zusammen und optimierten Synthesizer und Musik. Jahre später wurde dieser Synthesizer von Peter Kunath and Florian Vorberger in den Deliplayer implementiert und somit sind die Musiken auch heute noch ohne Amiga-Emulator direkt abspielbar. Synthesizermusik war etwas exotisches auf dem Amiga. Fast alle Musiker benutzen damals die neue Tracker- und Sampletechnologie. Unsere Musiken wunden in verschiedenen Intros wegen ihrem extrem geringen Speicherbedarf (10kb) eingesetzt. Den weißen Bereich hat Holger geschrieben, den schwarzen ich.


* Playrout ine Version IV
* Stand : -> 20-11-1989 <-
* Sound Name : Aliens the second revenge

a_feinfrequenz equ 1
a_vib equ a_feinfrequenz*1
a_arp equ 1
a_megainstr equ 1
a_eff0 equ a_megainstr*1 ;Übergeh-Effect
a_eff1 equ a_megainstr*1 ;Audiomaster-Filter
a_eff2 equ a_megainstr*1 ;C64-Effect
a_eff3 equ a_megainstr*1 ;Sonix-Quetsch
a_eff4 equ a_megainstr*1 ;Sonix-Trägheit
a_eff5 equ a_megainstr*1 ;C64-Neu+normal abspielen
a_eff6 equ a_megainstr*1 ;C64+Filter
a_mod equ 1
a_volume equ 1
a_fade equ a_volume*1
a_freqslide equ a_feinfrequenz*1
a_volslide equ 1
a_asynchron equ 1

debug equ 0
rechenzeit equ 1
monitor equ a_megainstr*0
cia equ 0

bra init0
instnames
* dc.b 'df1:mmah.x',0
* dc.b 'df1:blubzing',0
dc.b 0
dosname dc.b 'dos.library',0
savename dc.b 'ram:sound',0
even
instlengths
ds.l 50
instadrs
ds.l 50
soundadr ds.l 1
soundlength ds.l 1
oldvbi ds.l 1


waittime equ 10
newcop equ $70000
afrika equ 30
time1 equ 14200
time2 equ 500
IFNE a_megainstr
length_voicedata equ 450
ENDC
IFEQ a_megainstr
length_voicedata equ 66
ENDC
mi_length equ 36
di_length equ 28

v_ta equ 0
v_ia equ 4
v_th equ 8
v_sld equ 10
v_vol2 equ 12
v_vsl equ 13
v_arp equ 14
v_arpc equ 15
v_hkc equ 16
v_mc equ 18
v_mod equ 20
v_vol1 equ 21
v_adr equ 22
v_len equ 26
v_rep equ 28
v_rln equ 30
v_freq equ 32
v_adr2 equ 34
v_rep2 equ 38
v_rln2 equ 40
v_in equ 42
v_trp equ 43
v_vc1 equ 44
v_vc2 equ 46
v_phc1 equ 48
v_phc2 equ 50
v_c1 equ 52
v_c2 equ 53
v_c3 equ 54
v_spd equ 56
v_plen equ 57
v_vslsp equ 58
v_vslc equ 59
v_etc equ 60
v_ev equ 62
v_ef equ 63
v_novol equ 64
v_nofreq equ 65
IFNE a_megainstr
v_k1 equ 66
v_k2 equ 194
v_k3 equ 322
ENDC

i_hka equ 0
i_hkl equ 4
i_hkr equ 6
i_va equ 8
i_vl equ 12
i_vr equ 14
i_vs equ 16
i_sa equ 18
i_sln equ 22
i_sr equ 24
i_srln equ 26
i_mlen equ 34
i_mega equ 35
i_ma equ 18
i_ml equ 22
i_mr equ 24
i_l1 equ 26
i_l2 equ 30
i_spd1 equ 26
i_spd2 equ 28
i_res equ 30
i_tim1 equ 31
i_dep equ 32
i_spos equ 33
i_spd equ 30

ifne debug
opt d+
endc

init0 lea instlengths,a0
lea instnames,a2
clr.w d6
init5d lea instruments2,a1 ;Instrumentenlängen suchen
clr.l d5
init5a tst.l (a1)
beq.s init5b
cmp.w i_sa+2(a1),d6
bne.s init5c
cmp.w i_sln(a1),d5
bpl.s init5c
move.w i_sln(a1),d5
init5c adda.l #di_length,a1
bra.s init5a
init5b lsl.l #1,d5
move.l d5,(a0)+
init5e tst.b (a2)+ ;nächsten Filenamen suchen
bne.s init5e
addq.w #1,d6
tst.b (a2) ;noch ein File ?
bne.s init5d

lea instlengths,a0
move.l #voicedatas-data+length_voicedata*4,d0
init1 move.l (a0)+,d1 ;Länge des Sounds feststellen
beq.s init2
add.l d1,d0
bra.s init1
init2 move.l d0,soundlength
move.l 4,a6
moveq.l #3,d1
jsr -198(a6) ;Chip-mem reservieren
move.l d0,soundadr

move.l d0,a0 ;Sound kopieren
lea data,a1
move.w #(voicedatas-data)/4-1,d0
init3 move.l (a1)+,(a0)+
dbra d0,init3

move.l soundadr,a2 ;voicedatas löschen
adda.l #voicedatas-data,a2
move.w #length_voicedata-1,d0
init4 clr.l (a2)+
dbra d0,init4

lea dosname,a1 ;doslib öffnen
clr.l d0
jsr -408(a6)
move.l d0,a6

lea instnames,a3
lea instlengths,a4
lea instadrs,a5
clr.w d6
init5 move.l a3,d1 ;File öffnen
move.l #1005,d2
jsr -30(a6)
beq.s init7 ;File existiert nicht
move.l d0,d7
move.l d0,d1
move.l a2,d2
move.l a2,(a5)+
move.l (a4),d3
jsr -42(a6) ;File lesen
clr.l (a2)
adda.l (a4)+,a2
move.l d7,d1 ;File schliessen
jsr -36(a6)
init6 tst.b (a3)+ ;nächsten Filenamen suchen
bne.s init6
addq.w #1,d6
tst.l (a4) ;noch ein File ?
bne.s init5
init7
move.l #instruments2-data,a0 ;Sample-adrs setzen
lea instadrs,a1
move.l #data,d6
move.l soundadr,d0
adda.l d0,a0
init8 tst.l (a0)
beq.s init9
move.l i_sa(a0),d1
lsl.w #2,d1
move.l (a1,d1),d1
sub.l d0,d1
move.l d1,i_sa(a0)
adda.l #di_length,a0
bra.s init8
init9
move.l #instruments1-data,a0 ;Adressen korrigieren
adda.l d0,a0
move.l #instruments2-data,a1
adda.l d0,a1
init10 cmpa.l a1,a0
beq.s init13
sub.l d6,i_hka(a0)
sub.l d6,i_va(a0)
sub.l d6,i_ma(a0)
move.b i_mega(a0),d1
cmpi.b #6,d1
beq.s init11
sub.l d6,i_l1(a0)
tst.b d1
beq.s init12
cmpi.b #2,d1
bne.s init11
init12 sub.l d6,i_l2(a0)
init11 adda.l #mi_length,a0
bra.s init10
init13
tst.l (a0)
beq.s init14
sub.l d6,i_hka(a0)
sub.l d6,i_va(a0)
adda.l #di_length,a0
bra.s init13
init14
lea patterns_adrs,a0
init15 move.l (a0)+,a1
adda.l d0,a1
init16 sub.l d6,(a1)
sub.l d6,4(a1)
sub.l d6,8(a1)
sub.l d6,12(a1)
adda.l #20,a1
tst.l (a1)
bmi.s init17
bne.s init16
init17 tst.l (a0)
bne.s init15

move.l #savename,d1 ;Sound speichern
move.l #1006,d2
jsr -30(a6)
move.l d0,d7
move.l d0,d1
move.l soundadr,d2
move.l soundlength,d3
jsr -48(a6)
move.l d7,d1
jsr -36(a6)

move.l a6,a1 ;Doslib schliessen
move.l 4,a6
jsr -414(a6)

move.l soundadr,a0
adda.l #ji-data,a0
clr d0
jsr (a0)

******** Monitor *********
ifne monitor
lea newcop,a0

lea coplist,a1 ;Copperliste erstellen
move.w #(coplistend-coplist)/4-1,d0
coploop
move.l (a1)+,(a0)+
dbra d0,coploop

move.l #$fffffffe,(a0)+

lea gfxname,a1
move.l 4,a6
clr d0
jsr -408(a6)
move.l d0,gfxbase
move.l d0,a6
jsr -456(a6) ;Ownblit

move.l #newcop,$dff080 ;Copperliste einschalten
clr.w $dff088
endc

move.l $6c,oldvbi
ifeq debug
move.l #newvbi,$6c
endc

wait
ifne debug ;Debug :
move.l #jm-data,a0 ;Main-routine aufrufen
adda.l soundadr,a0
jsr (a0)
move.l #jp2-data,a0 ;Playold_2 aufrufen
adda.l soundadr,a0
jsr (a0)
endc
move.w #voicedatas-data +length_voicedata+v_etc,a0 *
adda.l soundadr,a0 *
move.w (a0),$dff180 *
cmpi.b #$3d,$bfec01 *
bne.s waita *
move.w #1,d0 *
clr.l d1 *
move.w #40000,d2 *
move.w #400,d3 *
move.w #64,d4 *
move.l #jes-data,a0 *
adda.l soundadr,a0 *
jsr (a0) *
waitb cmpi.b #$3d,$bfec01 *
beq.s waitb *
waita btst.b #6,$bfe001
bne.s wait

move.l soundadr,a0
loop2:
IFEQ debug
IFNE a_fade
move.b #-4,fade-data(a0) ;ausfaden
move.b #1,fadespeed-data(a0)
tst.b volume-data(a0)
bne loop2
ENDC
ENDC
out:

adda.l #js-data,a0 ;Stoppen
jsr (a0)

ifeq debug
move.l a0,-(sp)
ifeq cia-2
lea int(pc),a0
stop1 cmp.l $68,a0
bne.s stop1
endc
move.l (sp)+,a0
ifne cia
move.b #$1,$bfed01
move.b oldcra(pc),$bfee01
move.l oldint(pc),$68
endc
endc

ifne monitor
move.l gfxbase,a6
jsr -462(a6) ;Disownblit

move.l #$420,$dff080 ;alte Copperliste

move.l gfxbase,a1
move.l 4,a6
jsr -414(a6) ;Closelib
endc

move.l oldvbi,$6c

move.l soundadr,a1 ;Speicher freigeben
move.l soundlength,d0
jsr -210(a6)

clr.l d0
rts

********

newvbi
movem.l d0-a6,-(sp)
move.l soundadr,a6

ifne rechenzeit
move.w #2000,d0
wx dbra d0,wx
move.w #$ff0,$dff180
endc
move.w #$20,$dff09c


ifne cia-2
move.l #jm-data,a0 ;Main-routine aufrufen
adda.l soundadr,a0
jsr (a0)
ifne cia
move.w #$2300,sr
move.w #$8020,$dff09c
endc
ifne rechenzeit
clr.w $dff180
endc
endc

ifne monitor

bsr waitblit

move.l screen,d0
add.w monflag,d0
move.l d0,$dff054 ;Blitter vorbereiten
move.w #40,$dff066
move.w #$100,$dff040
clr.w $dff042
move.l #-1,$dff044
move.w #$4014,$dff058

move.l screen,a0
add.w monflag,a0
move.l #voicedatas-data,a1
adda.l soundadr,a1
tst.w monflag
beq.s monleft
adda.l #length_voicedata*2,a1
monleft
move.l a1,a3
clr.l d0
move.w v_rep(a1),d0
move.l v_adr(a1),a1
lsl.l #1,d0
adda.l d0,a1
bsr.s mondraw ;1./3. Kurve zeichnen

move.l #voicedatas-data+length_voicedata,a1
adda.l soundadr,a1
add.l #80*128,a0
tst.w monflag
beq.s monleft2
adda.l #length_voicedata*2,a1
monleft2
move.l a1,a3
clr.l d0
move.w v_rep(a1),d0
move.l v_adr(a1),a1
lsl.l #1,d0
adda.l d0,a1
bsr.s mondraw ;2./4. Kurve zeichnen

eori.w #40,monflag
bne picnotready
move.l screen,a0
move.w a0,$7000e
eori.l #$f000,screen
picnotready
endc

movem.l (sp)+,d0-a6
move.l oldvbi,-(sp)
rts

********

ifne monitor
mondraw
move.w #1,d0 ;Kurve zeichnen ...
move.w #9,d1
clr.w d2
move.b (a1),d2
add.b #128,d2
lsr.b #1,d2
move.w #30,d7
clr.w d4
move.l v_ia(a3),a2
move.b i_mlen(a2),d4
clr.w d5
clr.w d3
monloop
add.w d4,d5
move.w d5,d6
andi.w #$f,d6
bne noline
move.w d5,d6
lsr.w #4,d6
move.b (a1,d6.w),d3
add.b #128,d3
lsr.b #1,d3
movem.w d0-d5/d7,-(sp)
move.l a0,-(sp)
bsr draw
move.l (sp)+,a0
movem.w (sp)+,d0-d5/d7
move.w d1,d0
move.w d3,d2
noline
addq.b #8,d1
dbra d7,monloop
rts


coplist dc.w $180,0,$182,$0f0,$e0, 7,$e2,$c800,$108,0,$8e,$2c81,$90,$2cc1
dc.w $92,$3c,$94,$d4, $100,$9000,$102,0,$104,0
coplistend
temporary ds.w 1
flag dc.w 1

gfxname dc.b 'graphics.library',0
even
gfxbase ds.l 1
savecop ds.l 1
screen dc.l $7a000
monflag dc.w 0
endc


waitblit
andi.w #$4000,$dff002
bne waitblit
rts


*********** Blitdraw !!!!!!!!!
ifne monitor
*********** d0 = Start-x d1 = Ziel-x d2 = Start-y d3 = Ziel-y
draw
sub.w d0,d1 Ziel-x minus Start-x
sub.w d2,d3 Ziel-y minus Start-y

clr.w d4
clr.w d5
clr.w d6

move.w d1,d4 d4 : -d1
bpl draw1
clr.w d1 d1 : abs(d1)
sub.w d4,d1
draw1

move.w d3,d5 d5 : -d3
bpl draw2
clr.w d3 d3 : abs(d3)
sub.w d5,d3
draw2

* d0 : Start-x
* d1 : abs(Ziel-x - Start-x)
* d2 : Start-y
* d3 : abs(Ziel-y - Start-y)
* d4 : Ziel-x - Start-x
* d5 : Ziel-y - Start-y

cmp.w d1,d3
bmi draw3 SUD setzen

subq.w #1,d0
tst.w d4
bpl draw4
ori.b #2,d6 SUL setzen
addq.w #2,d0
draw4

subq.w #1,d2
tst.w d5
bpl draw5
ori.b #1,d6 AUL setzen
addq.w #2,d2
draw5

bra draw6

draw3
move.b #4,d6 SUD setzen

subq.w #1,d2
tst.w d5
bpl draw7
ori.b #2,d6 SUL setzen
addq.w #2,d2
draw7
subq.w #1,d0
tst.w d4
bpl draw8
ori.b #1,d6 AUL setzen
addq.w #2,d0
draw8

draw6
lsl.b #2,d6
addi.w #$0001,d6 BLTCON1 fertig !!!

cmp.w d3,d1
bpl draw10
move.w d1,d7
move.w d3,d1
move d7,d3
draw10

move.w d0,d7
lsr.w #4,d7
lsl.w #1,d7
adda.w d7,a0

mulu #80,d2 ;Screen-Width !!!!!!
adda.w d2,a0 BLTCPT,BLTDPT fertig !!!

* move.w (a0),temporary

lsl.w #8,d0
lsl.w #4,d0

addi.w #$bfa,d0 BLTCON0 fertig !!!
tst.w flag
bne draw11
eori.w #$f0,d0
draw11

move.w d1,d7
addq.w #2,d7
lsl.w #6,d7
addq.w #2,d7 BLTSIZE fertig !!!

move.w d3,d2
lsl.w #2,d2 BLTBMOD fertig !!!

move.w d3,d4
sub.w d1,d4
lsl.w #2,d4 BLTAMOD fertig !!!

lsl.w #1,d3
sub.w d1,d3 BLTAPTL fertig !!!

bsr waitblit
move.w (a0),temporary
move.w d3,$dff052
move.w d4,$dff064
move.w d2,$dff062
move.w d0,$dff040
move.l a0,$dff048
move.l a0,$dff054
move.w d6,$dff042
move.w #80,$dff066
move.w #80,$dff060
move.w #$8000,$dff074
move.w d7,$dff058

move.w temporary,(a0)

rts

endc
*********** Ende von Blitdraw !!!!!!!!!


***************************************
************ Init ***************
***************************************
opt p+

data
ji movem.l d0-d2/a0-a2/a6,-(sp)
bsr.s sndinit ;Init aufrufen
movem.l (sp)+,d0-d2/a0-a2/a6
rts

jm movem.l d0-a6,-(sp)
bsr play ;Main aufrufen
movem.l (sp)+,d0-a6
rts

jp2 movem.l d0-a6,-(sp)
bsr playold_2 ;playold_2 aufrufen
movem.l (sp)+,d0-a6
rts

js move.l a6,-(sp)
bsr stop ;Stop aufrufen
move.l (sp)+,a6
rts

jes movem.l d0/d3/a0,-(sp) ;Effect (Sample) starten
bsr effinit ;d0:Kanal,d1:Adr,d2:Länge
movem.l (sp)+,d0/d3/a0 ;d3:Tonhöhe,d4:Volune
rts

sndinit lea data(pc),a6
tst.w adrsflag-data(a6)
bne in12a
move.w #1,adrsflag-data(a6)
move.l a6,d2
lea instruments1(pc),a0 ;Adressen korrigieren
lea instruments2(pc),a1
in3 cmpa.l a1,a0 ;Instruments1
beq.s in6
add.l d2,i_hka(a0)
add.l d2,i_va(a0)
add.l d2,i_ma(a0)
move.b i_mega(a0),d1
cmpi.b #6,d1
beq.s in5
add.l d2,i_l1(a0)
tst.b d1
beq.s in4
cmpi.b #2,d1
bne.s in5
in4 add.l d2,i_l2(a0)
in5 adda.l #mi_length,a0
bra.s in3
in6
tst.l (a0) ;Instruments2
beq.s in7
add.l d2,i_hka(a0)
add.l d2,i_va(a0)
add.l d2,i_sa(a0)
adda.l #di_length,a0
bra.s in6
in7
lea patterns_adrs(pc),a0 ;Patterns
in8 move.l (a0),a1
adda.l a6,a1
move.l a1,(a0)+
in9 add.l d2,(a1)
add.l d2,4(a1)
add.l d2,8(a1)
add.l d2,12(a1)
adda.l #20,a1
tst.l (a1)
bmi.s in10
bne.s in9
in10 tst.l (a0)
bne.s in8

lea gnnadrs(pc),a0 ;Gnnadrs
in11 add.l d2,(a0)+
tst.l (a0)
bne.s in11

IFNE a_megainstr
lea meadrs(pc),a0 ;Meadrs
in12 add.l d2,(a0)+
tst.l (a0)
bne.s in12
ENDC
in12a
lsl.w #2,d0 ;Pattern-adresse holen
lea patterns_adrs(pc),a0
move.l (a0,d0.w),a0
move.l a0,patterns_adr-data(a6)
lea voicedatas(pc),a1 ;Adressen in voicedatas einsetzen
move.l (a0),a2
move.l a2,v_ta(a1)
move.l 4(a0),a2
move.l a2,v_ta+length_voicedata(a1)
move.l 8(a0),a2
move.l a2,v_ta+length_voicedata*2(a1)
move.l 12(a0),a2
move.l a2,v_ta+length_voicedata*3(a1)
move.b 16(a0),v_trp(a1)
move.b 17(a0),v_trp+length_voicedata(a1)
move.b 18(a0),v_trp+length_voicedata*2(a1)
move.b 19(a0),v_trp+length_voicedata*3(a1)

move.w #3,d0 ;Defaultwerte in voicedatas
in0 move.b #-1,v_mod(a1)
clr.w v_len(a1)
clr.w v_rln(a1)
move.b #6,v_spd(a1)
move.b #16,v_plen(a1)
move.b #5,v_c1(a1)
move.b #-1,v_c2(a1)
clr.w v_c3(a1)
move.w #64*256,v_vol2(a1)
adda.l #length_voicedata,a1
dbra d0,in0

lea defaults(pc),a0 ;Registerdefaults
lea registers(pc),a1
move.w #(def_end-defaults)/2-1,d0
in1 move.w (a0)+,(a1)+
dbra d0,in1
move.w #$f,$dff096

ifne debug
rts
endc

ifeq cia-2
lea int(pc),a0 ;Cia programmieren
lea int2(pc),a1
move.l $68,a2
cmpa.l a2,a0
beq.s in2
cmpa.l a2,a1
beq.s in2
move.l $68,oldint-data(a6)
move.l a1,$68
move.b $bfee01,d0
move.b d0,oldcra-data(a6)
andi.b #$df,d0
ori.b #$19,d0
move.b #$81,$bfed01
move.w #$8008,$dff09a
move.b #time2&255,$bfe401 ;Cia starten
move.b #time2/256,$bfe501
move.b d0,$bfee01
endc
ifeq cia-1
lea int2(pc),a0
cmpa.l $68,a0
beq.s in2
move.l $68,oldint-data(a6)
move.l a0,$68
move.b $bfee01,d0
move.b d0,oldcra-data(a6)
andi.b #$ce,d0
ori.b #8,d0
move.b d0,$bfee01
move.b #$81,$bfed01
move.w #$8008,$dff09a
endc

in2 rts

effinit lea voicedatas(pc),a0
mulu #length_voicedata,d0
move.l d1,v_adr(a0,d0)
lsr.l #1,d2
move.w d2,v_len(a0,d0)
clr.w v_rep(a0,d0)
move.w #1,v_rln(a0,d0)
move.w d3,v_freq(a0,d0)
move.b d4,v_vol1(a0,d0)
mulu d2,d3
divu #35795,d3
addi.w #v_etc,d0
move.w d3,(a0,d0)
move.b #1,v_ef-v_etc(a0,d0)
rts

ifne cia
int
ifeq cia-2
move.b d0,-(sp) ;Cia Main-interrupt
move.b $bfe401,d0
cmp.b $bfe401,d0
bne.s int1a
move.b #time2&255,$bfe401
move.b #time2/256,$bfe501
move.b (sp)+,d0
move.l a0,-(sp)
lea data(pc),a0
move.w $dff01c,oldinten-data(a0)
move.w #$3ff7,$dff09a
move.b #8,$bfed01
move.w #$2000,sr
lea int2(pc),a0
move.l a0,$68
tst.b $bfed01
move.w #8,$dff09c
ifne rechenzeit
move.w #$f,$dff180
endc
bsr jm
ifne rechenzeit
clr.w $dff180
endc
move.l (sp)+,a0
int1 rte
int1a move.b (sp)+,d0
move.l oldint(pc),-(sp)
rts
endc

int2
move.b d0,-(sp) ;Cia Interrupt 2
move.b $bfe401,d0
cmp.b $bfe401,d0
bne.s int3a
ifeq cia-2
move.b ciatime2+1(pc),$bfe401
move.b ciatime2(pc),$bfe501
endc
ifeq cia-1
andi.b #$fe,$bfee01
endc
move.b (sp)+,d0
move.l a0,-(sp)
ifeq cia-2
lea int(pc),a0
move.l a0,$68
endc
tst.b $bfed01
move.w #8,$dff09c
ifne rechenzeit
move.w #$f00,$dff180
endc
bsr jp2
lea data(pc),a0
ifeq cia-2
move.w ciatime(pc),ciatime2-data(a0)
endc
ori.w #$8000,oldinten-data(a0)
move.w oldinten(pc),$dff09a
move.b #$88,$bfed01
move.l (sp)+,a0
int3 rte
int3a move.b (sp)+,d0
move.l oldint(pc),-(sp)
rts
endc

stop lea voicedatas(pc),a0
move.b #-2,v_mod(a0)
move.b #-2,v_mod+length_voicedata(a0)
move.b #-2,v_mod+length_voicedata*2(a0)
move.b #-2,v_mod+length_voicedata*3(a0)
move.w #$f,$dff096
rts

***************************************
******** Hauptprogramm ***********
***************************************

play lea data(pc),a6

ifeq cia-1
move.b #time2&255,$bfe401
move.b #time2/256,$bfe501
move.w $dff01c,oldinten-data(a6)
move.w #$3ff7,$dff09a
move.b #8,$bfed01
move.w #$2000,sr
ori.b #1,$bfee01
endc

bsr playold_1 ;1. Hardware-register setzen

IFNE a_fade
tst.b fade-data(a6)
beq.s nofade ;2. Fade
subq.b #1,fadecounter-data(a6)
bpl.s nofade
move.b fadespeed(pc),fadecounter-data(a6)
move.b fade(pc),d0
add.b d0,volume-data(a6)
bpl.s fade1
clr.b fade-data(a6)
clr.b volume-data(a6)
fade1 cmpi.b #65,volume-data(a6)
bmi.s nofade
clr.b fade-data(a6)
move.b #64,volume-data(a6)
nofade
ENDC
IFEQ cia-2
move.w ciafade(pc),d0 ;Cia-Fade
add.w d0,ciatime-data(a6)
ENDC

IFNE a_asynchron
lea voicedatas(pc),a0 ;3. Neue Noten + Effekte
move.w #3,d7
nn1 cmpi.b #-2,v_mod(a0)
beq.s nn7
tst.w v_etc(a0)
beq.s nn1a
subq.w #1,v_etc(a0)
nn1a addq.b #1,v_c1(a0)
move.b v_c1(a0),d0
cmp.b v_spd(a0),d0
bmi.s nn2
clr.b v_c1(a0) ;neuer Ton
addq.b #1,v_c2(a0)
move.b v_c2(a0),d0
cmp.b v_plen(a0),d0
bmi.s nn3
clr.b v_c2(a0)
addq.w #1,v_c3(a0) ;neues Pattern
nn6 move.l patterns_adr(pc),a1
move.w v_c3(a0),d0
mulu #20,d0
adda.l d0,a1
move.w d7,d1
eori.b #3,d1
tst.l (a1)
beq.s nn4 ;restart
bmi.s nn5 ;stop
move.b 16(a1,d1.w),v_trp(a0) ;Transponation kopieren
lsl.b #2,d1
move.l (a1,d1.w),a2
move.l a2,v_ta(a0) ;Ton-adr kopieren
nn3 bsr nextnote
nn2 bsr effects
nn7 adda.l #length_voicedata,a0
dbra d7,nn1
ENDC

IFEQ a_asynchron
lea voicedatas(pc),a0
move.w #3,d7
nn1 tst.w v_etc(a0)
beq.s nn1a
subq.w #1,v_etc(a0)
nn1a adda.l #length_voicedata,a0
dbra d7,nn1

lea voicedatas(pc),a0
cmpi.b #-2,v_mod(a0)
beq nn7
addq.b #1,s_c1-data(a6)
move.b s_c1(pc),d0
cmp.b s_spd(pc),d0
bmi.s nn2
clr.b s_c1-data(a6) ;neuer Ton
addq.b #1,s_c2-data(a6)
move.b s_c2(pc),d0
cmp.b s_plen(pc),d0
bmi.s nn3
clr.b s_c2-data(a6)
addq.w #1,s_c3-data(a6) ;neues Pattern
nn6 move.l patterns_adr(pc),a1
move.w s_c3(pc),d0
mulu #20,d0
adda.l d0,a1
tst.l (a1)
beq.s nn4 ;restart
bmi.s nn5 ;stop
move.b 16(a1),v_trp(a0) ;Transponation kopieren
move.b 17(a1),v_trp+length_voicedata(a0)
move.b 18(a1),v_trp+length_voicedata*2(a0)
move.b 19(a1),v_trp+length_voicedata*3(a0)
move.l (a1),v_ta(a0) ;Ton-adr kopieren
move.l 4(a1),v_ta+length_voicedata(a0)
move.l 8(a1),v_ta+length_voicedata*2(a0)
move.l 12(a1),v_ta+length_voicedata*3(a0)
nn3 move.w #3,d7
nn3a bsr nextnote
adda.l #length_voicedata,a0
dbra d7,nn3a
lea voicedatas(pc),a0
nn2 move.w #3,d7
nn2a bsr effects
adda.l #length_voicedata,a0
dbra d7,nn2a
nn7
ENDC

ifeq cia
move.w #waittime,d0
hwait dbra d0,hwait
bsr playold_2
endc

IFNE a_megainstr
bsr megaeffects ;4. Instrumente errechnen
ENDC
very_end
rts

IFNE a_asynchron
nn4 clr.w v_c3(a0) ;Kanal auf Pattern 0 stellen
bra.s nn6
nn5 clr.w d0 ;Kanal ausschalten
bset d1,d0
move.w d0,$dff096
lsl.w #4,d1
lea $dff0a8,a1
clr.w (a1,d1.w)
move.b #-2,v_mod(a0)
bra.s nn7
ENDC

IFEQ a_asynchron
nn4 clr.w s_c3-data(a6) ;Kanal auf Pattern 0 stellen
bra nn6
nn5 ;Kanal ausschalten
move.w #$f,$dff096
lea $dff0a8,a1
clr.w (a1)
clr.w $10(a1)
clr.w $20(a1)
clr.w $30(a1)
move.b #-2,v_mod(a0)
move.b #-2,v_mod+length_voicedata(a0)
move.b #-2,v_mod+length_voicedata*2(a0)
move.b #-2,v_mod+length_voicedata*3(a0)
bra.s nn7
ENDC


***************************************
*** Hardware-register setzen 1 ****
***************************************

playold_1
lea voicedatas(pc),a0
clr.w d6
tst.w v_len(a0)
beq.s po1
bset #0,d6
po1 tst.w v_len+length_voicedata(a0)
beq.s po2
bset #1,d6
po2 tst.w v_len+length_voicedata*2(a0)
beq.s po3
bset #2,d6
po3 tst.w v_len+length_voicedata*3(a0)
beq.s po4
bset #3,d6
po4
move.w d6,$dff096
IFNE a_mod
move.w modulation2(pc),$dff09e
move.w modulation(pc),$dff09e
move.w #$8000,modulation-data(a6)
clr.w modulation2-data(a6)
ENDC

move.w #3,d7
lea $dff0a0,a1
po5
IFNE a_mod
tst.b v_novol(a0)
bne.s po5a
ENDC
move.b v_vol1(a0),9(a1)
po5a
IFNE a_mod
tst.b v_nofreq(a0)
bne.s po5b
ENDC
move.w v_freq(a0),6(a1)
po5b tst.w v_len(a0)
beq.s po6
move.l v_adr(a0),(a1)
move.w v_len(a0),4(a1)
po6 move.l v_adr(a0),v_adr2(a0)
move.l v_rep(a0),v_rep2(a0)
clr.w v_len(a0)
clr.w v_rln(a0)
adda.l #length_voicedata,a0
adda.l #$10,a1
dbra d7,po5

move.b d6,attack_zs-data(a6)
rts

***************************************
*** Hardware-register setzen 2 ****
***************************************

playold_2
move.w #$8000,d6
move.b attack_zs(pc),d6
move.w d6,$dff096

lea voicedatas(pc),a0
lea $dff0a0,a1
move.w #3,d7
po7 tst.w v_rln2(a0)
beq.s po8
clr.l d0
move.w v_rep2(a0),d0
lsl.l #1,d0
add.l v_adr2(a0),d0
move.l d0,(a1)
move.w v_rln2(a0),4(a1)
po8 adda.l #length_voicedata,a0
adda.l #$10,a1
dbra d7,po7
rts

***************************************
******* Vol+Freq errechnen ********
***************************************

effects tst.b v_mod(a0)
bmi eff1 ;Kanal ausgeschaltet

move.l v_ia(a0),a1
cmpi.b #1,v_ef(a0)
beq effx
move.l i_hka(a1),a2 ;Lautstärke ausrechnen
move.w v_hkc(a0),d0
clr.w d1
move.b (a2,d0.w),d1 ;Hüllkurve
clr.l d2
move.b v_vol2(a0),d2 ;Lautstärke
mulu d2,d1
lsr.w #6,d1
IFNE a_volume
move.b volume(pc),d2
mulu d2,d1
lsr.w #6,d1
ENDC
move.b d1,v_vol1(a0)

lea noten-data(a6),a2 ;Tonhöhe ausrechnen
IFNE a_arp
lea arpeggios-data(a6),a3
clr.l d5
move.b v_arp(a0),d5
lsl.w #4,d5
clr.l d6
move.b v_arpc(a0),d6
add.w d6,d5 ;Offset des Arpeggios
ENDC
move.w v_th(a0),d0 ;Tonhöhe

IFNE a_vib
move.l i_va(a1),a4 ;Vibrato
move.w v_vc2(a0),d1
clr.w d2
move.b (a4,d1.w),d2
move.w v_vc1(a0),d3
bpl.s eff2
neg.w d3
eff2
subi.w #16384,d3
muls d2,d3
lsl.l #4,d3
swap d3
add.w d3,d0
ENDC

move.w d0,d1
lsr.w #8,d1
IFNE a_vib
sub.b (a3,d5),d1 ;Arpeggio
ENDC
lsl.w #1,d1
move.w (a2,d1),d3 ;endgültige Tonhöhe errechnen
IFNE a_feinfrequenz
andi.w #$ff,d0
beq.s eff3 ;"fastfreq"
move.w 2(a2,d1),d4
sub.w d3,d4
mulu d0,d4
lsr.l #8,d4
add.w d4,d3
eff3
ENDC
move.w d3,v_freq(a0)

effx
IFNE a_freqslide
move.w v_th(a0),d0 ;Freq slide up/down
add.w v_sld(a0),d0
bpl.s eff4
addi.w #72*256,d0
bra.s eff5
eff4 cmpi.w #72*256,d0
bmi.s eff5
subi.w #72*256,d0
eff5 move.w d0,v_th(a0)
ENDC

IFNE a_volslide
tst.b v_vsl(a0)
beq.s eff10 ;Vol slide up/down
subq.b #1,v_vslc(a0)
bpl.s eff10
move.b v_vslsp(a0),v_vslc(a0)
move.b v_vsl(a0),d0
add.b d0,v_vol2(a0)
bpl.s eff11
clr.b v_vsl(a0)
clr.b v_vol2(a0)
eff11 cmpi.b #65,v_vol2(a0)
bmi.s eff10
clr.b v_vsl(a0)
move.b #64,v_vol2(a0)
eff10
ENDC

IFNE a_arp
addq.b #1,v_arpc(a0) ;Arp-counter
andi.b #15,v_arpc(a0)
ENDC

addq.w #1,v_hkc(a0) ;Hüllkurven-counter
move.w v_hkc(a0),d0
cmp.w i_hkl(a1),d0
bne.s eff8
move.w i_hkr(a1),v_hkc(a0)
eff8

IFNE a_vib
addq.w #1,v_vc2(a0) ;Vibrato-counter 2
move.w v_vc2(a0),d0
cmp.w i_vl(a1),d0
bne.s eff9
move.w i_vr(a1),v_vc2(a0)
eff9

move.w i_vs(a1),d0 ;Vibrato-counter 1
add.w d0,v_vc1(a0)
ENDC
eff1

rts

***************************************
******** Musikdaten einlesen ********
***************************************

nextnote
move.l v_ta(a0),a1
lea gnnadrs(pc),a2
gnn0 clr.w d0
move.b (a1)+,d0
beq.s gnn1 ;nichts neues
bpl.s gnn2 ;neues Instrument
cmpi.b #-72,d0
bpl.s gnn3 ;neuer Ton
neg.b d0 ;neuer Effekt
addi.b #effoffset,d0
lsl.b #2,d0
move.l (a2,d0),a3
jmp (a3)

gnn1 move.l a1,v_ta(a0) ;ende
rts

gnn2 move.b d0,v_in(a0) ;Instrument setzen
bra.s gnn0

gnn3 tst.w v_etc(a0)
bne.s gnn0
not.b d0 ;Ton anschlagen
sub.b v_trp(a0),d0
move.b d0,v_th(a0)
clr.b v_th+1(a0)
clr.w v_sld(a0)
tst.b (a1) ;Instrument nach ton angegeben ?
bmi.s gnn5
beq.s gnn5
move.b (a1)+,v_in(a0)
gnn5 move.b v_in(a0),d0
beq.s gnn0
clr.b v_ef(a0)
IFNE a_megainstr
btst #6,d0
beq.s gnn4 ;Digi-Instrument
lea instruments1-data(a6),a5 ;Mega-Instrument
subi.b #64,d0
clr.l d1
move.b d0,d1
mulu #mi_length,d1
lea (a5,d1),a3
move.l a3,v_ia(a0)
clr.l v_arp(a0)
clr.w v_mc(a0)
clr.l v_vc1(a0)
move.b #1,v_mod(a0)
lea v_k1(a0),a4
adda.l kurvenflag(pc),a4
move.l a4,v_adr(a0)
clr.l v_len(a0)
move.b i_mlen(a3),v_len+1(a0)
clr.b v_rln(a0)
move.b i_mlen(a3),v_rln+1(a0)
clr.w v_phc2(a0)
move.b i_spos(a3),v_phc1(a0)
clr.b v_phc1+1(a0)
bra gnn0
ENDC
gnn4 subq.b #1,d0 ;Digi-Instrument
lea instruments2-data(a6),a5
clr.l d1
move.b d0,d1
mulu #di_length,d1
lea (a5,d1),a3
move.l a3,v_ia(a0)
IFNE a_arp
clr.l v_arp(a0)
ENDC
clr.b v_mod(a0)
clr.l v_vc1(a0)
move.l i_sa(a3),a4
move.l a4,v_adr(a0)
move.w i_sln(a3),v_len(a0)
move.w i_sr(a3),v_rep(a0)
move.w i_srln(a3),v_rln(a0)
bra gnn0

gnn6
IFNE a_arp
tst.w v_etc(a0)
bne.s gnn6a
move.b (a1)+,v_arp(a0) ;arp : Arpeggionummer
clr.b v_arpc(a0)
bra gnn0
gnn6a adda.l #1,a1
bra gnn0
ENDC

gnn7
IFNE a_freqslide
tst.w v_etc(a0)
bne.s gnn7a
move.b (a1)+,d0 ;freq : Freq Slide up/down
lsl.w #8,d0
move.b (a1)+,d0
move.w d0,v_sld(a0)
bra gnn0
gnn7a adda.l #2,a1
bra gnn0
ENDC

gnn8
IFNE a_volslide
move.b (a1)+,v_vsl(a0) ;vol : Vol Slide up/down
move.b (a1)+,v_vslsp(a0)
bra gnn0
ENDC

gnn9 move.b (a1)+,v_vol2(a0) ;vol2 : Vol setzen
clr.b v_vsl(a0)
bra gnn0

gnn10
IFNE a_asynchron
move.b (a1)+,d0 ;spd : Speed bei allen
lea voicedatas(pc),a3 ;Stimmen setzen
move.b d0,v_spd(a3)
move.b d0,v_spd+length_voicedata(a3)
move.b d0,v_spd+length_voicedata*2(a3)
move.b d0,v_spd+length_voicedata*3(a3)
bra gnn0
ENDC
IFEQ a_asynchron
move.b (a1)+,s_spd-data(a6)
bra gnn0
ENDC

gnn11 move.b (a1)+,d1 ;rnd : randomize
lsl.w #8,d1
move.b (a1)+,d1
move.w d1,rndnumber-data(a6)
eori.w #$7e28,d1
move.w d1,rndnumber2-data(a6)
bra gnn0

gnn12 tst.w v_etc(a0)
bne gnn0
clr.w v_hkc(a0) ;hl : Hüllkurve neu starten
bra gnn0

gnn13
IFNE a_megainstr
tst.w v_etc(a0)
bne gnn0
clr.w v_mc(a0) ;hl2 : Megakurve neu starten
bra gnn0
ENDC

gnn14 tst.w v_etc(a0)
bne.s gnn14a
move.b (a1)+,d1 ;ton : Tonhöhe setzen
not.b d1
sub.b v_trp(a0),d1
move.b d1,v_th(a0)
IFNE a_feinfrequenz
clr.b v_th+1(a0)
ENDC
IFNE a_freqslide
clr.w v_sld(a0)
ENDC
bra gnn0
gnn14a adda.l #1,a1
bra gnn0

gnn15
IFNE a_fade
move.b (a1)+,fade-data(a6) ;fd : Fade einschalten
move.b (a1)+,fadespeed-data(a6)
bra gnn0
ENDC

gnn16
IFNE a_volume
move.b (a1)+,volume-data(a6) ;fd2 : Gesamtvol setzen
clr.b fade-data(a6)
bra gnn0
ENDC

gnn17
IFNE a_mod
clr.w d0 ;mod : Modulation setzen
move.b (a1)+,d0
move.l a0,a3
adda.l #length_voicedata,a3
tst.w d7
bne.s gnn17a
suba.l #4*length_voicedata,a3
gnn17a move.b d0,v_novol(a3)
move.b d0,v_nofreq(a3)
andi.b #1,v_novol(a3)
andi.b #16,v_nofreq(a3)
move.w #17,d1
* moveq.w #3,d2
sub.w d7,d2
lsl.w d2,d0
lsl.w d2,d1
or.w d0,modulation-data(a6)
or.w d1,modulation2-data(a6)
bra gnn0
ENDC

gnn18
IFNE a_feinfrequenz
tst.w v_etc(a0)
bne.s gnn18a
move.b (a1)+,v_th+1(a0) ;fine : Tonhöhe Feineinstellung
bra gnn0
gnn18a adda.l #1,a1
bra gnn0
ENDC

gnn19
IFNE a_asynchron
move.b (a1)+,v_spd(a0) ;spd2 : Speed in einer Stimme
bra gnn0 ; setzen
ENDC

gnn20
IFEQ cia-2
move.b (a1)+,d1 ;spd3 : ciaspeed setzen
lsl.w #8,d1
move.b (a1)+,d1
subi.w #time2,d1
move.w d1,ciatime-data(a6)
clr.w ciafade-data(a6)
bra gnn0
ENDC

gnn21
IFEQ cia-2
move.b (a1)+,d1 ;spdfd : ciafade setzen
lsl.w #8,d1
move.b (a1)+,d1
move.w d1,ciafade-data(a6)
bra gnn0
ENDC

gnn22
IFNE a_asynchron
move.b (a1)+,d0 ;plen : Länge eines Patterns
lea voicedatas(pc),a3 ;in allen Stimmen setzen
move.b d0,v_plen(a3)
move.b d0,v_plen+length_voicedata(a3)
move.b d0,v_plen+length_voicedata*2(a3)
move.b d0,v_plen+length_voicedata*3(a3)
bra gnn0
ENDC
IFEQ a_asynchron
move.b (a1)+,s_plen-data(a6)
bra gnn0
ENDC

gnn23
IFNE a_asynchron
move.b (a1)+,v_plen(a0) ;plen2 : Länge eines Patterns
bra gnn0 ;in einer Stimme setzen
ENDC

gnnadrs dc.l gnn6-data,gnn7-data,gnn8-data,gnn9-data,gnn10-data
dc.l gnn11-data,gnn12-data,gnn13-data,gnn14-data,gnn15-data
dc.l gnn16-data,gnn17-data,gnn18-data,gnn19-data,gnn20-data
dc.l gnn21-data,gnn22-data,gnn23-data,0

***************************************
***** Instrumente errechnen *******
***************************************

IFNE a_megainstr
megaeffects
lea voicedatas(pc),a0
move.w #3,d7
me1 btst.b #0,v_mod(a0)
beq me3
tst.b v_mod(a0)
bmi me3

move.l v_ia(a0),a1
cmpi.b #1,v_ef(a0)
beq me2
IFNE a_eff0
cmpi.b #5,i_mega(a1)
beq.s me1a
ENDC
clr.w d6
move.b i_mlen(a1),d6
lsl.w #1,d6
subq.w #1,d6
lea v_k1(a0),a2
move.l a2,v_adr(a0)
adda.l kurvenflag(pc),a2
move.w kurvenflag+2(pc),d1
lsr.w #1,d1
move.w d1,v_rep(a0)
clr.w d1
move.b i_mlen(a1),d1
move.w d1,v_rln(a0)
me1a clr.w d1
move.b i_mega(a1),d1
lsl.b #2,d1
lea meadrs(pc),a3
move.l (a3,d1.w),a3
move.l i_ma(a1),a4
move.w v_mc(a0),d1
clr.w d0
move.b (a4,d1.w),d0
jmp (a3)

calc1
IFNE a_eff0
move.l i_l1(a1),a3 ;Effect 0 ( "Mega-effect" )
move.l i_l2(a1),a4
calc2 move.b (a3)+,d1
ext.w d1
move.b (a4)+,d2
ext.w d2
sub.w d1,d2
muls d0,d2
asr.w #7,d2
add.b d1,d2
move.b d2,(a2)+
dbra d6,calc2
bra.s me2
ENDC

calc3
IFNE a_eff1
move.l a2,a3 ;Effect 1 ( Audiomaster-Filter )
move.l kurvenflag(pc),d1
sub.l d1,a3
subi.l #(v_k2-v_k1),d1
bpl.s calc3a
move.l #(v_k3-v_k1),d1
calc3a adda.l d1,a3
cmpi.b #-1,d0
beq.s calc7
cmpi.b #-2,d0
beq.s calc4
btst.b #1,v_mod(a0)
bne.s calc5
calc6 move.l i_l1(a1),a3
bset.b #1,v_mod(a0)
calc5 tst.b d0
bmi calc9a
move.w #128,d1
sub.b d0,d1
move.b (a3,d6.w),d0
ext.w d0
calc8 move.b (a3)+,d2
ext.w d2
sub.w d0,d2
muls d1,d2
asr.w #7,d2
add.w d2,d0
move.b d0,(a2)+
dbra d6,calc8
bra.s me2

calc4 move.b 1(a4,d1.w),d0
bra.s calc6

ENDC

me2 addq.w #1,v_mc(a0)
move.w v_mc(a0),d0
cmp.w i_ml(a1),d0
bne.s me3
move.w i_mr(a1),v_mc(a0)
me3 adda.l #length_voicedata,a0
dbra d7,me1
move.w kurvenflag+2-data(a6),d7
addi.w #(v_k2-v_k1),d7
cmpi.w #(v_k3-v_k1)+1,d7
bmi.s me4
clr.w d7
me4 move.w d7,kurvenflag+2-data(a6)

rts

IFNE a_eff1
calc7 move.w rndnumber(pc),d0 ;Effect 1a ( Rauschen )
lsr.w #1,d6
calc9 mulu d0,d0
lsr.l #4,d0
eori.w #$ac91,d0
move.w d0,(a2)+
dbra d6,calc9
move.w rndnumber2(pc),d1
mulu d1,d1
lsr.l #8,d1
eori.w #$6e47,d1
eor.w d1,d0
move.w d1,rndnumber2-data(a6)
move.w d0,rndnumber-data(a6)
bra.s me2

calc9a move.b d0,d1 ;Effect 1b (Highpassfilter)
neg.b d1
ext.w d1
move.b (a3,d6.w),d0
ext.w d0
move.w d0,d3
calc9b move.b (a3)+,d2
ext.w d2
move.w d2,d4
sub.w d3,d2
move.w d4,d3
add.w d2,d0
muls d1,d0
asr.w #7,d0
move.b d0,(a2)+
dbra d6,calc9b
bra me2
ENDC

calc10
IFNE a_eff2
move.l i_l1(a1),a3 ;Effect 2 ( "C64-Effect" )
move.l i_l2(a1),a4
sub.w d0,d6
subq.w #1,d0
bmi.s calc12
calc11 move.b (a3)+,(a2)+
dbra d0,calc11
tst.w d6
bmi me2
calc12 move.b (a4)+,(a2)+
dbra d6,calc12
bra me2
ENDC

calc13
IFNE a_eff3
move.l i_l1(a1),a3 ;Effect 3 ( Sonix-Phase )
move.l #128*256,d1
ext.w d0
add.w #64,d0
divu d0,d1 ;d1=Steigung im ersten Abschnitt
swap d1
clr.w d1
lsr.l #8,d1
move.w d0,d2
mulu d6,d2
lsr.w #7,d2 ;d2=Länge des ersten Abschnitts
move.w d6,d3 ;d3=Länge des zweiten Abschnitts
sub.w d2,d3 ;d4=counter
clr.l d4
calc14 swap d4
move.b (a3,d4.w),(a2)+
swap d4
add.l d1,d4
dbra d2,calc14
subq.w #1,d3
bmi me2
move.w #128,d1
sub.w d0,d1
move.l #128*256,d0
divu d1,d0 ;d1=Steigung im zweiten Abschnitt
swap d0
clr.w d0
lsr.l #8,d0
calc15 swap d4
move.b (a3,d4.w),(a2)+
swap d4
add.l d0,d4
dbra d3,calc15
bra me2
ENDC

calc16
IFNE a_eff4
move.l i_l1(a1),a3 ;Effect 4 ( Sonixfilter )
clr.w d5
move.b i_res(a1),d5
movea.l a2,a4
btst.b #1,v_mod(a0)
bne.s calc17
movea.l a3,a4
bset.b #1,v_mod(a0)
calc17 clr.l d1
move.b d0,d1
addi.w #32,d1
move.l #$7fff*32,d2
divu d1,d2
move.w #$6000/5/127,d3
ext.w d0
mulu d0,d3
sub.w d3,d2 ;d2 = Trägheit
move.w #$7fff,d3
sub.w d2,d3
mulu d5,d3
lsr.l #8,d3 ;d3 = Bremse
move.b (a4,d6.w),d0
move.b d0,d1
ext.w d0
lsl.w #7,d0 ;d0 = Position
sub.b -1(a4,d6.w),d1
ext.w d1
lsl.w #7,d1 ;d1 = Velocity
calc18 muls d3,d1 ;Bremsen
swap d1
rol.l #1,d1
move.b (a3)+,d4 ;nächstes Byte
ext.w d4
lsl.w #7,d4
sub.w d0,d4 ;Differenz zur Position
muls d2,d4
swap d4
rol.l #1,d4
add.w d4,d1 ;zur Kurve beschleunigen
add.w d1,d0 ;bewegen
move.w d0,d4
lsr.w #7,d4
move.b d4,(a2)+
dbra d6,calc18
bra me2
ENDC

calc19
IFNE a_eff6
move.w v_phc2(a0),d1 ;Effect 6 ( C-64 + Sonix-Filter )
bmi.s calc20
addq.w #1,d1
clr.w d2
move.b i_tim1(a1),d2
cmp.w d2,d1
bmi.s calc21
move.w #-1,d1
calc21 move.w d1,v_phc2(a0)
calc20 move.w i_spd2(a1),d2
tst.w d1
bmi.s calc22
move.w i_spd1(a1),d2
calc22 add.w d2,v_phc1(a0)
move.w v_phc1(a0),d2
bpl.s calc23
neg.w d2
calc23 clr.w d1
move.b i_dep(a1),d1
mulu d1,d2
lsr.l #8,d2
move.w d6,d5
addq.w #1,d5
mulu d5,d2
swap d2
lsr.w #1,d5
add.w d2,d5
subq.w #1,d5
sub.w d5,d6

clr.w d4
move.b i_res(a1),d4
clr.l d1
move.b d0,d1
addi.w #32,d1
move.l #$7fff*32,d2
divu d1,d2
move.w #$6000/5/127,d3
ext.w d0
mulu d0,d3
sub.w d3,d2 ;d2 = Trägheit
move.w #$7fff,d3
sub.w d2,d3
mulu d4,d3
lsr.l #8,d3 ;d3 = Bremse

move.w #128*afrika,d0
clr.w d1

calc24 muls d3,d1 ;Bremsen
swap d1
rol.l #1,d1
move.w #-128*afrika,d4
sub.w d0,d4 ;Differenz zur Position
muls d2,d4
swap d4
rol.l #1,d4
add.w d4,d1 ;zur Kurve beschleunigen
add.w d1,d0 ;bewegen
move.w d0,d4
* move.w d1,d4
lsr.w #7,d4
move.b d4,(a2)+
dbra d6,calc24

calc25 muls d3,d1 ;Bremsen
swap d1
rol.l #1,d1
move.w #128*afrika,d4
sub.w d0,d4 ;Differenz zur Position
muls d2,d4
swap d4
rol.l #1,d4
add.w d4,d1 ;zur Kurve beschleunigen
add.w d1,d0 ;bewegen
move.w d0,d4
* move.w d1,d4
lsr.w #7,d4
move.b d4,(a2)+
dbra d5,calc25
bra me2
ENDC

calc26
IFNE a_eff5
move.l i_l1(a1),a2 ;Effect 5 (Fast 64)
lsl.w #1,d0
ext.l d0
adda.l d0,a2
move.l a2,v_adr(a0)
move.b i_mlen(a1),d1
move.w d1,v_rln(a0)
clr.w v_rep(a0)
bra me2
ENDC

meadrs dc.l calc1-data,calc3-data, calc10-data,calc13-data,calc16-data
dc.l calc26-data,calc19-data,0
ENDC

c1 equ -72
cs1 equ -71
d1 equ -70
ds1 equ -69
e1 equ -68
f1 equ -67
fs1 equ -66
g1 equ -65
gs1 equ -64
a1 equ -63
as1 equ -62
h1 equ -61
c2 equ -60
cs2 equ -59
d2 equ -58
ds2 equ -57
e2 equ -56
f2 equ -55
fs2 equ -54
g2 equ -53
gs2 equ -52
a2 equ -51
as2 equ -50
h2 equ -49
c3 equ -48
cs3 equ -47
d3 equ -46
ds3 equ -45
e3 equ -44
f3 equ -43
fs3 equ -42
g3 equ -41
gs3 equ -40
a3 equ -39
as3 equ -38
h3 equ -37
c4 equ -36
cs4 equ -35
d4 equ -34
ds4 equ -33
e4 equ -32
f4 equ -31
fs4 equ -30
g4 equ -29
gs4 equ -28
a4 equ -27
as4 equ -26
h4 equ -25
c5 equ -24
cs5 equ -23
d5 equ -22
ds5 equ -21
e5 equ -20
f5 equ -19
fs5 equ -18
g5 equ -17
gs5 equ -16
a5 equ -15
as5 equ -14
h5 equ -13
c6 equ -12
cs6 equ -11
d6 equ -10
ds6 equ -9
e6 equ -8
f6 equ -7
fs6 equ -6
g6 equ -5
gs6 equ -4
a6 equ -3
as6 equ -2
h6 equ -1

effoffset equ -100
IFNE a_arp
arp equ -100
ENDC
IFNE a_freqslide
freq equ -101
ENDC
IFNE a_volslide
vol equ -102
ENDC
vol2 equ -103
spd equ -104
rnd equ -105
hl equ -106
IFNE a_megainstr
hl2 equ -107
ENDC
ton equ -108
IFNE a_fade
fd equ -109
ENDC
IFNE a_volume
fd2 equ -110
ENDC
IFNE a_mod
mod equ -111
ENDC
IFNE a_feinfrequenz
fine equ -112
ENDC
IFNE a_asynchron
spd2 equ -113
ENDC
IFEQ cia-2
spd3 equ -114
spdfd equ -115
ENDC
plen equ -116
IFNE a_asynchron
plen2 equ -117
ENDC

attack_zs ds.b 1
IFNE cia
oldcra ds.b 1
ENDC
even
oldint ds.l 1
IFNE cia
oldinten ds.w 1
oldsr ds.w 1
ENDC
IFNE a_megainstr
kurvenflag dc.l 0
ENDC
defaults
IFEQ a_asynchron
s_c1_def dc.b 5
s_c2_def dc.b -1
s_plen_def dc.b 16
s_spd_def dc.b 6
ENDC
IFNE a_fade
f_def dc.b 0
fc_def dc.b 0
fs_def dc.b 0
ENDC
IFNE a_volume
vol_def dc.b 64
ENDC
even
IFEQ a_asynchron
s_c3_def dc.w 0
ENDC
IFNE a_mod
mod_def dc.w $8000
mod2_def dc.w $ff
ENDC
rnd_def dc.w $4e76
rnd2_def dc.w $3218
IFEQ cia-2
ciatime_def dc.w time1-time2
ciafade_def dc.w 0
ENDC
def_end

registers
IFEQ a_asynchron
s_c1 dc.b 0
s_c2 dc.b 0
s_plen dc.b 0
s_spd dc.b 0
ENDC
IFNE a_fade
fade dc.b 0
fadecounter dc.b 0
fadespeed dc.b 0
ENDC
IFNE a_volume
volume dc.b 64
ENDC
even
IFEQ a_asynchron
s_c3 dc.w 0
ENDC
IFNE a_mod
modulation dc.w $8000
modulation2 dc.w $ff
ENDC
rndnumber dc.w $4e76
rndnumber2 dc.w $3218
IFEQ cia-2
ciatime dc.w time1-time2
ciafade dc.w 0
ciatime2 dc.w time1-time2
ENDC
adrsflag dc.w 0
patterns_adrs dc.l patterns4-data,patterns2-data,patterns3-data,
patterns-data,patterns5-data, patterns6-data,patterns7-data,
patterns8-data,patterns9-data, patterns10-data,0
patterns_adr ds.l 1

opt p-
noten
dc.w 62,71,75,80,85,90,95, 101,107,113,120,127
dc.w 135,143,151,160,170, 180,190,202,214,226,240,254
dc.w 269,285,302,320,339, 360,381,404,428,453,480,508
dc.w 538,570,604,640,678, 720,762,808,856,906,960,1016
dc.w 1076,1140,1208,1280, 1356,1440,1524,1616,1712,1812,1920,2032
dc.w 2152,2280,2416,2560, 2712,2880,3048,3232,3424,3624,3840,4064

instruments1
dc.l huell1
dc.w 6,5
dc.l vib2
dc.w 1,0,8000 ;64 / ULTRA BASS
dc.l mega2
dc.w 96,0 ;1162
dc.w 0,500 ;15884
dc.b 255,0,255,32
dc.b 64,6

dc.l huell3
dc.w 4,3
dc.l vib3
dc.w 1,0,8000 ;65 / MELODIE INSTR
dc.l mega3
dc.w 6,5
dc.l instr2
dc.l 0
dc.b 16,1

dc.l huell5
dc.w 4,3
dc.l vib2
dc.w 2,1,8000
dc.l megatest ;66 / C64 - Neu
dc.w 28,0
dc.l instrtest
dc.l 0
dc.b 16,5

dc.l huell4
dc.w 28,27
dc.l vib4
dc.w 25,24,8000
dc.l megatest ;67 / C64 - Normal abspielen
dc.w 1,0
dc.l instr1
dc.l 0
dc.b 16,5

dc.l huell4
dc.w 28,27
dc.l vib4
dc.w 25,24,8000
dc.l megatest ;68 / C64 - Normal abspielen
dc.w 1,0
dc.l instr3
dc.l 0
dc.b 16,5

dc.l huell1
dc.w 6,5
dc.l vib2
dc.w 1,0,8000 ;69 / ULTRA BASS
dc.l mega2
dc.w 1162,0
dc.w 0,15884
dc.b 255,0,255,32
dc.b 64,6

dc.l huell4
dc.w 28,27
dc.l vib5
dc.w 1,0,18000
dc.l megatest ;70 / C64 - Normal abspielen - II
dc.w 1,0
dc.l instr1
dc.l 0
dc.b 16,5


instruments2
* dc.l huell1
* dc.w 1,0
* dc.l vib1
* dc.w 1,0,0
* dc.l 0
* dc.w 2000,0,1

dc.l 0
patterns:
dc.l x13,x1,x1,x14
dc.b 0,0,0,0
dc.l x15,x1,x1,x16
dc.b -4,0,0,-4
dc.l x15,x1,x1,x16
dc.b -2,0,0,-2
dc.l x15,x1,x1,x16
dc.b 0,0,0,0

dc.l x15,x5,x5-1,x16
dc.b 0,0,0,0
dc.l x15,x6,x6-1,x16
dc.b -4,0,0,-4
dc.l x15,x7,x7-1,x16
dc.b -2,0,0,-2
dc.l x15,x8,x8-1,x16
dc.b 0,0,0,0

dc.l x3,x9,x9-1,x3
dc.b -12,0,0,-12
dc.l x4,x1,x1,x17
dc.b -4,0,0,-4
dc.l x4,x1,x1,x17
dc.b -2,0,0,-2
dc.l x4,x1,x1,x17
dc.b 0,0,0,0

dc.l x4,x10,x10-1,x17
dc.b 3,0,0,3
dc.l x4,x11,x11-1,x17
dc.b 2,0,0,2
dc.l x4,x1,x1,x17
dc.b 0,0,0,0
dc.l x4,x1,x1,x17
dc.b 0,0,0,0

dc.l x4,x10,x10-1,x17
dc.b 3,12,12,3
dc.l x4,x12,x12-1,x17
dc.b 2,12,12,2
dc.l x4,x1,x1,x17
dc.b 0,0,0,0
dc.l x4,x1,x1,x17
dc.b 0,0,0,0

dc.l x18,x0,x0,x19
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0

dc.l x0,x0,x0,x0
dc.b 0,0,0,0
dc.l x0,x0,x0,x0
dc.b 0,0,0,0

dc.l -1
patterns2:
dc.l o2,o6,o6-2,o6-4
dc.b -7,0,-6,-7
dc.l o4,o1,o1,o1
dc.b -7,0,0,0

dc.l o4,o6,o6-2,o6-4
dc.b -9,-2,1,0
dc.l o4,o1,o1,o1
dc.b -9,0,0,0

dc.l o4,o6,o6-2,o6-4
dc.b -7,0,-6,-7
dc.l o4,o1,o1,o1
dc.b -7,0,0,0

dc.l o4,o6,o6-2,o6-4
dc.b -4,-4,3,1
dc.l o4,o1,o1,o1
dc.b -4,0,0,0

dc.l o4,o6,o6-2,o6-4
dc.b -2,-2,6,5
dc.l o4,o1,o1,o1
dc.b -2,0,0,0

dc.l o4,o6,o6-2,o6-4
dc.b -4,-4,3,1
dc.l o4,o1,o1,o1
dc.b -4,0,0,0

dc.l o7,o6,o6-2,o6-4
dc.b 0,0,8,7
dc.l o1,o1,o1,o1
dc.b 0,0,0,0
dc.l o1,o1,o1,o1
dc.b 0,0,0,0
dc.l o1,o1,o1,o1
dc.b 0,0,0,0
dc.l o1,o1,o1,o1
dc.b 0,0,0,0
dc.l o0,o0,o0,o0
dc.b 0,0,0,0

dc.l -1

patterns3:
dc.l s2,s2,s3,s3
dc.b -2,-9,-9,-2
dc.l s2,s2,s3,s3
dc.b -4,-11,-11,-4
dc.l s2,s2,s3,s3
dc.b -9,-14,-14,-9
dc.l s2,s2,s3,s3
dc.b -6,-11,-11,-6

dc.l s4,s5,s5,s4
dc.b -2,-4,-11,-9
dc.l s6,s7,s7,s6
dc.b -9,-6,-11,-14

dc.l s4,s5,s5,s4
dc.b -2,-4,-11,-9
dc.l s6,s7,s7,s6
dc.b -11,-9,-16,-18

dc.l s4,s5,s5,s4
dc.b -6,-4,-11,-14
dc.l s6,s7,s7,s6
dc.b -11,-14,-21,-18

dc.l s8,s8-1,s8-2,s8-3
dc.b -11,-14,-18,-21
dc.l s1,s1,s1,s1
dc.b 0,0,0,0
dc.l s1,s1,s1,s1
dc.b 0,0,0,0

dc.l -1
patterns4:
dc.l z2,z5,z6,z7
dc.b -4,0,0,0
dc.l z4,z8,z9,z10
dc.b -2,0,0,0

dc.l z4,z5,z6,z7
dc.b -4,0,0,0
dc.l z4,z11,z12,z13
dc.b 0,0,0,0

dc.l z4,z5,z6,z7
dc.b -16,0,0,0
dc.l z4,z8,z9,z10
dc.b -14,0,0,0

dc.l z4,z5,z6,z7
dc.b -16,0,0,0
dc.l z4,z11,z12,z13
dc.b -12,0,0,0

dc.l z14,z5,z6,z7
dc.b -4,0,0,0
dc.l z4,z8,z9,z10
dc.b -2,0,0,0

dc.l z4,z5,z6,z7
dc.b -4,0,0,0
dc.l z4,z11,z12,z13
dc.b 0,0,0,0

dc.l z4,z5,z6,z7
dc.b -16,0,0,0
dc.l z4,z8,z9,z10
dc.b -14,0,0,0

dc.l z4,z5,z6,z7
dc.b -16,0,0,0
dc.l z4,z11,z12,z13
dc.b -12,0,0,0

dc.l -1
patterns5:
dc.l u5,u5,u7,u7-2
dc.b 0,-12,0,0
dc.l u6,u6,u8,u8-2
dc.b 0,-12,0,0
dc.l u5,u5,u9,u9-2
dc.b 0,-12,0,0
dc.l u6,u6,u10,u10-2
dc.b 0,-12,0,0

dc.l u5,u5,u7,u7-2
dc.b 0,-12,0,0
dc.l u6,u6,u8,u8-2
dc.b 0,-12,0,0
dc.l u5,u5,u9,u9-2
dc.b 0,-12,0,0
dc.l u6,u6,u10,u10-2
dc.b 0,-12,0,0

dc.l u11,u5,u7,u7-2
dc.b 0,-12,0,0
dc.l u6,u6,u8,u8-2
dc.b 0,-12,0,0
dc.l u5,u5,u9,u9-2
dc.b 0,-12,0,0
dc.l u6,u6,u10,u10-2
dc.b 0,-12,0,0

dc.l -1
patterns6:
dc.l w1,w3,w4,w2
dc.b 0,0,0,0
dc.l w0,w0,w0,w0
dc.b 0,0,0,0
dc.l w0,w0,w0,w0
dc.b 0,0,0,0

dc.l -1
patterns7:
dc.l r1,r1,r1,r1
dc.b 0,3,8,-28
dc.l r2,r2,r2,r2
dc.b 0,3,8,-28
dc.l r3,r3,r3,r3
dc.b 0,3,8,-28

dc.l -1
patterns8:
dc.l t1,t1,t1,t1
dc.b 0,3,7,12
dc.l t2,t2,t2,t2
dc.b 0,1,2,3
dc.l t0,t0,t0,t0
dc.b 0,1,2,3

dc.l -1
patterns9:
dc.l i1,i1-1,i1-2,i1-3
dc.b 12,7,4,0
dc.l i2-3,i2-2,i2-1,i2
dc.b 12,7,3,0
dc.l -1
patterns10:
dc.l p1,p2,p3,p4
dc.b 0,0,0,0
dc.l p5,p5,p5,p5
dc.b 0,0,0,0
dc.l p0,p0,p0,p0
dc.b 0,0,0,0
dc.l p0,p0,p0,p0
dc.b 0,0,0,0
dc.l -1
vib1
dc.b 0
vib2
dc.b 20,10,30
vib3
dc.b $0a
vib4
dc.b 0,1,2,3,4,5,6,8,9,10,10,10,10, 10,10,10,10,10,10,10,10,10,10,10,30
vib5
dc.b 255
huell1
dc.b 44,64,44,34,24,30,0
huell3
dc.b 60,50,40,30,20,10
huell4
dc.b 20,30,40,50,60,64,62,60,58,56,54, 52,50,48,46,44,42,40,38,36, 34,32,30,28,26,24,22,20
huell5
dc.b 64,50,40,64
instr2
dc.b $01,$02,$04,$08,$10,$20,$40,$7f, $40,$20,$10,$08,$04,$02,$01,$b0,$ff,$fe,$fc, $f8,$f0,$e0,$c0,$81,$c0,$e0,$f0,$f8,$fc,$ff,$00
instrtest
dc.b 127,127,127,127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127
dc.b -127,-127,-127,-127,-127,-127,-127, -127,-127,-127,-127,-127,-127,-127,-127, -127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127
instr1
dc.b 0,16,32,48,64,80,96,112,127,112,96,80,64,48,32,16,0
dc.b -16,-32,-48,-64,-80,-96, -112,-127,-112,-96,-80,-64,-48,-32,-16,-127
dc.b 0,16,32,48,64,80,96,112, 127,112,96,80,64,48,32,16,0
dc.b -16,-32,-48,-64,-80,-96, -112,-127,-112,-96,-80,-64,-48,-32,-16,-127
instr3
dc.b 0,16,32,48,-64,80,96, 112,-127,112,96,80,64,48,32,16,127
dc.b -16,-32,-48,-64,-80,-96, -112,-127,-112,-96,-80,-64,-48,-32,-16,-127
instr10
dc.b -63,63
megatest
* dc.b 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
* dc.b 14,13,12,11,10,9,8,7,6,5,4,3,2

dc.b mega3
dc.b $0a,$14,$1e,$23,$28,$00
mega4
dc.b 1
arpeggios
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.b 2,8,-6,5,-9,-1,3,-7,0,4,8,4,-6,-1,-11,7
dc.b 7,4,0,7,4,0,7,4,0,7,4,0,7,4,0,7
dc.b 7,3,0,7,3,0,7,3,0,7,3,0,7,3,0,7
x0
dc.b vol,-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x2
dc.b c5,64,vol2,64,mod,0,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
x3
dc.b c5,64,fine,15,vol2,64,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
x4
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b ton,c4,hl,0
x5
dc.b c5,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b 0
x6
dc.b ds5,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b ds5,freq,-1,$ea,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f5,0
dc.b 0
dc.b ds5,0
dc.b 0
x7
dc.b d5,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b g4,0
dc.b 0
dc.b 0
dc.b 0
x8
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b f4,0
dc.b 0
dc.b g4,0
dc.b 0
dc.b f4,0
dc.b 0
dc.b 0
dc.b 0
x9
dc.b c4,0
dc.b 0
dc.b 0
dc.b 0
dc.b as3,0
dc.b 0
dc.b c4,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
x10
dc.b ds4,0
dc.b 0
dc.b 0
dc.b 0
dc.b c4,0
dc.b 0
dc.b 0
dc.b 0
dc.b ds4,0
dc.b 0
dc.b 0
dc.b 0
dc.b c4,0
dc.b 0
dc.b 0
dc.b 0
x11
dc.b f4,68,0
dc.b 0
dc.b 0
dc.b 0
dc.b ds4,67,0
dc.b 0
dc.b 0
dc.b 0
dc.b d4,0
dc.b 0
dc.b freq,0,20,0
dc.b 0
dc.b as3,0
dc.b 0
dc.b c4,0
dc.b 0
x12
dc.b gs4,68,0
dc.b 0
dc.b 0
dc.b 0
dc.b g4,67,0
dc.b 0
dc.b 0
dc.b 0
dc.b f4,0
dc.b 0
dc.b g4,0
dc.b 0
dc.b gs4,0
dc.b 0
dc.b g4,0
dc.b 0
x13
dc.b c4,64,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x14
dc.b c4,64,fine,35,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x15
dc.b ton,c4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x16
dc.b ton,c4,fine,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x17
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b ton,c4,hl,fine,35,0
x18
dc.b c4,69,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x19
dc.b c4,69,fine,135,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

o0
dc.b vol,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o2
dc.b c5,64,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o3
dc.b c5,64,fine,35,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o4
dc.b ton,c5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o5
dc.b ton,c5,fine,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o6
dc.b c5,67,vol2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o7
dc.b c5,69,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

s0
dc.b vol,-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
s1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
s2
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b c5,vol2,32,0
dc.b 0
dc.b 0
dc.b c5,vol2,16,0
dc.b 0
dc.b 0
dc.b c5,vol2,8,0
dc.b 0
dc.b 0
dc.b c5,vol2,4,0
dc.b 0
dc.b c5,vol2,2,0
dc.b 0
s3
dc.b c5,65,vol2,64,fine,40,0
dc.b 0
dc.b 0
dc.b c5,vol2,32,fine,40,0
dc.b 0
dc.b 0
dc.b c5,vol2,16,fine,40,0
dc.b 0
dc.b 0
dc.b c5,vol2,8,fine,40,0
dc.b 0
dc.b 0
dc.b c5,vol2,4,fine,40,0
dc.b 0
dc.b c5,vol2,2,fine,40,0
dc.b 0
s4
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
s5
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
s6
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
s7
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
s8
dc.b c5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,vol2,26,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,vol2,20,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,vol2,14,0
dc.b 0
dc.b 0
dc.b 0
z0
dc.b vol,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
z1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
z2
dc.b c5,64,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
z4
dc.b ton,c5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
z5
dc.b ds5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b ds5,0
z6
dc.b 0
dc.b d5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b c5,0
dc.b 0
dc.b 0
dc.b c5,0
dc.b 0
dc.b 0
z7
dc.b 0
dc.b 0
dc.b c5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b c5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
z8
dc.b f5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b f5,0
z9
dc.b 0
dc.b ds5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
z10
dc.b 0
dc.b 0
dc.b d5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
z11
dc.b g5,65,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b 0
z12
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b gs5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
z13
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b 0
dc.b d5,0
z14
dc.b ton,c5,fd2,64,fd,-1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u0
dc.b vol,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u2
dc.b c5,64,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u4
dc.b ton,c5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u5
dc.b ds4,64,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,ds5,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f4,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f5,hl,0
dc.b 0
dc.b 0
dc.b 0
u6
dc.b ton,g4,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,g5,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f4,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f5,hl,0
dc.b 0
dc.b 0
dc.b 0
u7
dc.b g4,67,vol2,16,0
dc.b 0
dc.b a4,0
dc.b 0
dc.b as4,0
dc.b 0
dc.b as4,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b as4,0
dc.b 0
dc.b d5,0
dc.b 0
u8
dc.b as4,0
dc.b 0
dc.b a4,0
dc.b 0
dc.b as4,0
dc.b 0
dc.b g4,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b f4,0
dc.b 0
dc.b g4,0
dc.b 0
u9
dc.b as5,0
dc.b 0
dc.b d5,0
dc.b 0
dc.b as5,0
dc.b 0
dc.b a5,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
u10
dc.b g5,0
dc.b 0
dc.b d5,0
dc.b 0
dc.b g5,0
dc.b 0
dc.b a5,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0

u11
dc.b ds4,64,vol2,64,fd2,64,fd,-1,8,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,ds5,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f4,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f5,hl,0
dc.b 0
dc.b 0
dc.b 0
w0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
w1
dc.b c5,67,vol2,64,arp,2,spd,9,0
dc.b as4,67,vol2,64,arp,2,0
dc.b 0
dc.b gs4,67,vol2,64,arp,2,0
dc.b 0
dc.b g4,67,vol2,64,arp,2,0
dc.b 0
dc.b f4,67,vol2,64,arp,2,0
dc.b 0
dc.b ds4,67,vol2,64,arp,2,0
dc.b 0
dc.b d4,67,vol2,64,arp,2,0
dc.b d4,67,vol2,64,arp,2,0
dc.b 0
dc.b c4,67,vol2,64,arp,2,0
dc.b fd2,64,fd,-18,30,0
w2
dc.b c5,67,vol2,64,arp,2,fine,50,0
dc.b as4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b gs4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b g4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b f4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b ds4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b d4,67,vol2,64,arp,2,fine,50,0
dc.b d4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b c4,67,vol2,64,arp,2,fine,50,0
dc.b fd2,64,fd,-18,30,0
w3
dc.b c5,69,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.b fd2,64,fd,-18,30,0
w4
dc.b c5,69,vol2,64,fine,50, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.b fd2,64,fd,-18,30,0

r0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
r1
dc.b c5,67,vol2,64,0
dc.b 0
dc.b c5,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b as4,67,vol2,64,0
dc.b 0
dc.b c5,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
r2
dc.b g4,67,vol2,64,0
dc.b 0
dc.b g4,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b g4,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b f4,67,vol2,64,0
dc.b 0
dc.b g4,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
r3
dc.b as4,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b g4,67,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
t0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
t1
dc.b c2,67,vol2,64,arp,2,freq,-1,200,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
t2
dc.b fd2,64,fd,-5,10,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
i0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
i1
dc.b c4,65,vol2,64,spd,4,0
dc.b 0
dc.b 0
dc.b 0
dc.b ds4,0
dc.b 0
dc.b 0
dc.b 0
dc.b fs4,0
dc.b 0
dc.b 0
dc.b 0
dc.b a4,0
dc.b 0
dc.b 0
dc.b 0
i2
dc.b c5,0
dc.b 0
dc.b 0
dc.b 0
dc.b fd2,64,fd,-15,10,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
p0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p1
dc.b c5,67,arp,2,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p2
dc.b c5,67,arp,2,vol2,64,freq, 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p3
dc.b c5,67,arp,2,vol2,64,freq, 0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p4
dc.b c5,67,arp,2,vol2,64,freq, 0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p5
dc.b fd2,64,fd,-5,10,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0

even

voicedatas ds.l length_voicedata
dataend