home *** CD-ROM | disk | FTP | other *** search
- 0 rem"********************************
- 1 [143]"* *
- 2 rem"* === [205]aestro 64 === *
- 3 [143]"* prog.v. ascrans str$ijkstra, 1987 *
- 4 rem"* *
- 5 [143]"* getestet, bearbeitet, 'ent- *
- 6 rem"* fehlert' und artikel von *
- 7 [143]"* nikolaus heusler, 130388-arr *
- 8 rem"* *
- 9 [143]"******************************** close
- 10 if peek(52)>144 then poke52,144: poke 51,0: poke56,144
- 11 tl$="[205]aestro 64 von [198].[196]ijkstra / [206].[200]eusler [163][163][163][163][163][163][163][163][163][163]
- 12 tl$[178]tl$[170][199](13)[170]"(c) (NULL)arkt & (NULL)echnik, (NULL)edaktion 64'er"[170][199](13)
- 14 [151]53281,13: [151]53280,13: [151]650,128:[139]hq[167]40
- 15 tm[178]27[170](([194](65408)[175]192)[178]64)[172]16:[143] exos v7 von nh
- 16 [153] "load"tl$"(NULL)ax."tm"(NULL)ekunden chr$eduld, bitte !
- 18 if peek(49152)<> 76 then load "mc1",8,1
- 20 if peek(36864)<> 76 then load "mc2+3",8,1
- 24 hq=2500: mm%=180: of=15: pq=2
- 26 dim cp%(3,hq), da%(18), re%(36), gq%(15,10), do%(6), t$(50), p(7), q(6)
- 28 def fna(x)=x-12*int(x/12)
- 30 for k=1 to 96: read a: next
- 32 for k=0 to 10: for l=0 to 14: read gq%(l,k) :next:next
- 34 for k=0 to 5: read do%(k): next: for k=0 to 7: read p(k): next
- 36 for k=0 to 6: read q(k): next: for k=0 to 41: read t$(k): next
- 38 for k=0 to 1: read f$(k): next
- 40 rem "[200]auptmenue-------------------------------------------------------------
- 42 n[178]0: [141]416: [139] a[178]0 [167] [153]"servus !!":[128]
- 44 [139] a[177]20 [167] mm%[178]a: [137]42
- 46 [145] a [141] 430,63,52,448,54,66,404,404
- 48 [137] 42
- 50 [143] "(NULL)usikeditor------------------------------------------------------------
- 52 sys49152,cp%(0,0):return
- 54 rem"[200]armonisieren und spielen-----------------------------------------------
- 56 [141] 132: [139] om[179]2 [167] 130
- 58 n[178]1: [141]416: ne[178]a: n[178]2: [141]416: m0[178]a: n[178]3: [141]416: do[178]a
- 60 [158]36869,cp%(0,0),re%(0),da%(0),ne,m0,do%(do)
- 62 [143] "(NULL)pielen----------------------------------------------------------------
- 63 print"[211]piel laeuft. [193]bbruch mit [211][200][201][198][212] [210][197][212][213][210][206].
- 64 [158]49164,cp%(0,0),mm%,gq%(0,0):[142]
- 66 [143]"(NULL)iedvariationen---------------------------------------------------------
- 68 vd=1: gosub132: if om<2 then 130
- 70 nn=int(hq/(2*om)):if nn>8 then nn=8
- 72 if nn<2 then a=0: goto412
- 74 n=4: gosub416: if val(a$)=0 then return
- 75 print"[205][207][205][208][204][211].....
- 76 [158]36869,cp%(0,0),re%(0),da%(0),3,2,255: cp%(0,re%(ri)[171](re%(ri)[179]hq))[178][171]1
- 78 [158]39686,cp%(0,0),om,om: [158]36869,cp%(0,0),re%(0),da%(0),0,0,255: [153]
- 80 n[178]0: [129] k[178]0 [164] 10: [139] cp%(1,k) [167] n[178]n[170]1
- 82 [130]: vd[178]0: [139] n[177]7 [167] [158]39689,cp%(0,0): n[178]n[171]2: vd[178]vd[170]2
- 84 [139] n[177]3 [167] [158]39689,cp%(0,0): vd[178]vd[170]2
- 86 vd[178]vd[171](vd[178]0): [141]132 : [139] om[179]2 [167] 130
- 88 [129] k[178]1 [164] ri: x[178]re%(k): cp%(0,x)[178]0: cp%(0,x[170]om)[178]0: [130]
- 90 oo[178]2[172]om: [129] k[178]0 [164] hq[171]oo [169] oo: [158]39686,cp%(0,k),oo,oo: [130]: nb[178]om
- 92 [153]"right$n atnrbeit:
- (NULL)ariation";:[151]198,.
- 93 [143] ctrl m
- 94 [129] va[178]2 [164] nn: wz[178]1: [139] [194](198) [167] va[178]nn: [137]122
- 96 : [139] [202] (a$,wz,1)[179][177]" " [167] wz[178]wz[170]1: [139] wz[179][178][195](a$) [167]96
- 98 : q[178][197]([200](a$,wz[171]1)): a$[178][202](a$,wz[170]1): [139] q[178]0 [167] 122
- 100 : [153] q;: [145] q [141]194,160,252,210,288,296,304
- 102 : s[178] 1[171](q[177]5)[171](q[178]6)
- 104 : [129] k[178]k1 [164] ew: [158]39698,cp%(0,0),k: [139] [194](720)[178]0 [167] 120
- 106 : [139] [194](721)[179][177]1 [167] [139] q[179]7 [167] 120
- 108 : [139] [194](721)[178]1 [167] [139] q[178]7 [167] 120
- 110 : vn[178]k[171]1
- 112 : [139] cp%(s,vn)[178]0 [167] vn[178]vn[171]1: [137]112
- 114 : [139] vn[179]k[171]16 [167] 120
- 116 : [139] q[178]6 [167] cp%(s,vn)[178]cp%(s,vn)[171]7[172](1[170]2[172](cp%(s,vn)[179]38)): [137]120
- 118 : cp%(s,vn)[178]cp%(s,vn)[171]5[172](1[170]2[172](cp%(s,vn)[179]71))
- 120 : [130] k: cp%(0,k1[171]2)[178][171]101
- 122 [130] va
- 124 [158]39680,cp%(0,m),2: cp%(0,1)[178]266: cp%(0,0)[178]1068
- 126 [139] nb[179]hq [167] cp%(0,nb[170]1[170](nb[177][178]hq))[178][171]1
- 128 [153]: [137]64
- 130 a[178]1: [137]412
- 132 [158]36864,cp%(0,0),re%(0),da%(0): ri[178]re%(0): om[178]re%(ri)[170]vd: [142]
- 134 [143] "valrste (k1) und letzte (ew) (NULL)ote einer (NULL)ariation bestimmen--------------
- 136 rem "und erste [206]ote der naechsten [214]ariation (nb)
- 138 k1[178]nb
- 140 [139] cp%(1,k1)[178]0 [167] k1[178]k1[170]1: [139] k1[179][178] ew [167] 140
- 142 nb[178]k1[170]om: ew[178]nb[171]1
- 144 [139] cp%(1,ew)[178]0 [167] ew[178]ew[171]1: [139] ew[177][178]0 [167] 144
- 146 [142]
- 148 [143]"atnbstand (of) und (NULL)onintervall (in)--------------------------------------
- 150 rem"zur naechsten [206]ote bestimmen
- 152 of[178]1: lt[178]cp%(s,k)
- 154 [139] cp%(s,k[170]of) [167] in[178]cp%(s,k[170]of)[171]lt: [142]
- 156 of[178]of[170]1: [139] of[178][179]ew[171]k [167] 154
- 158 [142]
- 160 [143] "(NULL)opranfiguration, frei-------------------------------------------------
- 162 gosub136: cp%(0,k1-1)=261: ng=0
- 164 k=k1
- 166 gosub198
- 168 : vl=0: rn=0
- 170 : for kk= 1-(ng>0) to of-1
- 172 : if ng then if kk=5 then 180
- 174 : if rn=0 then if ng=0 then if int(rnd(0)*2) then rn=1: goto180
- 176 : if vl then vl=0: cp%(1,k+kk)=al: goto180
- 178 : cp%(1,k+kk)=ba: vl=1
- 180 : gosub188
- 182 : next kk: gosub188
- 184 k=k+kk: if k<ew then 166
- 186 return
- 188 : d1=cp%(1,k+kk)-cp%(1,k+kk-1): d2=abs(d1)
- 190 : if d2=10 or d2=11 then cp%(1,k+kk)=cp%(1,k+kk)-12*sgn(d1)
- 192 : return
- 194 rem "[211]opranfiguration, streng-----------------------------------------------
- 196 [141]136: cp%(0,k1[171]1)[178]265: ng[178]1:[137]164
- 198 [143] "atnkkordtoene suchen, und oberhalb (NULL)opran liegen-------------------------
- 200 s=1: gosub148: ifcp%(2,k) then al=cp%(2,k)
- 202 if cp%(3,k) then ba=cp%(3,k)
- 204 if al<cp%(1,k) then if al<60 then al=al+12: goto204
- 206 if ba<cp%(1,k) then if ba<60 then ba=ba+12:goto206
- 208 return
- 210 rem "[212]enorvariation---------------------------------------------------------
- 212 [141]136: cp%(0,k1[171]1)[178]266
- 214 [129] k[178]k1 [164] ew: al[178]cp%(2,k): sp[178]cp%(1,k)
- 216 : cp%(1,k)[178]al[171]12[172](al[177]0):cp%(2,k)[178]sp[170]12[172](sp[177]0)
- 218 : [139] cp%(3,k)[177]cp%(2,k)[167] cp%(3,k)[178]cp%(3,k)[171]12
- 220 [130] k
- 222 k[178]k1: s[178]1: e1[178]ew
- 224 [143] "(NULL)timme s diatonisch auffuellen-----------------------------------------
- 226 if k>=e1 then return
- 228 gosub148: if of<2*pq then k=k+pq: goto226
- 230 if abs(in)>=of/2 then if in<>0 then 234
- 232 cp%(s,k+pq)=cp%(s,k)+in-(1+of/pq)*sgn(rnd(0)-.5): goto236
- 234 cp%(s,k+pq)=cp%(s,k)+pq*int(in/of)
- 236 k=k+pq: gosub238: goto228
- 238 rem "[206]ote k in [211]timme s ersetzen durch [205]elodienote------------------------
- 240 aa[178]0: bb[178]1
- 242 cp%(s,k)[178]cp%(s,k)[170]aa[172]bb: a[178][165]a(cp%(s,k)): [139] a[179]0 [167] a[178]a[170]12
- 244 [139] a[177]11 [167] a[178]a[171]12
- 246 [139] da%(a) [167] [142]
- 248 aa[178]aa[170]1: bb[178]bb[172][171]1:[139] aa[179]6 [167] 242
- 250 [142]
- 252 [143] "(NULL)riolenvariation-------------------------------------------------------
- 254 gosub136: cp%(0,k1-1)=262
- 256 for k=k1 to ew-1 step 4
- 258 : cp%(0,k)=33: cp%(0,k+1)=33: cp%(0,k+2)=-67: cp%(0,k+3)=-67
- 260 : fors=1to3: cp%(s,k+3)=0: next s
- 262 next k
- 264 for k=k1 to ew-1 step 4
- 266 : s=1: gosub148: if of<4 then 286
- 268 : ifin<25then272
- 270 : cp%(1,k)=cp%(1,k-2)+4*sgn(.5+(((k-k1)and32)=0)): s=1: gosub238
- 272 : for l=0 to 1: k=k+1: tr=1
- 274 : cp%(1,k)=cp%(1,k-tr)+2
- 276 : if cp%(1,k)<24 then tr=tr+1: if tr<=k then274
- 278 : if ((k-k1)and32)<>0 then cp%(1,k)=cp%(1,k)-4
- 280 : if l thencp%(1,k)=cp%(1,k)+4*sgn(.5+(((k-k1)and32)=0))
- 282 : s=1: gosub238
- 284 : next l: k=k-2
- 286 next k: return
- 288 rem "6/8-[212]aktvariation-------------------------------------------------
- 290 [141]136: cp%(0,k1[171]1)[178]264
- 292 [129] k[178]k1[170]4 [164] ew[171]1 [169] 8
- 294 [129] l[178]0 [164] 3: cp%(0,k[170]l)[178][171]100:[130] l : [130] k: k[178]k1: [137]222
- 296 [143] "peekassfiguration---------------------------------------------------------
- 298 gosub136: cp%(0,k1-1)=257: k=k1
- 300 if cp%(3,k)=0 then k=k+1: goto300
- 302 s=3: e1=ew: goto224
- 304 rem"[198]uge--------------------------------------------------------------------
- 306 [141]136: cp%(0,k1[171]1)[178]256
- 308 [139] ri[177]1 [167] le[178](re%(1)[170]vd[170]re%(ri)[171]re%(ri[171]1))[172]3
- 310 [139] ri[178]1 [167] le[178](re%(1)[170]vd)[172]6
- 312 [139] le[177]om [167] [158]39680,cp%(0,k1[170]om),le[171]om: nb[178]nb[170]le[171]om
- 314 [139] le[179]om [167] [158]39683,cp%(0,k1[170]le),om[171]le: nb[178]nb[171]om[170]le
- 316 k[178]k1: k0[178]k1: r[178]1: [141]380
- 318 s1[178]2: k[178]k1: [141]362: k1[178]k1[170]ln: [141]368
- 320 [129] k[178]k1[171]ln [164] k1[170]ln[171]1
- 322 : x[178]cp%(1,k): [139] x[177]12 [167] cp%(1,k)[178]0: cp%(3,k)[178]x[171]12
- 324 [130]: cp%(1,k1[171]ln)[178][171]1
- 326 k[178]k1[170]ln[172]2: k1[178]k: r[178]ri: lo[178]ln: [141]380
- 328 s1[178]3: k[178]k1: [141]362: k1[178]k1[170]ln: [141]368
- 330 k1[178]k0[170]lo[171]1: k2[178]k1[170]lo
- 332 [139] cp%(1,k2)[178]0 [167] k2[178]k2[170]1: [137]332
- 334 [139] cp%(3,k1)[178]0 [167] k1[178]k1[171]1: [137]334
- 336 k3[178]k2[170]lo[170]ln: k4[178]k3[170]ln: ew[178]nb[171]1
- 338 [141]386: k[178]k1: s[178]3: e1[178]k2: [141]224: k1[178]k0
- 340 [139] cp%(2,k2)[178]0 [167] k2[178]k2[171]1: [137]340
- 342 [139] cp%(2,k3)[178]0 [167] k3[178]k3[170]1: [137]342
- 344 [141]394: k[178]k2: s[178]2:e1[178]k3: [141]224
- 346 [139] cp%(1,k3)[178]0 [167] k3[178]k3[171]1:[137]346
- 348 [139] cp%(1,k4)[178]0 [167] k4[178]k4[170]1:[137]348
- 350 [141]386: k[178]k3: s[178]1: e1[178]k4: [141]224
- 352 [139] cp%(2,k4)[178]0 [167] k4[178]k4[171]1: [137]352
- 354 [139] cp%(2,ew)[178]0 [167] ew[178]ew[171]1: [137]354
- 356 [141] 394: k[178]k4: s[178]2: e1[178]ew: [141]224
- 358 [129] k[178]ew[171]8 [164] ew[171]5: cp%(0,k)[178]20: cp%(0,k[170]4)[178]25: cp%(0,k[170]8)[178]35: [130]
- 360 ew[178]nb[171]1: [142]
- 362 [143]"(NULL)timme s1 bis 3 loeschen ueber (NULL)trecke ln-------------------------------
- 364 kb=k:for k=k to k+ln-1: for s=s1 to 3: cp%(s,k)=0: next: next
- 366 fors=s1to3:cp%(s,kb)=-1:next: return
- 368 rem"[211]timmen 1 und 2 vertauschen und in den [196]ominant transponieren-----------
- 370 [129] k[178]k1 [164] k1[170]ln[171]1: cp%(3,k)[178]0: al[178]cp%(2,k): sp[178]cp%(1,k)
- 372 [139] al[178]0 [167] [139] sp[178]0 [167]378
- 374 cp%(1,k)[178]al[171]7[172](al[177]0): cp%(2,k)[178]sp[170]5[172](sp[177]0)
- 376 [139] cp%(1,k)[179]cp%(2,k) [167] cp%(1,k)[178]cp%(1,k)[170]12: [137]376
- 378 [130]: [142]
- 380 [143]"(NULL)eile r dreimal in die ascuge kopieren------------------------------------
- 382 ln=re%(r)+vd: if r>1 then ln=ln-re%(r-1)-vd
- 384 sys39692,cp%(0,0),k,ln,r,k1,om:return
- 386 rem"[212]onleiter in den [196]ominant transponieren---------------------------------
- 388 k[178]18
- 390 da%(k)[178]da%(k[171]7): k[178]k[171]1: [139] k[177]6 [167]390
- 392 [129] k[178]0 [164] 6:da%(k)[178]da%(k[170]12): [130]: [142]
- 394 [143]"(NULL)onleiter in die (NULL)onica zurueck transponieren---------------------------
- 396 for k=0 to 11: da%(k)=da%(k+7): next: return
- 398 rem musik loeschen----------------------------------------------------------
- 400 sys 49155,cp%(0,0): return
- 402 rem save oder load ---------------------------------------------------------
- 404 nm$="": input "[198]ilename";nm$:if nm$=""then return
- 405 ifa=7thenprint"[211]cratching "nm$:open45,8,15,"s0:"+nm$:close45:gosub900
- 406 poke0,111:print"[205][207][205][208][204][211].....":sys49158+3*(a-7),cp%(0,0),nm$,8,0:poke0,47
- 407 gosub900 : rem die pokes 0,xxx 'bedienen' den fastloader exos v7
- 408 remprint"[208]rintroutine noch nicht vorhanden
- 410 [143]"atnuf (NULL)astendruck warten--------------------------------------------------
- 412 print f$(a):print"([212]aste)":poke198,0: wait 198,1:poke198,0: return
- 414 rem"[205]enue------------------------------------------------------------------
- 416 [151]198,0
- 418 [153] t$(p(n)):[129] k[178]0 [164] p(n[170]1)[171]p(n)[171]2:[153] k[171](n[178]4)"cmd. "t$(1[170]p(n)[170]k):[130]
- 420 a$[178]"":[139] n[178]0 [167] [153]"20 - 511: (NULL)empo (ist"mm%"cmd)": a$[178]"19"
- 422 [139] n[179][177]4 [167] [153] "peekefehl (0 -"q(n)"cmd)";:[137]428
- 424 [153]"(NULL)aehlen (NULL)ie hoechstens"nn[171]1"(NULL)ariationen in freier ascolge, ";
- 426 [153]"die (NULL)ummer(n) getrennt durch (NULL)eerstellen.": [153]" 1 3 4 5 6 2 7on"
- 428 [133] a$: a[178][197](a$): [153]: [142]
- 430 [143]"peekeispielmelodie---------------------------------------------------------
- 432 n=6: a=0: gosub416: if a=0 then return
- 434 print"[205][207][205][208][204][211].....":sys49155,cp%(0,0): restore
- 436 for k=0 to 31
- 438 : for s=0 to 1: read a: cp%(s,k)=a: cp%(s,k+64)=a: next: next
- 440 for k=0 to 15
- 442 : for s=0 to 1: read a: cp%(s,k+32)=a: cp%(s,k+48)=a: next: next
- 444 cp%(0,48)=522: cp%(0,64)=527:cp%(0,95)=-1: gosub64: goto66
- 446 rem"[211]pezielle [198]unktionen---------------------------------------------------
- 448 n[178]5: a[178]0: x[178]0: y[178]0: z[178]0: [141]416: [139] a[178]0 [167] [142]
- 450 [133]"atn und peek ";x,y: [139] x[179]0 [176] x[177]hq [167] 476
- 452 [139] a[178]3 [175] x[170]y[177]hq [167]476
- 454 [139] a[179][177]3 [167] [139] y[179]x [176] y[177]hq [167] 476
- 456 [139] a[178]1 [176] a[177]3 [167] [133]"len ";z:[139] a[178]1 [167] [139] z[179][171]11 [176] z[177]11 [167] 478
- 458 [139] a[178]1 [167] [139] z[179]0 [167] z[178]z[170]256
- 460 [139] a[179]4 [167] 464
- 462 [139] z[179]y [176] z[170]y[171]x[177]hq [167] 478
- 464 [139] a[178]1 [167] [158]39695,cp%(0,x),y[171]x,z: [142]
- 466 [139] a[178]2 [167] [158]39683,cp%(0,x),y[171]x: [142]
- 468 [139] a[178]3 [167] [158]39680,cp%(0,x[170]1),y: [142]
- 470 [158]39680,cp%(0,z[170]1),1[170]y[171]x
- 472 [158]39686,cp%(0,x),1[170]z[171]x,1[170]y[171]x:[139] a[178]5 [167] a[178]2: y[178]y[170]1:[137]466
- 474 [142]
- 476 [153]"on";: [137]450
- 478 [153]"on";: [137]456
- 480 [143]"str$aten fuer peekeispielmelodie----------------------------------------------
- 482 data,55,,,,55,,,,62,,,,62,,,,64,,,,64,,,-112,62,,,
- 484 data,,,,60,-109,60,,60,-109,60,,59,,,,59,,,,57,,,,57,,,,55,,,,,-108,
- 486 data,62,,,,62,,,,60,,,,60,,,,59,,,,59,,,,57,,,,,-108,
- 488 rem"[196]aten fuer [203]langbibliotheek--------------------------------------------
- 490 [131]11,64,9,6,5,64,9,6,8,64,10,6,64,,79
- 492 [131]8,64,4,24,8,64,4,24,8,64,4,24,64,,79
- 494 [131]6,64,27,89,6,64,27,88,11,64,11,87,64,,79
- 496 [131],32,11,,,32,11,,,32,8,,64,,79
- 498 [131],32,51,,,32,51,,,32,51,,64,,79
- 500 [131]12,32,104,24,12,32,104,42,12,32,104,42,64,,79
- 502 [131]9,16,57,,9,16,57,,9,16,57,,64,,79
- 504 [131]15,16,9,25,15,16,9,25,15,16,9,25,64,,79
- 506 [131]10,16,39,73,10,16,39,73,10,16,39,73,64,,79
- 508 [131],32,7,25,3,64,9,25,,16,9,121,64,,79
- 510 [131]8,64,9,6,8,64,9,6,8,64,9,6,64,,79
- 512 [143]"str$aten fuer (NULL)onartverhaeltnisse------------------------------------------
- 514 data 255,,10,8,5,3
- 516 rem"[196]aten fuer [205]enues
- 518 [131],11,13,17,24,32,39,42,511,5,2,5,,5,1
- 520 [131]"load************ (NULL)aestro 64 *************","valnde","peekeispiel","(NULL)pielen
- 522 data"[197]ditor","[211]pezielle [198]unktionen","[200]armonie","[204]iedvariationen
- 524 [131]"(NULL)peichern","(NULL)aden","cmdcmdcmd ","loadleft$armonieparameter
- 526 data"[200]armonische [198]arbe","[214]orrang der [211]eptakkorde","[203]eine","[193]bsolut
- 528 [131]"peekeschraenkt","(NULL)onart","(NULL)nbekannt","str$ur","str$orisch","(NULL)hrygisch
- 530 data"[205]yxolydisch","[193]eolisch ([205]oll)
- 532 [131]"load(NULL)ariationsformen","asciguration, streng","asciguration, frei","(NULL)riolen
- 534 data"[212]enorvariation","6/8-[212]akt","[194]assfiguration","[198]uge
- 536 [131]"load(NULL)pezielle ascunktionen","(NULL)urueck zum left$auptenue
- 538 data"[206]oten [193] bis [194] um [195] [200]albtonschritte transponieren
- 540 [131]"(NULL)oten atn bis peek entfernen
- 542 data"[206]ach [206]ote [193] [194] [206]oten einfuegen","[206]oten [193] bis [194] nach [195] kopieren
- 544 [131]"(NULL)oten atn bis peek nach len verschieben
- 546 data"[147][194]eispiel","[218]urueck zum [200]auptmenue","[194]eispielmelodie
- 548 [131]"(NULL)elodie zu lang","(NULL)eine (NULL)elodie im (NULL)peicher
- 900 rem --- diskette ---
- 901 open167,8,15:print:print">";
- 902 get#167,a$:printa$;:ifa$<>chr$(13)then902
- 903 close167: return
-