| ... | ... |
@@ -29,7 +29,7 @@ |
| 29 | 29 |
|0140 ;Keys { key 1 }
|
| 30 | 30 |
|0150 ;Mouse { x 2 y 2 state 1 chord 1 }
|
| 31 | 31 |
|0160 ;File { pad 8 name 2 length 2 load 2 save 2 }
|
| 32 |
-|0170 ;Audio { ch1adsr 2 ch2adsr 2 ch3adsr 2 ch4adsr 2 ch1pitch 1 ch1vol 1 ch2pitch 1 ch2vol 1 ch3pitch 1 ch3vol 1 ch4pitch 1 ch4vol 1 }
|
|
| 32 |
+|0170 ;Audio { ch1adsr 2 ch2adsr 2 ch3adsr 2 ch4adsr 2 ch1vol 1 ch1pitch 1 ch2vol 1 ch2pitch 1 ch3vol 1 ch3pitch 1 ch4vol 1 ch4pitch 1 }
|
|
| 33 | 33 |
|01F0 ;System { pad 8 r 2 g 2 b 2 }
|
| 34 | 34 |
|
| 35 | 35 |
( vectors ) |
| ... | ... |
@@ -53,10 +53,10 @@ |
| 53 | 53 |
~chnframe.x2 =ctlframe.x1 ~chnframe.y1 =ctlframe.y1 |
| 54 | 54 |
~trkframe.x2 =ctlframe.x2 ~chnframe.y2 =ctlframe.y2 |
| 55 | 55 |
|
| 56 |
- ( default envs ) |
|
| 57 |
- #048c =Audio.ch1adsr |
|
| 58 |
- #159d =Audio.ch2adsr |
|
| 59 |
- #26ae =Audio.ch3adsr |
|
| 56 |
+ ( default settings ) |
|
| 57 |
+ #048c =Audio.ch1adsr #88 =Audio.ch1vol |
|
| 58 |
+ #159d =Audio.ch2adsr #88 =Audio.ch2vol |
|
| 59 |
+ #26ae =Audio.ch3adsr #88 =Audio.ch3vol |
|
| 60 | 60 |
|
| 61 | 61 |
,draw-timeline JSR2 |
| 62 | 62 |
,draw-controls JSR2 |
| ... | ... |
@@ -68,11 +68,9 @@ BRK |
| 68 | 68 |
|
| 69 | 69 |
,draw-cursor JSR2 |
| 70 | 70 |
,move-head JSR2 |
| 71 |
- |
|
| 72 | 71 |
~head.pos #08 MOD #00 NEQ ^$skip JNZ |
| 73 | 72 |
,bang JSR2 |
| 74 | 73 |
$skip |
| 75 |
- |
|
| 76 | 74 |
~Mouse.state #00 EQU ,$click-end JNZ2 |
| 77 | 75 |
~Mouse.x ~trkframe.x1 GTH2 ~Mouse.x ~trkframe.x2 LTH2 #0101 EQU2 |
| 78 | 76 |
~Mouse.y ~trkframe.y1 GTH2 ~Mouse.y ~trkframe.y2 LTH2 #0101 EQU2 |
| ... | ... |
@@ -120,21 +118,28 @@ BRK |
| 120 | 118 |
~Mouse.x ~ctlframe.x1 SUB2 8- 8/ SWP POP #02 DIV |
| 121 | 119 |
DUP #00 NEQ ^$no-a JNZ |
| 122 | 120 |
,Audio #00 ~track.active #02 MUL ADD2 PEK2 |
| 123 |
- #10 ~Mouse.state #10 EQU #e0 MUL ADD ADD ,Audio #00 ~track.active #02 MUL ADD2 POK2 $no-a |
|
| 124 |
- |
|
| 121 |
+ #10 ~Mouse.state #10 EQU #e0 MUL ADD ADD |
|
| 122 |
+ ,Audio #00 ~track.active #02 MUL ADD2 POK2 $no-a |
|
| 125 | 123 |
DUP #01 NEQ ^$no-d JNZ |
| 126 | 124 |
,Audio #00 ~track.active #02 MUL ADD2 PEK2 |
| 127 | 125 |
DUP #f0 AND STH #01 ~Mouse.state #10 EQU #0e MUL ADD ADD #0f AND STHr ADD |
| 128 | 126 |
,Audio #00 ~track.active #02 MUL ADD2 POK2 $no-d |
| 129 |
- |
|
| 130 | 127 |
DUP #02 NEQ ^$no-s JNZ |
| 131 | 128 |
,Audio #00 ~track.active #02 MUL ADD2 ++ PEK2 |
| 132 |
- #10 ~Mouse.state #10 EQU #e0 MUL ADD ADD ,Audio #00 ~track.active #02 MUL ADD2 ++ POK2 $no-s |
|
| 133 |
- |
|
| 129 |
+ #10 ~Mouse.state #10 EQU #e0 MUL ADD ADD |
|
| 130 |
+ ,Audio #00 ~track.active #02 MUL ADD2 ++ POK2 $no-s |
|
| 134 | 131 |
DUP #03 NEQ ^$no-r JNZ |
| 135 | 132 |
,Audio #00 ~track.active #02 MUL ADD2 ++ PEK2 |
| 136 | 133 |
DUP #f0 AND STH #01 ~Mouse.state #10 EQU #0e MUL ADD ADD #0f AND STHr ADD |
| 137 | 134 |
,Audio #00 ~track.active #02 MUL ADD2 ++ POK2 $no-r |
| 135 |
+ DUP #05 NEQ ^$no-left JNZ |
|
| 136 |
+ ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 |
|
| 137 |
+ #10 ~Mouse.state #10 EQU #e0 MUL ADD ADD |
|
| 138 |
+ ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 POK2 $no-left |
|
| 139 |
+ DUP #06 NEQ ^$no-right JNZ |
|
| 140 |
+ ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 |
|
| 141 |
+ DUP #f0 AND STH #01 ~Mouse.state #10 EQU #0e MUL ADD ADD #0f AND STHr ADD |
|
| 142 |
+ ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 POK2 $no-right |
|
| 138 | 143 |
POP |
| 139 | 144 |
( release ) #00 =Mouse.state |
| 140 | 145 |
,draw-controls JSR2 |
| ... | ... |
@@ -150,8 +155,6 @@ BRK |
| 150 | 155 |
$skip1 |
| 151 | 156 |
#00 SWP ,notes ADD2 PEK2 |
| 152 | 157 |
#0c #03 MUL SUB =Audio.ch1pitch |
| 153 |
- #11 =Audio.ch1vol |
|
| 154 |
- |
|
| 155 | 158 |
$listen2 |
| 156 | 159 |
,track.ch2 #00 ~head.pos #08 DIV ADD2 PEK2 |
| 157 | 160 |
#01 SUB |
| ... | ... |
@@ -160,8 +163,6 @@ BRK |
| 160 | 163 |
$skip2 |
| 161 | 164 |
#00 SWP ,notes ADD2 PEK2 |
| 162 | 165 |
#0c #03 MUL SUB =Audio.ch2pitch |
| 163 |
- #11 =Audio.ch2vol |
|
| 164 |
- |
|
| 165 | 166 |
$listen3 |
| 166 | 167 |
,track.ch3 #00 ~head.pos #08 DIV ADD2 PEK2 |
| 167 | 168 |
#01 SUB |
| ... | ... |
@@ -170,8 +171,6 @@ BRK |
| 170 | 171 |
$skip3 |
| 171 | 172 |
#00 SWP ,notes ADD2 PEK2 |
| 172 | 173 |
#0c #03 MUL SUB =Audio.ch3pitch |
| 173 |
- #11 =Audio.ch3vol |
|
| 174 |
- |
|
| 175 | 174 |
$end |
| 176 | 175 |
|
| 177 | 176 |
RTN |
| ... | ... |
@@ -320,6 +319,7 @@ RTN |
| 320 | 319 |
@draw-controls ( -- ) |
| 321 | 320 |
|
| 322 | 321 |
~ctlframe.x1 ~ctlframe.y1 ~ctlframe.x2 ~ctlframe.y2 #01 ,line-rect JSR2 |
| 322 |
+ ( env ) |
|
| 323 | 323 |
~ctlframe.x1 8+ ~ctlframe.y1 8+ #02 ,env_txt ,draw-label JSR2 |
| 324 | 324 |
~ctlframe.x1 8+ ~ctlframe.y1 #0010 ADD2 |
| 325 | 325 |
,Audio #00 ~track.active #02 MUL ADD2 PEK2 #04 SFT |
| ... | ... |
@@ -333,9 +333,14 @@ RTN |
| 333 | 333 |
~ctlframe.x1 #0038 ADD2 ~ctlframe.y1 #0010 ADD2 |
| 334 | 334 |
,Audio #00 ~track.active #02 MUL ADD2 ++ PEK2 #0f AND |
| 335 | 335 |
,draw-knob JSR2 |
| 336 |
- ~ctlframe.x1 #0050 ADD2 ~ctlframe.y1 8+ #02 ,vol_txt ,draw-label JSR2 |
|
| 337 |
- ~ctlframe.x1 #0050 ADD2 ~ctlframe.y1 #0010 ADD2 #00 ,draw-knob JSR2 |
|
| 338 |
- ~ctlframe.x1 #0060 ADD2 ~ctlframe.y1 #0010 ADD2 #0f ,draw-knob JSR2 |
|
| 336 |
+ ( vol ) |
|
| 337 |
+ ~ctlframe.x1 #0058 ADD2 ~ctlframe.y1 8+ #02 ,vol_txt ,draw-label JSR2 |
|
| 338 |
+ ~ctlframe.x1 #0058 ADD2 ~ctlframe.y1 #0010 ADD2 |
|
| 339 |
+ ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 #04 SFT |
|
| 340 |
+ ,draw-knob JSR2 |
|
| 341 |
+ ~ctlframe.x1 #0068 ADD2 ~ctlframe.y1 #0010 ADD2 |
|
| 342 |
+ ,Audio #0009 ADD2 #00 ~track.active #02 MUL ADD2 PEK2 #0f AND |
|
| 343 |
+ ,draw-knob JSR2 |
|
| 339 | 344 |
|
| 340 | 345 |
RTN |
| 341 | 346 |
|
| ... | ... |
@@ -499,14 +499,15 @@ Uint8 |
| 499 | 499 |
audio_poke(Uxn *u, Uint16 ptr, Uint8 b0, Uint8 b1) |
| 500 | 500 |
{
|
| 501 | 501 |
Uint8 *m = u->ram.dat; |
| 502 |
+ m[PAGE_DEVICE + 0x0070 + b0] = b1; |
|
| 502 | 503 |
if(b0 & 1) {
|
| 503 | 504 |
Uint16 addr = ptr + (b0 & 0x6); |
| 504 | 505 |
Channel *c = &channels[(b0 & 0x6) >> 1]; |
| 505 | 506 |
SDL_LockAudioDevice(audio_id); |
| 506 |
- c->period = note_periods[m[addr + 8] % 12] >> (m[addr + 8] / 12); |
|
| 507 |
+ c->period = note_periods[m[addr + 9] % 12] >> (m[addr + 9] / 12); |
|
| 507 | 508 |
c->count %= c->period; |
| 508 |
- c->volume[0] = (m[addr + 9] >> 4) & 0xf; |
|
| 509 |
- c->volume[1] = m[addr + 9] & 0xf; |
|
| 509 |
+ c->volume[0] = (m[addr + 8] >> 4) & 0xf; |
|
| 510 |
+ c->volume[1] = m[addr + 8] & 0xf; |
|
| 510 | 511 |
c->age = 0; |
| 511 | 512 |
c->a = (SAMPLE_FREQUENCY >> 4) * ((m[addr] >> 4) & 0xf); |
| 512 | 513 |
c->d = c->a + (SAMPLE_FREQUENCY >> 4) * (m[addr] & 0xf); |