home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1990 November
/
64er_Magazin_90-11_1990_Markt__Technik_de_Side_A.d64
/
minisynthi
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
2KB
|
43 lines
0 rem (w) by jomo walla
10 sd=54272:fori=0to24:pokesd+i,0:next:dimhi%(1000):dimlo%(1000):dimtd%(1000,1)
20 dimth%(256):dimtl%(256):ze=161
30 tb$="zsxdcvgbhnjmq2w3er5t6y7ui9o0p@-*\^"
40 for i=1 to len(tb$)
50 fr=63508/2^(1/12)^(94-35-i)
60 hi%=fr/256:lo%=fr-256*hi%
70 ta%=asc(mid$(tb$,i,1))
80 th%(ta%)=hi%:tl%(ta%)=lo%:nexti:i=0
100 print"[147]menu:":print"1.ton einstellen":print"2.lied aufnehmen"
110 print"3.lied spielen":print"4.lied speichern":print"5.lied laden"
180 getg$:g=val(g$):ifg<1org>5then180
190 on g gosub 1000,2000,3000,4000,5000
200 goto 100
1000 input"[147]lautstaerke(0-15)";ls
1010 input"wellenform(16/32/64/128)";wf
1020 input"attack(0-15)";a:input"decay(0-15)";d:input"sustain(0-15)";s
1030 input"release(0-15)";r:if wf=64 then input"pulsbreite(0-65535)";pb
1040 input"filtermodus(0/1/2/4)";fm:if fm=0 then ff=0:fz=0:goto1100
1050 input"filterfrequenz(0-2047)";ff
1060 input"filterresonanz(0-15)";fz
1100 pokesd+24,16*fm+ls:pokesd+5,16*a+d:pokesd+6,16*s+r:pokesd+23,16*fz+sgn(fm)
1110 pokesd+21,ff-int(ff/8)*8:pokesd+22,int(ff/8):pokesd+2,pb-int(pb/256)*256
1120 pokesd+3,int(pb/256):return
2000 getg$:ifg$=""then2000
2010 tp=peek(203):fori=1to1000:pokeze,0:pokeze+1,0:hi%(i)=th%(g):lo%(i)=tl%(g)
2030 pokesd,lo%(i):pokesd+1,hi%(i):poke sd+4,wf+1
2035 ifpeek(203)=tpthen2035
2040 td%(i,0)=peek(ze+1)+256*peek(ze):pokesd+4,wf:poke198,0:wait203,64,255
2050 g=peek(60289+peek(203))
2060 poke198,0:tp=peek(203):td%(i,1)=peek(ze+1)+256*peek(ze):ifg=95thenreturn
2070 nexti:return
3000 forj=1toi:pokeze+1,0:pokeze,0:pokesd,lo%(j):pokesd+1,hi%(j)
3020 pokesd+4,wf+1:if peek(ze+1)+256*peek(ze)<td%(j,0)then3020
3040 pokesd+4,wf:if peek(ze+1)+256*peek(ze)<td%(j,1)then3040
3050 next j:return
4000 input"name";n$:n$=n$+",s,w":open1,8,2,n$:a$=chr$(13):print#1,ls,a$,wf
4010 print#1,pb,a$,a,a$,d,a$,s,a$,r,a$,fm,a$,ff,a$,fz,a$,i:forj=1toi
4020 print#1,lo%(j),a$,hi%(j),a$,td%(j,0),a$,td%(j,1):nextj:close1:return
5000 input"name";n$:n$=n$+",s,r":open1,8,2,n$:input#1,ls,wf,pb,a,d,s,r,fm,ff,fz
5010 input#1,i:gosub1100
5020 forj=1toi:input#1,lo%(j),hi%(j),td%(j,0),td%(j,1):nextj:close1:return