... | ... |
@@ -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); |