Browse code

Added keyboard controls to dev.audio

neauoire authored on 08/04/2021 04:01:36
Showing 2 changed files
... ...
@@ -7,7 +7,6 @@
7 7
 %MOD { DUP2 DIV MUL SUB }
8 8
 %TRACK { ,track.ch1 #00 ~track.active #0020 MUL2 ADD2 }
9 9
 %SOUND { STH #00 =Audio.value STHr #00 =Audio.delay }
10
-%SOUND2 { =Audio.value =Audio.delay }
11 10
 %SOUND_FINISH { #00 =Audio.finish }
12 11
 
13 12
 ( variables )
... ...
@@ -30,19 +29,21 @@
30 29
 |0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
31 30
 |0110 ;Console { pad 8 char 1 byte 1 short 2 }
32 31
 |0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 color 1 }
33
-|0130 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
34
-|0140 ;Controller { buttons 1 }
35
-|0150 ;Keys { key 1 }
32
+|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
33
+|0140 ;Controller { vector 2 button 1 }
34
+|0150 ;Keys { vector 2 key 1 }
36 35
 |0160 ;Mouse  { vector 2 x 2 y 2 state 1 chord 1 }
37 36
 |0170 ;File { pad 8 name 2 length 2 load 2 save 2 }
38 37
 |0180 ;Audio { wave 2 envelope 2 pad 4 volume 1 pitch 1 play 1 value 2 delay 2 finish 1 }
39 38
 
40 39
 ( vectors )
41 40
 
42
-|0200 @RESET
41
+|0200
43 42
 
44 43
 	( theme ) #e0fa =System.r #30fa =System.g #30fa =System.b
45
-	( vectors ) ,FRAME =Screen.vector
44
+	( vectors ) ,on-screen =Screen.vector
45
+	( vectors ) ,on-mouse =Mouse.vector
46
+	( vectors ) ,on-key =Keys.vector
46 47
 
47 48
 	~Screen.width #0002 DIV2 DUP2 #0080 SUB2 =trkframe.x1
48 49
 	 #0080 ADD2 =trkframe.x2
... ...
@@ -61,19 +62,25 @@
61 62
 	#10 =adsr.ch2a #50 =adsr.ch2d #90 =adsr.ch2s #d0 =adsr.ch2r #88 =volume.ch2
62 63
 	#20 =adsr.ch3a #60 =adsr.ch3d #a0 =adsr.ch3s #e0 =adsr.ch3r #88 =volume.ch3
63 64
 
65
+	~volume.ch3 =Audio.volume
66
+
64 67
 	,draw-timeline JSR2
65 68
 	,draw-controls JSR2
66 69
 	,draw-channels JSR2
67 70
 
68 71
 BRK
69 72
 
70
-@FRAME
73
+@on-screen ( -> )
71 74
 	
72
-	,draw-cursor JSR2
73 75
 	,move-head JSR2
74 76
 	~head.pos #08 MOD #00 NEQ ^$skip JNZ
75 77
 		,bang JSR2
76 78
 	$skip
79
+
80
+BRK
81
+
82
+@on-mouse ( -> )
83
+
77 84
 	~Mouse.state #00 EQU ,$click-end JNZ2
78 85
 		~Mouse.x ~trkframe.x1 GTH2 ~Mouse.x ~trkframe.x2 LTH2 #0101 EQU2
79 86
 		~Mouse.y ~trkframe.y1 GTH2 ~Mouse.y ~trkframe.y2 LTH2 #0101 EQU2
... ...
@@ -86,8 +93,41 @@ BRK
86 93
 		#0101 EQU2 ,touch-ctl JNZ2	
87 94
 	$click-end
88 95
 
96
+	,draw-cursor JSR2
97
+
89 98
 BRK
90 99
 
100
+@on-key ( -> )
101
+
102
+	~Keys.key 
103
+	DUP #61 NEQ ^$no-c JNZ
104
+		,notes PEK2 ,play JSR2 $no-c
105
+	DUP #73 NEQ ^$no-d JNZ
106
+		,notes #0001 ADD2 PEK2 ,play JSR2 $no-d
107
+	DUP #64 NEQ ^$no-e JNZ
108
+		,notes #0002 ADD2 PEK2 ,play JSR2 $no-e
109
+	DUP #66 NEQ ^$no-f JNZ
110
+		,notes #0003 ADD2 PEK2 ,play JSR2 $no-f
111
+	DUP #67 NEQ ^$no-g JNZ
112
+		,notes #0004 ADD2 PEK2 ,play JSR2 $no-g
113
+	DUP #68 NEQ ^$no-a JNZ
114
+		,notes #0005 ADD2 PEK2 ,play JSR2 $no-a
115
+	DUP #6a NEQ ^$no-b JNZ
116
+		,notes #0006 ADD2 PEK2 ,play JSR2 $no-b
117
+	DUP #6b NEQ ^$no-c2 JNZ
118
+		,notes #0007 ADD2 PEK2 ,play JSR2 $no-c2
119
+	POP
120
+
121
+BRK
122
+
123
+@play ( pitch -- )
124
+
125
+	=Audio.pitch
126
+	,triangle-wave =Audio.wave
127
+	~track.active =Audio.play
128
+
129
+RTN
130
+
91 131
 @touch-trk ( -- )
92 132
 	
93 133
 	,clear-notes JSR2
... ...
@@ -22,7 +22,6 @@ typedef unsigned int Uint32;
22 22
 #define VER 32
23 23
 #define PAD 2
24 24
 #define RES (HOR * VER * 16)
25
-
26 25
 #define WIDTH (8 * HOR + 8 * PAD * 2)
27 26
 #define HEIGHT (8 * VER + 8 * PAD * 2)
28 27