From 5ae48f84b301e6055930be598dc694412e2a3e90 Mon Sep 17 00:00:00 2001 From: neauoire Date: Mon, 3 May 2021 15:13:12 -0700 Subject: [PATCH] Progress on drum rack --- README.md | 4 + etc/utos/build.sh | 16 ++ etc/utos/utos.c | 39 +++ projects/demos/drum-rack.usm | 535 +++++++++++++++++++++++------------ projects/sounds/bdr1.pcm | Bin 0 -> 8192 bytes projects/sounds/bdr2.pcm | Bin 0 -> 8192 bytes projects/sounds/chat.pcm | Bin 0 -> 8192 bytes projects/sounds/cym1.pcm | Bin 0 -> 8192 bytes projects/sounds/hhat.pcm | 0 projects/sounds/kck1.pcm | Bin 0 -> 8192 bytes projects/sounds/kck2.pcm | Bin 0 -> 8192 bytes projects/sounds/ohat.pcm | Bin 0 -> 4096 bytes projects/sounds/pad1.pcm | Bin 0 -> 4096 bytes projects/sounds/ride.pcm | Bin 0 -> 8192 bytes projects/sounds/sid1.pcm | Bin 0 -> 8192 bytes projects/sounds/sid2.pcm | Bin 0 -> 8192 bytes projects/sounds/sin.pcm | Bin 0 -> 256 bytes projects/sounds/snr1.pcm | Bin 0 -> 4096 bytes projects/sounds/snr2.pcm | Bin 0 -> 4096 bytes projects/sounds/sqr.pcm | 1 + projects/sounds/sub1.pcm | Bin 0 -> 8192 bytes projects/sounds/syn1.pcm | Bin 0 -> 8192 bytes projects/sounds/syn2.pcm | Bin 0 -> 8192 bytes projects/sounds/tri.pcm | Bin 0 -> 256 bytes 24 files changed, 412 insertions(+), 183 deletions(-) create mode 100755 etc/utos/build.sh create mode 100644 etc/utos/utos.c create mode 100644 projects/sounds/bdr1.pcm create mode 100644 projects/sounds/bdr2.pcm create mode 100644 projects/sounds/chat.pcm create mode 100644 projects/sounds/cym1.pcm create mode 100644 projects/sounds/hhat.pcm create mode 100644 projects/sounds/kck1.pcm create mode 100644 projects/sounds/kck2.pcm create mode 100644 projects/sounds/ohat.pcm create mode 100644 projects/sounds/pad1.pcm create mode 100644 projects/sounds/ride.pcm create mode 100644 projects/sounds/sid1.pcm create mode 100644 projects/sounds/sid2.pcm create mode 100644 projects/sounds/sin.pcm create mode 100644 projects/sounds/snr1.pcm create mode 100644 projects/sounds/snr2.pcm create mode 100644 projects/sounds/sqr.pcm create mode 100644 projects/sounds/sub1.pcm create mode 100644 projects/sounds/syn1.pcm create mode 100644 projects/sounds/syn2.pcm create mode 100644 projects/sounds/tri.pcm diff --git a/README.md b/README.md index 43ae2f4..bc248c8 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,10 @@ RTN - `#a1f3` `#a14d` `#a16c`, grey-pink/teal - `#8c4b` `#884b` `#e8bb`, commodore64 +## Convert audio for Unx + +```sox sub202_C.wav -b 8 -c 1 -e signed output.raw``` + ## Refs https://code.9front.org/hg/plan9front/file/a7f9946e238f/sys/src/games/nes/cpu.c diff --git a/etc/utos/build.sh b/etc/utos/build.sh new file mode 100755 index 0000000..b7a4cb9 --- /dev/null +++ b/etc/utos/build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +echo "Formatting.." +clang-format -i utos.c + +echo "Cleaning.." +rm -f ../../bin/utos + +echo "Building.." +mkdir -p ../../bin +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 + +echo "Running.." +../../bin/utos ../../projects/sounds/pad1.ss8 ../../projects/sounds/pad1.pcm + +echo "Done." diff --git a/etc/utos/utos.c b/etc/utos/utos.c new file mode 100644 index 0000000..6948a72 --- /dev/null +++ b/etc/utos/utos.c @@ -0,0 +1,39 @@ +#include +#include + +/* +Copyright (c) 2020 Devine Lu Linvega + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE. +*/ + +typedef unsigned char Uint8; +typedef signed char Sint8; +typedef unsigned short Uint16; +typedef signed short Sint16; + +int +main(int argc, char **argv) +{ + FILE *f; + Uint8 *buffer; + Uint16 filelen, i; + if(argc < 2 || !(f = fopen(argv[1], "rb"))) + return 1; + fseek(f, 0, SEEK_END); + filelen = ftell(f); + rewind(f); + buffer = (Uint8 *)malloc(filelen * sizeof(Uint8)); + fread(buffer, filelen, 1, f); + fclose(f); + for(i = 0; i < filelen; ++i) + buffer[i] += 0x80; + printf("\n\n"); + fwrite(buffer, filelen, 1, fopen(argv[2], "wb")); + return 0; +} diff --git a/projects/demos/drum-rack.usm b/projects/demos/drum-rack.usm index 620ceec..7600bc1 100644 --- a/projects/demos/drum-rack.usm +++ b/projects/demos/drum-rack.usm @@ -1,4 +1,11 @@ -( a blank file ) +( drum rack + + TODO + - Change pitch of sample + - Draw pad pitch on pad + - When selecting a pad, should highlight note in octave +) + %RTN { JMP2r } %8+ { #0008 ADD2 } @@ -35,6 +42,9 @@ |0000 +@piano [ &last $1 &octave $1 ] + +@last-note $1 @last $1 @color $1 @center [ &x $2 &y $2 ] @@ -44,9 +54,10 @@ @frame [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] @label [ &x $2 &y $2 &color $1 &addr $2 ] @pos [ &x $2 &y $2 ] -@padview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] -@mixview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] -@wavview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] +@pad-view [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] +@mix-view [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] +@oct-view [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] +@wav-view [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] @state [ ( addr length ) $4 $4 $4 $4 @@ -55,14 +66,16 @@ $4 $4 $4 $4 ] +@modes [ $1 $1 $1 $1 ] ( single/repeat ) + ( program ) |0100 ( -> ) ( theme ) #0aff .System/r DEO2 - #0af2 .System/g DEO2 - #0af3 .System/b DEO2 + #0a2f .System/g DEO2 + #0a3f .System/b DEO2 ( vectors ) ;on-control .Controller/vector DEO2 @@ -71,10 +84,18 @@ ;on-midi .Midi/vector DEO2 ( store location/length ) - #88 .Audio0/volume DEO #011c .Audio0/adsr DEO2 - #88 .Audio1/volume DEO #011c .Audio1/adsr DEO2 - #88 .Audio2/volume DEO #011c .Audio2/adsr DEO2 - #88 .Audio3/volume DEO #111c .Audio3/adsr DEO2 + #88 .Audio0/volume DEO #023c .Audio0/adsr DEO2 + #7a .Audio1/volume DEO #1334 .Audio1/adsr DEO2 + #a7 .Audio2/volume DEO #0414 .Audio2/adsr DEO2 + #88 .Audio3/volume DEO #022c .Audio3/adsr DEO2 + + #0400 .Audio0/length DEO2 + #0800 .Audio1/length DEO2 + #0800 .Audio2/length DEO2 + #1000 .Audio3/length DEO2 + + #01 .modes POK + #03 .piano/octave POK ;load-samples JSR2 @@ -86,40 +107,47 @@ .center/x PEK2 PAD-WIDTH #0003 MUL2 SUB2 #0010 SUB2 .frame/x1 POK2 .center/y PEK2 #0050 SUB2 .frame/y1 POK2 .center/x PEK2 PAD-WIDTH #0003 MUL2 ADD2 #0010 ADD2 .frame/x2 POK2 - .frame/y1 PEK2 PAD-HEIGHT #0004 MUL2 ADD2 #0030 ADD2 .frame/y2 POK2 + .frame/y1 PEK2 PAD-HEIGHT #0004 MUL2 ADD2 #0028 ADD2 .frame/y2 POK2 - ( place padview ) - .frame/x1 PEK2 .padview/x1 POK2 - .frame/y1 PEK2 .padview/y1 POK2 - .padview/x1 PEK2 #0004 PAD-WIDTH MUL2 ADD2 .padview/x2 POK2 - .padview/y1 PEK2 #0004 PAD-HEIGHT MUL2 ADD2 .padview/y2 POK2 + ( place pad-view ) + .frame/x1 PEK2 .pad-view/x1 POK2 + .frame/y1 PEK2 .pad-view/y1 POK2 + .pad-view/x1 PEK2 #0004 PAD-WIDTH MUL2 ADD2 .pad-view/x2 POK2 + .pad-view/y1 PEK2 #0004 PAD-HEIGHT MUL2 ADD2 .pad-view/y2 POK2 - ( place mixview ) - .padview/x2 PEK2 .mixview/x1 POK2 - .padview/y1 PEK2 .mixview/y1 POK2 - .mixview/x1 PEK2 #0080 ADD2 .mixview/x2 POK2 - .padview/y2 PEK2 .mixview/y2 POK2 + ( place mix-view ) + .pad-view/x2 PEK2 #0006 ADD2 .mix-view/x1 POK2 + .pad-view/y1 PEK2 .mix-view/y1 POK2 + .mix-view/x1 PEK2 #007a ADD2 .mix-view/x2 POK2 + .pad-view/y2 PEK2 .mix-view/y2 POK2 - ( place wavview ) - .frame/x1 PEK2 .wavview/x1 POK2 - .mixview/y2 PEK2 #0008 ADD2 .wavview/y1 POK2 - .frame/x2 PEK2 .wavview/x2 POK2 - .wavview/y1 PEK2 #0020 ADD2 .wavview/y2 POK2 + ( place oct-view ) + .frame/x1 PEK2 .oct-view/x1 POK2 + .mix-view/y2 PEK2 #0004 ADD2 .oct-view/y1 POK2 + .oct-view/x1 PEK2 #0050 ADD2 .oct-view/x2 POK2 + .oct-view/y1 PEK2 #0018 ADD2 .oct-view/y2 POK2 + + ( place wav-view ) + .oct-view/x2 PEK2 .wav-view/x1 POK2 + .mix-view/y2 PEK2 #0004 ADD2 .wav-view/y1 POK2 + .frame/x2 PEK2 .wav-view/x2 POK2 + .wav-view/y1 PEK2 #0020 ADD2 .wav-view/y2 POK2 ;draw-pads JSR2 ;draw-mixers JSR2 + ;draw-octave JSR2 - .frame/x1 PEK2 #0004 SUB2 - .frame/y1 PEK2 #0004 SUB2 - .frame/x2 PEK2 #0002 ADD2 - .frame/y2 PEK2 #0002 ADD2 + .mix-view/x1 PEK2 #0004 SUB2 + .mix-view/y1 PEK2 #0000 SUB2 + .mix-view/x2 PEK2 #0002 SUB2 + .mix-view/y2 PEK2 #0002 SUB2 #01 ;line-rect JSR2 - .mixview/x1 PEK2 #0002 ADD2 - .mixview/y1 PEK2 #0000 SUB2 - .mixview/x2 PEK2 #0002 SUB2 - .mixview/y2 PEK2 #0002 SUB2 + .wav-view/x1 PEK2 #0000 SUB2 + .wav-view/y1 PEK2 #0002 SUB2 + .wav-view/x2 PEK2 #0002 SUB2 + .wav-view/y2 PEK2 #0002 ADD2 #01 ;line-rect JSR2 @@ -145,9 +173,6 @@ BRK .Audio3/output DEI #04 SFT TOS #0008 MUL2 ;meter ADD2 .Screen/addr DEO2 #21 .Screen/color DEO - ( TODO: draw in mixer ) - ( TODO: draw global ) - BRK @on-mouse ( -> ) @@ -156,10 +181,18 @@ BRK .Mouse/state DEI #00 NEQ ,&on-touch JNZ BRK &on-touch - .Mouse/x DEI2 DUP2 .padview/x1 PEK2 GTH2 ROT ROT .padview/x2 PEK2 #0001 ADD2 LTH2 #0101 EQU2 - .Mouse/y DEI2 DUP2 .padview/y1 PEK2 GTH2 ROT ROT .padview/y2 PEK2 LTH2 #0101 EQU2 + .Mouse/x DEI2 DUP2 .pad-view/x1 PEK2 GTH2 ROT ROT .pad-view/x2 PEK2 #0001 ADD2 LTH2 #0101 EQU2 + .Mouse/y DEI2 DUP2 .pad-view/y1 PEK2 GTH2 ROT ROT .pad-view/y2 PEK2 LTH2 #0101 EQU2 #0101 EQU2 ;on-touch-pad JNZ2 + .Mouse/x DEI2 DUP2 .mix-view/x1 PEK2 GTH2 ROT ROT .mix-view/x2 PEK2 #0001 ADD2 LTH2 #0101 EQU2 + .Mouse/y DEI2 DUP2 .mix-view/y1 PEK2 GTH2 ROT ROT .mix-view/y2 PEK2 LTH2 #0101 EQU2 + #0101 EQU2 ;on-touch-mix JNZ2 + + .Mouse/x DEI2 DUP2 .oct-view/x1 PEK2 GTH2 ROT ROT .oct-view/x2 PEK2 #0001 ADD2 LTH2 #0101 EQU2 + .Mouse/y DEI2 DUP2 .oct-view/y1 PEK2 GTH2 ROT ROT .oct-view/y2 PEK2 LTH2 #0101 EQU2 + #0101 EQU2 ;on-touch-oct JNZ2 + BRK @on-midi ( -> ) @@ -167,7 +200,7 @@ BRK .Midi/note DEI #00 NEQ ,¬e-on JNZ BRK ¬e-on .Midi/channel DEI #90 NEQ ,&no-drum JNZ - .Midi/note DEI DUP #80 ADD SWP #10 MOD ;play-pad JSR2 + ( .Midi/note DEI DUP #80 ADD SWP #10 MOD ;play-pad JSR2 ) BRK &no-drum @@ -182,47 +215,133 @@ BRK .Controller/key DEI #00 NEQ ,&key-down JNZ BRK &key-down .Controller/key DEI - DUP #31 NEQ ,&no-0 JNZ #b0 #00 ;play-pad JSR2 &no-0 - DUP #32 NEQ ,&no-1 JNZ #b0 #01 ;play-pad JSR2 &no-1 - DUP #33 NEQ ,&no-2 JNZ #b0 #02 ;play-pad JSR2 &no-2 - DUP #34 NEQ ,&no-3 JNZ #b0 #03 ;play-pad JSR2 &no-3 - DUP #71 NEQ ,&no-4 JNZ #b0 #04 ;play-pad JSR2 &no-4 - DUP #77 NEQ ,&no-5 JNZ #b0 #05 ;play-pad JSR2 &no-5 - DUP #65 NEQ ,&no-6 JNZ #b0 #06 ;play-pad JSR2 &no-6 - DUP #72 NEQ ,&no-7 JNZ #b0 #07 ;play-pad JSR2 &no-7 - DUP #61 NEQ ,&no-8 JNZ #b0 #08 ;play-pad JSR2 &no-8 - DUP #73 NEQ ,&no-9 JNZ #b0 #09 ;play-pad JSR2 &no-9 - DUP #64 NEQ ,&no-a JNZ #b0 #0a ;play-pad JSR2 &no-a - DUP #66 NEQ ,&no-b JNZ #b0 #0b ;play-pad JSR2 &no-b - DUP #7a NEQ ,&no-c JNZ #b0 #0c ;play-pad JSR2 &no-c - DUP #78 NEQ ,&no-d JNZ #b0 #0d ;play-pad JSR2 &no-d - DUP #63 NEQ ,&no-e JNZ #b0 #0e ;play-pad JSR2 &no-e - DUP #76 NEQ ,&no-f JNZ #b0 #0f ;play-pad JSR2 &no-f + DUP #31 NEQ ,&no-0 JNZ #00 ;play-pad JSR2 &no-0 + DUP #32 NEQ ,&no-1 JNZ #01 ;play-pad JSR2 &no-1 + DUP #33 NEQ ,&no-2 JNZ #02 ;play-pad JSR2 &no-2 + DUP #34 NEQ ,&no-3 JNZ #03 ;play-pad JSR2 &no-3 + DUP #71 NEQ ,&no-4 JNZ #04 ;play-pad JSR2 &no-4 + DUP #77 NEQ ,&no-5 JNZ #05 ;play-pad JSR2 &no-5 + DUP #65 NEQ ,&no-6 JNZ #06 ;play-pad JSR2 &no-6 + DUP #72 NEQ ,&no-7 JNZ #07 ;play-pad JSR2 &no-7 + DUP #61 NEQ ,&no-8 JNZ #08 ;play-pad JSR2 &no-8 + DUP #73 NEQ ,&no-9 JNZ #09 ;play-pad JSR2 &no-9 + DUP #64 NEQ ,&no-a JNZ #0a ;play-pad JSR2 &no-a + DUP #66 NEQ ,&no-b JNZ #0b ;play-pad JSR2 &no-b + DUP #7a NEQ ,&no-c JNZ #0c ;play-pad JSR2 &no-c + DUP #78 NEQ ,&no-d JNZ #0d ;play-pad JSR2 &no-d + DUP #63 NEQ ,&no-e JNZ #0e ;play-pad JSR2 &no-e + DUP #76 NEQ ,&no-f JNZ #0f ;play-pad JSR2 &no-f POP BRK @on-touch-pad ( -> ) - ( x ) .Mouse/x DEI2 .padview/x1 PEK2 SUB2 PAD-WIDTH DIV2 SWP POP - ( y ) .Mouse/y DEI2 .padview/y1 PEK2 SUB2 PAD-HEIGHT DIV2 SWP POP #04 MUL ADD + ( x ) .Mouse/x DEI2 .pad-view/x1 PEK2 SUB2 PAD-WIDTH DIV2 SWP POP + ( y ) .Mouse/y DEI2 .pad-view/y1 PEK2 SUB2 PAD-HEIGHT DIV2 SWP POP #04 MUL ADD - DUP #b0 SWP ;play-pad JSR2 + DUP SWP ;play-pad JSR2 - DUP ;draw-editor JSR2 - DUP ;draw-waveform JSR2 + ;draw-waveform JSR2 - POP ( release ) #00 .Mouse/state DEO BRK +@on-touch-mix ( -> ) + + ( channel ) .Mouse/y DEI2 .mix-view/y1 PEK2 SUB2 PAD-HEIGHT DIV2 SWP POP STH + + ( knob ) .Mouse/x DEI2 .mix-view/x1 PEK2 SUB2 #0010 DIV2 SWP POP + + DUP #00 NEQ ,&no-a JNZ + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEI + #10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEO &no-a + DUP #01 NEQ ,&no-d JNZ + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEI + DUP #f0 AND STH #01 .Mouse/state DEI #10 EQU #0e MUL ADD ADD #0f AND STHr ADD + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEO &no-d + DUP #02 NEQ ,&no-s JNZ + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEI + #10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEO &no-s + DUP #03 NEQ ,&no-r JNZ + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEI + DUP #f0 AND STH #01 .Mouse/state DEI #10 EQU #0e MUL ADD ADD #0f AND STHr ADD + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEO &no-r + + DUP #04 NEQ ,&no-repeat JNZ + .modes [ DUPr STHr ADD ] PEK + #00 EQU + .modes [ DUPr STHr ADD ] POK &no-repeat + + DUP #05 NEQ ,&no-left JNZ + .Audio0/volume [ DUPr STHr #10 MUL ADD ] DEI + #10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD + .Audio0/volume [ DUPr STHr #10 MUL ADD ] DEO &no-left + DUP #06 NEQ ,&no-right JNZ + .Audio0/volume [ DUPr STHr #10 MUL ADD ] DEI + DUP #f0 AND STH #01 .Mouse/state DEI #10 EQU #0e MUL ADD ADD #0f AND STHr ADD + .Audio0/volume [ DUPr STHr #10 MUL ADD ] DEO &no-right + POP + + ( release ) #00 .Mouse/state DEO + + DUPr STHr ;draw-mixer JSR2 + + POPr + +BRK + +@on-touch-oct ( -> ) + + .Mouse/x DEI2 .oct-view/x1 PEK2 SUB2 8/ SWP POP #08 NEQ ,&no-mod JNZ + .Mouse/y DEI2 .oct-view/y1 PEK2 SUB2 8/ SWP POP + DUP #00 NEQ ,&no-incr JNZ + .piano/octave PEK #01 ADD .piano/octave POK &no-incr + DUP #02 NEQ ,&no-decr JNZ + .piano/octave PEK #01 SUB .piano/octave POK &no-decr + POP + ( release ) #00 .Mouse/state DEO + ;draw-octave JSR2 + BRK + &no-mod + + .Mouse/x DEI2 .oct-view/x1 PEK2 SUB2 8/ SWP POP #06 GTH ,&no-key JNZ + .Mouse/x DEI2 .oct-view/x1 PEK2 SUB2 8/ + + ( set pitch of pad ) + DUP2 ;notes ADD2 LDA .last PEK SWP .piano/octave PEK #02 SUB #0c MUL ADD ;set-pitch JSR2 + + ( record last note ) + SWP POP .last-note POK + .last PEK ;play-pad JSR2 + + ( release ) #00 .Mouse/state DEO + ;draw-octave JSR2 + &no-key + +BRK + +@set-pitch ( pad pitch -- ) + + SWP TOS ;pad-pitch ADD2 STA + +RTN + +@play ( pitch -- ) + + DUP .piano/octave PEK .modes PEK MUL ADD .Audio0/pitch DEO + +RTN + @load-samples ( -- ) #00 #10 &loop ( name ) OVR TOS #0019 MUL2 ;pad-path ADD2 .File/name DEO2 - ( length ) OVR TOS #0002 MUL2 ;pad-length ADD2 LDA2 .File/length DEO2 + ( length ) OVR #04 DIV #10 MUL .Audio0/length ADD DEI2 .File/length DEO2 ( load ) OVR TOS #0002 MUL2 ;pad-addr ADD2 LDA2 .File/load DEO2 ( incr ) SWP #01 ADD SWP DUP2 LTH ,&loop JNZ @@ -232,28 +351,19 @@ RTN @play-pad ( note pad -- ) - STH - ( unseslect last ) + ( unselect last ) .last PEK #01 ;draw-pad JSR2 - DUPr STHr .last POK - + DUP .last POK ( highlight ) - DUPr STHr #02 ;draw-pad JSR2 - - ( length ) - DUPr STHr TOS #0002 MUL2 ;pad-addr ADD2 DUP2 LDA2 SWP2 #0002 ADD2 LDA2 SWP2 SUB2 - DUPr STHr #04 DIV #10 MUL .Audio0/length ADD DEO2 - + DUP #02 ;draw-pad JSR2 ( addr ) - DUPr STHr TOS #0002 MUL2 ;pad-addr ADD2 LDA2 - DUPr STHr #04 DIV #10 MUL .Audio0/addr ADD DEO2 - + DUP TOS #0002 MUL2 ;pad-addr ADD2 LDA2 STH2 + DUP #04 DIV #10 MUL .Audio0/addr ADD STH2r ROT DEO2 ( pitch ) - DUPr STHr #04 DIV #10 MUL .Audio0/pitch ADD DEO - - DUPr STHr #04 DIV ;draw-mixer JSR2 - - POPr + DUP TOS ;pad-pitch ADD2 LDA STH + DUP #04 DIV .modes ADD PEK #00 EQU #80 MUL STH ADDr + DUP #04 DIV #10 MUL .Audio0/pitch ADD STHr SWP DEO + #04 DIV ;draw-mixer JSR2 RTN @@ -261,27 +371,27 @@ RTN #02 MUL #00 SWP ;pad-addr ADD2 LDA2 STH2 - .wavview/x1 PEK2 - .wavview/y1 PEK2 - .wavview/x2 PEK2 ++ - .wavview/y2 PEK2 + .wav-view/x1 PEK2 #0002 ADD2 + .wav-view/y1 PEK2 + .wav-view/x2 PEK2 #0002 SUB2 + .wav-view/y2 PEK2 #00 ;fill-rect JSR2 - .wavview/x1 PEK2 .Screen/x DEO2 + .wav-view/x1 PEK2 #0002 ADD2 .Screen/x DEO2 ( waveform ) #00 #ff &loop ( dotted line ) OVR #01 AND ,&no-dot JNZ - .wavview/y1 PEK2 #0010 ADD2 .Screen/y DEO2 - #03 .Screen/color DEO + .wav-view/y1 PEK2 #0010 ADD2 .Screen/y DEO2 + #01 .Screen/color DEO &no-dot OVR TOS #0010 MUL2 [ DUP2r STH2r ] ADD2 LDA #02 DIV #40 ADD DUP #07 SFT #80 MUL SUB - TOS #0004 DIV2 .wavview/y1 PEK2 ADD2 .Screen/y DEO2 + TOS #0004 DIV2 .wav-view/y1 PEK2 ADD2 .Screen/y DEO2 .Screen/x DEI2 ++ .Screen/x DEO2 - ( draw ) OVR .Audio0/length DEI2 SWP POP GTH #02 MUL #01 ADD .Screen/color DEO + ( draw ) #02 .Screen/color DEO ( incr ) SWP #01 ADD SWP DUP2 LTH ,&loop JNZ POP2 @@ -290,59 +400,35 @@ RTN RTN -@draw-editor ( pad -- ) - - ( get state ) - - .frame/y2 PEK2 #0008 ADD2 .Screen/y DEO2 - - .frame/x1 PEK2 .Screen/x DEO2 - DUP #02 MUL TOS ;pad-addr ADD2 LDA2 - ( addr ) #21 ;draw-short JSR2 - - .frame/x1 PEK2 #0028 ADD2 .Screen/x DEO2 - DUP #02 MUL TOS ;pad-length ADD2 LDA2 - ( addr ) #21 ;draw-short JSR2 - - POP - -RTN - @draw-mixer ( mixer -- ) - ;cursor .Screen/addr DEO2 - - DUP #00 SWP PAD-HEIGHT MUL2 .mixview/y1 PEK2 ADD2 #0002 ADD2 STH2 + DUP STH #00 SWP PAD-HEIGHT MUL2 .mix-view/y1 PEK2 ADD2 #0003 ADD2 ( adsr ) - .mixview/x1 PEK2 #0008 ADD2 DUP2r STH2r - .Audio0/adsr DEI #04 SFT + DUP2 .mix-view/x1 PEK2 SWP2 + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEI #04 SFT ;draw-knob JSR2 - .mixview/x1 PEK2 #0018 ADD2 DUP2r STH2r - .Audio0/adsr DEI #0f AND + DUP2 .mix-view/x1 PEK2 #0010 ADD2 SWP2 + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] DEI #0f AND ;draw-knob JSR2 - .mixview/x1 PEK2 #0028 ADD2 DUP2r STH2r - .Audio0/adsr #01 ADD DEI #04 SFT + DUP2 .mix-view/x1 PEK2 #0020 ADD2 SWP2 + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEI #04 SFT ;draw-knob JSR2 - .mixview/x1 PEK2 #0038 ADD2 DUP2r STH2r - .Audio0/adsr #01 ADD DEI #0f AND + DUP2 .mix-view/x1 PEK2 #0030 ADD2 SWP2 + .Audio0/adsr [ DUPr STHr #10 MUL ADD ] #01 ADD DEI #0f AND ;draw-knob JSR2 - - .mixview/x1 PEK2 #0048 ADD2 DUP2r STH2r - #00 ;draw-switch JSR2 - + ( once/repeat ) + DUP2 .mix-view/x1 PEK2 #0040 ADD2 SWP2 + .modes [ DUPr STHr ADD ] PEK ;draw-switch JSR2 ( volume ) - .mixview/x1 PEK2 #0058 ADD2 DUP2r STH2r - .Audio0/volume DEI #04 SFT + DUP2 .mix-view/x1 PEK2 #0050 ADD2 SWP2 + .Audio0/volume [ DUPr STHr #10 MUL ADD ] DEI #04 SFT ;draw-knob JSR2 - .mixview/x1 PEK2 #0068 ADD2 DUP2r STH2r - .Audio0/volume DEI #0f AND + DUP2 .mix-view/x1 PEK2 #0060 ADD2 SWP2 + .Audio0/volume [ DUPr STHr #10 MUL ADD ] DEI #0f AND ;draw-knob JSR2 - - - POP - POP2r - ( once/repeat interface ) + POP2 + POPr RTN @@ -351,13 +437,13 @@ RTN ( load ) .knob/value POK .knob/y POK2 .knob/x POK2 .knob/x PEK2 .Screen/x DEO2 - .knob/y PEK2 .Screen/y DEO2 ;knob_icns .Screen/addr DEO2 #21 .Screen/color DEO - .knob/x PEK2 8+ .Screen/x DEO2 ;knob_icns 8+ .Screen/addr DEO2 #21 .Screen/color DEO - .knob/y PEK2 8+ .Screen/y DEO2 ;knob_icns #0018 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO - .knob/x PEK2 .Screen/x DEO2 ;knob_icns #0010 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO + .knob/y PEK2 .Screen/y DEO2 ;knob-icns .Screen/addr DEO2 #21 .Screen/color DEO + .knob/x PEK2 8+ .Screen/x DEO2 ;knob-icns 8+ .Screen/addr DEO2 #21 .Screen/color DEO + .knob/y PEK2 8+ .Screen/y DEO2 ;knob-icns #0018 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO + .knob/x PEK2 .Screen/x DEO2 ;knob-icns #0010 ADD2 .Screen/addr DEO2 #21 .Screen/color DEO .knob/x PEK2 #00 #00 .knob/value PEK ;knob-offsetx ADD2 LDA ADD2 .Screen/x DEO2 .knob/y PEK2 #00 #00 .knob/value PEK ;knob-offsety ADD2 LDA ADD2 .Screen/y DEO2 - ;knob_icns #0020 ADD2 .Screen/addr DEO2 + ;knob-icns #0020 ADD2 .Screen/addr DEO2 #25 .Screen/color DEO .knob/x PEK2 #0004 ADD2 .Screen/x DEO2 .knob/y PEK2 #0010 ADD2 .Screen/y DEO2 @@ -368,24 +454,28 @@ RTN @draw-switch ( x* y* value -- ) - POP ( TODO: use value for toggle position ) + STH + .Screen/y DEO2 .Screen/x DEO2 - ;switch .Screen/addr DEO2 - #21 .Screen/color DEO + + DUPr STHr #20 MUL #00 SWP ;switch-icns ADD2 ( keep in stack ) + + DUP2 .Screen/addr DEO2 + #21 DUPr STHr ADD .Screen/color DEO .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 - ;switch #0008 ADD2 .Screen/addr DEO2 - #21 .Screen/color DEO + DUP2 #0008 ADD2 .Screen/addr DEO2 + #21 DUPr STHr ADD .Screen/color DEO .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2 .Screen/x DEI2 #0008 SUB2 .Screen/x DEO2 - ;switch #0010 ADD2 .Screen/addr DEO2 - #21 .Screen/color DEO + DUP2 #0010 ADD2 .Screen/addr DEO2 + #21 DUPr STHr ADD .Screen/color DEO .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 - ;switch #0018 ADD2 .Screen/addr DEO2 - #21 .Screen/color DEO + #0018 ADD2 .Screen/addr DEO2 + #21 STHr ADD .Screen/color DEO RTN @@ -417,8 +507,8 @@ RTN DUPr STHr - DUP #04 DIV SWP #04 MOD TOS PAD-WIDTH MUL2 ( center ) .padview/x1 PEK2 ADD2 - ROT TOS PAD-HEIGHT MUL2 ( center ) .padview/y1 PEK2 ADD2 + DUP #04 DIV SWP #04 MOD TOS PAD-WIDTH MUL2 ( center ) .pad-view/x1 PEK2 ADD2 + ROT TOS PAD-HEIGHT MUL2 ( center ) .pad-view/y1 PEK2 ADD2 ( draw outline ) OVR2 OVR2 @@ -433,16 +523,75 @@ RTN ;pad-name DUPr STHr TOS #0005 MUL2 ADD2 ;draw-label-left JSR2 + ( draw note ) + OVR2 #0002 ADD2 .Screen/x DEO2 + DUP2 #0014 ADD2 .Screen/y DEO2 + OVRr STHr TOS ;pad-pitch ADD2 LDA + #0c MOD TOS #0008 MUL2 ;font-num-uc #0030 ADD2 ADD2 .Screen/addr DEO2 + #21 .Screen/color DEO + + ( draw octave ) + OVR2 #000a ADD2 .Screen/x DEO2 + DUP2 #0014 ADD2 .Screen/y DEO2 + OVRr STHr TOS ;pad-pitch ADD2 LDA + #0c DIV TOS #0008 MUL2 ;font-num-uc #0030 ADD2 ADD2 .Screen/addr DEO2 + #21 .Screen/color DEO + POP2 POP2 POPr POPr RTN +@draw-octave ( -- ) + + .oct-view/x1 PEK2 .oct-view/y1 PEK2 + + OVR2 OVR2 ;keys-left-icns #21 .last-note PEK #00 EQU ADD ;draw-key JSR2 + OVR2 8+ OVR2 ;keys-middle-icns #21 .last-note PEK #01 EQU ADD ;draw-key JSR2 + OVR2 #0010 ADD2 OVR2 ;keys-right-icns #21 .last-note PEK #02 EQU ADD ;draw-key JSR2 + OVR2 #0018 ADD2 OVR2 ;keys-left-icns #21 .last-note PEK #03 EQU ADD ;draw-key JSR2 + OVR2 #0020 ADD2 OVR2 ;keys-middle-icns #21 .last-note PEK #04 EQU ADD ;draw-key JSR2 + OVR2 #0028 ADD2 OVR2 ;keys-middle-icns #21 .last-note PEK #05 EQU ADD ;draw-key JSR2 + SWP2 #0030 ADD2 SWP2 ;keys-right-icns #21 .last-note PEK #06 EQU ADD ;draw-key JSR2 + + .oct-view/x1 PEK2 #0040 ADD2 .Screen/x DEO2 + + ;arrow-icns .Screen/addr DEO2 + .oct-view/y1 PEK2 .Screen/y DEO2 + #21 .Screen/color DEO + + ;arrow-icns 8+ .Screen/addr DEO2 + .oct-view/y1 PEK2 #0010 ADD2 .Screen/y DEO2 + #21 .Screen/color DEO + + ;font-hex .piano/octave PEK #03 ADD #00 SWP #0008 MUL2 ADD2 .Screen/addr DEO2 + .oct-view/y1 PEK2 8+ .Screen/y DEO2 + #23 .Screen/color DEO + +RTN + +@draw-key ( x* y* addr* color -- ) + + STH + .Screen/addr DEO2 + SWP2 .Screen/x DEO2 + DUP2 #0018 ADD2 + &loop + ( move ) OVR2 .Screen/y DEO2 + ( draw ) DUPr STHr .Screen/color DEO + ( incr ) .Screen/addr DEI2 8+ .Screen/addr DEO2 + ( incr ) SWP2 8+ SWP2 + OVR2 OVR2 LTH2 ,&loop JNZ + POP2 POP2 + POPr + +RTN + @draw-cursor ( -- ) ( clear last cursor ) - ;clear .Screen/addr DEO2 + #fff8 .Screen/addr DEO2 .pointer/x PEK2 .Screen/x DEO2 .pointer/y PEK2 .Screen/y DEO2 #30 .Screen/color DEO @@ -450,7 +599,7 @@ RTN .Mouse/x DEI2 .pointer/x POK2 .Mouse/y DEI2 .pointer/y POK2 ( draw new cursor ) - ;cursor .Screen/addr DEO2 + ;cursor-icn .Screen/addr DEO2 .pointer/x PEK2 .Screen/x DEO2 .pointer/y PEK2 .Screen/y DEO2 ( colorize on state ) @@ -533,31 +682,68 @@ RTN "PAD1 $1 "SYN1 $1 "SYN2 $1 "CYM1 $1 ( short ) "HHAT $1 "OHAT $1 "CHAT $1 "RIDE $1 "SID1 $1 "SNR1 $1 "SNR2 $1 "SID2 $1 ( long ) - "BDR1 $1 "KCK1 $1 "KCK2 $1 "BDR2 $1 ] + "BDR1 $1 "KCK1 $1 "KCK2 $1 "SUB1 $1 ] @pad-addr [ - 4000 4400 4800 4c00 + 5000 5400 5800 5c00 5000 5800 6000 6800 7000 7800 8000 8800 9000 b000 d000 f000 $2 ] -@pad-length [ - 0800 0800 0800 0800 - 0800 0800 0800 0800 - 0800 0800 0800 0800 - 0800 0800 0800 0800 $2 ] +@pad-pitch [ + 30 30 30 30 + 30 30 30 30 + 30 30 30 30 + 30 30 30 30 ] @pad-path [ - "projects/sounds/pad1.ss8 $1 "projects/sounds/syn1.ss8 $1 - "projects/sounds/syn2.ss8 $1 "projects/sounds/cym1.ss8 $1 - "projects/sounds/hhat.ss8 $1 "projects/sounds/ohat.ss8 $1 - "projects/sounds/chat.ss8 $1 "projects/sounds/ride.ss8 $1 - "projects/sounds/sid1.ss8 $1 "projects/sounds/snr1.ss8 $1 - "projects/sounds/snr2.ss8 $1 "projects/sounds/sid2.ss8 $1 - "projects/sounds/bdr1.ss8 $1 "projects/sounds/kck1.ss8 $1 - "projects/sounds/kck2.ss8 $1 "projects/sounds/bdr2.ss8 $1 ] + "projects/sounds/pad1.pcm $1 "projects/sounds/syn1.pcm $1 + "projects/sounds/syn2.pcm $1 "projects/sounds/cym1.pcm $1 + "projects/sounds/hhat.pcm $1 "projects/sounds/ohat.pcm $1 + "projects/sounds/chat.pcm $1 "projects/sounds/ride.pcm $1 + "projects/sounds/sid1.pcm $1 "projects/sounds/snr1.pcm $1 + "projects/sounds/snr2.pcm $1 "projects/sounds/sid2.pcm $1 + "projects/sounds/bdr1.pcm $1 "projects/sounds/kck1.pcm $1 + "projects/sounds/kck2.pcm $1 "projects/sounds/sub1.pcm $1 ] -@knob_icns [ +@notes [ + 3c 3e 40 41 43 45 47 + 48 4a 4c 4d 4f 51 53 ] + +@cursor-icn [ + 80c0 e0f0 f8e0 1000 ] + +@keys-left-icns [ + 7c7c 7c7c 7c7c 7c7c + 7c7c 7c7c 7c7c 7e7f + 7f7f 7f7f 7f7f 3e00 ] + +@keys-middle-icns [ + 1c1c 1c1c 1c1c 1c1c + 1c1c 1c1c 1c1c 3e7f + 7f7f 7f7f 7f7f 3e00 ] + +@keys-right-icns [ + 1f1f 1f1f 1f1f 1f1f + 1f1f 1f1f 1f1f 3f7f + 7f7f 7f7f 7f7f 3e00 ] + +@arrow-icns [ + 0010 387c fe10 1000 + 0010 1010 fe7c 3810 ] + +@switch-icns [ + 001f 2040 4040 4040 + 00f8 0402 0202 0202 + 404f 5f5f 4f20 1f00 + 02f2 fafa f204 f800 + 001f 204f 5f5f 4f40 + 00f8 04f2 fafa f202 + 4040 4040 4020 1f00 + 0202 0202 0204 f800 +] + +@knob-icns [ 0003 0c10 2020 4040 00c0 3008 0404 0202 4040 2020 100c 0300 @@ -572,12 +758,6 @@ RTN 07 06 05 03 02 01 00 00 00 00 01 02 03 05 06 07 ] -@clear [ - 0000 0000 0000 0000 ] - -@cursor [ - 80c0 e0f0 f8e0 1000 ] - @meter [ 0000 0000 0000 0000 0000 0000 0000 0070 @@ -596,17 +776,6 @@ RTN 707e 7e7e 7e7e 7e7e 7e7e 7e7e 7e7e 7e7e ] -@switch [ - 001f 204f 5f5f 4f40 - 00f8 04f2 fafa f202 - 4040 4040 4020 1f00 - 0202 0202 0204 f800 - 0000 0000 0000 0000 - 0000 0000 0000 0000 - 0000 0000 0000 0000 - 0000 0000 0000 0000 -] - @font-hex ( 0-F ) [ 007c 8282 8282 827c 0030 1010 1010 1010 diff --git a/projects/sounds/bdr1.pcm b/projects/sounds/bdr1.pcm new file mode 100644 index 0000000000000000000000000000000000000000..bf8be62e3bad17b40aec89d786856aaaaf98e9f5 GIT binary patch literal 8192 zcmZ8lS#uoMb?$wi9fJV|I|y(Q2$GU0i4rB74r5zU9NDR)$`!kkr{pP5dB{WlhpSww zyd+NLC3%n&M_WmPfzci@7x~1iZ7&|>ARfeJKs6y4tbu# zA1@@zWU*8!L=PCtx1*AGX%j?I}F+3$5+DN`(E zM5nQ}(~tPbZno@*=VN=X)pJFwRGF&I&P^Cw<7_eX#Hlb^kMX8mxrR4C*o*U!DQUe!2GuB^TE z{qLPUdwO;CxmSMtgYTSP%JH5b@x_I?=}FBGk~mUJMWKEB>ecIadwMya>|X!h3pZME zG8ztBTlc>H?CpPl?U%oL?{;(O+3m(IsL*$l#BQ}3HCxOddgi4U&z=A7nNvp=rt^HS z+1aaioWbtxE1$ge`fuL-?fdV&@#|l|{n00%J{)==l#?jA*@f(A=g!Rs9eM8Qb3gv; zpa1k{fAyoYrw-4}F04NN@?ZS?@BaQD{^=k8=7%pl|K0Ds^vtm-Q!@?SNOo_2`QdNg zyK?8@-OHcfxbfAsFF*hE;-{Zq{P^nDNY?Y!g~O-LJheJq%*um}Z*JbZcjNl4jZUJe zytCID#A0kaek7SHFPo*g`J(7LuJ7CJe#mj5({0up+jp*C-*7U^$DerO*y`%)(&Ey} z;X@Naee2PKT9BVxSXi1>_a5EFmZBvN8eNwYW2aZU^X26)E`D_B=JrT0&#gXn?&b4O zSL4lV-|V_tWo~xD$`mTI3rC)Q=J>1?4~H=?6;{u_`sY75y;zyZiNnV?FJHNJ@9HP- zymR5p8~5siK!}^Su3i87ZdaXNKD>5nZDnaD!$*-^U0YjOn4Vi*KXoK;*B)=wLMvy8 zJkKkciP^a+%ip}-?o9LyPs_72{ zwLHIi{KQHjtlhq~V@GkE#J=NrAq-T^Vx??^?R%F#eDD2B_jmW4C`2YL9a<nqa*lMi^av~=>>Gta;9{F4hx?ecs7^VSEKzP?|x z?e?DSInBFQzk1Ld^0|pj;!ByFrFiW|t>bfCA}Wfa8TsnrQ)^Y7*QOS$Io{_r*&lck z*W0*tcc&K{1wa<|?_YfLzu&rexPwUKBQtRzglR%STF#?Zxk(|ISP2URdTkoq;Rl zXJ#gHW(hezS5}6Ndb1N4rE*@^EK`+LSrqvo2twcWVie3ssvLb{Uflfb!sTxs?lfxk z-G^Hpd(dw+MyeY18{3V*Di$pG;U-)Hcl(JdyL*r8t|SD5cBf~1{%Fu{HXYF{l*^WE z&K`g2SV>Go-IRPcv8JXn+-T%Fy+I%;dU0-{If6I!tJxWJ9^b#expn{Ml?xwUynJh`=LYuXb{1Cyy?abbi$LGjpqp z)0I+2<3mohOqmz8OtD%qd7cughZggAb9WH&q7ZZ&yPKP>LATXx)*juue(lDc?U9x* zRi-ENre@_Qt1Ig#S4x^9@uE37J2O39trRllLr0e;O8b=$k! zb+jut2u9ud#@APFY}?+jRokiU4V}H6&7Gl~&nSYZ73Yo|nac{XoU2ZmVZZ0_h|OfV zJXzG;#>S(awi70TQmB+Oq6ZepSgn+cI@*pbONwFe{bpwrimIllx>c-HD&V^fE)E@E z5TjwY+i5nNdp(yo@}+#n)PxANWZ3IFu{piCP$}l~*=(^gGheNgbBLRW)>N3D1FQQR zH?BV#NT#Jp$p~G!w!KsD4*QMGt!^YlZXn3<-rXyguHN3*uC;A6P+nF9ju%xUTb^A$ zdh*Gm(}mL1q?I_M#G0NjOJNwqg5dYNju&{2Jq!emtkJT$(){X5wNRX_OqM6IN)pC` zW@d63LyWvgNbE*^5DG>?y8k*x8($D7+t8*$BByqB1z@rQ z4IR!XmMlfaDJxqn<}Fp^W6vJgKBpRnjQd6y1a_-l+Z#!mD#S=HF6ixU?RL7|UblAl z`ZwElqNs|jWQyQg30WnXMP&Z;6tYv>Cf-ZhpFG@NN$$dhPmdtv&Sp0kWP`49k#l z!;#F=^rVpxc_qy-6h2C1i>@wHc}>et7M0;%XW%7T))c*AuidQG_xk;A+xCD?x6`rx z$nEx=SQh<3&(jK7Rg{Dzmdsp!VtT4n$XVHm%7i6Fv6wBDaxi5u@&hy;MK$xqyvd`X zjz$h7ceO2UBC@lu?eELw(cYFrS=c~D;pM~)ZEx|y+{ z45E_Q?d|pKp`Qqe=ehweBOACVfJufa2mRhC5kyghhrNN%OF|q3u!a+5Nq`PT!ETgR zs?TsL@DYAV15qjydhB|zA(t_ARaR8h$Q5%GIe6^jrY8uBsq=1s;70MNv$OGVYtKU> z^1wv~S&U4fT*?}BNa12$#C=Iptztf75hLOlyO5>Xj0JWp;m{uWo`d^fQ*b)04RBW-TS=kPfD*8QC0iR?~GL#|0_*T+g-pD26>$ zF;Rtw&Y%zJ?Y@tQNwA+!;)Lh9a5Qv7_^PR@Os@rHvzuiJMcQBh?f4qa52 zk%#uk<9ZJWB*XxxqJZu>7`SwZ&;)!?3WONA`>+Z>29U3cW}1eosPGgamBAlW9TP5L zga{!qhldT}2*E*3piGS8h}i8g0!46sM0|>n&Jj$NfS;iQPgz9x;hJHZI^2X6iUN;i zMHI+PP#jeb-QLV*l*At*JneQ5D7k$piu%*QWGDrDG^1I z4SwmAE{Fi`iz31Z=STyBjhc(ZO^}2dLl$0v0DwA%mvI<+9$j_tI}o4nnre&}3m~#2 z!(J79Aea+KBzdx;TNFa9;WB4|c$lQb76nR00XQN8B3_e-Vn1?l6@y#wD~v!BIFvwb zx@Py_a){6dunyTA#pn=Q^47=i@0vPjHAE~DcDfe^wk@*0%X;e;fs3iTtj z06qelfg~kE2nNv)ojz_s{ekVc9(*MRp!y*IJV1~rYd935ldIMrGE)nmM-NZ{|&d|n9Eu>#2U?ZG!hhWRV z#_u?I0ePS;IfG~+8*$M=3Q6RP1X|*j4maTfG6I^Zwpco@V~mX80ojM^84Djy@R92b zX^e>QfB`vyn&lGvIYbTh9MMHBqr6WNiD-^I2L0hIh>5_!N2EAYh`OjF2}Jlr+()2b z4Xw}@l17Q-(jR_=lW)jN`VZ_Oa)@97esO_=0jz-~D1#XE!vjEp&eUjhgbr;L9a$BU z05=NP2f65}61um{N?N%EXUHbPFxWed3%Ha*#BWeLG6oWaA{X_$h8cYg^TVgD>S!<%wf-4Y8I~6U6L9}5yV<53f!tVm& z3(9g#7fDoh)DTv_2vv_RG*lB{6l)sb2i=sYd10FTrJEa&;5evaSq2?M1fYQAhlS)j zFa}(-4aD<3h8KB)NKnGiA8?_d(Ix;*g*n7Eh>WIzVy^3u1zXV&QST{h;Tw{IdOr@c z0g=QqiU1@LQD_a-(TD5=7XjOiaaCkY1udER;0aLx7z0DB;Uqv-Uu33~G3?7yt6X8YGkw>#1hJ zDxw||1gdD3)h*^Xwi5S7)UZ&O0Ube3EJg@m8KDZr)OL|XbWH;sjKcs2CIDsD|A8nK z9kPf_1x8>^j9Nx`vO0#X>>faEg(}9F?9@WAz}SfUJRn3~qsWT{68OrR3f(qvQ%MKW zm+s=klC+c&TPQuqTgnGwF+~`~4e>|0qLc=dI7Ya_KD^;lgSfI5OZ6N0kbz`6K509y zF4#z3Fz_jP5Jg5Kh5>3Y-L+^YJ;{(F{}~mDf(La4swpzm15+vR5QiWVrlKbz+tC*& zJJFO0RH%lrM7e-&78GB~Z;AyIN~sHSrO7~`!)|JPfP&H*lHm+_$Er8-l@f>LK7q~R zi#PHQI;apbcu4@Jp`Jcr3Ar?mDno{<4~{_-0!HA% zQrbZbRS;3@-wItnX`6cbvbStw!=B%L^lk+wooo35u|q!n{4 zizLz?Es=-h1Eo2YBw|LojjY4B6aXfgwx;{pj|LP1dL^q#B8v%qV&H`>vST=ueo{?H zZ6>HlKCEWJg*60NdWK=eY#axH*2pmCZmNL3LN_@(wlX!0dCv?d%OHgK%nT$|_@4oG zz+^Iv^+22>`4yjc6n|+D8R#^_23DDUsdvm?(utta7WU4xkubcm!?XcoY#$k)D%y9E z+{GYMsq4^Q_JHBzK~wwijMq|^fMnWkm}d5%!*q4Pc=S%g2fz~-?;TiGNn>@Tv}gKacVr|3MJ9G_y68QlBA z=o}lgk)7Iq9UHQLo~F~i-;zmZ_7$5CURfz_%&Tgm&aRa2kC+o zf`XlAr`SSj48D>yHbW0)4wJ&nXH(-@iVxE~Uf#F&59C4@jeXPcZQpKY%KqVReI5u+ z4Z)N0BTf0#G_sNT!5)~S&vY>9j2-FB!E;~h?-kKfx{S3yT*d;+%JFkwdU^(%$)E$J z`!bnT?7_s*Bh5w9grn(cdcl7OEBmMa-zROQed#fJ8(YX^&|zlYcpJTq*Hhu_4Kw>D o9_&k{GST#vnUp@qaY@DOpBoEEkK+XfjgO><*lzL!U&x^U17R&EFaQ7m literal 0 HcmV?d00001 diff --git a/projects/sounds/bdr2.pcm b/projects/sounds/bdr2.pcm new file mode 100644 index 0000000000000000000000000000000000000000..db8d2e980aec601eb63035c5c8fbba5186552597 GIT binary patch literal 8192 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 AjQ{`u literal 0 HcmV?d00001 diff --git a/projects/sounds/chat.pcm b/projects/sounds/chat.pcm new file mode 100644 index 0000000000000000000000000000000000000000..841b5ce22dc72d6a1601619f69dc914b518d35a0 GIT binary patch literal 8192 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 DR{(=k literal 0 HcmV?d00001 diff --git a/projects/sounds/cym1.pcm b/projects/sounds/cym1.pcm new file mode 100644 index 0000000000000000000000000000000000000000..1aaf0404a22ef63699748c0e8fc980c6b5e703e3 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/projects/sounds/pad1.pcm b/projects/sounds/pad1.pcm new file mode 100644 index 0000000000000000000000000000000000000000..2a3f74752c27b2b4a83de5deed13df997b53ee35 GIT binary patch literal 4096 zcmZu!U2k1S6`ikh&iyoYZXCO|p-G!Up&~R%QAMR9cmUBCBqUxy@E73szzcog6`}Hk zgpd%B2MR$1MJ**xXkvoxB(;67eZS5*Gs9YY&b=`bSI)UJduFe__S$>q+$g1@l8?rB zGgMLQWTYX=xLJ+Z6O$$Fpb!3<{mqze0w#lIqZnxaALBV!U?i9ZY_V_g4Ks#Xk*R!0 z2DZgKO&1`|o&@>aL*_C~Ha^cqjcEc)LxM2P@SFw4=Z;JN1rhqB4QbRo=?`I{9(?JJ zVChQ?97~Avah76<6ZX+Tyq7x2b}TeCTY4`Cbf7!&lY2r)Y?_RLiM8c~K25B1!{_b* zPh2=)QnKs+IyFHPJt0LR@(17KC}w#qk+^Uk_4yc1n8oI{4A`_a44*a?*R@wbNg>U%z|w-HY$tS^vgc zx8Lr&u;zXn9>-}4!Z@qEvjw!J?L#0MY}pV7;U~7=H~Elu%jl^*sdoR zvb)3Ac1-K=_Xk&A*;uXi|Meh$b8FZRxAwmLrRv}yTiu&~ZRK}|pIOh2o?Y5Ho0;Kw zWv!Ub){FP|UVnK~9`AN;tnMG2xl6tA)Vdg5^-25c{KN3l;OK6Bb8UCtJB=IN^59_o zrO8RBJnC$AhaXK}Z9U!C*nQmXuB<)%yLs!%owedY4r zhev}e@uX#rRX?-!lkv`{M-P1#Tm9f|tfynMT4XDuJLR>((b;&mdSNzl`K->Pw>kRZ z`02$j=DUxk{a0Un^cQorGy24AcmDINJ?K?OQ`73T=EIrmXY;wra-+j|Y*tpycv{cf zJN`k~F{h!f`n~B{aJibfwQxMw&Y4c@=&-eFj2c#h_VGA#HjA~fRi!f%mG|0#TII7= zp=OiN>H0Ik56HIpasOPpwp5&FZe32WO0_=3eK8 zs$!U^eo@y|ZJkm!&T5CORb45IFRkk`X1T?(S4FOUU4_g=AB{oSBGlfi%&HioQ9&th z3qSQh*FjlT2OKkFu$Ydo(HQt(AqX7#rRq{;Mj7Z6OlG4Bb+o)DcyOb!F`({%19FAq zX{?{tSq6JqV;6{&Rm?ISed!(82OqH8>c$J+Z~_p%0YWfAv9pQKb0!G^Ax@}4z6D7D4g{sGLR`5*3|7lZ<(c*Y9|Oh#)NIr) zR1q0hHIs=!TN|KwZhRFi(gZ(nGVsGT=uSlyzM(2FCTHq0WVx#OQiulitN^aTFdE85 z1xW{)1r3We&fKUS(pJIYxbU3;ICh!BNy{;%8xuq(7I8sFJN6xajX(wp zWTiti$c7rk*%2hemmlN=1QX6wiOy%MGdmt;=0Jg17ldW&Q23gyCyfeRh)a3VU{KRS zB9H#`C>y&H+2X@)p%^F~ZUhZrNN!Ll)QH_l`3nPLR1;5ZLqoHJks59j?X@K-*pVuZ z3mEa#fFAzrGKV=8I@ObtgQjUjL%sAH&*E?gOp z0KkS$0C$V&S0F$kO9!vBD1IjC$0f+-UklZ}! zs;H$AAPOr+Brp+mDKch^Bx_uUg%3u8tx+75lZ_^{4ci|+P()f0wuFjhf^(H*3B?^K zx4_|nHb%Wg0GvxG!7~Q|aBQS0up3tbZd+jlgak|&VDVlSSW#ku4dK|$lurmOLc z#OcAhG&{?{v`7X}*bW>bHcYYFAW%w@$KJFoz|C0v(*x=ggL@b9vP?_$pb`)JViijq zqtS&G)-Xd9fG}}sRtzO%!-V*J8_5*T7*GYn3mIjPP!_o_x{JY+4h+YGTH@AF zf()s7xj@dzp0bcYFf5{^fj~7V%rrquFy26LV&+hbxu;bcNsP1R!Cu8s`c%p#;6wo; z^OFC1ByB{>WMlH&zM#S&aN#q3xYQ^B111cKhLf=@2m@{wqT<<9T0jtf0hZ?6xcp#< z0ti7yVq#24_Q)-aL}5XU=1#@Z0#CAUX3SACO6@H`@?Kg-BJ^Ujz>_zPjK*F}wZa!P QPgqGi{zjqL!h|vY3sHTBng9R* literal 0 HcmV?d00001 diff --git a/projects/sounds/ride.pcm b/projects/sounds/ride.pcm new file mode 100644 index 0000000000000000000000000000000000000000..47cb04689e0755e686a86d3e4004b8ee78f655e9 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/projects/sounds/sid1.pcm b/projects/sounds/sid1.pcm new file mode 100644 index 0000000000000000000000000000000000000000..9f965d033a77f4936da525bf28735c5afb9c1cbf GIT binary patch literal 8192 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 txV--JB5ZuIk8TU+Nz*Vk89 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 literal 0 HcmV?d00001 diff --git a/projects/sounds/sin.pcm b/projects/sounds/sin.pcm new file mode 100644 index 0000000000000000000000000000000000000000..7ec741cc3a054097db75fbee0a9d60cd0f7e3961 GIT binary patch literal 256 zcmZQzX5-}H7ZR0_mQz$w*U~jGHnX(0b98p|^!5t~3Js5pj!Q^NNlVYn&dDn%EGj82 zE3c@ms;;i7t*rxrdN5gATT@+KRasG9R$5Y2Sdf>Kotd7Nl9Uh^9T^@P6yWFW>E`Tc zXKiU_Y@n;9uA(R>Eg>qz&%?>a%<%Wu_b(scy?*iZ(fvC&uU)=y_SEsChxYH?wSDWR z4eM5~T)uSCf_Zah&73}U%A^VXeLdY>ogM9Mt*tH1%}pTC2qv4GTUuM&+B-VCx_kQi zCrp|$b^6R%bLK5rv~>B()$2BF+PZz$-u;J;9zS*V!sTl>@7#a%^u_CUAHRJ6^%nry CeSZM} literal 0 HcmV?d00001 diff --git a/projects/sounds/snr1.pcm b/projects/sounds/snr1.pcm new file mode 100644 index 0000000000000000000000000000000000000000..7ebf5f92ab5aa34345021b7708db2428cf474783 GIT binary patch literal 4096 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 wE(Y=UezQ&R28Dp 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 literal 0 HcmV?d00001 diff --git a/projects/sounds/tri.pcm b/projects/sounds/tri.pcm new file mode 100644 index 0000000000000000000000000000000000000000..48c4940f1ca45d655dd4075386881d42ad3f9a96 GIT binary patch literal 256 zcmV+b0ssC00t5yK3JeYq5)>8~8XO)VA|xg#Dl9HAGBh?gIy^o=LPSPLN=!~rQdCx0 zT3lXWVq|7$YHV(Ba&&fhdVGF=eS3L#b#rlVZEI;~Wn*DqU0YdKRZ~$TSs-P_sM z)zi_>&CAKh#lykBy}P-$wX?CWt*fc0rK6#rotv4Lm6MT=jf;tgg@b{CgN28Qi;a(w zla-g5o1LGbqot>*tF5oGv$eOmyS=}`!^OwR%gxWx)7976+uh&c+SFH^Y!=n G`~Ck5uz$e- literal 0 HcmV?d00001