10 '************************************* 20 '*** 3stimmiges Musikprogramm fuer *** 30 '*** Gitarren-musiker (Tabulatur). *** 40 '*** (C) 1986 bei Michael Wessel *** 50 '*** Quadenweg 2g, 2000 Hamburg 61 *** 60 '************************************* 70 ' 80 'Dimensionierungen 90 ' 100 ON ERROR GOTO 4440 110 OPENOUT"DUMMY":MEMORY HIMEM-1:CLOSEOUT 120 |DISC 130 DEFINT a-y 140 DIM array(6,12) 150 DIM laenge(610,3),note(610,3) 160 DIM takta(11),taktb(11) 170 CALL &BB48 180 KEY 0,"call &bb48:blatt=0:r=1:x=3:controlle=1:zeiger=1:goto 380"+CHR$(13) 190 CALL &BC02:MODE 0:PEN 15:PRINT"** Bitte Warten **" 200 ' 210 'Lautstaerkehuellkurven aus der CPC-INTERNATIONAL 220 ' 230 ENV 1,2,6,1,1,3,5,0,-1,10,5,-1,30,1,0,200 240 ENV 2,1,15,1,15,-1,5 250 ENV 3,5,3,1,1,0,10,15,-1,3 260 ENV 4,1,15,1 270 ENV 5,1,15,1,15,-1,20 280 ENV 6,15,1,1,15,-1,20 290 ENV 7,1,15,1,1,0,20,1,-15,1 300 ENV 8,1,15,1,1,0,5,1,-15,1 310 ENV 9,1,15,1,15,-1,1,1,15,1,15,-1,1 320 ' 330 'Arrays besetzen 340 ' 350 RESTORE:FOR ii=0 TO 12:FOR i=6 TO 1 STEP-1 360 READ wert:array(i,ii)=Wert:NEXT:NEXT 370 DATA 758,568,426,319,253,190 380 DATA 716,536,402,301,239,179 390 DATA 676,506,379,284,225,169 400 DATA 638,478,358,268,213,159 410 DATA 602,451,338,253,201,150 420 DATA 568,426,319,239,190,142 430 DATA 536,402,301,225,179,134 440 DATA 506,379,284,213,169,127 450 DATA 478,358,268,201,159,119 460 DATA 451,338,253,190,150,113 470 DATA 426,319,239,179,142,106 480 DATA 402,301,225,169,134,100 490 DATA 379,284,213,159,127,95 500 ' 510 'Variablen besetzen 520 ' 530 art=8:zeiger=1 540 y=5:x=3 550 controlle=1 560 ' 570 'Titelbild 580 ' 590 MODE 2:INK 0,0:BORDER 0:INK 1,0 600 PEN 1:WINDOW #4,1,80,14,25:WINDOW #7,3,80,2,24-11:WINDOW #2,1,2,5,15:WINDOW #3,1,80,3,3:PRINT#2,"E1H2G3D4A5E6":LOCATE 24,1:PRINT"Tabulations Composer 1986 bei Michael Wessel" 610 LOCATE 1,14:FOR i=1 TO 11:PRINT STRING$(80,CHR$(233));:NEXT 620 LOCATE 2,15:PRINT" .......Freie Kanaele......":LOCATE 2,16:PRINT"........Notenposition......":LOCATE 2,17:PRINT" .......Kanal Nummer.......":LOCATE 2,18:PRINT" .......Notenblattnummer...":LOCATE 2,19:PRINT" .......Notenwert.........." 630 LOCATE 2,21:PRINT"........Bildschirmposition." 640 LOCATE 2,22:PRINT" .........................." 650 LOCATE 2,23:PRINT"........Position im Takt..." 660 ' 670 'Taktstriche 680 ' 690 ii=7:FOR i=16 TO 534 STEP 16:ii=ii+1 700 MOVE i,330:DRAW i,250,1:IF ii=8 THEN MOVE i+1,330:DRAW i+1,250,1:ii=0 710 NEXT 720 ' 730 'Saiten zeichnen 740 ' 750 FOR i=330 TO 250 STEP -16 760 MOVE 16,i:DRAW 528,i:NEXT 770 GOSUB 810:INK 1,24:GOTO 890 780 ' 790 'Subroutine: Informationen 800 ' 810 LOCATE 3,15:PRINT "...":LOCATE 3,15:PRINT c$:LOCATE 2,16:PRINT zeiger:LOCATE 3,17:PRINT kan$:LOCATE 2,18:PRINT blatt:LOCATE 2,19:PRINT wert:LOCATE 2,20:PRINT y-4;:IF y=4 THEN PRINT".....Korektursaite......" ELSE PRINT".....Gitarrensaite......" 820 LOCATE 2,21:PRINT x-2 830 LOCATE 10,22:IF art=8 THEN PRINT"Ganze Noten..." ELSE IF art=4 THEN PRINT"Halbe Noten..." ELSE IF art=2 THEN PRINT"Viertel Noten" ELSE IF art=1 THEN PRINT"Achtel Noten.." 840 LOCATE 2,23:PRINT controlle 850 RETURN 860 ' 870 'Hauptprogramm 880 ' 890 IF PEEK(0)=255 THEN 2000 ELSE IF r THEN r=0:GOTO 3120 900 ' 910 'Tastaturabfrage 920 ' 930 a$=UPPER$(INKEY$):IF a$="" THEN LOCATE x+1,y:PRINT"<":GOTO 930 940 SOUND 130,500,10,15:CLS#3 950 LOCATE x+1,y:PRINT" " 960 IF a$="ó" THEN 1190 ELSE IF a$=CHR$(247) THEN f=1:GOTO 4160 970 IF a$="ò" THEN 1280 ELSE IF a$=CHR$(246) THEN f=-1:GOTO 4160 980 IF a$="ñ" THEN 1430 ELSE IF a$="ð" THEN 1480 990 IF a$="à" AND y=4 THEN fehler$="Keine Eintragungen auf der Korektursaite!!":GOSUB 2590 ELSE IF a$="à" THEN 1560 1000 IF a$="A" THEN 4400 1010 IF a$="H" THEN GOTO 2860 1020 IF a$="B" THEN MODE 2:PRINT" BASIC 1.0":PRINT FRE(N)"BYTES FREE":PRINT" KEY <0> TO RESTART.":END 1030 IF a$="M" AND ma=0 THEN ma=1:PRINT#3,"Manuelle Kanaluebergabe eingeschaltet." ELSE IF a$="M" AND ma THEN ma=0:PRINT#3,"Manuelle Kanaluebergabe ausgeschaltet." 1040 IF a$="+" THEN GOTO 4300 1050 IF a$="-" THEN GOTO 4350 1060 IF a$="T" THEN GOTO 1750 1070 IF a$="P" THEN GOTO 3290 1080 IF a$="C" THEN GOTO 2130 1090 IF a$="S" THEN 1830 ELSE IF A$="L" THEN GOTO 1980 1100 IF a$="N" THEN GOTO 2510 1110 IF a$="D" THEN PRINT #3,"Diskette als Speicher-Medium.":|DISC 1120 IF a$="K" THEN PRINT #3,"Kassette als Speicher-Medium.":|TAPE 1130 IF a$="G" AND ge THEN ge=0:PRINT#3,"Speed write 0." ELSE IF a$="G" THEN ge=1:PRINT#3,"Speed write 1." 1140 IF ASC(a$)=127 THEN RUN 1150 GOTO 930 1160 ' 1170 'Eine Stelle nach rechts 1180 ' 1190 zeiger=zeiger+1:x=x+2:controlle=controlle+1 1200 IF x>65 THEN fehler$="Ende von Blatt Nummer"+STR$(blatt)+"":GOSUB 2590:INPUT#3,"Notenblatt korekt ";wahl$:IF UPPER$(wahl$)="J" THEN CLS #7:GOTO 4300 ELSE x=x-2:zeiger=zeiger-1:controlle=controlle-1 1210 IF zeiger>600 THEN fehler$="Notenspeicher voll":GOSUB 2590:x=x-2:zeiger=600:controlle=controlle-1 1220 IF controlle>8 THEN controlle=1 1230 IF controlle<1 THEN controlle=8 1240 GOTO 1520 1250 ' 1260 'Eine Stelle nach links o. Korektur 1270 ' 1280 IF y=4 THEN X=X-2:IF x<3 THEN x=x+2 ELSE zeiger=zeiger-1:controlle=controlle-1 1290 IF controlle<1 THEN controlle=8 1300 IF zeiger<1 THEN zeiger=1:x=x+2 1310 IF y=4 THEN GOTO 1520 1320 cc$="" 1330 IF note(zeiger,1)>0 OR note(zeiger,1)=-1 THEN cc$="A" 1340 IF note(zeiger,2)>0 OR note(zeiger,2)=-1 THEN cc$=cc$+"B" 1350 IF note(zeiger,3)>0 OR note(zeiger,3)=-1 THEN cc$=cc$+"C" 1360 IF cc$="" THEN 1520 1370 FOR i=1 TO 3:s=VAL(MID$(STR$(note(zeiger,i)),2,1)):IF s=y-4 THEN 1380 ELSE NEXT:GOTO 1520 1380 FOR ii=0 TO laenge(zeiger,i)-1:note(zeiger+ii,I)=0:NEXT 1390 FOR ii=0 TO laenge(zeiger,i)*2-1:LOCATE x+ii,10+i:PRINT" ":NEXT:LOCATE x,y:PRINT" ":GOTO 690 1400 ' 1410 'nach unten 1420 ' 1430 y=Y+1:IF y>10 THEN y=10 1440 GOTO 1520 1450 ' 1460 'nach oben 1470 ' 1480 y=Y-1:IF y<4 THEN y=4 1490 ' 1500 'Cursor anzeigen 1510 ' 1520 LOCATE x+1,y:PRINT CHR$(247);:GOSUB 2740:GOTO 730 1530 ' 1540 'Eingabe von Noten 1550 ' 1560 GOSUB 2760:IF c$="" THEN fehler$="Noch keine Eingaben moeglich.Alle Kanaele aktiv !!!":GOSUB 2590:GOTO 930 ELSE 1600 1570 a$=INKEY$:IF a$=CHR$(224) THEN 1630 ELSE IF a$=" " THEN LOCATE x,y:PRINT" ":GOTO 2610 ELSE IF a$="" THEN 1570 1580 IF a$="ð" THEN note=note+1 ELSE IF a$="ñ" THEN note=note-1 ELSE IF a$=CHR$(13) THEN LOCATE x,y:PRINT" ":GOTO 750 1590 SOUND 130,100,10,15:IF note>12 THEN note=0 ELSE IF note<0 THEN note=12 1600 LOCATE x,y:PRINT HEX$(note) 1610 GOTO 1570 1620 ' 1630 'Noten in Arrays setzen 1640 ' 1650 GOSUB 2760 1660 IF ma THEN PRINT#3,"Welcher Kanal :";c$;:INPUT#3,"";p$:p$=UPPER$(p$):IF p$="" THEN LOCATE x,y:PRINT" ":CLS#3:GOTO 930 ELSE kan=ASC(p$)-64:kan$=p$ 1670 IF ma THEN FOR i=1 TO LEN(c$):IF MID$(c$,i,1)=p$ THEN 1680 ELSE NEXT:GOTO 1660 1680 FOR i=1 TO art-1:IF note(i+zeiger,kan)<>0 THEN fehler$="Kanal "+kan$+".Notendauer zu lang !!!":GOSUB 2590:LOCATE x,y:PRINT" ":GOTO 750 ELSE NEXT 1690 laenge(zeiger,kan)=art:note(zeiger,kan)=VAL(STR$(y-4)+STR$(note)):LOCATE x,10+kan:PRINT USING"#";y-4:FOR i=1 TO art*2-1:LOCATE x+i,10+kan:PRINT ""kan$"":NEXT:FOR i=1 TO art-1:note(zeiger+i,kan)=99:NEXT:wert=VAL(STR$(y-4)+STR$(note)) 1700 IF note=88 THEN note=0 1710 GOTO 930 1720 ' 1730 'Wiederholungseingaben machen 1740 ' 1750 IF taktcount>10 THEN fehler$="Leider keine Wiederholungseingaben mehr moeglich!!!":GOSUB 2590:GOTO 890 1760 INPUT#3,"Wiederholung ab welcher Stelle";w:IF w>600 OR w<1 THEN CLS#3:GOTO 890 ELSE takta(taktcount)=zeiger:taktb(taktcount)=w:taktcount=taktcount+1:PRINT #3,taktcount".Wiederholung ab Stelle"zeiger"zur Stelle"w"."; 1770 IF w>zeiger THEN PRINT#3,"Positiver Sprung um +"w-zeiger ELSE PRINT#3,"Negativer Sprung um -"zeiger-w 1780 LOCATE x,2:PRINT ""HEX$(taktcount)"" 1790 GOTO 930 1800 ' 1810 'Save 1820 ' 1830 SPEED WRITE ge:INPUT #3,"Abspeicher-Modus.Name (8 Zeichen)";a$:IF a$="" THEN CLS#3:GOTO 930 ELSE IF LEN(a$)>8 THEN 1830 1840 INPUT #3,"Bis zu welcher Stelle soll abgespeichert werden (1-600)";werta:IF werta>600 OR werta<1 THEN 1840 1850 INPUT #3,"Als asicprg. oder elddatei ";art$:IF UPPER$(art$)="B" THEN 2170 1860 OPENOUT "!"+a$+".muS" 1870 PRINT #9,werta 1880 FOR i=1 TO werta 1890 FOR ii=1 TO 3 1900 PRINT #9,note(i,ii);laenge(i,ii):NEXT:NEXT 1910 FOR i=0 TO 10 1920 PRINT #9,takta(i);taktb(i):NEXT 1930 CLOSEOUT 1940 CLS#3:GOTO 930 1950 ' 1960 'Load 1970 ' 1980 PRINT #3,"Bitte einen Augenblick warten !":FOR i=1 TO 600:IF note(i,1)<>0 OR note(i,2)<>0 OR note(i,3)<>0 THEN 1990 ELSE NEXT:GOTO 2000 1990 fehler$="Notenspeicher enthaelt noch Werte.":GOSUB 2570:INPUT #3,"Loeschen ";aa$:IF UPPER$(Aa$)="J" THEN POKE 0,255:RUN ELSE 930 2000 POKE 0,1:INPUT #3,"Einspeicher-Modus.Name";a$:IF LEN(a$)>8 THEN 2000 ELSE IF a$="" THEN CLS#3:GOTO 930 2010 OPENIN "!"+a$+".mus" 2020 INPUT #9,werta 2030 FOR i=1 TO werta 2040 FOR ii=1 TO 3 2050 INPUT #9,note(i,ii),laenge(i,ii):NEXT:NEXT 2060 FOR i=0 TO 10 2070 INPUT #9,takta(i):INPUT #9,taktb(i):NEXT 2080 CLOSEIN 2090 CLS#7:CLS#3:controlle=1:x=3:zeiger=1:r=1:GOTO 600 2100 ' 2110 'Cat 2120 ' 2130 WINDOW SWAP 0,4:CLS:CAT:CALL &BB06:CLS:WINDOW SWAP 0,4:GOTO 600 2140 ' 2150 'Basicprogramm 2160 ' 2170 WINDOW SWAP 0,4:CLS:OPENOUT a$+".BAL" 2180 INPUT "Erste Zeile :";ez:INPUT "Zeilenabstand :";za:IF ez=0 THEN ez=10 2190 IF za=0 THEN za=10 2200 z$=MID$(STR$(ez),2)+"'Basicmusikprogramm erstellt vom Tabulationscomposer. Name des Liedes :"+a$:PRINT #9,z$:PRINT z$ 2210 ez=ez+za:z$=MID$(STR$(ez),2)+" on error goto "+STR$(ez+za*9)+":restore":PRINT #9,z$:PRINT z$ 2220 ez=ez+za:z$=MID$(STR$(ez),2)+" ENV 1,15,-1,20":PRINT #9,z$:PRINT z$ 2230 ez=ez+za:z$=MID$(STR$(ez),2)+" input"+CHR$(34)+"Speed"+CHR$(34)+";w":PRINT #9,z$:PRINT z$ 2240 ez=ez+za:z$=MID$(STR$(ez),2)+" read a,al,b,bl,c,cl":PRINT #9,z$:PRINT z$ 2250 ez=ez+za:z$=MID$(STR$(ez),2)+" if a=0 then"+STR$(ez+za)+" else if a=-1 then sound 129,3,al*w,0 else sound 129,a,al*w,0,1" 2260 PRINT #9,z$:PRINT z$ 2270 ez=ez+za:z$=MID$(STR$(ez),2)+" if b=0 then"+STR$(ez+za)+" else if b=-1 then sound 130,3,bl*w,0 else sound 130,b,bl*w,0,1" 2280 PRINT #9,z$:PRINT z$ 2290 ez=ez+za:z$=MID$(STR$(ez),2)+" if c=0 then"+STR$(ez+za)+" else if c=-1 then sound 132,3,cl*w,0 else sound 132,c,cl*w,0,1" 2300 PRINT #9,z$:PRINT z$ 2310 ez=ez+za:z$=MID$(STR$(ez),2)+" for o=1 to w*2:next":PRINT #9,z$:PRINT z$ 2320 ez=ez+za:z$=MID$(STR$(ez),2)+" goto"+STR$(ez-za*5):PRINT #9,z$:PRINT z$ 2330 ez=ez+za:z$=MID$(STR$(ez),2)+" call &bb06:run":PRINT #9,z$:PRINT z$ 2340 FOR i=0 TO werta STEP 10:ez=ez+za:z$=MID$(STR$(ez),2)+" DATA ":FOR ii=0 TO 9 2350 kan=1:GOSUB 2480 2360 z$=z$+STR$(q)+","+STR$(laenge(ii+i,1))+"," 2370 kan=2:GOSUB 2480 2380 z$=z$+STR$(q)+","+STR$(laenge(ii+i,2))+"," 2390 kan=3:GOSUB 2480 2400 z$=z$+STR$(q)+","+STR$(laenge(ii+i,3)) 2410 IF ii<>9 THEN z$=z$+"," 2420 NEXT:PRINT #9,z$:PRINT z$:z$="":PRINT:PRINT"-------------------":PRINT"DRUECKE E FUER ENDE":PRINT"-------------------":PRINT "Zaehler :";i 2430 t$=INKEY$:IF UPPER$(t$)="E" THEN 2440 ELSE NEXT 2440 CLOSEOUT:CLS:WINDOW SWAP 4,0:GOTO 600 2450 ' 2460 'Subroutine: Daten aus Arrays holen 2470 ' 2480 n=VAL(MID$(STR$(note(ii+i,kan)),3,2)):s=VAL(MID$(STR$(note(ii+i,kan)),2,1)):IF n=88 THEN q=-1 ELSE IF s=9 AND n=9 THEN q=0 ELSE q=array(s,n) 2490 RETURN 2500 ' 2510 'Notenlaenge 2520 ' 2530 INPUT #3,"Laenge der Note (8=Ganz,4=Halb,2=Viertel,1=Achtel)";art 2540 IF art<>1 AND art<>2 AND art<>4 AND art<>8 THEN 2530 2550 GOTO 930 2560 ' 2570 'Subroutine: Error-anzeige 2580 ' 2590 FOR i=1 TO 12:SOUND 129,i*20,10,13:PRINT #3,fehler$:SOUND 130,240-i*20,10,13:FOR ii=1 TO 100:NEXT:NEXT:RETURN 2600 ' 2610 'Pausen eingeben 2620 ' 2630 GOSUB 2760 2640 PRINT #3,"Auf welchem Kanal soll die Pause sitzen ("c$") ";:INPUT#3,a$ 2650 a$=UPPER$(a$) 2660 IF a$="" THEN CLS#3:GOTO 930 2670 FOR i=1 TO LEN(c$):IF MID$(c$,i,1)=a$ THEN 2680 ELSE NEXT:GOTO 2640 2680 kan=ASC(a$)-64 2690 kan$=a$ 2700 FOR i=1 TO art-1:IF note(i+zeiger,kan)<>0 THEN fehler$="Kanal "+kan$+".Pausendauer zu lang !!!":GOSUB 2590:GOTO 730 ELSE NEXT 2710 LOCATE x,y:PRINT CHR$(206) 2720 note=88:GOTO 1690 2730 ' 2740 'Subroutine: Freie Kanaele berechnen 2750 ' 2760 c$="":IF note(zeiger,1)=0 THEN c$="A" 2770 IF note(zeiger,2)=0 THEN c$=c$+"B" 2780 IF note(zeiger,3)=0 THEN c$=c$+"C" 2790 IF c$="" THEN kan$=CHR$(206) 2800 FOR i=1 TO LEN(c$):IF MID$(c$,i,1)="A" THEN kan=1:kan$="A" ELSE IF MID$(c$,i,1)="B" THEN kan=2:kan$="B" ELSE IF MID$(c$,i,1)="C" THEN kan=3:kan$="C" 2810 NEXT 2820 RETURN 2830 ' 2840 'Hilfe 2850 ' 2860 MODE 2:PRINT"A=Abfrage der Wiederholungen" 2870 PRINT"B=Rueckkehr zu BASIC" 2880 PRINT"C=CATaloge" 2890 PRINT"D=Diskettenstation einschalten" 2900 PRINT"G=Geschwindigkeit der Kassettenstation" 2910 PRINT"H=Hilfe" 2920 PRINT"K=Kassettenstation einschalten" 2930 PRINT"L=Laden der Musikdaten" 2940 PRINT"M=Manuelle Kanaluebergabe ein/aus" 2950 PRINT"N=Eingabe der Notenlaenge" 2960 PRINT"P=Play-Modus" 2970 PRINT"S=Speichern der Musikdaten" 2980 PRINT"T=Eingabe Taktwiederholung" 2990 PRINT"+=Notenblatt+1" 3000 PRINT"-=Notenblatt-1" 3010 PRINT"=Steuerung der Eingabemarke" 3020 PRINT"=Eingabe des Notenwertes an Cursorposition" 3030 PRINT",dann=Pause an Cursorposition setzen" 3040 PRINT"=Programm neu starten" 3050 PRINT"=Flucht aus dem CAT Modus bei Kassette" 3060 PRINT",dann=Flucht aus der Notenuebergabe":PRINT:PRINT 3070 PRINT"" 3080 CALL &BB06:FOR i=x TO 4 STEP-2:zeiger=zeiger-1:NEXT:r=1:x=3:GOTO 590 3090 ' 3100 'Noten auf Schirm bringen 3110 ' 3120 xa=1:FOR I=zeiger TO zeiger+31:xa=xa+1:FOR ii=0 TO 10:IF takta(ii)=i THEN LOCATE xa*2-1,2:PRINT ""HEX$(ii+1)"" 3130 NEXT:NEXT 3140 xa=1:FOR i=zeiger TO zeiger+31 3150 xa=xa+1 3160 FOR ii=1 TO 3 3170 IF note(i,ii)=0 THEN 3240 3180 IF note(i,ii)=99 THEN LOCATE (xa*2)-1,10+ii:PRINT ""CHR$(ii+64);CHR$(ii+64)"":GOTO 3240 3190 a$=STR$(note(i,ii)) 3200 IF VAL(MID$(a$,3,2))=88 THEN f=1 ELSE f=0 3210 LOCATE xa*2-1,VAL(MID$(A$,2,1))+4:IF f THEN PRINT CHR$(206):LOCATE xa*2-1,10+ii:PRINT USING"#";VAL(MID$(A$,2,1));:PRINT ""CHR$(64+ii);CHR$(64+ii)"" 3220 IF f THEN 3240 3230 PRINT HEX$(VAL(MID$(a$,3,2))):LOCATE xa*2-1,10+ii:PRINT USING"#";VAL(MID$(A$,2,1));:PRINT ""CHR$(64+ii);CHR$(64+ii)"" 3240 NEXT:NEXT 3250 GOTO 1520 3260 ' 3270 'Play 3280 ' 3290 INPUT #3,"Geschwindigkeit";w 3300 IF w=0 THEN CLS#3:GOTO 930 ELSE IF w<10 OR w>999 THEN 3290 3310 LOCATE 40,21:PRINT"Speed :";USING"###";w 3320 ea=5:eb=5:ec=5:ta=7:tb=7:tc=7 3330 INPUT #3,"Vibrationsfaktor(0-15)";v:IF v>15 OR v<0 THEN 3330 ELSE LOCATE 40,20:PRINT"Vibrato:";USING"###";v 3340 INPUT #3,"Informationen ";ta$:ta$=UPPER$(ta$) 3350 ' 3360 'Tonhuellkurven aus der CPC-INTERNATIONAL 3370 ' 3380 ENT -1,1,v,4,1,-v,4 3390 ENT -2,1,v,2 3400 ENT -3,1,-v,2 3410 ENT 4,1,5*v,1,5,-v,1 3420 ENT 5,1,-5*v,1,5,v,1 3430 ENT -6,1,v,2,1,-v,1 3440 ENT -7,1,v,9,1,-v,9 3450 ENT -8,1,v,1,v,-1,1 3460 ' 3470 'Informationen ueber Huellkurven 3480 ' 3490 LOCATE 60,15:PRINT"ENV Kanal A";ea:LOCATE 60,16:PRINT"ENV Kanal B";eb:LOCATE 60,17:PRINT"ENV Kanal C";ec:LOCATE 60,18:PRINT"ENT Kanal A";ta:LOCATE 60,19:PRINT"ENT Kanal B";tb:LOCATE 60,20:PRINT"ENT Kanal C";tc 3500 LOCATE 60,21:PRINT"Rauschen A ";USING"##";r:LOCATE 60,22:PRINT"Rauschen B ";USING"##";r1:LOCATE 60,23:PRINT"Rauschen C ";USING"##";r2 3510 LOCATE 40,15:PRINT"Kanal A:":LOCATE 40,16:PRINT"Kanal B:":LOCATE 40,17:PRINT"Kanal C:":LOCATE 40,18:PRINT"Stelle :":LOCATE 40,19:PRINT "Zeit :" 3520 i=0:z=TIME 3530 takt=0 3540 ' 3550 'Spielen des Stueckes 3560 ' 3570 i=i+1:IF takta(takt)=i THEN i=taktb(takt):takt=takt+1 3580 IF i>610 THEN GOTO 4120 3590 IF ta$="J" THEN LOCATE 48,15:PRINT USING"###";note(i,1):LOCATE 48,16:PRINT USING"###";note(i,2):LOCATE 48,17:PRINT USING"###";note(i,3):LOCATE 48,18:PRINT USING"###";i:LOCATE 48,19:PRINT USING"###";INT((TIME-z)/900) 3600 kan=1:GOSUB 3720 3610 IF s=9 AND n=9 OR s=0 THEN 3620 ELSE IF N=88 THEN SOUND 129,3,laenge(i,1)*w,0 ELSE SOUND 129,array(s,n),laenge(i,1)*w,0,ea,ta,r 3620 kan=2:GOSUB 3720 3630 IF s=9 AND n=9 OR s=0 THEN 3640 ELSE IF N=88 THEN SOUND 130,3,laenge(i,2)*w,0 ELSE SOUND 130,array(s,n),laenge(i,2)*w,0,eb,tb,r1 3640 kan=3:GOSUB 3720 3650 IF s=9 AND n=9 OR s=0 THEN 3660 ELSE IF N=88 THEN SOUND 132,3,laenge(i,3)*w,0 ELSE SOUND 132,array(s,n),laenge(i,3)*w,0,ec,tc,r2 3660 FOR e=1 TO w/2:NEXT 3670 a$=INKEY$:IF a$<>"" THEN GOSUB 3760 3680 GOTO 3570 3690 ' 3700 'Subroutine: Daten aus Arrays fuer Play 3710 ' 3720 n=VAL(MID$(STR$(note(i,kan)),3,2)):s=VAL(MID$(STR$(note(i,kan)),2,1)):RETURN 3730 ' 3740 'Env,Ent aendern 3750 ' 3760 IF ASC(a$)<4 THEN ON ASC(A$) GOTO 3830,3850,3870 3770 IF a$=" " THEN takt=0:i=0:RETURN ELSE IF UPPER$(A$)="E" THEN GOTO 4120 3780 IF a$="<" THEN w=w-10:GOTO 4010 ELSE IF a$=">" THEN w=w+10:GOTO 4010 3790 IF ASC(A$)>48 AND ASC(A$)<58 THEN ON ASC(A$)-48 GOTO 4030,4040,4050,4060,4070,4080,4090,4100,4110 3800 IF ASC(A$)>67 AND ASC(A$)<97 OR ASC(A$)>99 OR ASC(a$)>3 AND ASC(a$)<32 OR ASC(a$)>32 AND ASC(a$)<65 THEN RETURN 3810 IF ASC(a$)<97 THEN ON ASC(a$)-64 GOTO 3890,3910,3930 3820 ON ASC(a$)-96 GOTO 3950,3970,3990 3830 r=r+1:IF r>30 THEN r=0 3840 LOCATE 72,21:PRINT USING"##";r:RETURN 3850 r1=r1+1:IF r1>30 THEN r1=0 3860 LOCATE 72,22:PRINT USING"##";r1:RETURN 3870 r2=r2+1:IF r2>30 THEN r2=0 3880 LOCATE 72,23:PRINT USING"##";r2:RETURN 3890 ta=ta+1:IF ta>9 THEN ta=1 3900 LOCATE 71,18:PRINT ta:RETURN 3910 tb=tb+1:IF tb>9 THEN tb=1 3920 LOCATE 71,19:PRINT tb:RETURN 3930 tc=tc+1:IF tc>9 THEN tc=1 3940 LOCATE 71,20:PRINT tc:RETURN 3950 ea=ea+1:IF ea>9 THEN ea=1 3960 LOCATE 71,15:PRINT ea:RETURN 3970 eb=eb+1:IF eb>9 THEN eb=1 3980 LOCATE 71,16:PRINT eb:RETURN 3990 ec=ec+1:IF ec>9 THEN ec=1 4000 LOCATE 71,17:PRINT ec:RETURN 4010 IF w<10 THEN w=10 ELSE IF w>999 THEN w=999: 4020 LOCATE 40,21:PRINT"Speed :";USING"###";w:RETURN 4030 EA=0:GOTO 3960 4040 EB=0:GOTO 3980 4050 EC=0:GOTO 4000 4060 TA=0:GOTO 3900 4070 TB=0:GOTO 3920 4080 TC=0:GOTO 3940 4090 R=0:GOTO 3840 4100 R1=0:GOTO 3860 4110 R2=0:GOTO 3880 4120 INPUT #3,"Noch einmal";a$:IF UPPER$(a$)="J" THEN GOTO 3290 ELSE WINDOW SWAP 0,4:CLS:WINDOW SWAP 4,0:GOTO 610 4130 ' 4140 'Speed-cursor 4150 ' 4160 y=4:a$=INKEY$:IF A$="" OR A$=" " THEN F=0:GOTO 1520 4170 IF ASC(a$)=247 AND F=1 OR ASC(A$)=246 AND F=-1 THEN 4180 ELSE F=0:GOTO 1520 4180 LOCATE x+1,y:PRINT" " 4190 zeiger=Zeiger+F:x=x+(F*2):controlle=controlle+F 4200 IF zeiger>600 THEN zeiger=600:x=x-2:controlle=controlle-1:F=0:GOTO 1520 4210 IF zeiger<1 THEN zeiger=1:x=3:controlle=controlle+1 4220 IF x>65 THEN x=65:zeiger=zeiger-1:controlle=controlle-1 4230 IF x<3 THEN X=3:zeiger=zeiger+1:controlle=controlle+1 4240 IF controlle>8 THEN controlle=1 4250 IF controlle<1 THEN controlle=8 4260 LOCATE x+1,y:PRINT CHR$(247):GOTO 4160 4270 ' 4280 'Blatt=Blatt+1 4290 ' 4300 blatt=blatt+1:IF blatt>18 THEN blatt=18:fehler$="Blatt Nummer 18.Weiter blaettern unmoeglich!!!":GOSUB 2590 ELSE FOR i=x TO 4 STEP-2:zeiger=zeiger-1:NEXT:x=3:zeiger=zeiger+32:r=1:controlle=1:CLS #7 4310 GOTO 690 4320 ' 4330 'Blatt=Blatt-1 4340 ' 4350 blatt=blatt-1:IF blatt<0 THEN blatt=0:fehler$="Blatt Nummer 0.Weiter blaettern unmoeglich!!!":GOSUB 2590 ELSE FOR i=x TO 4 STEP-2:zeiger=zeiger-1:NEXT:x=3:zeiger=zeiger-32:r=1:controlle=1:CLS #7 4360 GOTO 690 4370 ' 4380 'Takttabelle 4390 ' 4400 WINDOW SWAP 0,4:CLS:FOR i=0 TO 10:PRINT USING"##";i+1;:PRINT".Von Stelle";:PRINT USING"###";takta(i);:PRINT" zu Stelle";:PRINT USING"###";taktb(i);:PRINT" ":NEXT:WINDOW SWAP 4,0:CALL &BB06:GOTO 600 4410 ' 4420 'Fehler-Ansprung 4430 ' 4440 CLS:PRINT"Diskettenstation einschalten o. RSX-Befehle entfernen !!":END  o. RSX-Befehle entfernen !!"