Browse code

Progress on drum rack

neauoire authored on 03/05/2021 22:13:12
Showing 24 changed files
... ...
@@ -61,6 +61,10 @@ RTN
61 61
 - `#a1f3` `#a14d` `#a16c`, grey-pink/teal
62 62
 - `#8c4b` `#884b` `#e8bb`, commodore64
63 63
 
64
+## Convert audio for Unx
65
+
66
+```sox sub202_C.wav -b 8 -c 1 -e signed output.raw```
67
+
64 68
 ## Refs
65 69
 
66 70
 https://code.9front.org/hg/plan9front/file/a7f9946e238f/sys/src/games/nes/cpu.c
67 71
new file mode 100755
... ...
@@ -0,0 +1,16 @@
1
+#!/bin/bash
2
+
3
+echo "Formatting.."
4
+clang-format -i utos.c
5
+
6
+echo "Cleaning.."
7
+rm -f ../../bin/utos
8
+
9
+echo "Building.."
10
+mkdir -p ../../bin
11
+cc -std=c89 -DDEBUG -Wall -Wno-unknown-pragmas -Wpedantic -Wshadow -Wextra -Werror=implicit-int -Werror=incompatible-pointer-types -Werror=int-conversion -Wvla -g -Og -fsanitize=address -fsanitize=undefined -lm utos.c -o ../../bin/utos
12
+
13
+echo "Running.."
14
+../../bin/utos ../../projects/sounds/pad1.ss8 ../../projects/sounds/pad1.pcm
15
+
16
+echo "Done."
0 17
new file mode 100644
... ...
@@ -0,0 +1,39 @@
1
+#include <stdio.h>
2
+#include <stdlib.h>
3
+
4
+/* 
5
+Copyright (c) 2020 Devine Lu Linvega
6
+
7
+Permission to use, copy, modify, and distribute this software for any
8
+purpose with or without fee is hereby granted, provided that the above
9
+copyright notice and this permission notice appear in all copies.
10
+
11
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12
+WITH REGARD TO THIS SOFTWARE.
13
+*/
14
+
15
+typedef unsigned char Uint8;
16
+typedef signed char Sint8;
17
+typedef unsigned short Uint16;
18
+typedef signed short Sint16;
19
+
20
+int
21
+main(int argc, char **argv)
22
+{
23
+	FILE *f;
24
+	Uint8 *buffer;
25
+	Uint16 filelen, i;
26
+	if(argc < 2 || !(f = fopen(argv[1], "rb")))
27
+		return 1;
28
+	fseek(f, 0, SEEK_END);
29
+	filelen = ftell(f);
30
+	rewind(f);
31
+	buffer = (Uint8 *)malloc(filelen * sizeof(Uint8));
32
+	fread(buffer, filelen, 1, f);
33
+	fclose(f);
34
+	for(i = 0; i < filelen; ++i)
35
+		buffer[i] += 0x80;
36
+	printf("\n\n");
37
+	fwrite(buffer, filelen, 1, fopen(argv[2], "wb"));
38
+	return 0;
39
+}
... ...
@@ -1,4 +1,11 @@
1
-( a blank file )
1
+( drum rack 
2
+
3
+	TODO
4
+		- Change pitch of sample
5
+		- Draw pad pitch on pad
6
+		- When selecting a pad, should highlight note in octave
7
+)
8
+
2 9
 
3 10
 %RTN { JMP2r }
4 11
 %8+ { #0008 ADD2 }
... ...
@@ -35,6 +42,9 @@
35 42
 
36 43
 |0000
37 44
 
45
+@piano [ &last $1 &octave $1 ]
46
+
47
+@last-note $1
38 48
 @last $1
39 49
 @color $1
40 50
 @center      [ &x $2 &y $2 ]
... ...
@@ -44,9 +54,10 @@
44 54
 @frame       [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
45 55
 @label       [ &x $2 &y $2 &color $1 &addr $2 ]
46 56
 @pos         [ &x $2 &y $2 ] 
47
-@padview     [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
48
-@mixview     [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
49
-@wavview     [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
57
+@pad-view     [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
58
+@mix-view     [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
59
+@oct-view     [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
60
+@wav-view     [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
50 61
 
51 62
 @state [ ( addr length )
52 63
 	$4 $4 $4 $4
... ...
@@ -55,14 +66,16 @@
55 66
 	$4 $4 $4 $4
56 67
 ]
57 68
 
69
+@modes [ $1 $1 $1 $1 ] ( single/repeat )
70
+
58 71
 ( program )
59 72
 
60 73
 |0100 ( -> )
61 74
 	
62 75
 	( theme ) 
63 76
 	#0aff .System/r DEO2 
64
-	#0af2 .System/g DEO2 
65
-	#0af3 .System/b DEO2
77
+	#0a2f .System/g DEO2 
78
+	#0a3f .System/b DEO2
66 79
 
67 80
 	( vectors )
68 81
 	;on-control .Controller/vector DEO2
... ...
@@ -71,10 +84,18 @@
71 84
 	;on-midi .Midi/vector DEO2
72 85
 
73 86
 	( store location/length )
74
-	#88 .Audio0/volume DEO #011c .Audio0/adsr DEO2
75
-	#88 .Audio1/volume DEO #011c .Audio1/adsr DEO2
76
-	#88 .Audio2/volume DEO #011c .Audio2/adsr DEO2
77
-	#88 .Audio3/volume DEO #111c .Audio3/adsr DEO2
87
+	#88 .Audio0/volume DEO #023c .Audio0/adsr DEO2
88
+	#7a .Audio1/volume DEO #1334 .Audio1/adsr DEO2
89
+	#a7 .Audio2/volume DEO #0414 .Audio2/adsr DEO2
90
+	#88 .Audio3/volume DEO #022c .Audio3/adsr DEO2
91
+
92
+	#0400 .Audio0/length DEO2
93
+	#0800 .Audio1/length DEO2
94
+	#0800 .Audio2/length DEO2
95
+	#1000 .Audio3/length DEO2
96
+
97
+	#01 .modes POK
98
+	#03 .piano/octave POK
78 99
 
79 100
 	;load-samples JSR2
80 101
 
... ...
@@ -86,40 +107,47 @@
86 107
 	.center/x PEK2 PAD-WIDTH #0003 MUL2 SUB2 #0010 SUB2 .frame/x1 POK2
87 108
 	.center/y PEK2 #0050 SUB2 .frame/y1 POK2
88 109
 	.center/x PEK2 PAD-WIDTH #0003 MUL2 ADD2 #0010 ADD2 .frame/x2 POK2
89
-	.frame/y1 PEK2 PAD-HEIGHT #0004 MUL2 ADD2 #0030 ADD2 .frame/y2 POK2
90
-
91
-	( place padview )
92
-	.frame/x1 PEK2 .padview/x1 POK2
93
-	.frame/y1 PEK2 .padview/y1 POK2
94
-	.padview/x1 PEK2 #0004 PAD-WIDTH MUL2 ADD2 .padview/x2 POK2
95
-	.padview/y1 PEK2 #0004 PAD-HEIGHT MUL2 ADD2 .padview/y2 POK2
96
-
97
-	( place mixview )
98
-	.padview/x2 PEK2 .mixview/x1 POK2
99
-	.padview/y1 PEK2 .mixview/y1 POK2
100
-	.mixview/x1 PEK2 #0080 ADD2 .mixview/x2 POK2
101
-	.padview/y2 PEK2 .mixview/y2 POK2
102
-
103
-	( place wavview )
104
-	.frame/x1 PEK2 .wavview/x1 POK2
105
-	.mixview/y2 PEK2 #0008 ADD2 .wavview/y1 POK2
106
-	.frame/x2 PEK2 .wavview/x2 POK2
107
-	.wavview/y1 PEK2 #0020 ADD2 .wavview/y2 POK2
110
+	.frame/y1 PEK2 PAD-HEIGHT #0004 MUL2 ADD2 #0028 ADD2 .frame/y2 POK2
111
+
112
+	( place pad-view )
113
+	.frame/x1 PEK2 .pad-view/x1 POK2
114
+	.frame/y1 PEK2 .pad-view/y1 POK2
115
+	.pad-view/x1 PEK2 #0004 PAD-WIDTH MUL2 ADD2 .pad-view/x2 POK2
116
+	.pad-view/y1 PEK2 #0004 PAD-HEIGHT MUL2 ADD2 .pad-view/y2 POK2
117
+
118
+	( place mix-view )
119
+	.pad-view/x2 PEK2 #0006 ADD2 .mix-view/x1 POK2
120
+	.pad-view/y1 PEK2 .mix-view/y1 POK2
121
+	.mix-view/x1 PEK2 #007a ADD2 .mix-view/x2 POK2
122
+	.pad-view/y2 PEK2 .mix-view/y2 POK2
123
+
124
+	( place oct-view )
125
+	.frame/x1 PEK2 .oct-view/x1 POK2
126
+	.mix-view/y2 PEK2 #0004 ADD2 .oct-view/y1 POK2
127
+	.oct-view/x1 PEK2 #0050 ADD2 .oct-view/x2 POK2
128
+	.oct-view/y1 PEK2 #0018 ADD2 .oct-view/y2 POK2
129
+
130
+	( place wav-view )
131
+	.oct-view/x2 PEK2 .wav-view/x1 POK2
132
+	.mix-view/y2 PEK2 #0004 ADD2 .wav-view/y1 POK2
133
+	.frame/x2 PEK2 .wav-view/x2 POK2
134
+	.wav-view/y1 PEK2 #0020 ADD2 .wav-view/y2 POK2
108 135
 
109 136
 	;draw-pads JSR2
110 137
 	;draw-mixers JSR2
138
+	;draw-octave JSR2
111 139
 
112
-	.frame/x1 PEK2 #0004 SUB2 
113
-	.frame/y1 PEK2 #0004 SUB2 
114
-	.frame/x2 PEK2 #0002 ADD2
115
-	.frame/y2 PEK2 #0002 ADD2
140
+	.mix-view/x1 PEK2 #0004 SUB2 
141
+	.mix-view/y1 PEK2 #0000 SUB2 
142
+	.mix-view/x2 PEK2 #0002 SUB2
143
+	.mix-view/y2 PEK2 #0002 SUB2
116 144
 	#01
117 145
 	;line-rect JSR2
118 146
 
119
-	.mixview/x1 PEK2 #0002 ADD2 
120
-	.mixview/y1 PEK2 #0000 SUB2 
121
-	.mixview/x2 PEK2 #0002 SUB2
122
-	.mixview/y2 PEK2 #0002 SUB2
147
+	.wav-view/x1 PEK2 #0000 SUB2 
148
+	.wav-view/y1 PEK2 #0002 SUB2 
149
+	.wav-view/x2 PEK2 #0002 SUB2
150
+	.wav-view/y2 PEK2 #0002 ADD2
123 151
 	#01
124 152
 	;line-rect JSR2
125 153
 
... ...
@@ -145,9 +173,6 @@ BRK
145 173
 	.Audio3/output DEI #04 SFT TOS #0008 MUL2 ;meter ADD2 .Screen/addr DEO2
146 174
 	#21 .Screen/color DEO
147 175
 
148
-	( TODO: draw in mixer )
149
-	( TODO: draw global )
150
-
151 176
 BRK
152 177
 
153 178
 @on-mouse ( -> )
... ...
@@ -156,10 +181,18 @@ BRK
156 181
 
157 182
 	.Mouse/state DEI #00 NEQ ,&on-touch JNZ BRK &on-touch
158 183
 
159
-	.Mouse/x DEI2 DUP2 .padview/x1 PEK2 GTH2 ROT ROT .padview/x2 PEK2 #0001 ADD2 LTH2 #0101 EQU2
160
-	.Mouse/y DEI2 DUP2 .padview/y1 PEK2 GTH2 ROT ROT .padview/y2 PEK2 LTH2 #0101 EQU2
184
+	.Mouse/x DEI2 DUP2 .pad-view/x1 PEK2 GTH2 ROT ROT .pad-view/x2 PEK2 #0001 ADD2 LTH2 #0101 EQU2
185
+	.Mouse/y DEI2 DUP2 .pad-view/y1 PEK2 GTH2 ROT ROT .pad-view/y2 PEK2 LTH2 #0101 EQU2
161 186
 	#0101 EQU2 ;on-touch-pad JNZ2
162 187
 
188
+	.Mouse/x DEI2 DUP2 .mix-view/x1 PEK2 GTH2 ROT ROT .mix-view/x2 PEK2 #0001 ADD2 LTH2 #0101 EQU2
189
+	.Mouse/y DEI2 DUP2 .mix-view/y1 PEK2 GTH2 ROT ROT .mix-view/y2 PEK2 LTH2 #0101 EQU2
190
+	#0101 EQU2 ;on-touch-mix JNZ2
191
+
192
+	.Mouse/x DEI2 DUP2 .oct-view/x1 PEK2 GTH2 ROT ROT .oct-view/x2 PEK2 #0001 ADD2 LTH2 #0101 EQU2
193
+	.Mouse/y DEI2 DUP2 .oct-view/y1 PEK2 GTH2 ROT ROT .oct-view/y2 PEK2 LTH2 #0101 EQU2
194
+	#0101 EQU2 ;on-touch-oct JNZ2
195
+
163 196
 BRK
164 197
 
165 198
 @on-midi ( -> )
... ...
@@ -167,7 +200,7 @@ BRK
167 200
 	.Midi/note DEI #00 NEQ ,&note-on JNZ BRK &note-on
168 201
 
169 202
 	.Midi/channel DEI #90 NEQ ,&no-drum JNZ 
170
-		.Midi/note DEI DUP #80 ADD SWP #10 MOD ;play-pad JSR2
203
+		( .Midi/note DEI DUP #80 ADD SWP #10 MOD ;play-pad JSR2 )
171 204
 		BRK
172 205
 	&no-drum
173 206
 
... ...
@@ -182,47 +215,133 @@ BRK
182 215
 	.Controller/key DEI #00 NEQ ,&key-down JNZ BRK &key-down
183 216
 
184 217
 	.Controller/key DEI 
185
-	DUP #31 NEQ ,&no-0 JNZ #b0 #00 ;play-pad JSR2 &no-0
186
-	DUP #32 NEQ ,&no-1 JNZ #b0 #01 ;play-pad JSR2 &no-1
187
-	DUP #33 NEQ ,&no-2 JNZ #b0 #02 ;play-pad JSR2 &no-2
188
-	DUP #34 NEQ ,&no-3 JNZ #b0 #03 ;play-pad JSR2 &no-3
189
-	DUP #71 NEQ ,&no-4 JNZ #b0 #04 ;play-pad JSR2 &no-4
190
-	DUP #77 NEQ ,&no-5 JNZ #b0 #05 ;play-pad JSR2 &no-5
191
-	DUP #65 NEQ ,&no-6 JNZ #b0 #06 ;play-pad JSR2 &no-6
192
-	DUP #72 NEQ ,&no-7 JNZ #b0 #07 ;play-pad JSR2 &no-7
193
-	DUP #61 NEQ ,&no-8 JNZ #b0 #08 ;play-pad JSR2 &no-8
194
-	DUP #73 NEQ ,&no-9 JNZ #b0 #09 ;play-pad JSR2 &no-9
195
-	DUP #64 NEQ ,&no-a JNZ #b0 #0a ;play-pad JSR2 &no-a
196
-	DUP #66 NEQ ,&no-b JNZ #b0 #0b ;play-pad JSR2 &no-b
197
-	DUP #7a NEQ ,&no-c JNZ #b0 #0c ;play-pad JSR2 &no-c
198
-	DUP #78 NEQ ,&no-d JNZ #b0 #0d ;play-pad JSR2 &no-d
199
-	DUP #63 NEQ ,&no-e JNZ #b0 #0e ;play-pad JSR2 &no-e
200
-	DUP #76 NEQ ,&no-f JNZ #b0 #0f ;play-pad JSR2 &no-f
218
+	DUP #31 NEQ ,&no-0 JNZ #00 ;play-pad JSR2 &no-0
219
+	DUP #32 NEQ ,&no-1 JNZ #01 ;play-pad JSR2 &no-1
220
+	DUP #33 NEQ ,&no-2 JNZ #02 ;play-pad JSR2 &no-2
221
+	DUP #34 NEQ ,&no-3 JNZ #03 ;play-pad JSR2 &no-3
222
+	DUP #71 NEQ ,&no-4 JNZ #04 ;play-pad JSR2 &no-4
223
+	DUP #77 NEQ ,&no-5 JNZ #05 ;play-pad JSR2 &no-5
224
+	DUP #65 NEQ ,&no-6 JNZ #06 ;play-pad JSR2 &no-6
225
+	DUP #72 NEQ ,&no-7 JNZ #07 ;play-pad JSR2 &no-7
226
+	DUP #61 NEQ ,&no-8 JNZ #08 ;play-pad JSR2 &no-8
227
+	DUP #73 NEQ ,&no-9 JNZ #09 ;play-pad JSR2 &no-9
228
+	DUP #64 NEQ ,&no-a JNZ #0a ;play-pad JSR2 &no-a
229
+	DUP #66 NEQ ,&no-b JNZ #0b ;play-pad JSR2 &no-b
230
+	DUP #7a NEQ ,&no-c JNZ #0c ;play-pad JSR2 &no-c
231
+	DUP #78 NEQ ,&no-d JNZ #0d ;play-pad JSR2 &no-d
232
+	DUP #63 NEQ ,&no-e JNZ #0e ;play-pad JSR2 &no-e
233
+	DUP #76 NEQ ,&no-f JNZ #0f ;play-pad JSR2 &no-f
201 234
 	POP
202 235
 
203 236
 BRK
204 237
 
205 238
 @on-touch-pad ( -> )
206 239
 	
207
-	( x ) .Mouse/x DEI2 .padview/x1 PEK2 SUB2 PAD-WIDTH DIV2 SWP POP
208
-	( y ) .Mouse/y DEI2 .padview/y1 PEK2 SUB2 PAD-HEIGHT DIV2 SWP POP #04 MUL ADD
240
+	( x ) .Mouse/x DEI2 .pad-view/x1 PEK2 SUB2 PAD-WIDTH DIV2 SWP POP
241
+	( y ) .Mouse/y DEI2 .pad-view/y1 PEK2 SUB2 PAD-HEIGHT DIV2 SWP POP #04 MUL ADD
209 242
 	
210
-	DUP #b0 SWP ;play-pad JSR2
243
+	DUP SWP ;play-pad JSR2
211 244
 
212
-	DUP ;draw-editor JSR2
213
-	DUP ;draw-waveform JSR2
245
+	;draw-waveform JSR2
246
+
247
+	( release ) #00 .Mouse/state DEO
214 248
 
249
+BRK
250
+
251
+@on-touch-mix ( -> )
252
+
253
+	( channel ) .Mouse/y DEI2 .mix-view/y1 PEK2 SUB2 PAD-HEIGHT DIV2 SWP POP STH
254
+
255
+	( knob ) .Mouse/x DEI2 .mix-view/x1 PEK2 SUB2 #0010 DIV2 SWP POP
256
+
257
+	DUP #00 NEQ ,&no-a JNZ
258
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEI
259
+		#10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD
260
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEO &no-a
261
+	DUP #01 NEQ ,&no-d JNZ
262
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEI
263
+		DUP #f0 AND STH #01 .Mouse/state DEI #10 EQU #0e MUL ADD ADD #0f AND STHr ADD
264
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEO &no-d
265
+	DUP #02 NEQ ,&no-s JNZ
266
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEI
267
+		#10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD
268
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEO &no-s
269
+	DUP #03 NEQ ,&no-r JNZ
270
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEI
271
+		DUP #f0 AND STH #01 .Mouse/state DEI #10 EQU #0e MUL ADD ADD #0f AND STHr ADD
272
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEO &no-r
273
+
274
+	DUP #04 NEQ ,&no-repeat JNZ
275
+		.modes [ DUPr STHr ADD ] PEK 
276
+		#00 EQU
277
+		.modes [ DUPr STHr ADD ] POK &no-repeat
278
+
279
+	DUP #05 NEQ ,&no-left JNZ
280
+		.Audio0/volume [ DUPr STHr #10 MUL ADD ] DEI 
281
+		#10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD
282
+		.Audio0/volume [ DUPr STHr #10 MUL ADD ] DEO &no-left
283
+	DUP #06 NEQ ,&no-right JNZ
284
+		.Audio0/volume [ DUPr STHr #10 MUL ADD ] DEI
285
+		DUP #f0 AND STH #01 .Mouse/state DEI #10 EQU #0e MUL ADD ADD #0f AND STHr ADD
286
+		.Audio0/volume [ DUPr STHr #10 MUL ADD ] DEO &no-right
215 287
 	POP
288
+
216 289
 	( release ) #00 .Mouse/state DEO
217 290
 
291
+	DUPr STHr ;draw-mixer JSR2
292
+
293
+	POPr
294
+
295
+BRK
296
+
297
+@on-touch-oct ( -> )
298
+	
299
+	.Mouse/x DEI2 .oct-view/x1 PEK2 SUB2 8/ SWP POP #08 NEQ ,&no-mod JNZ
300
+		.Mouse/y DEI2 .oct-view/y1 PEK2 SUB2 8/ SWP POP 
301
+		DUP #00 NEQ ,&no-incr JNZ
302
+			.piano/octave PEK #01 ADD .piano/octave POK &no-incr
303
+		DUP #02 NEQ ,&no-decr JNZ
304
+			.piano/octave PEK #01 SUB .piano/octave POK &no-decr
305
+		POP
306
+		( release ) #00 .Mouse/state DEO
307
+		;draw-octave JSR2
308
+		BRK
309
+	&no-mod
310
+
311
+	.Mouse/x DEI2 .oct-view/x1 PEK2 SUB2 8/ SWP POP #06 GTH ,&no-key JNZ
312
+		.Mouse/x DEI2 .oct-view/x1 PEK2 SUB2 8/ 
313
+
314
+		( set pitch of pad )
315
+		DUP2 ;notes ADD2 LDA .last PEK SWP .piano/octave PEK #02 SUB #0c MUL ADD ;set-pitch JSR2
316
+
317
+		( record last note )
318
+		SWP POP .last-note POK 
319
+		.last PEK ;play-pad JSR2
320
+
321
+		( release ) #00 .Mouse/state DEO
322
+		;draw-octave JSR2
323
+	&no-key
324
+
218 325
 BRK
219 326
 
327
+@set-pitch ( pad pitch -- )
328
+	
329
+	SWP TOS ;pad-pitch ADD2 STA
330
+
331
+RTN
332
+
333
+@play ( pitch -- )
334
+	
335
+	DUP .piano/octave PEK .modes PEK MUL ADD .Audio0/pitch DEO
336
+
337
+RTN
338
+
220 339
 @load-samples ( -- )
221 340
 
222 341
 	#00 #10
223 342
 	&loop
224 343
 		( name ) OVR TOS #0019 MUL2 ;pad-path ADD2 .File/name DEO2
225
-		( length ) OVR TOS #0002 MUL2 ;pad-length ADD2 LDA2 .File/length DEO2
344
+		( length ) OVR #04 DIV #10 MUL .Audio0/length ADD DEI2 .File/length DEO2
226 345
 		( load ) OVR TOS #0002 MUL2 ;pad-addr ADD2 LDA2 .File/load DEO2
227 346
 		( incr ) SWP #01 ADD SWP
228 347
 		DUP2 LTH ,&loop JNZ
... ...
@@ -232,28 +351,19 @@ RTN
232 351
 
233 352
 @play-pad ( note pad -- )
234 353
 	
235
-	STH
236
-	( unseslect last )
354
+	( unselect last )
237 355
 	.last PEK #01 ;draw-pad JSR2
238
-	DUPr STHr .last POK 
239
-
356
+	DUP .last POK 
240 357
 	( highlight )
241
-	DUPr STHr #02 ;draw-pad JSR2
242
-
243
-	( length )
244
-	DUPr STHr TOS #0002 MUL2 ;pad-addr ADD2 DUP2 LDA2 SWP2 #0002 ADD2 LDA2 SWP2 SUB2 
245
-	DUPr STHr #04 DIV #10 MUL .Audio0/length ADD DEO2	
246
-
358
+	DUP #02 ;draw-pad JSR2
247 359
 	( addr )
248
-	DUPr STHr TOS #0002 MUL2 ;pad-addr ADD2 LDA2
249
-	DUPr STHr #04 DIV #10 MUL .Audio0/addr ADD DEO2
250
-
360
+	DUP TOS #0002 MUL2 ;pad-addr ADD2 LDA2 STH2
361
+	DUP #04 DIV #10 MUL .Audio0/addr ADD STH2r ROT DEO2
251 362
 	( pitch )
252
-	DUPr STHr #04 DIV #10 MUL .Audio0/pitch ADD DEO
253
-
254
-	DUPr STHr #04 DIV ;draw-mixer JSR2
255
-
256
-	POPr
363
+	DUP TOS ;pad-pitch ADD2 LDA STH 
364
+	DUP #04 DIV .modes ADD PEK #00 EQU #80 MUL STH ADDr
365
+	DUP #04 DIV #10 MUL .Audio0/pitch ADD STHr SWP DEO
366
+	#04 DIV ;draw-mixer JSR2
257 367
 
258 368
 RTN
259 369
 
... ...
@@ -261,27 +371,27 @@ RTN
261 371
 	
262 372
 	#02 MUL #00 SWP ;pad-addr ADD2 LDA2 STH2
263 373
 
264
-	.wavview/x1 PEK2
265
-	.wavview/y1 PEK2
266
-	.wavview/x2 PEK2 ++
267
-	.wavview/y2 PEK2
374
+	.wav-view/x1 PEK2 #0002 ADD2
375
+	.wav-view/y1 PEK2
376
+	.wav-view/x2 PEK2 #0002 SUB2
377
+	.wav-view/y2 PEK2
268 378
 	#00 ;fill-rect JSR2
269 379
 
270
-	.wavview/x1 PEK2 .Screen/x DEO2
380
+	.wav-view/x1 PEK2 #0002 ADD2 .Screen/x DEO2
271 381
 
272 382
 	( waveform )
273 383
 	#00 #ff
274 384
 	&loop
275 385
 		( dotted line )
276 386
 		OVR #01 AND ,&no-dot JNZ 
277
-			.wavview/y1 PEK2 #0010 ADD2 .Screen/y DEO2
278
-			#03 .Screen/color DEO
387
+			.wav-view/y1 PEK2 #0010 ADD2 .Screen/y DEO2
388
+			#01 .Screen/color DEO
279 389
 		&no-dot
280 390
 		OVR TOS #0010 MUL2 [ DUP2r STH2r ] ADD2 LDA 
281 391
 		#02 DIV #40 ADD DUP #07 SFT #80 MUL SUB 
282
-		TOS #0004 DIV2 .wavview/y1 PEK2 ADD2 .Screen/y DEO2
392
+		TOS #0004 DIV2 .wav-view/y1 PEK2 ADD2 .Screen/y DEO2
283 393
 		.Screen/x DEI2 ++ .Screen/x DEO2
284
-		( draw ) OVR .Audio0/length DEI2 SWP POP GTH #02 MUL #01 ADD .Screen/color DEO
394
+		( draw ) #02 .Screen/color DEO
285 395
 		( incr ) SWP #01 ADD SWP
286 396
 		DUP2 LTH ,&loop JNZ
287 397
 	POP2
... ...
@@ -290,59 +400,35 @@ RTN
290 400
 
291 401
 RTN
292 402
 
293
-@draw-editor ( pad -- )
294
-
295
-	( get state )
296
-
297
-	.frame/y2 PEK2 #0008 ADD2 .Screen/y DEO2
298
-
299
-	.frame/x1 PEK2 .Screen/x DEO2
300
-	DUP #02 MUL TOS ;pad-addr ADD2 LDA2
301
-	( addr ) #21 ;draw-short JSR2
302
-
303
-	.frame/x1 PEK2 #0028 ADD2 .Screen/x DEO2
304
-	DUP #02 MUL TOS ;pad-length ADD2 LDA2
305
-	( addr ) #21 ;draw-short JSR2
306
-
307
-	POP
308
-
309
-RTN
310
-
311 403
 @draw-mixer ( mixer -- )
312 404
 
313
-	;cursor .Screen/addr DEO2
314
-
315
-	DUP #00 SWP PAD-HEIGHT MUL2 .mixview/y1 PEK2 ADD2 #0002 ADD2 STH2
405
+	DUP STH #00 SWP PAD-HEIGHT MUL2 .mix-view/y1 PEK2 ADD2 #0003 ADD2
316 406
 
317 407
 	( adsr )
318
-	.mixview/x1 PEK2 #0008 ADD2 DUP2r STH2r
319
-		.Audio0/adsr DEI #04 SFT
408
+	DUP2 .mix-view/x1 PEK2 SWP2
409
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEI #04 SFT
320 410
 		;draw-knob JSR2
321
-	.mixview/x1 PEK2 #0018 ADD2 DUP2r STH2r
322
-		.Audio0/adsr DEI #0f AND
411
+	DUP2 .mix-view/x1 PEK2 #0010 ADD2 SWP2
412
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEI #0f AND
323 413
 		;draw-knob JSR2
324
-	.mixview/x1 PEK2 #0028 ADD2 DUP2r STH2r
325
-		.Audio0/adsr #01 ADD DEI #04 SFT
414
+	DUP2 .mix-view/x1 PEK2 #0020 ADD2 SWP2
415
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEI #04 SFT
326 416
 		;draw-knob JSR2
327
-	.mixview/x1 PEK2 #0038 ADD2 DUP2r STH2r
328
-		.Audio0/adsr #01 ADD DEI #0f AND
417
+	DUP2 .mix-view/x1 PEK2 #0030 ADD2 SWP2
418
+		.Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEI #0f AND
329 419
 		;draw-knob JSR2
330
-
331
-	.mixview/x1 PEK2 #0048 ADD2 DUP2r STH2r
332
-		#00 ;draw-switch JSR2
333
-
420
+	( once/repeat )
421
+	DUP2 .mix-view/x1 PEK2 #0040 ADD2 SWP2
422
+		.modes [ DUPr STHr ADD ] PEK ;draw-switch JSR2
334 423
 	( volume )
335
-	.mixview/x1 PEK2 #0058 ADD2 DUP2r STH2r
336
-		.Audio0/volume DEI #04 SFT
424
+	DUP2 .mix-view/x1 PEK2 #0050 ADD2 SWP2
425
+		.Audio0/volume [ DUPr STHr #10 MUL ADD ] DEI #04 SFT
337 426
 		;draw-knob JSR2
338
-	.mixview/x1 PEK2 #0068 ADD2 DUP2r STH2r
339
-		.Audio0/volume DEI #0f AND
427
+	DUP2 .mix-view/x1 PEK2 #0060 ADD2 SWP2
428
+		.Audio0/volume [ DUPr STHr #10 MUL ADD ] DEI #0f AND
340 429
 		;draw-knob JSR2
341
-
342
-
343
-	POP
344
-	POP2r
345
-	( once/repeat interface )
430
+	POP2
431
+	POPr
346 432
 
347 433
 RTN
348 434
 
... ...
@@ -351,13 +437,13 @@ RTN
351 437
 	( load ) .knob/value POK .knob/y POK2 .knob/x POK2
352 438
 
353 439
 	.knob/x PEK2 .Screen/x DEO2
354
-	.knob/y PEK2 .Screen/y DEO2 ;knob_icns .Screen/addr DEO2 #21 .Screen/color DEO
355
-	.knob/x PEK2 8+ .Screen/x DEO2 ;knob_icns 8+ .Screen/addr DEO2 #21 .Screen/color DEO
356
-	.knob/y PEK2 8+ .Screen/y DEO2 ;knob_icns #0018 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO
357
-	.knob/x PEK2 .Screen/x DEO2 ;knob_icns #0010 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO
440
+	.knob/y PEK2 .Screen/y DEO2 ;knob-icns .Screen/addr DEO2 #21 .Screen/color DEO
441
+	.knob/x PEK2 8+ .Screen/x DEO2 ;knob-icns 8+ .Screen/addr DEO2 #21 .Screen/color DEO
442
+	.knob/y PEK2 8+ .Screen/y DEO2 ;knob-icns #0018 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO
443
+	.knob/x PEK2 .Screen/x DEO2 ;knob-icns #0010 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO
358 444
 	.knob/x PEK2 #00 #00 .knob/value PEK ;knob-offsetx ADD2 LDA ADD2 .Screen/x DEO2
359 445
 	.knob/y PEK2 #00 #00 .knob/value PEK ;knob-offsety ADD2 LDA ADD2 .Screen/y DEO2
360
-	;knob_icns #0020 ADD2 .Screen/addr DEO2
446
+	;knob-icns #0020 ADD2 .Screen/addr DEO2
361 447
 	#25 .Screen/color DEO
362 448
 	.knob/x PEK2 #0004 ADD2 .Screen/x DEO2
363 449
 	.knob/y PEK2 #0010 ADD2 .Screen/y DEO2
... ...
@@ -368,24 +454,28 @@ RTN
368 454
 
369 455
 @draw-switch ( x* y* value -- )
370 456
 	
371
-	POP ( TODO: use value for toggle position )
457
+	STH 
458
+
372 459
 	.Screen/y DEO2
373 460
 	.Screen/x DEO2
374
-	;switch .Screen/addr DEO2
375
-	#21 .Screen/color DEO
461
+
462
+	DUPr STHr #20 MUL #00 SWP ;switch-icns ADD2 ( keep in stack )
463
+
464
+	DUP2 .Screen/addr DEO2
465
+	#21 DUPr STHr ADD .Screen/color DEO
376 466
 
377 467
 	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
378
-	;switch #0008 ADD2 .Screen/addr DEO2
379
-	#21 .Screen/color DEO
468
+	DUP2 #0008 ADD2 .Screen/addr DEO2
469
+	#21 DUPr STHr ADD .Screen/color DEO
380 470
 
381 471
 	.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
382 472
 	.Screen/x DEI2 #0008 SUB2 .Screen/x DEO2
383
-	;switch #0010 ADD2 .Screen/addr DEO2
384
-	#21 .Screen/color DEO
473
+	DUP2 #0010 ADD2 .Screen/addr DEO2
474
+	#21 DUPr STHr ADD .Screen/color DEO
385 475
 
386 476
 	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
387
-	;switch #0018 ADD2 .Screen/addr DEO2
388
-	#21 .Screen/color DEO
477
+	#0018 ADD2 .Screen/addr DEO2
478
+	#21 STHr ADD .Screen/color DEO
389 479
 
390 480
 RTN
391 481
 
... ...
@@ -417,8 +507,8 @@ RTN
417 507
 
418 508
 	DUPr STHr 
419 509
 
420
-	DUP #04 DIV SWP #04 MOD TOS PAD-WIDTH MUL2 ( center ) .padview/x1 PEK2 ADD2 
421
-	ROT TOS PAD-HEIGHT MUL2 ( center ) .padview/y1 PEK2 ADD2 
510
+	DUP #04 DIV SWP #04 MOD TOS PAD-WIDTH MUL2 ( center ) .pad-view/x1 PEK2 ADD2 
511
+	ROT TOS PAD-HEIGHT MUL2 ( center ) .pad-view/y1 PEK2 ADD2 
422 512
 
423 513
 	( draw outline )
424 514
 	OVR2 OVR2 
... ...
@@ -433,16 +523,75 @@ RTN
433 523
 	;pad-name DUPr STHr TOS #0005 MUL2 ADD2 
434 524
 	;draw-label-left JSR2
435 525
 
526
+	( draw note )
527
+	OVR2 #0002 ADD2 .Screen/x DEO2
528
+	DUP2 #0014 ADD2 .Screen/y DEO2
529
+	OVRr STHr TOS ;pad-pitch ADD2 LDA
530
+	#0c MOD TOS #0008 MUL2 ;font-num-uc #0030 ADD2 ADD2 .Screen/addr DEO2
531
+	#21 .Screen/color DEO
532
+
533
+	( draw octave )
534
+	OVR2 #000a ADD2 .Screen/x DEO2
535
+	DUP2 #0014 ADD2 .Screen/y DEO2
536
+	OVRr STHr TOS ;pad-pitch ADD2 LDA
537
+	#0c DIV TOS #0008 MUL2 ;font-num-uc #0030 ADD2 ADD2 .Screen/addr DEO2
538
+	#21 .Screen/color DEO
539
+
436 540
 	POP2 POP2
437 541
 
438 542
 	POPr POPr
439 543
 
440 544
 RTN
441 545
 
546
+@draw-octave ( -- )
547
+	
548
+	.oct-view/x1 PEK2 .oct-view/y1 PEK2
549
+
550
+	OVR2 OVR2 ;keys-left-icns #21 .last-note PEK #00 EQU ADD ;draw-key JSR2
551
+	OVR2 8+ OVR2 ;keys-middle-icns #21 .last-note PEK #01 EQU ADD ;draw-key JSR2
552
+	OVR2 #0010 ADD2 OVR2 ;keys-right-icns #21 .last-note PEK #02 EQU ADD ;draw-key JSR2
553
+	OVR2 #0018 ADD2 OVR2 ;keys-left-icns #21 .last-note PEK #03 EQU ADD ;draw-key JSR2
554
+	OVR2 #0020 ADD2 OVR2 ;keys-middle-icns #21 .last-note PEK #04 EQU ADD ;draw-key JSR2
555
+	OVR2 #0028 ADD2 OVR2 ;keys-middle-icns #21 .last-note PEK #05 EQU ADD ;draw-key JSR2
556
+	SWP2 #0030 ADD2 SWP2 ;keys-right-icns #21 .last-note PEK #06 EQU ADD ;draw-key JSR2
557
+
558
+	.oct-view/x1 PEK2 #0040 ADD2 .Screen/x DEO2
559
+
560
+	;arrow-icns .Screen/addr DEO2
561
+	.oct-view/y1 PEK2 .Screen/y DEO2
562
+	#21 .Screen/color DEO
563
+
564
+	;arrow-icns 8+ .Screen/addr DEO2
565
+	.oct-view/y1 PEK2 #0010 ADD2 .Screen/y DEO2
566
+	#21 .Screen/color DEO
567
+
568
+	;font-hex .piano/octave PEK #03 ADD #00 SWP #0008 MUL2 ADD2 .Screen/addr DEO2
569
+	.oct-view/y1 PEK2 8+ .Screen/y DEO2
570
+	#23 .Screen/color DEO
571
+
572
+RTN
573
+
574
+@draw-key ( x* y* addr* color -- )
575
+		
576
+	STH
577
+	.Screen/addr DEO2 
578
+	SWP2 .Screen/x DEO2
579
+	DUP2 #0018 ADD2
580
+	&loop
581
+		( move ) OVR2 .Screen/y DEO2
582
+		( draw ) DUPr STHr .Screen/color DEO
583
+		( incr ) .Screen/addr DEI2 8+ .Screen/addr DEO2  
584
+		( incr ) SWP2 8+ SWP2
585
+		OVR2 OVR2 LTH2 ,&loop JNZ
586
+	POP2 POP2 
587
+	POPr
588
+
589
+RTN
590
+
442 591
 @draw-cursor ( -- )
443 592
 	
444 593
 	( clear last cursor )
445
-	;clear .Screen/addr DEO2 
594
+	#fff8 .Screen/addr DEO2 
446 595
 	.pointer/x PEK2 .Screen/x DEO2 
447 596
 	.pointer/y PEK2 .Screen/y DEO2 
448 597
 	#30 .Screen/color DEO
... ...
@@ -450,7 +599,7 @@ RTN
450 599
 	.Mouse/x DEI2 .pointer/x POK2 
451 600
 	.Mouse/y DEI2 .pointer/y POK2
452 601
 	( draw new cursor )
453
-	;cursor .Screen/addr DEO2 
602
+	;cursor-icn .Screen/addr DEO2 
454 603
 	.pointer/x PEK2 .Screen/x DEO2 
455 604
 	.pointer/y PEK2 .Screen/y DEO2 
456 605
 	( colorize on state )
... ...
@@ -533,31 +682,68 @@ RTN
533 682
 	"PAD1 $1 "SYN1 $1 "SYN2 $1 "CYM1 $1 ( short )
534 683
 	"HHAT $1 "OHAT $1 "CHAT $1 "RIDE $1
535 684
 	"SID1 $1 "SNR1 $1 "SNR2 $1 "SID2 $1 ( long )
536
-	"BDR1 $1 "KCK1 $1 "KCK2 $1 "BDR2 $1 ]
685
+	"BDR1 $1 "KCK1 $1 "KCK2 $1 "SUB1 $1 ]
537 686
 
538 687
 @pad-addr [
539
-	4000 4400 4800 4c00
688
+	5000 5400 5800 5c00
540 689
 	5000 5800 6000 6800
541 690
 	7000 7800 8000 8800
542 691
 	9000 b000 d000 f000 $2 ]
543 692
 
544
-@pad-length [
545
-	0800 0800 0800 0800
546
-	0800 0800 0800 0800
547
-	0800 0800 0800 0800
548
-	0800 0800 0800 0800 $2 ]
693
+@pad-pitch [
694
+	30 30 30 30
695
+	30 30 30 30
696
+	30 30 30 30
697
+	30 30 30 30 ]
549 698
 
550 699
 @pad-path [
551
-	"projects/sounds/pad1.ss8 $1 "projects/sounds/syn1.ss8 $1
552
-	"projects/sounds/syn2.ss8 $1 "projects/sounds/cym1.ss8 $1
553
-	"projects/sounds/hhat.ss8 $1 "projects/sounds/ohat.ss8 $1
554
-	"projects/sounds/chat.ss8 $1 "projects/sounds/ride.ss8 $1
555
-	"projects/sounds/sid1.ss8 $1 "projects/sounds/snr1.ss8 $1
556
-	"projects/sounds/snr2.ss8 $1 "projects/sounds/sid2.ss8 $1
557
-	"projects/sounds/bdr1.ss8 $1 "projects/sounds/kck1.ss8 $1
558
-	"projects/sounds/kck2.ss8 $1 "projects/sounds/bdr2.ss8 $1 ]
559
-
560
-@knob_icns [
700
+	"projects/sounds/pad1.pcm $1 "projects/sounds/syn1.pcm $1
701
+	"projects/sounds/syn2.pcm $1 "projects/sounds/cym1.pcm $1
702
+	"projects/sounds/hhat.pcm $1 "projects/sounds/ohat.pcm $1
703
+	"projects/sounds/chat.pcm $1 "projects/sounds/ride.pcm $1
704
+	"projects/sounds/sid1.pcm $1 "projects/sounds/snr1.pcm $1
705
+	"projects/sounds/snr2.pcm $1 "projects/sounds/sid2.pcm $1
706
+	"projects/sounds/bdr1.pcm $1 "projects/sounds/kck1.pcm $1
707
+	"projects/sounds/kck2.pcm $1 "projects/sounds/sub1.pcm $1 ]
708
+
709
+@notes [
710
+	3c 3e 40 41 43 45 47
711
+	48 4a 4c 4d 4f 51 53 ]
712
+
713
+@cursor-icn [ 
714
+	80c0 e0f0 f8e0 1000 ]
715
+
716
+@keys-left-icns [
717
+	7c7c 7c7c 7c7c 7c7c
718
+	7c7c 7c7c 7c7c 7e7f
719
+	7f7f 7f7f 7f7f 3e00 ]
720
+
721
+@keys-middle-icns [
722
+	1c1c 1c1c 1c1c 1c1c
723
+	1c1c 1c1c 1c1c 3e7f
724
+	7f7f 7f7f 7f7f 3e00 ]
725
+
726
+@keys-right-icns [
727
+	1f1f 1f1f 1f1f 1f1f
728
+	1f1f 1f1f 1f1f 3f7f
729
+	7f7f 7f7f 7f7f 3e00 ]
730
+
731
+@arrow-icns [
732
+	0010 387c fe10 1000
733
+	0010 1010 fe7c 3810 ]
734
+
735
+@switch-icns [
736
+	001f 2040 4040 4040
737
+	00f8 0402 0202 0202
738
+	404f 5f5f 4f20 1f00
739
+	02f2 fafa f204 f800
740
+	001f 204f 5f5f 4f40
741
+	00f8 04f2 fafa f202
742
+	4040 4040 4020 1f00
743
+	0202 0202 0204 f800
744
+]
745
+
746
+@knob-icns [
561 747
 	0003 0c10 2020 4040
562 748
 	00c0 3008 0404 0202
563 749
 	4040 2020 100c 0300
... ...
@@ -572,12 +758,6 @@ RTN
572 758
 	07 06 05 03 02 01 00 00
573 759
 	00 00 01 02 03 05 06 07 ]
574 760
 
575
-@clear  [ 
576
-	0000 0000 0000 0000 ]
577
-
578
-@cursor [ 
579
-	80c0 e0f0 f8e0 1000 ]
580
-
581 761
 @meter [
582 762
 	0000 0000 0000 0000
583 763
 	0000 0000 0000 0070 
... ...
@@ -596,17 +776,6 @@ RTN
596 776
 	707e 7e7e 7e7e 7e7e
597 777
 	7e7e 7e7e 7e7e 7e7e ]
598 778
 
599
-@switch [
600
-	001f 204f 5f5f 4f40
601
-	00f8 04f2 fafa f202
602
-	4040 4040 4020 1f00
603
-	0202 0202 0204 f800
604
-	0000 0000 0000 0000
605
-	0000 0000 0000 0000
606
-	0000 0000 0000 0000
607
-	0000 0000 0000 0000
608
-]
609
-
610 779
 @font-hex ( 0-F )
611 780
 [
612 781
 	007c 8282 8282 827c 0030 1010 1010 1010
613 782
new file mode 100644
614 783
Binary files /dev/null and b/projects/sounds/bdr1.pcm differ
615 784
new file mode 100644
616 785
Binary files /dev/null and b/projects/sounds/bdr2.pcm differ
617 786
new file mode 100644
618 787
Binary files /dev/null and b/projects/sounds/chat.pcm differ
619 788
new file mode 100644
620 789
Binary files /dev/null and b/projects/sounds/cym1.pcm differ
621 790
new file mode 100644
622 791
new file mode 100644
623 792
Binary files /dev/null and b/projects/sounds/kck1.pcm differ
624 793
new file mode 100644
625 794
Binary files /dev/null and b/projects/sounds/kck2.pcm differ
626 795
new file mode 100644
627 796
Binary files /dev/null and b/projects/sounds/ohat.pcm differ
628 797
new file mode 100644
629 798
Binary files /dev/null and b/projects/sounds/pad1.pcm differ
630 799
new file mode 100644
631 800
Binary files /dev/null and b/projects/sounds/ride.pcm differ
632 801
new file mode 100644
633 802
Binary files /dev/null and b/projects/sounds/sid1.pcm differ
634 803
new file mode 100644
635 804
Binary files /dev/null and b/projects/sounds/sid2.pcm differ
636 805
new file mode 100644
637 806
Binary files /dev/null and b/projects/sounds/sin.pcm differ
638 807
new file mode 100644
639 808
Binary files /dev/null and b/projects/sounds/snr1.pcm differ
640 809
new file mode 100644
641 810
Binary files /dev/null and b/projects/sounds/snr2.pcm differ
642 811
new file mode 100644
... ...
@@ -0,0 +1 @@
1
+��������������������������������������������������������������������������������������������������������������������������������
0 2
\ No newline at end of file
1 3
new file mode 100644
2 4
Binary files /dev/null and b/projects/sounds/sub1.pcm differ
3 5
new file mode 100644
4 6
Binary files /dev/null and b/projects/sounds/syn1.pcm differ
5 7
new file mode 100644
6 8
Binary files /dev/null and b/projects/sounds/syn2.pcm differ
7 9
new file mode 100644
8 10
Binary files /dev/null and b/projects/sounds/tri.pcm differ