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 >
Commodore BASIC  |  2022-10-26  |  2KB  |  43 lines

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