C 64
Musik

Elektronisches Akkordeon

Mit diesem Programm steht dem Einzug des C 64 in die Hausmusik nichts mehr im Wege. Spielen Sie auf der Tastatur wie auf einem richtigen Akkordeon.

Wer sich das Listing genauer betrachtet, wird bemerken, wie einfach doch das Programm aufgebaut ist. Trotzdem produziert es erstaunlich harmonische Klänge. Außerdem wurden die einzelnen Akkorde so auf der Tastatur verteilt, daß geübte Akkordeonspieler nach einer kurzen Eingewöhnungsphase wie auf einem »echten« Instrument spielen können.

Wenn das Programm mit »RUN« gestartet wurde, befindet man sich sofort im Spielmodus. Wie die Tastatur mit den Akkorden belegt ist, zeigt unser Bild.

Foto einer C-64-Tastatur, auf deren Tasten runde Aufkleber mit Buchstaben und Akkordbezeichnungen kleben
Das Bild zeigt die Belegung der Tastatur mit den einzelnen Bässen (Großbuchstaben) beziehungsweise Akkorden (Kleinbuchstaben)

Durch Druck auf die große Space-Taste gelangt man in einen Änderungsmodus. Folgende Funktionen sind über die Zifferntasten verfügbar (jeweils vorher Space-Taste drücken):

»1«: Baß auf Sägezahnschwingung schalten.
»2«: Baß auf Rechteckschwingung schalten.
»3«: Baß auf Dreieckschwingung schalten.
»4«: Baß auf Rauschen schalten.
»5«: Akkord auf Sägezahnschwingung schalten.
»6«: Akkord auf Rechteckschwingung schalten.
»7«: Akkord auf Dreieckschwingung schalten
»8«: Akkord auf Rauschen schalten.
»9«: Kleine Rechteckimpulsweite einschalten (nur in Verbindung mit Rechteckschwingung).
»0« Große Rechteckschwingung einschalten (nur in Verbindung mit Rechteckschwingung).
»*« Einschaltwerte wiederherstellen (»1«, »5« und »9«).

Es empfiehlt sich übrigens, den Computer mit einem Überspielkabel über die Audio/Video-Buchse an eine Stereoanlage anzuschließen. Man erhält so einen wesentlich besseren Klang, vor allem fülligere Bässe. Auch sollte man ruhig einmal mit der ADSR-Hüllkurve experimentieren. Sie wird in den Zeilen 10 bis 60 festgelegt.

Technisches zum Programm

Das eigentliche Problem bestand darin, die 40 Tasten schnellstmöglich abzufragen. Eine Kolonne von IF-THEN-Anweisungen wäre sicher nicht die Optimallösung. Der Programmautor hatte da folgende geniale Idee: In den Zeilen 80 und 90 wird auf einen Tastendruck gewartet, dieser als Buchstabe beziehungsweise Zahl übernommen und einem Zahlenwert (ASC-Funktion) zugeordnet. Der Wert wird nun in ein anderes Format umgerechnet (Zeilen 300, 320, 340 und 360) und über eine Reihe von ON-GOTO-Befehlen der entsprechende Dreiklang/Baß angesprungen.

Auf eine aufwendige Bildschirmgestaltung wurde zum Wohle des abtippenden Lesers verzichtet.

(Hermann Huck/tr)
1 rem a k k o r d e o n  (2)
2 rem von hermann huck
3 rem 7987 weingarten
4 rem laurastr.34
6 a=54272:b=54273:rem fuer tonhoehe
7 c=54279:d=54280:rem fuer tonhoehe
8 e=54286:f=54287:rem fuer tonhoehe
10 poke54277,1*16+15:rem anschl.abschw.
20 poke54284,1*16+15:rem anschl.abschw.
30 poke54291,1*16+15:rem anschl.abschw.
40 poke54278,15*16+8:rem halt.auskl.
50 poke54285,15*16+8:rem halt.auskl.
60 poke54292,15*16+8:rem halt.auskl.
70 poke54296,15:rem lautst.
71 tl=255 :rem tastenverh.low  grundein.
72 th=0   :rem tastenverh.high grundmin.
74 wb=33  :rem wellenform bass grundein.
76 wa=33  :rem wellenform akk. grundein.
77 poke54274,tl:poke54275,th
78 poke54281,tl:poke54282,th
79 poke54288,tl:poke54289,th
80 gett$:ift$=""then80
90 x=asc(t$)
100 ifx<=58then200
110 ifx>=65then250
120 goto80
200 ifx>=44andx<=50then300
210 ifx>=51then320
215 ifx=32then5200
220 goto80
250 ifx<=90andx>=78then360
260 ifx<=77then340
270 goto80
300 x=x-43
310 onxgoto2150,80,2210,2250,1750,610,710
320 x=x-50
330 onxgoto1210,1310,1410,1510,1610,1650,1710,1550
340 x=x-64
350 onxgoto1150,2010,1910,950,910,850,650,750,1310,1250,1350,1450,2110
360 x=x-77
370 onxgoto2050,1410,1510,1110,810,1050,610,1210,1950,1010,1850,710,1810
610 pokea,91 :pokeb,4
620 pokec,90 :poked,4
630 pokee,89 :pokef,4 :rem c
640 goto5000
650 pokea,103:pokeb,17
660 pokec,237:poked,21
670 pokee,20 :pokef,26:rem c-dur
680 goto5100
710 pokea,134:pokeb,6
720 pokec,133:poked,6
730 pokee,132:pokef,6 :rem g
740 goto5000
750 pokea,109:pokeb,16
760 pokec,137:poked,19
770 pokee,20 :pokef,26:rem g-dur
780 goto5100
810 pokea,208:pokeb,5
820 pokec,207:poked,5
830 pokee,206:pokef,5 :rem f
840 goto5000
850 pokea,103:pokeb,17
860 pokec,59 :poked,23
870 pokee,69 :pokef,29:rem f-dur
880 goto5100
910 pokea,194:pokeb,7
920 pokec,193:poked,7
930 pokee,192:pokef,7 :rem b
940 goto5000
950 pokea,137:pokeb,19
960 pokec,59 :poked,23
970 pokee,3  :pokef,31:rem b-dur
980 goto5100
1010 pokea,46 :pokeb,5
1020 pokec,45 :poked,5
1030 pokee,44 :pokef,5 :rem es
1040 goto5000
1050 pokea,129:pokeb,15
1060 pokec,178:poked,20
1070 pokee,20 :pokef,26:rem es-dur
1080 goto5100
1110 pokea,233:pokeb,6
1120 pokec,232:poked,6
1130 pokee,231:pokef,6 :rem as
1140 goto5000
1150 pokea,103:pokeb,17
1160 pokec,178:poked,20
1170 pokee,160:pokef,27:rem as-dur
1180 goto5100
1210 pokea,227:pokeb,4
1220 pokec,226:poked,4
1230 pokee,225:pokef,4 :rem d
1240 goto5000
1250 pokea,162:pokeb,14
1260 pokec,137:poked,19
1270 pokee,157:pokef,24:rem d-dur
1280 goto5100
1310 pokea,82 :pokeb,7
1320 pokec,81 :poked,7
1330 pokee,80 :pokef,7 :rem a
1340 goto5000
1350 pokea,162:pokeb,14
1360 pokec,112:poked,18
1370 pokee,237:pokef,21:rem a-dur
1380 goto5100
1410 pokea,124:pokeb,5
1420 pokec,123:poked,5
1430 pokee,122:pokef,5 :rem e
1440 goto5000
1450 pokea,208:pokeb,13
1460 pokec,109:poked,16
1470 pokee,237:pokef,21:rem e-dur
1480 goto5100
1510 pokea,56 :pokeb,8
1520 pokec,55 :poked,8
1530 pokee,54 :pokef,8 :rem h
1540 goto5000
1550 pokea,78 :pokeb,12
1560 pokec,109:poked,16
1570 pokee,178:pokef,20:rem h-dur
1580 goto5100
1610 pokea,40 :pokeb,6
1620 pokec,39 :poked,6
1630 pokee,38 :pokef,6 :rem fis
1640 goto5000
1650 pokea,157:pokeb,4
1660 pokec,156:poked,4
1670 pokee,155:pokef,4 :rem cis
1680 goto5000
1710 pokea,233:pokeb,6
1720 pokec,232:poked,6
1730 pokee,231:pokef,6 :rem gis
1740 goto5000
1750 pokea,46 :pokeb,5
1760 pokec,45 :poked,5
1770 pokee,44 :pokef,5 :rem dis
1780 goto5000
1810 pokea,109:pokeb,16
1820 pokec,178:poked,20
1830 pokee,160:pokef,27:rem as-moll
1840 goto5100
1850 pokea,129:pokeb,15
1860 pokec,178:poked,20
1870 pokee,157:pokef,24:rem es-moll
1880 goto5100
1910 pokea,112:pokeb,18
1930 pokee,3  :pokef,31:rem b -moll
1940 goto5100
1950 pokea,103:pokeb,17
1960 pokec,59 :poked,23
1970 pokee,160:pokef,27:rem f -moll
1980 goto5100
2010 pokea,103:pokeb,17
2020 pokec,178:poked,20
2030 pokee,20 :pokef,26:rem c -moll
2040 goto5100
2050 pokea,129:pokeb,15
2060 pokec,137:poked,19
2070 pokee,20 :pokef,26:rem g -moll
2080 goto5100
2110 pokea,162:pokeb,14
2120 pokec,137:poked,19
2130 pokee,59 :pokef,23:rem d -moll
2140 goto5100
2150 pokea,162:pokeb,14
2160 pokec,103:poked,17
2170 pokee,237:pokef,21:rem a -moll
2180 goto5100
2210 pokea,10 :pokeb,13
2220 pokec,109:poked,16
2230 pokee,237:pokef,21:rem e -moll
2240 goto5100
2250 pokea,78 :pokeb,12
2260 pokec,109:poked,16
2270 pokee,137:pokef,19:rem h -moll
2280 goto5100
5000 rem bass ausloesen
5010 poke54276,wb
5020 poke54283,wb
5030 poke54290,wb:rem einschalten
5040 fori=1to100:next:rem klangdauer
5050 poke54276,wb-1
5060 poke54283,wb-1
5070 poke54290,wb-1:rem ausschalten
5080 goto80
5100 rem akkord ausloesen
5110 poke54276,wa
5120 poke54283,wa
5130 poke54290,wa:rem einschalten
5140 fori=1to100:next:rem klangdauer
5150 poke54276,wa-1
5160 poke54283,wa-1
5170 poke54290,wa-1:rem ausschalten
5180 goto80
5200 gett$:ift$=""then5200
5210 ift$="1"thenwb=33:goto80
5220 ift$="2"thenwb=65:goto80
5230 ift$="3"thenwb=17:goto80
5240 ift$="4"thenwb=129:goto80
5250 ift$="5"thenwa=33 :goto80
5260 ift$="6"thenwa=65 :goto80
5270 ift$="7"thenwa=17 :goto80
5280 ift$="8"thenwa=129:goto80
5290 ift$="9"thentl=255:th=0:goto77
5300 ift$="0"thentl=0  :th=8:goto77
5305 ift$="*"then71
5310 goto5200
Das Listing zum elektronischen Akkordeon. Verwenden Sie zur Eingabe bitte den Checksummer (Seite 6).
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →