From ca6cf59e549db308b305f1a7469536d37ff372e6 Mon Sep 17 00:00:00 2001 From: fakebitpolytechnic Date: Sat, 11 Jul 2015 11:35:50 +0100 Subject: NOW COMPATIBLE w/ MOZZI v1.0.2, MIDI lib 4.2, less compatible with IDE Arduino 1.0.6 onwards - see http://sensorium.github.io/Mozzi/blog/2015/04/08/use-arduino-1-dot-0-5/ --- .../CheapSynth_FM4osc2Poly_v0_6.ino | 431 ++++++++++++++++++ .../PolyDrums_v0_2_0_DelayDuty.ino | 480 +++++++++++++++++++++ PolyDrums_v0_2_0_DelayDuty/hihatc909.h | 57 +++ PolyDrums_v0_2_0_DelayDuty/hihato909.h | 103 +++++ PolyDrums_v0_2_0_DelayDuty/kick909.h | 119 +++++ PolyDrums_v0_2_0_DelayDuty/snare909.h | 116 +++++ 6 files changed, 1306 insertions(+) create mode 100644 CheapSynth_FM4osc2Poly_v0_6/CheapSynth_FM4osc2Poly_v0_6.ino create mode 100644 PolyDrums_v0_2_0_DelayDuty/PolyDrums_v0_2_0_DelayDuty.ino create mode 100644 PolyDrums_v0_2_0_DelayDuty/hihatc909.h create mode 100644 PolyDrums_v0_2_0_DelayDuty/hihato909.h create mode 100644 PolyDrums_v0_2_0_DelayDuty/kick909.h create mode 100644 PolyDrums_v0_2_0_DelayDuty/snare909.h diff --git a/CheapSynth_FM4osc2Poly_v0_6/CheapSynth_FM4osc2Poly_v0_6.ino b/CheapSynth_FM4osc2Poly_v0_6/CheapSynth_FM4osc2Poly_v0_6.ino new file mode 100644 index 0000000..f718b32 --- /dev/null +++ b/CheapSynth_FM4osc2Poly_v0_6/CheapSynth_FM4osc2Poly_v0_6.ino @@ -0,0 +1,431 @@ + +/* + * FM+LFO notes from Mozzi in response to MIDI input, + * using the standard Arduino MIDI library: + * http://playground.arduino.cc/Main/MIDILibrary + * + * NOW COMPATIBLE WITH MOZZI v1.0.2, MIDI library 4.2 + * LESS COMPATIBLE WITH ARDUINO IDE 1.0.6 onwards - http://sensorium.github.io/Mozzi/blog/2015/04/08/use-arduino-1-dot-0-5/ + * + * Mozzi help/discussion/announcements: + * https://groups.google.com/forum/#!forum/mozzi-users + * + * Massively based on examples by Tim Barrass 2013nextenv + * This example code is in the public domain. + * + * sgreen/dpape/dgreen - modified to bring together harmonic FM, LFO, portamento, + * mono note priority, & Rock Band keytar controls - http://www.cheapsynth.com/ + * + * Audio output from pin 9 (pwm) + * Midi plug pin 2 (centre) to Arduino gnd, pin 5 to RX (0) + * http://www.philrees.co.uk/midiplug.htm + * + On Rock Band keytar, switch between patch modes using the big transparent button above +the LEDs, as follows... + +Mode 0 - monophonic FM lead sound with variable modulation harmonics, portamento, modulation depth +on modulation strip, low-frequency oscillator (LFO) speed on pitch bend strip (ie button held down) + +Mode 1 - (2-note polyphonic) Squarewave added to squared-off sinewave at variable harmonics, +pitch bend strip adjusts "duty cycle", ie how much the squared sine is On vs Off + +Mode 2 - (2-note polyphonic) Actually sawtooth wave, pitch bend strip gives chorus-y effect by +variably detuning one of the current notes + +Mode 3 - (2-note "polyphonic") Squarewave XOR'd with sinewaves at variable harmonics, similar fake-LFO +detuning on pitch bend strip, massive upwards zoom on both notes when no portamento! + +Mode 4 - intentionally left blank so you know where you are + +Standard controls: + +Different modulation freq harmonics on the right-hand corner up and down keys between octave up +and octave down (all modes except Mode 2). + +Portamento speed on Back arrow to the left of big transparent Mode button, toggles between no portamento +(ie 2-note polyphony in modes that support it), 10ms fast glide between notes, 400ms slow glide. + +[updated: this note decay now doesn't do anything as I've moved everything to "slow" ADSR..!] +Note decay length on forward arrow to the right of big transparent Mode button (currently applies +to less computationally demanding envelopes in Mode 0 and 2), toggles between short/medium/long +*/ + +#include +#include +#include /oscSaw/ oscillator template +#include // for envelope +#include // table for Oscils to play +#include // table for Oscils to play +#include // NB portamento requires table > 512 size? +#include +#include +#include +#include +#include +#include + + MIDI_CREATE_DEFAULT_INSTANCE(); + +// use #define for CONTROL_RATE, not a constant +#define CONTROL_RATE 128 // powers of 2 please + +// Mozzi example uses COS waves for carrier and modulator +// DP: "gets brutal very fast" (esp in higher octaves) if you use a saw/square carrier +// gets subtly more brutal if you use smaller wavetables (fewer samples per cycle) +Oscil oscCarrier(SMOOTHSQUARE8192_DATA); // huge file :( +Oscil oscSquare2(SMOOTHSQUARE8192_DATA); // huge file :( +Oscil oscModulator(COS2048_DATA); +Oscil oscModulator2(COS2048_DATA); +Oscil oscLFO(COS2048_DATA); +Oscil oscSaw1(SAW1024_DATA); +Oscil oscSaw2(SAW1024_DATA); + +// envelope generator +ADSR envelope; +ADSR envelope2; +Ead kEnvelopeGuitar1(CONTROL_RATE); //left in here for future use but currently not vital? +Ead kEnvelopeGuitar2(CONTROL_RATE); + +Portamento aPortamento; +//LowPassFilter lpf; // LPF left over from earlier versions of code, may reinstate! +//int crushCtrl = 0; // ditto bitcrush + +#define LED 13 // to see if MIDI is being recieved + +long vibrato=0; +long vibrato2=0; +int chanGain1; +int chanGain2; +int LFO; +unsigned int carrierXmodDepth1; +unsigned int carrierXmodDepth2; + +// initialise globals (some eg amplitude no longer used) +int maxmode=4; +float carrierFreq = 10.f; +float carrier2 = 10.f; +float modFreq = 10.f; +float modFreq2 = 10.f; +float modDepth = 0; +float amplitude = 0.f; +float modOffset =1; +byte lastnote1=0; +byte lastnote2=0; +int nextenv=1; +byte portSpeed=0; +byte noteLength=1; +float shifted=0.1f; +byte mode=0; +unsigned long harmonic; +int squaredsin1; +int squaredsin2; +int bitmask=64; +int multiplier; + +float modOffsets[] = { +4,3.5,3,2.5,2,1.5,1,0.6666666,0.5,0.4,0.3333333,0.2857,0.25,0,0,0,0,0,0, +}; // harmonic ratios corresponding to DP's preferred intervals of 7, 12, 7, 19, 24, 0, 12, -12, etc + +void setup() { + pinMode(LED, OUTPUT); + + // Initiate MIDI communications, listen to all channels + MIDI.begin(MIDI_CHANNEL_OMNI); + + // Connect the HandleNoteOn function to the library, so it is called upon reception of a NoteOn. + MIDI.setHandleNoteOn(HandleNoteOn); // Put only the name of the function + MIDI.setHandleNoteOff(HandleNoteOff); // Put only the name of the function + MIDI.setHandleControlChange(HandleControlChange); + MIDI.setHandlePitchBend(HandlePitchBend); // Put only the name of the function + MIDI.setHandleProgramChange(HandleProgramChange); + MIDI.setHandleContinue(HandleContinue); + MIDI.setHandleStop(HandleStop); + MIDI.setHandleStart(HandleStart); + + envelope.setADLevels(127,100); + envelope.setTimes(20,20,20000,1200); // 20000 is so the note will sustain 20 seconds unless a noteOff comes + envelope2.setADLevels(127,100); + envelope2.setTimes(20,20,20000,1200); // 20000 is so the note will sustain 20 seconds unless a noteOff comes + + kEnvelopeGuitar1.set(20, 4000); + kEnvelopeGuitar2.set(20, 4000); + + aPortamento.setTime(0u); +// lpf.setResonance(200); +// lpf.setCutoffFreq(255); + oscLFO.setFreq(10); // default LFO frequency + + startMozzi(CONTROL_RATE); +} + + +void UpdateFreqs() +{ + oscCarrier.setFreq(carrierFreq); + oscSaw1.setFreq(carrierFreq); + carrierXmodDepth1=carrierFreq * modDepth; + modFreq=(carrierFreq * modOffset / (64/bitmask) ); + + oscSquare2.setFreq(carrier2); + oscSaw2.setFreq(carrier2 * (1.0f + ((shifted -0.1f) / 384)) ); + carrierXmodDepth2=carrier2 * modDepth; + modFreq2=(carrier2 * modOffset / (64/bitmask) ); + + oscModulator.setFreq( modFreq ); + oscModulator2.setFreq( modFreq2 ); +} + +void HandleProgramChange (byte channel, byte number) +{ + modOffset = modOffsets[number%15]; + UpdateFreqs(); +// modFreq=(carrierFreq * modOffset / (64/bitmask) ); +//dreadful hack as ProgramChange returns absolute prog number 0-127, "gets stuck" at upper/lower ends +} + +void HandleNoteOn(byte channel, byte note, byte velocity) { + aPortamento.start(note); +// carrierFreq=(mtof(note)); // simple but less accurate frequency +// osc.setFreq_Q16n16(Q16n16_mtof(Q8n0_to_Q16n16(note))); // accurate frequency +if ( portSpeed) + {nextenv=1; lastnote2=999;} + + if (nextenv==1) + { + lastnote1=note; + envelope.noteOn(); +kEnvelopeGuitar1.start(); + digitalWrite(LED,HIGH); + nextenv=2; // send next note to other envelope, unless overridden in the meantime + + carrierFreq = Q16n16_to_float (Q16n16_mtof(Q8n0_to_Q16n16(lastnote1))); + UpdateFreqs(); + } + else + { + lastnote2=note; + envelope2.noteOn(); +kEnvelopeGuitar2.start(); + digitalWrite(LED,HIGH); + nextenv=1; // send next note to other envelope, unless overridden in the meantime + + carrier2 = Q16n16_to_float (Q16n16_mtof(Q8n0_to_Q16n16(lastnote2))); + UpdateFreqs(); + } + +} + +void HandleStop () { //this is the Back button on the Xbox keyboard + portSpeed++; + {if (portSpeed>2) portSpeed = 0;} + aPortamento.setTime( (portSpeed*portSpeed*100) ); // values of 0,100,400 milliseconds? (next 900) +} + +void HandleStart () { //CURRENTLY NOT USED + noteLength=(noteLength+1)%3; // loop from 0-2 + kEnvelopeGuitar1.set(20, (noteLength+1)*(noteLength+1)*(noteLength+1)*500 ); + kEnvelopeGuitar2.set(20, (noteLength+1)*(noteLength+1)*(noteLength+1)*500 ); + //cube into values around 500, 4000, 13500 +} + +void HandleContinue () { // the big round button on all keytars + mode++; + {if (mode>maxmode) mode = 0;} //currently has a silent mode at the end so you know where you are : ) +} + +void HandleNoteOff(byte channel, byte note, byte velocity) { + digitalWrite(LED,LOW); // may as well switch LED off + + if ( (note == lastnote1) ) //kill envelope if prev note released + { + envelope.noteOff(); + if (chanGain2) {nextenv=1;} +} + + if ( (note == lastnote2) ) + {envelope2.noteOff(); + if (chanGain1) {nextenv=2;} + } + +} + + +void HandlePitchBend (byte channel, int bend) +{ +//bend value from +/-8192, translate to 0.1-8 Hz? +shifted= float ((bend+8500) /2048.f ) +0.1f; +if (mode==0) {oscLFO.setFreq(shifted); } +if (mode==1) + { + bitmask= 1 << (int (shifted)); multiplier=7-(int (shifted)); + UpdateFreqs(); + } + else {bitmask=64;} + +if (mode==2) { oscSaw2.setFreq(carrier2 * (1.0f + ((shifted -0.1f) / 384)) ); } +} + +void HandleControlChange (byte channel, byte number, byte value) +{ +// http://www.indiana.edu/~emusic/cntrlnumb.html + +/* +Serial.end(); // sample debug code to check values through (noisy) terminal interface +Serial.begin(38400); +Serial.print(" number:"); +Serial.print(number); +Serial.print(" value:"); +Serial.println( value ); +Serial.println(); +Serial.end(); +Serial.begin(31250); +*/ + + switch(number) { +// case 3: // could trap different controller IDs here + + case 1: // modulation wheel + //lpf.setResonance(value*2); + + //WORKING MODDEPTH CONTROLLER + float divided= float (value /46.f ); // values=0-127, map to 0-2.75 + modDepth = (divided * divided); // square to 0-8 + if (modDepth>7.5) {modDepth=7.5;} // sanity check (prob unnecessary) + if (modDepth<0.2) {modDepth=0;} // easier to get pure tone + UpdateFreqs(); + break; + } +} + +void updateControl(){ + MIDI.read(); + envelope.update(); + envelope2.update(); + + chanGain1 = envelope.next(); + chanGain2 = envelope2.next(); + +// chanGain1 = kEnvelopeGuitar1.next(); +// chanGain2 = kEnvelopeGuitar2.next(); + if(chanGain1 > 120) chanGain1 = 120; + if(chanGain2 > 120) chanGain2 = 120; + +if ( portSpeed ) + { + carrierFreq = Q16n16_to_float ( aPortamento.next() ); //NB presumably returns frequency as Q16n16 + UpdateFreqs(); + } + +if (mode==3) + { + modFreq *= 1.0f +(shifted / 384); // generates fake LFO via detuning mod osc + modFreq2*= 1.0f +(shifted / 384); // generates fake LFO via detuning mod osc +// modFreq2*= 1 + (shifted -0.1f) / 384); // generates fake LFO via detuning mod osc + oscModulator.setFreq( modFreq ); + oscModulator2.setFreq( modFreq2 ); + } + +} + +// strip the low bits off! - not used in current implementation +int bitCrush(int x, int a) +{ + return (x>>a)<>7 ; +vibrato*= carrierXmodDepth1; +vibrato2 = ( LFO * oscModulator2.next() ) >>7 ; +vibrato2*= carrierXmodDepth2; +return (int) ( + (oscCarrier.phMod( vibrato >>3 ) * chanGain1 ) + + (oscSquare2.phMod( vibrato2>>3 ) * chanGain2 ) + ) >> 9; +// >> 9 = 9 fast binary divisions by 2 = divide by 512 + break; + + case 1: // ADDING square + "converted" sine +//squaredsin1= ( (oscModulator.next() & 0b0000000001000000)-1 ) <<1; +squaredsin1= ( (oscModulator.next() & bitmask) ) <>1 )* chanGain1 ) ++ ( ( (oscSquare2.next() + squaredsin2 )>>1 )* chanGain2 ) +) >> 8; + break; + + case 2: // 2 tri poly +return (int)( + ( oscSaw1.next() *chanGain1 ) + + ( oscSaw2.next() *chanGain2 ) + ) >> 9; + break; + + case 3: // STARTED AS 2 sq poly XORd with respective sines, now big whoop +return (int)( + ( (oscCarrier.next()^oscModulator.next()) * chanGain1 ) + + ( (oscSquare2.next()^oscModulator2.next())* chanGain2 ) + ) >> 8; +//return (int) ( (oscCarrier.next() | ( (oscModulator.next() * int (modDepth+1))>>3 ) ) * (envelope.next() ) ) >> 7; + break; + + case 13: // 2 sq poly ORd with respective sines +return (int) ( ( (oscCarrier.next()|oscModulator.next() ) * envelope.next()) + ( (oscSquare2.next()|oscLFO.next() ) * envelope2.next()) ) >> 8; +//return (int) ( (oscCarrier.next() | ( (oscModulator.next() * int (modDepth+1))>>3 ) ) * (envelope.next() ) ) >> 7; + break; + + + case 6: // 2 sq poly +return (int) ( (oscCarrier.next() * envelope.next()) + (oscSquare2.next() * envelope2.next()) ) >> 8; +//return (int) ( (oscCarrier.next() | ( (oscModulator.next() * int (modDepth+1))>>3 ) ) * (envelope.next() ) ) >> 7; + break; + +//case 5 intentionally left blank + +/* + case 6: // ADDING squares +return (int) ( (oscCarrier.next() + oscSquare2.next() ) * (envelope.next() ) ) >> 8; +//return (int) ( (oscCarrier.next() | ( (oscModulator.next() * int (modDepth+1))>>3 ) ) * (envelope.next() ) ) >> 7; + break; +*/ +// case 1: // AND with fake LFO +//all this 'harmonic' stuff a failed attempt to use the same LFO as FM, causes massive beat f/x? +//harmonic = ( oscLFO.next() * oscModulator.next() ) >> 7; +//harmonic = ( harmonic * int (modDepth+1) ) >>3 ; +//return (int) ( (oscCarrier.next() ^ ( harmonic )) * (envelope.next() ) ) >> 7; +//return (int) ( (oscCarrier.next() & ( (oscModulator.next() * int (modDepth+1))>>3 ) ) * (envelope.next() ) ) >> 7; +// break; + +/* case 3: // OR with fake LFO +//int harmonic = ( oscLFO.next() * oscModulator.next() ) >>7; +//return (int) ( (oscCarrier.next() | ( (oscModulator.next() * int (modDepth+1))>>3 ) ) * (envelope.next() ) ) >> 7; +// break; + case 4: // XOR with fake LFO +//int harmonic = ( oscLFO.next() * oscModulator.next() ) >>7; +return (int) ( (oscCarrier.next() ^ ( (oscModulator.next() * int (modDepth+1))>>3 ) ) * (envelope.next() ) ) >> 7; + break; + */ + } + +// OLD CODE FROM BITCRUNCHED SINEWAVE, DIFF WAYS OF DOING THAT +// int x = (envelope.next() * lpf.next(osc.next()))>>8; +// x = bitCrush(x, crushCtrl>>4); +// x = (x * crushCtrl)>>4; // simple gain +// x = bitCrush(x, 6); +// x = lpf.next(x); +// return x; +} + + +void loop() { + audioHook(); // required here +} + diff --git a/PolyDrums_v0_2_0_DelayDuty/PolyDrums_v0_2_0_DelayDuty.ino b/PolyDrums_v0_2_0_DelayDuty/PolyDrums_v0_2_0_DelayDuty.ino new file mode 100644 index 0000000..7c06b20 --- /dev/null +++ b/PolyDrums_v0_2_0_DelayDuty/PolyDrums_v0_2_0_DelayDuty.ino @@ -0,0 +1,480 @@ + +/* Example of a sound being triggered by MIDI input. + * NOW COMPATIBLE WITH MOZZI v1.0.2, MIDI library 4.2 + * LESS COMPATIBLE WITH ARDUINO IDE 1.0.6 onwards - http://sensorium.github.io/Mozzi/blog/2015/04/08/use-arduino-1-dot-0-5/ + * Demonstrates playing notes with Mozzi in response to MIDI input, + * using the standard Arduino MIDI library: + * http://playground.arduino.cc/Main/MIDILibrary + * + * Mozzi help/discussion/announcements: + * https://groups.google.com/forum/#!forum/mozzi-users + * + * Tim Barrass 2013. + * This example code is in the public domain. + * + * sgreen - modified to use standard Arduino midi library, added saw wave + * Audio output from pin 9 (pwm) + * Midi plug pin 2 (centre) to Arduino gnd, pin 5 to RX (0) + * http://www.philrees.co.uk/midiplug.htm + +D Green July 2015: +Big transparent button cycles through different backing sequences (including an empty one at the end) + +Small button to its left toggles between normal envelope and fake "delay" effect on all sounds + +Small button to its right switches main drums on and off + +Different waveforms selected via the right-hand corner up and down keys between octave up +and octave down - cycles between (I think): sawtooth, squarewave (variable duty cycle controlled by touchstrip), +squarewave with variable duty cycle autolocked to tempo, triangle wave (sounds like electric piano) + + */ +#define MAX_NOTES 3 +//Dave G: now seems to do 2+ note polyphony without clicking (higher notes are a bit grainy) +int threshold=255/(MAX_NOTES); + +#include +//#include +#include +#include // oscillator template +#include // for envelope +#include +#include +#include + +//#include +#include +#include + +#include +#include +//#include +#include +//#include "Wave.h" +#include +#include + + +#define DRUM_SAMPLES 1 + +#if DRUM_SAMPLES +#include "kick909.h" +#include "snare909.h" +#include "hihatc909.h" +#include "hihato909.h" +#endif + +// use #define for CONTROL_RATE, not a constant +#define CONTROL_RATE 128 // powers of 2 please + +#define ENABLE_MIDI 1 +#define DEBUG 0 +#define BPM 120 +#define STEPS_PER_BEAT 4 + +unsigned long beatCounter = 0; +unsigned long ticksPerStep = (60*CONTROL_RATE) / (BPM*STEPS_PER_BEAT); + +// audio sinewave oscillator +//Oscil oscSin(SIN2048_DATA); +//Oscil sawwave(SAW512_DATA); +//Oscil oscTri(TRIANGLE2048_DATA); +//Wave myosc; +WaveShaper aCompress(WAVESHAPE_COMPRESS_512_TO_488_DATA); // to compress instead of dividing by 2 after adding signals + +struct Channel { + //Wave osc; + Oscil osc; + ADSR env; +// ADSR fxenv; + byte note; + byte gain; +}; +Channel chan[MAX_NOTES]; +byte currentChan = 0; + +// envelope generator +//ADSR envelope; +LowPassFilter lpf; +int crushCtrl = 0; +int gain = 32; +float octave = 1.0f; + +boolean enableDrums = true; + +int freeChan=0; +int beat = 0; +int waveType = 3; +int bitmask = 0b0000000010000000; + +byte delayOn=0; +byte snareOn=1; +byte hatsOn=1; +byte bassOn=1; + +int button0_old = 0; +int button1_old = 0; + +#if DRUM_SAMPLES +// drums +Sample kickSamp(kick909_DATA); +Sample snareSamp(snare909_DATA); +Sample hihatcSamp(hihatc909_DATA); +Sample hihatoSamp(hihato_DATA); +#endif + +#define BASSPLUS4 7 //basically how many basslines there are plus 4 for drum parts +byte pattern[BASSPLUS4][32] = { + //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 hhc + 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, // 1 hho + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, // 2 snare + 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, // 3 kick + 12,0,24,0,12,0,24,0, 12, 0,24,0,12,0,24,0, 12,0,24,0,12,0,24,0, 12, 0,24,0,12,0,24,0, // 5 bass + 12,0,12,0,14,0,12,0, 15,16,12,0,17,0,16,0, 12,0,12,0,14,0,12,0, 15,16,12,0,17,0,16,0, // 6 bass + 24,0,12,0,24,0,12,0, 34, 0,22,0,29,0,17,0, 24,0,12,0,24,0,12,0, 34, 0,22,0,29,0,17,0, // 7 bass +}; +//bittersweet 0,12,15,12,13,10,13,0, 18,13,18,0, 17,13,17,0, + +// pin defines +#define LED 13 // to see if MIDI is being recieved +#define BUTTON0_PIN 2 +#define BUTTON1_PIN 3 + +// forward declarations +void HandleNoteOn(byte channel, byte note, byte velocity); +void HandleNoteOff(byte channel, byte note, byte velocity); +void HandleControlChange (byte channel, byte number, byte value); +void HandlePitchBend (byte channel, int bend); + +//yes surely this should go in setup but then not scoped in other functions..?? + MIDI_CREATE_DEFAULT_INSTANCE(); + +void setup() { + // init IO pins + pinMode(LED, OUTPUT); + +#if 0 + pinMode(BUTTON0_PIN, INPUT); + digitalWrite(BUTTON0_PIN, HIGH); // turn on pull-up resistor + + pinMode(BUTTON1_PIN, INPUT); + digitalWrite(BUTTON1_PIN, HIGH); // turn on pull-up resistor +#endif + +#if DEBUG + Serial.begin(57600); // for debugging +#endif + +#if ENABLE_MIDI + // Initiate MIDI communications, listen to all channels + MIDI.begin(MIDI_CHANNEL_OMNI); + + // Connect the HandleNoteOn function to the library, so it is called upon reception of a NoteOn. + MIDI.setHandleNoteOn(HandleNoteOn); // Put only the name of the function + MIDI.setHandleNoteOff(HandleNoteOff); // Put only the name of the function + MIDI.setHandleControlChange(HandleControlChange); + MIDI.setHandlePitchBend(HandlePitchBend); + MIDI.setHandleContinue(HandleContinue); + MIDI.setHandleStop(HandleStop); + MIDI.setHandleStart(HandleStart); + MIDI.setHandleProgramChange(HandleProgramChange); + +#endif + +#if 0 + //osc.setFreq(440u); // default frequency + //myosc.setFreq(440.0f); + myosc.setFreq(440.0f*4.0f); + myosc.setPulseWidth(32); + + envelope.setADLevels(255, 200); + envelope.setTimes(50, 200, 65535, 5000); +#endif + + for(int i=0; i>divided)<>7); + for(int i=0; i> 8); + } + +} + +void HandleStop () { //this is the Back button on the Xbox keyboard +// octave *= 2.0f; +// if (octave > 16.0f) octave = 1.0f; +//Dave G: no longer used : ) +delayOn=(! delayOn); + for(int i=0; i 16.0f) octave = 1.0f; +//Dave G: no longer used : ) +snareOn=(! snareOn); +} + +void HandleContinue () { // the big round button on all keytars +bassOn=(bassOn+1)% ((BASSPLUS4-4)+1) ; +if (0==bassOn) {hatsOn=0;} else {hatsOn=1;} +} + +void updateControl(){ +#if ENABLE_MIDI + MIDI.read(); +#endif + + //envelope.update(); + + // update playing envelopes + for(int i=0; i>5;} +else {chan[i].gain=tremolo;} +//subtler effect: {chan[i].gain=(tremolo + (tremolo&0b00011111) )>>1;} + if (chan[i].gain>threshold) {chan[i].gain=threshold;} + // threshold=255/MAX_NOTES, genuinely not sure if this is best approach but stops crashes :) + } + + +#if DRUM_SAMPLES + if (enableDrums) { + // drums + beatCounter++; + if (beatCounter > ticksPerStep) { + beat = (beat+1) & 0x1f; + beatCounter = 0; + +//if (beat==0 || beat==8) {HandleNoteOn(1, 48, 128); } + + //semi-perceptible BPM-locked phaser + if (3==waveType){int slowbeat=beat>>1; + int divided=(slowbeat+6)>>1; if (slowbeat>7) {divided=(22-slowbeat)>>1;} + bitmask=((0b00000000111111111)>>divided)<>a)<>8; + //int x = (int) (envelope.next() * myosc.next())>>8; + //int x = (int) (envelope.next() * (lfo.next() * myosc.next())>>8)>>8; + //int x = (int) lfo.next(); + //int x = (int) (lfo.next() * myosc.next())>>8; + //int x = (int) (envelope.next() * lpf.next(myosc.next()))>>8; + //int x = (envelope.next() * lpf.next(osc.next()))>>8; + //x = bitCrush(x, crushCtrl>>4); + //x = bitCrush(x, crushCtrl); + //x = (x * crushCtrl)>>4; // simple gain + //x = x>>2; + //x = lpf.next(x); + + // sum up channels + int x = hihatcSamp.next() + hihatoSamp.next(); + for(int i=0; i>8; + } + +//Dave G: helps crash less if goes through some sort of waveshaper here? + x = aCompress.next(256u + x); + + //x = (x*gain)>>8; +// x = lpf.next(x); + +#if DRUM_SAMPLES + if (enableDrums) { + // drums please! + int drums = kickSamp.next() + snareSamp.next() ; + //drums = (drums>>4)<<4; + x += drums; + } +#endif + + return x; +} + + +void loop() { + audioHook(); // required here +} + + + diff --git a/PolyDrums_v0_2_0_DelayDuty/hihatc909.h b/PolyDrums_v0_2_0_DelayDuty/hihatc909.h new file mode 100644 index 0000000..d2b9d76 --- /dev/null +++ b/PolyDrums_v0_2_0_DelayDuty/hihatc909.h @@ -0,0 +1,57 @@ +#ifndef hihatc909_H_ +#define hihatc909_H_ + +#include "Arduino.h" +#include + +#define hihatc909_NUM_CELLS 1024 +#define hihatc909_SAMPLERATE 16384 + +const int8_t __attribute__((progmem)) hihatc909_DATA [] = {1, -2, 1, -2, 2, 0, -4, +13, -18, 2, 3, 3, -1, 4, -9, 7, -5, -2, 4, -22, 23, -7, -8, -2, 7, -5, -8, 12, +-4, 7, 7, -21, 12, -3, -18, 8, 1, 4, -20, 4, -5, -4, -2, 0, -2, -7, 3, -3, -3, +-4, 3, -9, 12, -5, 20, 2, -25, 19, 0, 8, -12, -6, 4, 0, 15, -7, 8, 19, -9, -6, +0, -1, 0, -3, 12, -12, 7, 9, -18, 2, 4, 1, -7, -4, 7, 2, -3, 0, -3, 1, -2, -4, +-4, -11, 7, -8, -2, 11, 2, 8, -1, 4, -3, -1, -2, -9, -6, -3, 3, -9, -9, 4, 1, +-5, 1, 5, 0, 2, 2, -3, 9, 6, -7, 3, 5, 0, -2, 0, 7, -3, -2, -2, -3, 4, -2, 2, +-3, 2, 0, -14, 4, 3, -4, 0, -5, 3, -2, -9, 3, 0, -1, -1, -5, -1, 5, -4, -6, 7, +1, -2, 2, 0, 4, -1, -7, 1, 3, 3, -1, -1, 6, 1, -2, 0, 3, -5, -9, 1, -1, -2, 0, +-2, -1, 2, -1, -7, -2, -1, 1, -1, -4, 7, -5, -4, 5, 1, 1, 1, -2, 3, 2, -4, 0, 1, +3, -3, 1, -2, 0, 2, -1, 2, -2, -2, 0, -4, -3, 3, -3, 0, -1, -3, 2, -3, -6, 6, +-2, 0, 1, 2, 0, -2, 2, 1, 1, -5, 1, -3, -2, -4, 3, -2, -2, 0, -2, 2, -4, 1, 4, +-4, -1, 1, -1, -1, -2, 2, 1, 1, -4, 5, -4, 0, 1, -4, 3, -2, -1, 3, 0, -3, 0, -1, +-1, -1, 0, -4, 3, -1, -3, 2, -1, -1, 0, 0, 1, 1, -1, 1, -2, -1, -1, -4, -1, 4, +-1, -2, 1, 0, 1, 0, 0, -1, 1, 0, 0, -1, 1, -3, 0, -1, -3, 2, -2, 1, 0, -2, -3, +1, -1, -3, 1, -1, -2, 1, 1, -2, -1, 0, 0, -2, 0, -1, -2, 2, -1, 0, -2, 1, -2, 0, +0, -4, 1, -1, -2, 1, 0, -2, 0, -2, 3, 0, -2, 1, 0, -1, -1, 1, -1, 0, 0, -1, 0, +0, 0, -2, -1, 0, -1, 0, 0, -2, 0, 0, -2, -2, 0, -1, -1, 1, 0, -2, 0, 1, -1, 1, +-1, 0, -1, 0, -1, -1, -1, -2, 1, 0, 0, 0, 0, 0, 0, -2, 0, 0, -1, -1, -1, 0, -1, +1, -1, -1, -1, -1, 1, -3, 0, -1, -1, 0, -1, -1, -1, 0, -1, -1, 0, -2, 0, 0, 0, +-2, -1, 1, -1, 0, 0, -1, 0, 0, 0, -1, -2, 0, -2, -1, 0, 0, -1, 0, 0, -2, 0, -1, +-1, -1, 0, -1, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, -2, 0, -1, -1, 0, -1, -1, 0, -1, +-1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, +0, -1, -1, 0, 0, -1, 0, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, +0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, 0, +-1, 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, +-1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, +-1, 0, -1, 0, -1, -1, 0, -1, 0, -1, -1, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1, -1, 0, +-1, 0, 0, -1, 0, 0, 0, -1, -1, -1, -1, 0, -1, 0, 0, -1, 0, -1, -1, 0, -1, 0, 0, +-1, 0, -1, 0, 0, -1, -1, 0, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, -1, 0, 0, +-1, -1, 0, 0, 0, -1, 0, -1, -1, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, +-1, 0, -1, 0, -1, 0, 0, 0, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, -1, +0, -1, -1, 0, -1, -1, 0, -1, -1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1, 0, -1, +-1, 0, -1, -1, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, -1, 0, -1, +-1, 0, -1, 0, 0, -1, -1, 0, -1, 0, -1, -1, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0, 0, +-1, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, -1, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, +0, -1, 0, -1, -1, 0, -1, -1, 0, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, 0, +-1, 0, 0, -1, -1, 0, -1, -1, 0, -1, 0, 0, -1, -1, -1, 0, -1, -1, 0, 0, 0, 0, 0, +-1, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1, 0, -1, -1, 0, +-1, 0, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, -1, -1, -1, 0, 0, -1, -1, 0, -1, -1, +0, -1, 0, -1, 0, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1, 0, -1, -1, -1, 0, 0, -1, +0, 0, 0, -1, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, +0, -1, -1, 0, -1, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, +-1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, +0, 0, -1, 0, -1, 0, -1, 0, 0, 0, -1, -1, -1, 0, 0, -1, 0, -1, 0, -1, 0, -1, -1, +0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, }; + + #endif /* hihatc909_H_ */ diff --git a/PolyDrums_v0_2_0_DelayDuty/hihato909.h b/PolyDrums_v0_2_0_DelayDuty/hihato909.h new file mode 100644 index 0000000..fd3a74d --- /dev/null +++ b/PolyDrums_v0_2_0_DelayDuty/hihato909.h @@ -0,0 +1,103 @@ +#ifndef hihato_H_ +#define hihato_H_ + +#include "Arduino.h" +#include + +#define hihato_NUM_CELLS 2048 +#define hihato_SAMPLERATE 16384 + +const int8_t __attribute__((progmem)) hihato_DATA [] = {0, -1, 0, -1, 0, -1, 0, +-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -2, 4, -4, -1, 3, 1, -8, 7, -2, -9, 3, -1, +1, -3, 0, -2, 4, -3, -4, -1, -3, 3, -2, -5, -1, 2, -1, -3, -1, 4, -2, 4, -3, -2, +4, -1, 6, 0, 8, -5, -5, 2, -2, 2, -2, -2, 7, -4, 6, -11, -6, 11, -6, 1, 4, 0, +-14, 11, -6, -1, -2, -8, 5, -13, 1, 0, -8, 2, 7, 3, 1, -8, 5, 2, 2, -2, -8, 11, +-1, 0, 2, -1, -3, 2, -3, -9, 2, -4, 6, -3, 1, 9, -7, -3, 2, -2, -2, -13, 2, 9, +-3, 4, -3, 4, -6, 3, -1, -7, 13, -5, 3, 1, 1, -5, -13, 1, -2, 8, 0, 2, -4, 6, +-1, 2, 3, -12, 4, -16, 0, -7, 2, 0, -3, 10, -6, 6, -3, -9, -2, 11, -7, -7, 11, +9, -3, 1, -1, -5, -6, -4, 2, -11, 8, 2, -4, 14, 0, -9, 7, -4, 6, -2, -10, -3, 1, +4, -12, 10, -1, 1, 0, 2, -3, 0, 5, 0, 5, -6, 0, -1, 0, -8, -3, -1, -1, 1, -3, 3, +-3, 4, 8, -12, 0, -2, -7, 9, 2, 3, -6, -1, -4, 2, -7, -5, 12, -4, 7, 0, -2, 3, +-1, -2, -3, 1, -3, -1, 2, -1, 2, -8, 1, 7, -8, -3, 1, 5, 4, -3, -3, 1, -3, -13, +2, 0, 1, 2, -13, 4, 4, 4, 0, 6, 2, -6, -9, -5, 12, -3, 1, -10, 10, -1, -7, 3, +-2, 9, -18, 0, -5, 11, -4, 0, 6, -13, 3, -13, 14, 3, -5, 0, -3, 3, 1, -2, 1, 7, +5, -8, 6, 0, -8, 2, -3, 4, -6, 1, -14, 7, 8, -10, 7, -11, 10, -8, -13, 13, -3, +1, -2, 4, -4, -2, 0, 0, 8, -8, 2, 3, 5, -2, -1, -1, 4, 1, -13, 2, 2, -3, -5, 2, +-1, 2, -2, 0, 0, 4, -6, -5, 6, -1, 2, -5, 1, 10, -8, -7, 8, -6, 6, 3, -15, 2, 0, +-8, 6, 5, -4, 2, 0, -6, 5, -2, -4, 2, -3, -1, 5, -2, -2, 0, 1, 4, -8, 2, 4, 0, +0, -2, -1, -3, -1, -5, -3, 6, -18, 5, 10, -6, 10, -3, -4, 3, 1, -11, 4, -3, 5, +-2, -7, 7, -5, 3, -4, 4, -3, 3, -3, -2, 6, -2, 4, -5, 5, -3, -9, -3, -4, 1, -2, +5, 2, -2, 7, -4, -5, 3, 0, 2, 2, -5, -2, 6, 5, -11, 3, -6, 2, 0, -3, 5, -4, 5, +-6, 7, -11, 4, -3, -5, 1, -8, 4, -11, 17, 1, -3, -6, -2, 7, -2, -1, -5, 13, -5, +-8, 1, 5, 3, -10, 5, -5, -4, 7, -7, 8, 5, 1, -2, -8, 7, -8, -2, 2, 1, 4, -5, -5, +-2, 10, -10, -2, 1, -8, 0, -2, 5, 8, -4, -2, -4, 0, 4, -4, 1, -2, 5, 0, 8, -2, +1, -2, -4, 3, -6, 3, 0, -2, 2, 2, -5, -1, -7, -3, 1, 2, -6, 3, 0, -5, 6, -6, -1, +4, -2, -9, 4, 1, 3, 3, -2, 2, -1, -5, -2, 8, -1, -4, -6, 7, 2, 0, -3, 1, 2, -2, +1, -7, 5, -9, -2, 3, -4, 3, -1, -8, -3, 1, 0, -7, 5, 3, -3, -7, 2, 6, -2, 3, -7, +8, -7, 2, 1, 3, 7, -6, -1, -1, -2, -3, 5, -6, 3, 1, 0, -2, -1, -6, -5, 1, 3, 2, +-4, 2, -2, -1, 0, -1, -3, -2, -5, -3, 3, 4, -1, 8, 0, -2, 0, -5, 1, 2, -3, -2, +8, -4, 0, -5, -2, -1, -3, 0, 5, 3, -8, 0, 0, 7, -7, -2, -1, -3, -3, -1, 1, 7, 5, +-7, 1, 1, 4, -4, -3, 2, 5, -2, -6, 1, 1, -3, -7, -1, 3, -8, 3, -1, 2, 6, -11, 4, +1, -2, 0, -2, -3, 6, 6, -6, -1, 1, 2, 1, -1, -2, -1, -1, -5, 3, 0, -1, -1, -7, +0, -5, -1, 4, 0, 6, 0, -3, 1, 6, -5, 0, -3, -7, 6, -2, -2, 1, 5, -4, 4, -7, -4, +6, -3, 1, 0, -1, -4, -5, 2, -2, -5, 3, 1, 4, -1, 0, 1, 4, -1, -5, -1, -6, 2, -4, +-1, 2, -1, 1, -4, -2, 0, 1, 2, -1, 0, 2, -2, 0, 4, 0, -4, 1, -5, 1, -2, 1, 4, 0, +2, 1, -3, -9, 0, -1, 2, -6, -2, 4, 1, -1, -4, 1, -1, 0, -3, 1, 1, 1, 0, 0, 6, +-1, -8, -2, 1, 0, -2, -2, 5, 1, -3, -2, 5, 0, -3, -5, -8, 2, 1, 1, 0, 2, 2, -4, +-1, -2, 2, -5, 0, 6, -4, 5, 0, -4, 1, -4, -8, 6, -3, -4, 4, -3, 3, 0, -1, -2, 1, +-2, -2, 1, -2, -1, 0, 3, 1, 2, -1, -2, 0, -5, -1, 0, 7, 2, -4, 0, -2, -1, -2, +-1, 0, 1, -4, -3, 5, 2, -2, 2, -4, 2, -6, -6, 6, -1, 4, -2, 0, 1, -1, -1, -1, 2, +-3, 2, -5, -1, 4, -2, -1, -2, 2, -4, -5, 1, 2, 3, -1, 4, 1, -3, -2, -2, -2, 0, +2, -5, -2, 2, -1, 4, -4, -5, 3, -7, 2, 3, -3, 1, 2, 1, 1, -2, -3, 2, -4, 1, 0, +-1, 4, 1, -4, 2, -3, -3, 2, -7, 0, 4, -1, -2, 1, 1, -7, 4, -1, -1, -1, -6, 3, 4, +0, -1, 1, -4, 3, -5, -3, 4, -2, 1, 0, 0, 1, 0, -2, -2, -2, -3, -2, -1, 0, 3, -1, +0, 0, -1, -1, -4, 1, 1, 1, 2, -2, 2, 0, -2, 0, -3, -2, -2, 0, 2, 1, -1, 0, -1, +-2, 0, -3, 1, 1, -2, -3, 1, 0, 0, 1, -1, 1, -4, -1, 1, 3, 0, -1, 0, -1, -1, -4, +1, -1, 1, -1, -1, 3, -3, 0, -1, 2, -3, -2, 1, -3, 2, 2, -2, 0, 1, -6, 1, -1, 0, +3, -2, 0, 2, -2, -4, 1, -2, -2, -2, 2, -2, 2, 0, 0, 3, -2, 1, -2, 0, -3, 0, 1, +-1, 0, -1, 2, -4, -2, 1, -4, 2, 0, -2, 1, 3, -2, 0, -1, -2, -3, -2, 1, -1, 0, 1, +4, -2, 2, -2, -4, 1, -3, -2, 1, 0, -2, 0, 0, -1, 0, -2, -2, 1, 0, 1, 0, 2, 1, +-4, -2, 0, 0, -4, 1, -2, 1, 1, -4, 5, -1, -1, -2, -3, -1, 0, -3, -1, 4, -2, 0, +1, -1, 0, -2, -1, 2, -2, 1, 2, -1, 2, -1, -2, -1, -2, -5, -1, 1, 0, 0, 1, -2, 0, +-1, -2, -1, 1, 0, -4, 1, 0, 1, -1, 2, -2, -4, -1, -1, 4, 0, -2, 0, -1, 0, 0, -5, +1, 1, -3, 0, 0, -2, 3, -1, -2, 3, -5, 0, 2, 0, 0, -2, -2, 1, 2, -6, 0, 1, -1, 1, +-3, -1, 3, -2, -3, 2, 0, -3, 0, -2, 2, 1, -4, 2, 1, -2, -2, 1, -1, 4, -4, -4, 2, +2, -1, -1, -1, -4, 2, -3, 2, 2, -2, 0, -1, 0, 2, -3, -2, 2, 0, -4, -1, 1, -2, 2, +-2, -1, 0, -2, -1, 1, -1, -1, 3, 0, -1, -1, 0, -1, -2, 1, -1, 1, -1, 2, 1, -1, +-2, -1, 0, -5, 1, 0, -1, 2, 0, -2, -3, -1, 1, -2, -1, 1, 0, 1, 1, -2, 2, 0, -3, +-1, 0, -2, -1, 2, -1, -1, 2, -3, -1, 2, -3, -2, -1, -1, -1, 1, -2, 1, 1, -1, 0, +-2, 0, -2, 1, -1, 1, 1, 0, 0, -2, 0, -2, -1, -4, 0, 1, 0, 1, -1, 0, -1, -4, -2, +-1, -1, -1, 0, 1, 2, -1, -3, 1, 0, 0, -1, -1, 0, 1, -3, 0, 2, 0, -2, -4, -1, 1, +-1, -2, 2, 2, -1, -1, 0, -2, 1, -3, -3, 2, 0, -1, -1, 2, 1, -1, -2, -1, 0, -1, +-2, 0, 1, -1, -2, 0, 2, -3, -1, 0, -2, 1, -1, 0, 3, -1, 0, -1, 0, -1, -1, -2, +-1, 1, -1, 1, -3, -1, -1, -1, -1, -1, -1, -3, 2, -2, -1, 1, -1, 1, -2, -2, 1, 1, +0, -1, 1, -1, 0, -2, 1, 2, -3, 0, 0, -1, 0, -1, -2, 1, 0, -4, -1, 1, 0, 2, -3, +-1, 1, -1, -2, 1, -1, 2, -1, -2, 1, -2, 0, -2, 0, 1, -2, -1, 0, 2, 0, -2, -1, 0, +-1, -2, -1, 1, 3, -3, -2, 0, 0, -1, 0, 0, -1, -1, -3, -1, 1, 0, -2, 0, -1, 0, +-2, 0, 0, 1, -1, 0, 1, -1, 3, -2, 0, 0, -3, 0, 2, -2, -1, 2, -1, -1, -1, -2, 0, +-2, -2, 0, -1, -3, 0, 0, 0, 0, -3, 0, -1, 0, 0, 0, 1, 1, -1, -3, 0, 0, 0, -1, +-3, 0, 1, -2, -1, 2, -2, -1, 0, -4, 1, 0, -2, 1, -1, 1, -1, 0, 0, 0, -1, -1, 0, +-1, 1, -1, -1, 1, -1, -1, -2, -1, -1, -2, 0, 1, 0, -1, 1, -1, 0, 1, -1, -2, 1, +0, -2, 3, 0, 0, 0, -2, 0, -1, -1, -1, 0, -1, -1, -2, -1, 0, -2, -1, 0, -1, 0, 0, +0, 1, -1, 0, 0, -3, 0, 0, -1, 0, -1, 1, -1, 0, -1, -1, 0, -2, -1, 0, -1, -2, -1, +2, -1, -1, -1, -1, 1, -2, 1, -1, 0, 1, 0, -2, 0, 0, -3, 2, -2, -1, 0, -1, 0, 1, +1, -3, 1, -1, -2, 1, -3, 0, 1, -1, 0, 0, -2, 1, 0, -2, 0, -1, -1, 0, -2, -1, -1, +-1, 0, -1, -1, 0, 0, -2, 1, -1, -1, 0, -1, 1, -1, 0, -1, 1, -1, -3, 1, -1, 0, +-1, 0, 0, 0, 0, -2, -1, -1, 1, -3, -1, 2, -1, 0, -1, 0, 0, -2, -1, 1, -1, 0, -1, +-2, 1, -1, -2, 0, 0, -1, -2, -2, 1, 1, -1, -2, 1, 0, -2, 0, 0, 0, 0, -2, 0, 1, +-1, 0, -1, 0, -2, -1, -1, 1, 0, -1, 0, -1, 0, -1, -2, 1, -1, -2, 1, 0, 1, 0, -1, +0, 0, -2, -1, 1, -1, 0, -1, 0, 0, -1, -1, -1, 1, -3, -1, 0, 0, 0, -1, 1, 1, 0, +-3, 0, 0, -1, 0, -1, 1, -1, 0, -1, 1, 1, -3, -2, 0, 0, 0, -1, 0, 1, -2, -2, -1, +0, -1, -1, -1, 1, 0, -1, 1, -1, 0, -1, -1, -2, 1, -2, 0, 1, -1, 1, -1, 0, -1, 0, +-1, 0, 0, -1, 1, -1, 1, 0, -1, -2, 0, 0, -3, 0, -1, 1, -1, -2, 0, -1, 0, -1, -1, +0, -1, 0, 0, 1, -1, 1, -1, -2, 1, -2, 0, 0, -1, 0, 0, -1, -1, 1, -2, -2, 0, -1, +0, -1, 0, -1, 0, -1, -1, -1, -1, 0, -1, 1, 0, 0, 0, -1, -1, 0, 1, -1, 0, 0, -1, +0, -1, 0, 0, -1, -2, 0, -1, -1, 0, -1, 1, 0, -1, 0, -1, -2, 0, 0, -1, 0, -1, -1, +0, -1, -1, -2, 0, 1, -1, -1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, -1, 0, -1, -1, -1, +-1, 0, 1, -1, -2, 1, -1, 0, -1, -1, -1, 0, -1, -1, 0, -1, 1, 0, 0, 0, -1, -1, 0, +-2, 0, -1, 0, 1, -2, -1, -1, 0, 0, -3, 1, 0, -1, 0, 0, 0, -2, 0, -2, 1, -1, -2, +1, 0, 0, -2, 0, 1, -2, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, 0, -1, 0, -1, 0, 0, +1, -1, 0, 0, -1, 0, -2, 0, -1, 0, -1, 1, 0, -2, -2, 0, 0, -3, -1, 0, -1, 0, 0, +-1, 0, }; + + #endif /* hihato_H_ */ diff --git a/PolyDrums_v0_2_0_DelayDuty/kick909.h b/PolyDrums_v0_2_0_DelayDuty/kick909.h new file mode 100644 index 0000000..8dc2b21 --- /dev/null +++ b/PolyDrums_v0_2_0_DelayDuty/kick909.h @@ -0,0 +1,119 @@ +#ifndef kick909_H_ +#define kick909_H_ + +#include "Arduino.h" +#include + +#define kick909_NUM_CELLS 2048 +#define kick909_SAMPLERATE 16384 + +const int8_t __attribute__((progmem)) kick909_DATA [] = {-1, 0, -1, 0, -1, 0, 0, +0, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, -1, +0, -1, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, -1, -2, -2, -3, -3, -2, -2, -2, -1, -1, +-1, -1, 0, 0, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 8, 9, 9, 10, 14, 17, +20, 24, 29, 50, 57, 49, 53, 54, 53, 53, 54, 53, 53, 53, 52, 51, 50, 48, 46, 45, +44, 42, 40, 38, 35, 33, 30, 26, 23, 19, 15, 12, 8, 5, 1, -2, -6, -9, -11, -13, +-16, -17, -18, -20, -22, -23, -24, -24, -25, -26, -27, -27, -27, -27, -28, -28, +-28, -28, -27, -27, -27, -26, -25, -24, -24, -23, -21, -20, -19, -17, -15, -13, +-12, -10, -8, -5, -3, -1, 1, 3, 6, 8, 10, 12, 14, 17, 19, 21, 24, 25, 28, 30, +32, 33, 35, 36, 37, 37, 38, 38, 39, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, +40, 40, 39, 38, 38, 37, 37, 36, 36, 35, 34, 33, 32, 32, 30, 29, 28, 26, 24, 22, +20, 18, 17, 15, 13, 11, 9, 8, 6, 5, 3, 1, -1, -2, -4, -5, -7, -8, -9, -11, -13, +-14, -16, -17, -18, -19, -20, -21, -22, -24, -25, -25, -26, -27, -27, -28, -29, +-29, -30, -30, -30, -30, -31, -31, -31, -31, -31, -32, -31, -32, -32, -32, -32, +-32, -32, -32, -32, -32, -32, -32, -32, -31, -31, -31, -30, -30, -30, -29, -28, +-28, -27, -27, -26, -26, -25, -25, -24, -23, -22, -21, -20, -20, -19, -18, -17, +-16, -15, -14, -13, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, 0, 1, 2, 3, 4, 6, +6, 8, 9, 10, 11, 12, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 27, +28, 29, 30, 30, 31, 32, 33, 33, 34, 34, 34, 34, 35, 35, 35, 36, 36, 36, 36, 36, +36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 36, 36, 36, 36, +36, 35, 35, 35, 34, 34, 34, 33, 33, 32, 32, 32, 32, 31, 31, 30, 30, 29, 29, 28, +28, 27, 27, 26, 25, 25, 24, 23, 23, 21, 21, 20, 19, 18, 17, 16, 15, 14, 12, 11, +10, 9, 8, 7, 7, 6, 5, 4, 3, 2, 1, 0, -2, -3, -4, -4, -5, -6, -7, -8, -8, -9, +-10, -11, -12, -12, -13, -14, -15, -16, -16, -17, -18, -19, -20, -20, -21, -22, +-23, -23, -24, -25, -25, -26, -26, -27, -27, -28, -29, -29, -29, -30, -30, -31, +-31, -32, -32, -32, -32, -33, -33, -33, -33, -33, -33, -34, -34, -34, -34, -34, +-34, -34, -34, -34, -34, -34, -34, -34, -35, -35, -35, -35, -35, -35, -35, -35, +-35, -35, -35, -35, -34, -34, -34, -34, -33, -33, -33, -33, -33, -32, -32, -32, +-32, -31, -31, -31, -31, -31, -30, -30, -30, -29, -29, -29, -28, -28, -28, -27, +-27, -26, -26, -25, -25, -24, -24, -23, -23, -22, -21, -21, -20, -19, -19, -18, +-17, -17, -16, -15, -14, -14, -13, -12, -12, -11, -10, -9, -9, -8, -7, -6, -5, +-5, -4, -3, -2, -1, -1, 0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 12, 13, +14, 15, 16, 16, 17, 18, 19, 20, 20, 21, 22, 23, 24, 24, 25, 26, 26, 27, 28, 28, +29, 29, 30, 30, 31, 31, 31, 32, 32, 32, 32, 33, 33, 32, 33, 33, 34, 34, 34, 34, +34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, +35, 35, 35, 35, 35, 35, 35, 35, 35, 34, 34, 34, 34, 33, 33, 32, 33, 33, 32, 32, +32, 31, 31, 31, 31, 30, 30, 30, 29, 29, 29, 28, 28, 28, 27, 27, 26, 26, 26, 25, +25, 24, 24, 23, 22, 22, 21, 20, 20, 19, 18, 17, 17, 16, 15, 14, 13, 12, 11, 11, +10, 9, 8, 7, 6, 5, 4, 4, 3, 2, 1, 0, -1, -1, -2, -3, -4, -5, -5, -6, -7, -8, -9, +-9, -10, -11, -12, -12, -13, -14, -14, -15, -16, -17, -17, -18, -19, -19, -20, +-21, -21, -22, -23, -23, -24, -24, -25, -26, -26, -27, -27, -28, -28, -29, -30, +-30, -30, -31, -31, -32, -32, -32, -33, -33, -33, -34, -34, -34, -34, -34, -35, +-35, -35, -35, -35, -35, -35, -35, -36, -36, -36, -36, -36, -36, -36, -36, -36, +-36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, +-35, -35, -35, -35, -35, -34, -34, -34, -34, -34, -33, -33, -33, -33, -32, -32, +-32, -32, -31, -31, -31, -31, -30, -30, -30, -29, -29, -29, -28, -28, -27, -27, +-26, -26, -26, -25, -24, -24, -23, -23, -22, -21, -21, -20, -19, -19, -18, -17, +-17, -16, -15, -15, -14, -13, -12, -12, -11, -10, -9, -9, -8, -7, -6, -6, -5, +-4, -3, -3, -2, -1, 0, 0, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 12, 13, +14, 15, 15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23, 24, 25, 25, 26, 26, 27, 28, +28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 33, 33, 32, +33, 33, 34, 33, 33, 32, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, +34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 32, 33, 33, 32, 32, 32, 32, 31, +31, 31, 31, 30, 30, 30, 29, 29, 29, 29, 28, 28, 28, 27, 27, 26, 26, 26, 25, 25, +24, 24, 23, 23, 22, 22, 21, 20, 20, 19, 18, 18, 17, 16, 15, 14, 13, 12, 12, 11, +10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 0, -1, -2, -3, -3, -4, -5, -6, -7, -7, -8, -9, +-10, -10, -11, -12, -12, -13, -14, -14, -15, -15, -16, -17, -17, -18, -18, -19, +-19, -20, -20, -21, -21, -22, -22, -23, -23, -24, -24, -25, -25, -25, -26, -26, +-27, -27, -27, -27, -28, -28, -28, -28, -29, -29, -29, -29, -29, -29, -29, -29, +-29, -29, -29, -30, -30, -30, -30, -30, -29, -29, -29, -29, -29, -29, -29, -29, +-29, -29, -29, -29, -29, -29, -29, -29, -29, -28, -28, -28, -28, -28, -28, -28, +-28, -27, -27, -27, -27, -27, -26, -26, -26, -26, -26, -25, -25, -25, -25, -25, +-24, -24, -24, -24, -23, -23, -23, -23, -23, -22, -22, -22, -21, -21, -21, -21, +-20, -20, -20, -19, -19, -19, -18, -18, -18, -17, -17, -17, -16, -16, -15, -15, +-15, -14, -14, -13, -13, -13, -12, -12, -12, -11, -11, -10, -10, -10, -9, -9, +-8, -8, -8, -7, -7, -7, -6, -6, -5, -5, -5, -4, -4, -4, -3, -3, -3, -2, -2, -1, +-1, -1, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, +7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, +7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, +6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, +2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, -1, -1, -1, -1, -2, -2, -2, -2, -3, -3, -3, -3, +-4, -4, -4, -4, -4, -5, -5, -5, -5, -6, -6, -6, -6, -6, -6, -7, -7, -7, -7, -7, +-8, -8, -8, -8, -8, -8, -8, -9, -9, -9, -9, -9, -9, -9, -9, -10, -10, -10, -10, +-10, -10, -10, -10, -10, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, +-11, -11, -11, -11, -11, -11, -11, -11, -12, -11, -11, -11, -11, -11, -11, -11, +-11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, +-11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -10, -10, +-10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -9, -9, +-9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -8, -8, -8, -8, -8, -8, -8, +-8, -8, -8, -8, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -6, -6, -6, -6, -6, -6, +-6, -6, -6, -6, -6, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -4, -4, -4, -4, +-4, -4, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, +-3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, +-3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -4, -4, -4, -4, -4, -4, -4, +-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, +-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, +-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, +-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, +-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, +-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, +-3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, +-3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, +-3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, +-3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, +-3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, +-3, -2, -3, -2, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, }; + + #endif /* kick909_H_ */ diff --git a/PolyDrums_v0_2_0_DelayDuty/snare909.h b/PolyDrums_v0_2_0_DelayDuty/snare909.h new file mode 100644 index 0000000..7ed733c --- /dev/null +++ b/PolyDrums_v0_2_0_DelayDuty/snare909.h @@ -0,0 +1,116 @@ +#ifndef snare909_H_ +#define snare909_H_ + +#include "Arduino.h" +#include + +#define snare909_NUM_CELLS 2048 +#define snare909_SAMPLERATE 16384 + +const int8_t __attribute__((progmem)) snare909_DATA [] = {0, -1, 0, -1, 0, -1, 0, +-1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, +-1, 0, 0, -2, -2, 0, -2, -1, -3, -2, 4, -3, -7, -2, 1, -7, 6, -3, -2, -6, -8, 8, +-6, 0, -3, -1, -7, 0, -4, -11, -2, 3, -7, -9, 19, -1, 33, 43, 22, 60, 57, 49, +58, 55, 68, 65, 62, 60, 60, 69, 64, 61, 57, 58, 43, 50, 39, 37, 27, 17, 21, 15, +11, -2, -6, -12, -6, -23, -7, -22, -30, -22, -25, -27, -26, -31, -31, -21, -18, +-8, -18, -4, 3, 1, 8, 12, 12, 19, 14, 42, 28, 21, 43, 45, 49, 46, 46, 43, 55, +44, 47, 44, 30, 46, 34, 38, 42, 24, 34, 27, 45, 23, 28, 38, 35, 36, 23, 30, 28, +40, 23, 32, 35, 29, 31, 31, 30, 28, 30, 30, 12, 13, 18, 8, 7, -2, 5, 6, -1, -7, +-5, -9, -10, -11, -13, -17, -22, -25, -24, -24, -33, -28, -24, -30, -20, -28, +-41, -28, -29, -26, -27, -37, -26, -29, -32, -20, -31, -26, -15, -20, -9, -14, +-15, -12, -6, -7, -3, 8, 6, 15, 16, 12, 21, 30, 25, 35, 35, 29, 46, 44, 38, 49, +34, 48, 44, 44, 55, 38, 50, 41, 52, 43, 43, 53, 44, 56, 46, 39, 41, 44, 42, 42, +44, 41, 43, 35, 38, 39, 26, 30, 36, 31, 27, 26, 21, 20, 15, 9, 8, -2, 0, 10, +-10, -13, -3, -17, -14, -14, -18, -7, -30, -24, -32, -26, -28, -37, -23, -35, +-25, -40, -31, -34, -46, -30, -42, -38, -26, -37, -33, -32, -27, -32, -23, -23, +-20, -13, -11, -10, -18, 0, -13, -3, -8, 3, -6, 4, 19, -1, 12, 14, 19, 10, 13, +9, 20, 19, 21, 23, 21, 34, 21, 24, 34, 20, 31, 28, 31, 36, 24, 33, 23, 31, 27, +30, 35, 37, 26, 17, 21, 19, 27, 21, 24, 17, 23, 19, 24, 19, 4, 23, 7, 15, 17, +14, 24, 8, 15, 10, 5, 6, 11, 12, -5, 9, 9, 10, 9, 1, 5, 0, -2, -2, 1, 1, -7, 0, +3, -2, -2, -8, -8, -19, -4, -18, -6, -4, -11, -5, -15, -1, -28, -12, -19, -10, +-15, -23, -19, -23, -9, -25, -22, -21, -22, -18, -23, -18, -16, -31, -28, -23, +-20, -27, -15, -26, -23, -22, -23, -16, -22, -29, -20, -11, -29, -12, -17, -14, +-15, -12, -16, -22, -21, -8, -11, -16, -8, -13, -12, -8, -15, -14, -9, -14, -2, +-13, 3, -9, -12, 9, 3, 0, 7, -3, 0, 9, 2, 9, 7, 5, 4, 18, 12, 3, 14, 17, 16, 19, +14, 6, 21, 24, 23, 18, 24, 18, 11, 25, 25, 20, 24, 22, 5, 27, 20, 13, 25, 28, +17, 19, 11, 14, 24, 10, 23, 10, 23, 19, 16, 9, 14, 9, 14, 17, 6, 13, 8, 11, -1, +17, 9, 0, 6, 4, -1, 3, -12, -10, -4, -12, -9, -14, -5, -24, -11, -14, -21, -16, +-13, -18, -30, -17, -29, -25, -21, -21, -29, -30, -15, -34, -30, -21, -29, -25, +-26, -28, -36, -27, -30, -28, -25, -21, -11, -31, -18, -21, -12, -12, -12, -13, +-17, -15, -17, 0, -21, -9, 3, -3, -1, -7, 2, -3, 3, 3, -9, 13, 8, 5, -3, 9, 13, +3, 18, 6, 13, 13, 15, 12, 7, 10, 14, 12, 11, 3, 12, 15, 17, 6, 7, 26, -1, 16, +19, 8, 16, 12, 15, 1, 10, 20, 7, 7, 8, 17, 1, 3, 12, 8, 7, 10, 9, -4, 1, -3, 5, +1, 0, 1, 4, 3, -6, 1, -2, -2, -10, -7, -1, -3, -4, -19, 0, -10, -13, -4, -15, +-8, -4, -13, -24, -10, -8, -13, -10, -11, -24, -14, -18, -6, -9, -24, -20, -10, +-12, -18, -11, -14, -13, -18, -17, -28, -8, -27, -20, -14, -15, -11, -18, -9, +-16, -15, -17, -16, -6, -13, -17, 3, -25, -1, -11, -4, -6, -8, -5, -14, 0, -11, +5, -3, 0, 0, -1, -12, 0, -2, -5, 6, 5, 4, 4, -11, 2, 3, -4, 12, 1, 5, -2, 3, -3, +0, 2, 6, 7, -7, 2, 1, 6, 5, -2, 0, 2, 1, 9, 1, 9, -5, -6, 7, -2, 5, -3, 16, -1, +1, 2, 4, 10, -3, 17, -2, 6, 7, 2, 9, -2, 1, -6, 10, -5, -1, 3, -8, 11, -6, 7, +-1, -7, 2, -3, -6, 1, -3, -11, -3, -3, -7, -12, -4, -7, -10, -9, -18, -6, -11, +-20, -3, -12, -6, -10, -24, -9, -16, -18, -9, -18, -20, -11, -9, -15, -24, -10, +-20, -27, -13, -14, -13, -19, -18, -23, -21, -17, -14, -22, -15, -21, -19, -14, +-19, -11, -15, -15, -17, -17, -18, -12, -12, -12, -8, -10, -17, -9, -14, -3, -5, +-10, -9, -10, -8, -10, 7, -5, -3, 0, -2, 3, -3, 6, -6, -7, -1, 3, 5, 1, 4, -12, +8, 5, -1, 11, 6, -4, 3, 6, -1, 10, 1, 7, 2, 7, 6, -6, 2, 3, 3, 1, 6, 0, -3, 5, +5, 7, 1, -3, -2, -2, 6, 2, -3, 0, 3, 4, -4, 2, -5, -1, -2, -4, 0, -8, -8, -5, 2, +-9, -6, -1, -2, -9, -6, -12, 1, -10, -14, -9, -13, -10, -10, -9, -10, -7, -17, +-3, -13, -7, -12, -15, -16, -10, -9, -16, -7, -11, -11, -13, -14, -9, -11, -16, +-17, -12, -10, -16, -10, -11, -14, -4, -14, -17, -7, -12, -6, -16, -2, -7, -9, +-10, -9, -5, -18, 1, -8, 0, 1, -9, -16, -4, -3, -6, 4, -9, -2, -10, 0, 1, -10, +3, -1, -3, -2, -4, 0, 3, -3, 0, -1, 0, 2, -4, 2, -3, -8, 0, -5, 5, -7, -4, 3, +-9, 6, -10, 5, 1, -4, 2, -8, 2, -6, 2, -1, 2, -2, -6, 1, -6, -5, -3, 7, -8, -5, +2, -7, -1, -8, 3, 0, 0, 1, -6, -3, -5, -3, -3, -9, -6, 1, -7, -5, -3, -3, -6, +-11, -5, -1, -8, -15, -1, -8, -8, 0, -13, -9, 0, -14, -10, -9, -9, -11, -3, -11, +-14, -7, -5, -4, -12, -18, -16, -2, -19, -7, -13, -5, -12, -10, -6, -23, -4, +-10, -11, -8, -10, -14, -12, -5, -14, -13, -3, -8, -16, -10, -8, -15, -6, -13, +-10, -11, -8, -6, -12, -9, -8, -10, -10, -8, -4, -13, -5, -6, -11, 2, -14, -2, +-6, -7, -1, -11, 1, -4, -9, 3, -3, 2, -8, -1, -2, -7, -1, 0, 4, -3, 3, -7, 2, +-3, -1, 1, -3, -2, -1, 7, -4, 1, -2, -2, -4, -3, 8, -9, 1, -1, -3, 4, -6, 3, 3, +0, -1, -5, -7, -2, 1, -4, 3, 0, -9, 0, -4, 4, -5, -4, 1, -3, -4, -5, -3, -7, -8, +-7, 2, -9, -8, -2, -7, -3, -10, -6, -4, -12, -6, -10, -7, -10, -10, -5, -11, -3, +-7, -13, -10, -8, -6, -15, -7, -7, -11, -9, -11, -8, -10, -11, -8, -6, -12, -8, +-10, -8, -6, -10, -7, -8, -7, -8, -11, -3, -4, -5, -6, -12, -8, -6, -6, -3, -6, +-6, -6, -2, 1, -12, -5, -4, -6, -1, -1, -7, -5, -4, -3, 1, -6, 2, -6, 0, -5, -9, +4, -7, -2, 2, -3, 1, -3, -4, -4, -1, -2, -4, 3, -5, -2, -3, -4, -1, -4, 1, -1, +-10, 1, 0, -9, 2, -3, -6, -2, 6, -5, -6, -2, -3, -3, -4, -4, -6, -1, -5, -6, -1, +-2, -9, -1, -2, -5, -3, 0, -5, -7, -5, -8, -1, -7, -6, -4, -2, -6, -7, -7, -8, +-5, 0, -4, -12, -4, -10, -3, -4, -11, -3, -6, -6, -6, -9, -7, -9, -7, -5, -7, +-2, -10, -10, -3, -10, -5, -7, -10, -6, -12, -6, -9, -4, -7, -8, -5, -12, -6, +-5, -4, -9, -4, -7, -5, -5, -8, -7, -7, -9, -7, -5, -11, -3, -6, -3, -5, -8, -4, +-3, -6, -8, -6, -5, -4, -5, -6, -2, -6, -6, -2, -5, -3, -4, -5, -7, -3, -2, -2, +-2, -9, 1, -3, -8, 0, -3, 0, -5, -3, -2, -1, 0, -3, -3, -4, 1, -2, -8, 3, -1, +-5, 1, 0, -3, -4, -4, -1, 0, -3, 2, -6, -1, -3, -6, 2, -4, -3, -3, -1, -1, -5, +-3, 0, 0, -6, -1, -4, -5, -3, 0, -1, -4, -8, -4, 0, -9, 0, -4, -5, -4, -1, -5, +-6, -4, -6, -3, -6, -6, -9, -4, -4, -7, -4, -3, -10, -6, -6, -5, -5, -8, -5, -9, +-5, -6, -5, -6, -9, -8, -4, -5, -10, -3, -7, -6, -6, -4, -6, -9, -4, -6, -2, -7, +-2, -3, -7, -4, -7, -3, -5, -3, -4, -7, -4, -3, -3, -2, -1, -5, -4, -3, -4, -3, +-3, -2, -3, -1, -3, -7, 0, -3, 2, -1, -5, -3, -1, -3, -5, 1, -8, 2, -5, 0, -1, +-6, -1, -2, 2, -5, -1, -1, -2, -2, -1, -6, 0, -5, -2, 0, -5, -2, -4, 1, -5, -4, +-2, 0, -5, -3, 0, -5, -1, -2, -3, -3, -4, -2, -3, -3, -5, -4, -2, -6, -3, -6, +-4, -3, -6, -3, -2, -5, -5, -5, -4, -5, -3, -3, -8, -2, -6, -3, -4, -9, -1, -8, +-4, -4, -7, -2, -6, -3, -5, -4, -3, -5, -3, -8, -4, -8, -5, -3, -8, -1, -7, -2, +-4, -6, -5, -3, -4, -3, -4, -4, -1, -5, -2, -5, -2, -3, -4, -3, -5, -2, -4, -1, +-4, -4, -1, -3, -1, -4, -4, -3, -2, -3, -1, -3, -5, -2, -1, -3, -2, 0, -4, -2, +-3, -4, -2, -3, -2, -2, -1, -3, -4, -2, -3, -2, -3, 0, -5, -2, -1, -3, -1, -2, +-1, -5, -2, -1, -2, -2, -2, -1, -2, -2, -3, -2, -4, -2, -1, -3, -2, -2, -2, -2, +-1, -4, -4, -1, -3, -2, -1, -6, -1, -4, -4, -2, -5, -1, -4, -1, -4, -4, -2, -3, +-4, -2, -4, -4, -3, -4, -1, -5, -5, -3, -3, -4, -4, -5, -3, -3, -6, -4, -4, -3, +-4, -4, -3, -4, -3, -5, -5, -4, -6, -2, -6, -3, -4, -4, -3, -5, -2, -5, -5, -3, +-3, -4, -4, -4, -2, -3, -4, -4, -4, -2, -3, -3, -3, -3, -3, -2, -2, -4, -1, -2, +-3, -1, -3, -1, -2, -3, -3, -1, -4, -3, -1, -2, -2, -1, -2, -2, -2, -3, -1, -2, +-1, -1, -3, -2, -1, -2, -2, -2, -1, -1, -1, -2, -2, -1, -2, -1, -2, -2, -1, -2, +-2, -2, -1, -2, -2, -1, -2, -2, -1, -2, -2, -2, -2, -1, -2, -3, -2, -2, -2, -2, +-2, -2, -2, -2, -3, -3, -2, -2, -3, -2, -3, -3, -3, -3, -2, -3, -2, -3, -3, -3, +-3, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -3, -3, -3, +-3, -3, -3, -3, -3, -3, -2, -3, -3, -2, -3, -2, -2, -2, -2, -2, -3, -2, -2, -3, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-1, -2, -2, -2, -2, -1, -2, -1, -1, -2, -2, -1, -2, -1, -2, -2, -2, -2, -1, -2, +-2, -2, -2, -1, -1, -2, -1, -2, -1, -2, -2, -1, -1, -1, -2, -1, -2, -1, -2, -1, +-1, -2, -1, -1, -1, -1, -1, -1, -2, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, +-2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, }; + + #endif /* snare909_H_ */ -- cgit v1.3