... | ... |
@@ -5,12 +5,12 @@ |
5 | 5 |
|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 |
6 | 6 |
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |
7 | 7 |
|30 @Audio0 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 |
8 |
+|40 @Audio1 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 |
|
8 | 9 |
|80 @Controller &vector $2 &button $1 &key $1 |
9 | 10 |
|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &modx $2 &mody $2 |
10 | 11 |
|
11 | 12 |
|0000 |
12 | 13 |
|
13 |
- @last-note $1 |
|
14 | 14 |
@octave $1 |
15 | 15 |
@center &x $2 &y $2 |
16 | 16 |
@adsr-view &x1 $2 &y1 $2 &x2 $2 &y2 $2 |
... | ... |
@@ -48,10 +48,13 @@ |
48 | 48 |
.wave-view/x1 LDZ2 #0100 ADD2 .wave-view/x2 STZ2 |
49 | 49 |
.wave-view/y1 LDZ2 #0040 ADD2 .wave-view/y2 STZ2 |
50 | 50 |
( setup synth ) |
51 |
- #041c .Audio0/adsr DEO2 |
|
52 |
- #dd .Audio0/volume DEO |
|
51 |
+ #041c set-env |
|
52 |
+ #dd set-vol |
|
53 | 53 |
;sin-pcm .Audio0/addr DEO2 |
54 |
- #0100 .Audio0/length DEO2 |
|
54 |
+ ;sin-pcm .Audio1/addr DEO2 |
|
55 |
+ #0100 |
|
56 |
+ DUP2 .Audio0/length DEO2 |
|
57 |
+ .Audio1/length DEO2 |
|
55 | 58 |
( inital drawing ) |
56 | 59 |
draw-octave |
57 | 60 |
draw-adsr |
... | ... |
@@ -69,6 +72,14 @@ BRK |
69 | 72 |
|
70 | 73 |
@on-frame ( -> ) |
71 | 74 |
|
75 |
+ .Mouse/state DEI ?&skip-sft |
|
76 |
+ [ LIT2 00 &soft $1 ] EQUk ?&no-soft |
|
77 |
+ soften |
|
78 |
+ DUP #01 SUB ,&soft STR |
|
79 |
+ &no-soft |
|
80 |
+ POP2 |
|
81 |
+ &skip-sft |
|
82 |
+ |
|
72 | 83 |
[ LIT &last $1 ] .Audio0/output DEI NEQk ?&changed |
73 | 84 |
POP2 BRK |
74 | 85 |
&changed |
... | ... |
@@ -129,8 +140,6 @@ BRK |
129 | 140 |
[ #24 ] NEQk NIP ?&sd #45 play &sd |
130 | 141 |
[ #44 ] NEQk NIP ?&sl #46 play &sl |
131 | 142 |
[ #84 ] NEQk NIP ?&sr #47 play &sr |
132 |
- [ #40 ] NEQk NIP ?&l .Audio0/addr DEI2 #0010 SUB2 .Audio0/addr DEO2 &l |
|
133 |
- [ #80 ] NEQk NIP ?&r .Audio0/addr DEI2 #0010 ADD2 .Audio0/addr DEO2 &r |
|
134 | 143 |
POP |
135 | 144 |
|
136 | 145 |
draw-octave |
... | ... |
@@ -176,6 +185,7 @@ BRK |
176 | 185 |
.Mouse/y DEI2 .wave-view/y1 LDZ2 SUB2 #20 SFT2 NIP |
177 | 186 |
.Mouse/x DEI2 .wave-view/x1 LDZ2 SUB2 ;sin-pcm ADD2 STA |
178 | 187 |
draw-wave |
188 |
+ #10 ;on-frame/soft STA |
|
179 | 189 |
|
180 | 190 |
BRK |
181 | 191 |
|
... | ... |
@@ -220,8 +230,7 @@ BRK |
220 | 230 |
.Audio0/adsr DEI2 AND2 |
221 | 231 |
( value ) #000f STHr OVR LTHk [ JMP SWP POP ] SUB |
222 | 232 |
( shift ) #03 STHr SUB #60 SFT SFT2 ORA2 |
223 |
- .Audio0/adsr DEO2 |
|
224 |
- draw-adsr |
|
233 |
+ set-env |
|
225 | 234 |
|
226 | 235 |
BRK |
227 | 236 |
|
... | ... |
@@ -232,8 +241,7 @@ BRK |
232 | 241 |
.Audio0/volume DEI AND |
233 | 242 |
( value ) #0f STHr OVR LTHk [ JMP SWP POP ] SUB |
234 | 243 |
( shift ) #01 STHr SUB #60 SFT SFT ORA |
235 |
- .Audio0/volume DEO |
|
236 |
- draw-adsr |
|
244 |
+ set-vol |
|
237 | 245 |
|
238 | 246 |
BRK |
239 | 247 |
|
... | ... |
@@ -243,16 +251,56 @@ BRK |
243 | 251 |
@play ( pitch -- ) |
244 | 252 |
|
245 | 253 |
DUP #0c DIVk MUL SUB ;draw-octave/last STA |
246 |
- .Audio0/pitch DEO |
|
254 |
+ DUP .Audio0/pitch DEO |
|
255 |
+ #0c SUB .Audio1/pitch DEO |
|
247 | 256 |
|
248 | 257 |
JMP2r |
249 | 258 |
|
250 | 259 |
@set-length ( length* -- ) |
251 | 260 |
|
252 |
- .Audio0/length DEO2 |
|
261 |
+ DUP2 .Audio0/length DEO2 |
|
262 |
+ .Audio1/length DEO2 |
|
253 | 263 |
|
254 | 264 |
!draw-wave |
255 | 265 |
|
266 |
+@set-vol ( vol -- ) |
|
267 |
+ |
|
268 |
+ DUP .Audio0/volume DEO |
|
269 |
+ .Audio1/volume DEO |
|
270 |
+ |
|
271 |
+!draw-adsr |
|
272 |
+ |
|
273 |
+@set-env ( adsr* -- ) |
|
274 |
+ |
|
275 |
+ DUP2 .Audio0/adsr DEO2 |
|
276 |
+ .Audio1/adsr DEO2 |
|
277 |
+ |
|
278 |
+!draw-adsr |
|
279 |
+ |
|
280 |
+@soften ( -- ) |
|
281 |
+ |
|
282 |
+ #0100 #0000 |
|
283 |
+ &l |
|
284 |
+ DUP2 ;sin-pcm ADD2 get-average SWP2 STA POP |
|
285 |
+ INC2 GTH2k ?&l |
|
286 |
+ POP2 POP2 |
|
287 |
+ draw-wave |
|
288 |
+ |
|
289 |
+JMP2r |
|
290 |
+ |
|
291 |
+@get-average ( addr* -- addr* average* ) |
|
292 |
+ |
|
293 |
+ [ LIT2r 0000 ] |
|
294 |
+ DUP2 #0001 SUB2 DUP2 #0002 ADD2 SWP2 |
|
295 |
+ &l |
|
296 |
+ LDAk LITr 00 STH ADD2r |
|
297 |
+ INC2 GTH2k ?&l |
|
298 |
+ POP2 POP2 |
|
299 |
+ LDAk #00 SWP DUP2 DUP2 STH2r |
|
300 |
+ #01 SFT2 ADD2 ADD2 ADD2 #02 SFT2 |
|
301 |
+ |
|
302 |
+JMP2r |
|
303 |
+ |
|
256 | 304 |
( |
257 | 305 |
@|drawing ) |
258 | 306 |
|
... | ... |
@@ -481,6 +529,8 @@ JMP2r |
481 | 529 |
007c 8202 7e82 827e 00fc 8282 fc82 82fc |
482 | 530 |
007c 8280 8080 827c 00fc 8282 8282 82fc |
483 | 531 |
007c 8280 f080 827c 007c 8280 f080 8080 ] |
532 |
+ |
|
533 |
+( pad ) [ 8080 8080 ] |
|
484 | 534 |
@sin-pcm [ |
485 | 535 |
8083 8689 8c8f 9295 989b 9ea1 a4a7 aaad |
486 | 536 |
b0b3 b6b9 bbbe c1c3 c6c9 cbce d0d2 d5d7 |
... | ... |
@@ -499,3 +549,5 @@ JMP2r |
499 | 549 |
2729 2b2e 3032 3537 3a3d 3f42 4547 4a4d |
500 | 550 |
5053 5659 5c5f 6265 686b 6e71 7477 7a7d ] |
501 | 551 |
&end |
552 |
+( pad ) [ 8080 8080 ] |
|
553 |
+ |