| ... | ... |
@@ -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 ,¬e-on JNZ BRK ¬e-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 |
| 642 | 811 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1 @@ |
| 1 |
+�������������������������������������������������������������������������������������������������������������������������������� |
|
| 0 | 2 |
\ No newline at end of file |