| ... | ... |
@@ -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 |
+ |