Browse code

(piano.tal) Faster waveform drawing

Devine Lu Linvega authored on 27/02/2023 04:39:05
Showing 1 changed files
... ...
@@ -146,7 +146,8 @@ BRK
146 146
 
147 147
 @on-touch-wave-view ( -> )
148 148
 
149
-	.Mouse/x DEI2 .wave-view/x1 LDZ2 SUB2 .Audio0/length DEO2
149
+	.Mouse/x DEI2 .wave-view/x1 LDZ2 SUB2
150
+		( min ) #0010 GTH2k JMP SWP2 POP2 .Audio0/length DEO2
150 151
 	draw-wave
151 152
 
152 153
 BRK
... ...
@@ -286,20 +287,38 @@ JMP2r
286 287
 
287 288
 @draw-wave ( -- )
288 289
 
289
-	( #01 draw-wave-length )
290
-	( dotted zero )
291
-
290
+	( background )
291
+	.wave-view/x1 LDZ2 .Screen/x DEO2
292
+	.wave-view/y1 LDZ2 .Screen/y DEO2
293
+	;fill-icn .Screen/addr DEO2
294
+	[ LIT2 75 -Screen/auto ] DEO
295
+	#e0 &lbg
296
+		;dotted-icn .Screen/addr DEO2
297
+		[ LIT2 03 -Screen/sprite ] DEO
298
+		INC DUP ?&lbg
299
+	POP
292 300
 	.wave-view/x1 LDZ2 .Screen/x DEO2
293 301
 
294 302
 	( waveform )
295 303
 	[ LIT2 01 -Screen/auto ] DEO
296 304
 	;sin-pcm/end ;sin-pcm
297 305
 	&loop
298
-		LDAk #00 SWP #02 SFT2 .wave-view/y1 LDZ2 ADD2 .Screen/y DEO2
299
-		( draw ) DUP2 ;sin-pcm SUB2 NIP .Audio0/length DEI2 NIP GTH INC INC .Screen/pixel DEO
306
+
307
+		DUP2 ;sin-pcm SUB2 .Audio0/length DEI2 DIV2k MUL2 SUB2 ;sin-pcm ADD2 LDA
308
+
309
+
310
+		 #00 SWP #02 SFT2 .wave-view/y1 LDZ2 ADD2 .Screen/y DEO2
311
+		( draw ) DUP2 ;sin-pcm SUB2 NIP .Audio0/length DEI2 NIP #01 SUB GTH INC .Screen/pixel DEO
300 312
 		INC2 GTH2k ?&loop
301 313
 	POP2 POP2
302 314
 
315
+	( length line )
316
+	.wave-view/x1 LDZ2 .Audio0/length DEI2 #0001 SUB2 ADD2 .Screen/x DEO2
317
+	.wave-view/y1 LDZ2 .Screen/y DEO2
318
+	;line-icn .Screen/addr DEO2
319
+	[ LIT2 71 -Screen/auto ] DEO
320
+	[ LIT2 05 -Screen/sprite ] DEO
321
+
303 322
 	( range )
304 323
 	#01 .Screen/auto DEO
305 324
 	.wave-view/x1 LDZ2 .Screen/x DEO2
... ...
@@ -311,31 +330,6 @@ JMP2r
311 330
 
312 331
 JMP2r
313 332
 
314
-@draw-wave-length ( color -- )
315
-
316
-	( clear background )
317
-	#f2 .Screen/auto DEO
318
-	.wave-view/x1 LDZ2 DUP2 .Screen/x DEO2
319
-	.wave-view/y1 LDZ2 DUP2 .Screen/y DEO2
320
-	,&wipe JSR
321
-	.Screen/y DEO2
322
-	#0080 ADD2 .Screen/x DEO2
323
-	,&wipe JSR
324
-	#00 .Screen/auto DEO
325
-
326
-	STH
327
-	.wave-view/x1 LDZ2 .Audio0/length DEI2 ADD2 .Screen/x DEO2
328
-	.wave-view/y1 LDZ2 DUP2 #0020 ADD2 SWP2
329
-	&loop
330
-		DUP2 .Screen/y DEO2
331
-		( draw ) STHkr .Screen/pixel DEO
332
-		INC2 GTH2k ?&loop
333
-	POP2 POP2
334
-	POPr
335
-
336
-JMP2r
337
-	&wipe #00 .Screen/sprite DEOk DEOk DEOk DEO JMP2r
338
-
339 333
 @draw-knob ( x* y* value -- )
340 334
 
341 335
 	STH
... ...
@@ -396,6 +390,20 @@ JMP2r
396 390
 
397 391
 @|assets )
398 392
 
393
+@dotted-icn [
394
+	0000 0000 0000 0000
395
+	0000 0000 0000 0000
396
+	0000 0000 0000 0000
397
+	0000 0000 0000 0000
398
+	aa00 0000 0000 0000
399
+	0000 0000 0000 0000
400
+	0000 0000 0000 0000
401
+	0000 0000 0000 0000 ]
402
+@line-icn [
403
+	8080 8080 8080 8080
404
+	]
405
+@fill-icn [
406
+	ffff ffff ffff ffff ]
399 407
 @cursor-icn [
400 408
 	80c0 e0f0 f8e0 1000 ]
401 409
 @arrow-icns [