forked from robhagemans/basicode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
B19_Gitaarakkoorden.bc3
259 lines (258 loc) · 7.99 KB
/
B19_Gitaarakkoorden.bc3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
1000 A=100:GOTO20:REM GITAAR
1010 DIMSN(5):REM PUNT OP SNAAR (FRET)
1020 DIMAG(255,5):REM ACCOORDGEHEUGEN
1030 T=0:REM TELLER ACCOORDGEHEUGEN
1040 HP=1/(HG+1):REM HORIZ. GRAFISCHE PUNT
1050 VP=1/(VG+1):REM VERT. GRAFISCHE PUNT
1060 HM=0.5-30*HP:REM HORIZ. STANDAARD
1070 VM=0.5-30*VP:REM VERT. STANDAARD
1080 GOSUB100:REM SCHERM SCHOON
1090 REM VARIABELEN
1100 REM ******************************
2000 PRINT"GITAAR":PRINT
2010 PRINT"Dit programma bevat"
2020 PRINT"vierentwintig gitaar-"
2030 PRINT"accoorden. De compu-"
2040 PRINT"ter laat ze zien in"
2050 PRINT"de vorm van gitaar-"
2060 PRINT"diagrammen, en hij"
2070 PRINT"kan ze ook spelen!"
2080 PRINT"U kunt zelf een ac-"
2090 PRINT"coord kiezen, of de"
2100 PRINT"eerder gespeelde ac-"
2110 PRINT"coorden herhalen.":PRINT
2120 PRINT"Druk op een toets..."
2130 GOSUB210:REM WACHT OP TOETS
2140 GOSUB100:REM SCHERM SCHOON
2150 PRINT"De accoorden kunt u"
2160 PRINT"oproepen zoals dat in"
2170 PRINT"Aarde en Kosmos staat"
2180 PRINT"aangegeven. Door STOP"
2190 PRINT"te typen i.p.v. een"
2200 PRINT"accoord, stopt u het"
2210 PRINT"programma. Door START"
2220 PRINT"te typen kunt u terug"
2230 PRINT"naar het begin. Door"
2240 PRINT"HERHAAL kunt u alle"
2250 PRINT"gespeelde accoorden"
2260 PRINT"laten herhalen.":PRINT
2270 PRINT"Druk op een toets..."
2280 GOSUB210:REM WACHT OP TOETS
2290 GOSUB100:REM SCHERM SCHOON
2300 PRINT"Moet de muziek aan?"
2310 GOSUB200:REM KIJK NAAR TOETS
2320 IF(IN=78)OR(IN=74) THEN2340
2330 GOTO2310:REM MUZIEK AAN OF UIT
2340 IFIN=74 THENMU=1:PRINT"JA."
2350 IFIN=78 THENMU=0:PRINT"NEE."
2360 PRINT
2370 PRINT"Hoeveel seconden moet"
2380 PRINT"een diagram zichtbaar"
2390 PRINT"blijven (05-29)?"
2400 GOSUB200:REM KIJK NAAR TOETS
2410 IF(IN>47)AND(IN<51) THEN2430
2420 GOTO2400:REM TIENTAL SECONDEN
2430 PRINTIN$;
2440 S=100*(IN-48)
2450 GOSUB200:REM KIJK NAAR TOETS
2460 IF(S=0)AND(IN<53) THEN2450
2470 IF(IN>47)AND(IN<58) THEN2490
2480 GOTO2450:REM SECONDEN
2490 PRINTIN$;".":PRINT
2500 S=S+10*(IN-48)-40
2510 PRINT"Druk op een toets,"
2520 PRINT"dan kunnen de accoor-"
2530 PRINT"den gespeeld worden."
2540 GOSUB210:REM WACHT OP TOETS
2550 REM TEKST EN VOORBEREIDING
2560 REM ******************************
3000 GOSUB100:REM TEKSTSCHERM SCHOON
3010 PRINT"Kies accoord ";(T+1)
3020 PRINT"(b.v. C) of een opdracht"
3030 PRINT
3040 INPUTSR$:PRINT
3050 GOSUB330:REM KLEINE LETTERS GROOT
3060 IFSR$="START" THEN1080
3070 IFSR$="STOP" THEN9970
3080 IFSR$="HERHAAL" THEN5000
3090 RESTORE:REM BEGIN BIJ EERSTE DATA
3100 READAC$:REM LEES EEN ACCOORD
3110 FORX=0 TO5:READSN(X):NEXTX
3120 IFAC$="." THEN3150:REM ONJUIST
3130 IFAC$=SR$ THEN4000:REM GEVONDEN
3140 GOTO3100:REM LEES NIEUW ACCOORD
3150 PRINT"Dit accoord bestaat"
3160 PRINT"niet!":PRINT
3170 PRINT"Druk op een toets..."
3180 GOSUB210:REM WACHT OP TOETS
3190 GOTO3000:REM ONJUISTE INVOER
3200 REM INVOER VAN ACCOORD OF OPDRACHT
3210 REM ******************************
4000 GOSUB10000:REM TEKEN DIAGRAM
4010 GOSUB11000:REM VINGERZETTING
4020 IFMU=0 THEN4050
4030 GOSUB12000:REM SPEEL ACCOORD
4040 GOTO4070:REM WEL GELUID
4050 SV=0:SP=70:SD=S
4060 GOSUB400:REM GEEN GELUID
4070 FORX=0 TO5:AG(T,X)=SN(X):NEXTX
4080 T=T+1:IFT=256 THENT=0
4090 GOTO3000:REM WERK GEHEUGEN BIJ
4100 REM UITVOERING VAN HET ACCOORD
4110 REM ******************************
5000 GOSUB100:REM SCHERM SCHOON
5010 IFT>0 THEN5090
5020 PRINT"Het accoordengeheugen"
5030 PRINT"van de computer is"
5040 PRINT"leeg, dus er kan niet"
5050 PRINT"herhaald worden.":PRINT
5060 PRINT"Druk op een toets..."
5070 GOSUB210:REM WACHT OP TOETS
5080 GOTO3000:REM ONMOGELIJK
5090 PRINT"Moet het beeld aan?"
5100 GOSUB200:REM KIJK NAAR TOETS
5110 IF(IN=78)OR(IN=74) THEN5130
5120 GOTO5100:REM BEELD AAN OF UIT
5130 IFIN=74 THENBE=1:PRINT"JA."
5140 IFIN=78 THENBE=0:PRINT"NEE."
5150 PRINT:IFBE=0 THENGE=1:GOTO5230
5160 PRINT"Moet het geluid aan?"
5170 GOSUB200:REM KIJK NAAR TOETS
5180 IF(IN=78)OR(IN=74) THEN5200
5190 GOTO5170:REM GELUID AAN OF UIT
5200 IFIN=74 THENGE=1:PRINT"JA."
5210 IFIN=78 THENGE=0:PRINT"NEE."
5220 PRINT
5230 PRINT"Druk op een toets..."
5240 GOSUB210:REM WACHT OP TOETS
5250 GOSUB100:REM SCHERM SCHOON
5260 FORY=0 TOT-1
5270 FORZ=0 TO5:SN(Z)=AG(Y,Z):NEXTZ
5280 IFBE=1 THEN GOSUB10000:REM DIAG.
5290 IFBE=1 THEN GOSUB11000:REM V.Z.
5300 IFGE=0 THEN5330
5310 GOSUB12000:REM SPEEL ACCOORD
5320 GOTO5350
5330 SV=0:SP=70:SD=S
5340 GOSUB400:REM GEEN GELUID
5350 NEXTY:REM LOOP ACCOORDEN AF
5360 GOTO3000
5370 REM HERHAAL ACCOORDEN UIT GEHEUGEN
5380 REM ******************************
9970 GOTO950
9980 REM EINDE VAN PROGRAMMA
9990 REM ******************************
10000 GOSUB600:CN=0:REM GRAF. SCHERM
10010 FORVE=VM TOVM+51*VP STEP10*VP
10020 HO=HM:GOSUB620:REM PLOT PUNT
10030 HO=HM+60*HP
10040 GOSUB630:REM TREK LIJN NAAR PUNT
10050 NEXTVE:REM HORIZONTALE LIJNEN
10060 VE=VM-VP:GOSUB620
10070 HO=HM:GOSUB630:REM EXTRA LIJN
10080 FORX=5*HP TO56*HP STEP10*HP
10090 HO=HM+X:VE=VM+1*VP:GOSUB620
10100 VE=VM+55*VP:GOSUB630
10110 NEXTX:REM VERTICALE LIJNEN
10120 RETURN
10130 REM TEKEN GITAARDIAGRAM
10140 REM *****************************
11000 FORX=0 TO5
11010 IFSN(X)=255 THEN11280
11020 IFSN(X)>0 THEN11170
11030 VE=VM-2*VP:HO=HM+4*HP+10*HP*X
11040 GOSUB620
11050 HO=HO+2*HP:GOSUB630
11060 VE=VE+VP:CN=1:GOSUB620:REM WIS
11070 HO=HO-2*HP:GOSUB630
11080 VE=VE+VP:GOSUB620
11090 HO=HO+2*HP:GOSUB630
11100 VE=VE+VP:HO=HO-HP:GOSUB620
11110 HO=HO-2*HP:CN=0
11120 GOSUB620:REM PLOT
11130 HO=HO+4*HP:GOSUB620
11140 VE=VE+VP:HO=HO-HP:GOSUB620
11150 HO=HO-2*HP:GOSUB630
11160 GOTO11280:REM OPEN RONDJE
11170 HO=HM+4*HP+10*HP*X
11180 VE=VM-3*VP+10*VP*SN(X):GOSUB620
11190 HO=HO+2*HP:GOSUB630
11200 VE=VE+VP:HO=HO+HP:GOSUB620
11210 HO=HO-4*HP:GOSUB630
11220 VE=VE+VP:GOSUB620
11230 HO=HO+4*HP:GOSUB630
11240 VE=VE+2*VP:GOSUB620
11250 HO=HO-4*HP:GOSUB630
11260 VE=VE+VP:HO=HO+HP:GOSUB620
11270 HO=HO+2*HP:GOSUB630
11280 NEXTX:REM GESLOTEN RONDJE
11290 RETURN
11300 REM ZET VINGERZETTING IN DIAGRAM
11310 REM *****************************
12000 SD=INT(S/6):SV=15
12010 SP=52+SN(0):GOSUB400:REM GELUID
12020 SP=57+SN(1):GOSUB400
12030 SP=62+SN(2):GOSUB400
12040 SP=67+SN(3):GOSUB400
12050 SP=71+SN(4):GOSUB400
12060 SP=76+SN(5):GOSUB400
12070 RETURN
12080 REM SPEEL GEBROKEN HET ACCOORD
12090 REM *****************************
25000 DATA"C",0,3,2,0,1,3
25010 DATA"DES",1,4,3,1,2,1
25020 DATA"D",2,0,0,2,3,2
25030 DATA"ES",3,1,1,3,4,3
25040 DATA"E",0,2,2,1,0,0
25050 DATA"F",1,3,3,2,1,1
25060 DATA"GES",2,4,4,3,2,2
25070 DATA"G",3,2,0,0,0,3
25080 DATA"AS",4,3,1,1,1,4
25090 DATA"A",0,0,2,2,2,0
25100 DATA"BES",1,1,3,3,3,1
25110 DATA"B",2,2,4,4,4,2
25120 DATA"CM",3,3,5,5,4,3
25130 DATA"DESM",0,4,2,1,2,0
25140 DATA"DM",1,0,0,2,3,1
25150 DATA"ESM",2,1,1,3,4,2
25160 DATA"EM",0,2,2,0,0,0
25170 DATA"FM",1,3,3,1,1,1
25180 DATA"GESM",2,4,4,2,2,2
25190 DATA"GM",3,1,0,0,3,3
25200 DATA"ASM",4,2,1,1,4,4
25210 DATA"AM",0,0,2,2,1,0
25220 DATA"BESM",1,1,3,3,2,1
25230 DATA"BM",2,2,4,4,3,2
29000 DATA".",255,255,255,255,255,255
29010 REM DATA-REGELS MET DE ACCOORDEN
29020 REM EN DE BIJBEHORENDE PLAATSEN
29030 REM (FRETTEN) OP DE SNAREN
29040 REM 255 IS NIET AANSLAAN
29050 REM DE LAATSTE REGEL SLUIT AF
29060 REM *****************************
30000 REM 1000 VERPLICHTE REGEL
30010 REM 1010- VARIABELEN
30020 REM 2000- TEKST EN VOORBEREIDING
30030 REM 3000- INVOER ACCOORD OPDRACHT
30040 REM 4000- UITVOERING ACCOORD
30050 REM 5000- HERHALING ACCOORDEN
30060 REM 9970- EINDE PROGRAMMA
30070 REM 10000- TEKEN GITAARDIAGRAM
30080 REM 11000- ZET VINGERZETTING
30090 REM 12000- SPEEL GEBROKEN ACCOORD
30100 REM 25000- DATA ACCOORDEN
30110 REM 30000- BESCHRIJVING PROGRAMMA
30120 REM 32000- GEGEVENS AUTEUR
30130 REM *****************************
32000 REM
32010 REM GITAAR
32020 REM
32030 REM EEN BASICODE-3 PROGRAMMA DOOR
32040 REM
32050 REM HANS VAN DONGEN
32060 REM HENDRIK VAN VELDEKESTRAAT 34
32070 REM 6367 SB VOERENDAAL
32080 REM
32090 REM (C) 17-12-1986
32100 REM
32200 REM TROS-RADIO dd 870211