From b791625011d2f1c6fa604a3ff67d7479fcffa7de Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Mon, 14 Mar 2016 19:27:50 +0200 Subject: Fork fakebitpolytechnic/cheapsynth --- CheapSynth_FM4osc2Poly_v0_5_6/ADSRslow.h | 307 ------------- .../CheapSynth_FM4osc2Poly_v0_5_6.ino | 426 ----------------- .../CheapSynth_FM4osc2Poly_v0_6.ino | 431 ------------------ CheapSynth_FM4oscZoom_v0_5_5.ino | 348 -------------- CheapSynth_SeqMode_v0_9_0.ino | 300 ------------ Mozzi_drumsDG0_0_2BETA/Mozzi_drumsDG0_0_2BETA.ino | 172 ------- Mozzi_drumsDG0_0_2BETA/hihatc909.h | 57 --- Mozzi_drumsDG0_0_2BETA/hihato909.h | 103 ----- Mozzi_drumsDG0_0_2BETA/kick909.h | 119 ----- Mozzi_drumsDG0_0_2BETA/snare909.h | 116 ----- PolyDrums_v0_1_3_DelayLPF/ADSRslow.h | 307 ------------- .../PolyDrums_v0_1_3_DelayLPF.ino | 495 -------------------- PolyDrums_v0_1_3_DelayLPF/Wave.h | 183 -------- PolyDrums_v0_1_3_DelayLPF/hihatc909.h | 57 --- PolyDrums_v0_1_3_DelayLPF/hihato909.h | 103 ----- PolyDrums_v0_1_3_DelayLPF/kick909.h | 119 ----- PolyDrums_v0_1_3_DelayLPF/snare909.h | 116 ----- PolyDrums_v0_1_5_DelayNoLPF/ADSRslow.h | 309 ------------- .../PolyDrums_v0_1_5_DelayNoLPF.ino | 504 --------------------- PolyDrums_v0_1_5_DelayNoLPF/hihatc909.h | 57 --- PolyDrums_v0_1_5_DelayNoLPF/hihato909.h | 103 ----- PolyDrums_v0_1_5_DelayNoLPF/kick909.h | 119 ----- PolyDrums_v0_1_5_DelayNoLPF/snare909.h | 116 ----- .../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 ----- README.md | 4 - WaveClass3PolyPlusLPF_BETA/Wave.h | 183 -------- .../WaveClass3PolyPlusLPF_BETA.ino | 419 ----------------- WaveClass3PolyPlusLPF_BETA/hihatc909.h | 57 --- WaveClass3PolyPlusLPF_BETA/hihato909.h | 103 ----- WaveClass3PolyPlusLPF_BETA/kick909.h | 119 ----- WaveClass3PolyPlusLPF_BETA/snare909.h | 116 ----- WaveClass4PolyPlusLPF_BETA/ADSRslow.h | 307 ------------- WaveClass4PolyPlusLPF_BETA/Wave.h | 183 -------- .../WaveClass4PolyPlusLPF_BETA.ino | 434 ------------------ arduino-monosynth.ino | 170 +++++++ fm_v1_ino/fm_v1_ino.ino | 167 ------- 40 files changed, 170 insertions(+), 7934 deletions(-) delete mode 100644 CheapSynth_FM4osc2Poly_v0_5_6/ADSRslow.h delete mode 100644 CheapSynth_FM4osc2Poly_v0_5_6/CheapSynth_FM4osc2Poly_v0_5_6.ino delete mode 100644 CheapSynth_FM4osc2Poly_v0_6/CheapSynth_FM4osc2Poly_v0_6.ino delete mode 100644 CheapSynth_FM4oscZoom_v0_5_5.ino delete mode 100644 CheapSynth_SeqMode_v0_9_0.ino delete mode 100644 Mozzi_drumsDG0_0_2BETA/Mozzi_drumsDG0_0_2BETA.ino delete mode 100644 Mozzi_drumsDG0_0_2BETA/hihatc909.h delete mode 100644 Mozzi_drumsDG0_0_2BETA/hihato909.h delete mode 100644 Mozzi_drumsDG0_0_2BETA/kick909.h delete mode 100644 Mozzi_drumsDG0_0_2BETA/snare909.h delete mode 100644 PolyDrums_v0_1_3_DelayLPF/ADSRslow.h delete mode 100644 PolyDrums_v0_1_3_DelayLPF/PolyDrums_v0_1_3_DelayLPF.ino delete mode 100644 PolyDrums_v0_1_3_DelayLPF/Wave.h delete mode 100644 PolyDrums_v0_1_3_DelayLPF/hihatc909.h delete mode 100644 PolyDrums_v0_1_3_DelayLPF/hihato909.h delete mode 100644 PolyDrums_v0_1_3_DelayLPF/kick909.h delete mode 100644 PolyDrums_v0_1_3_DelayLPF/snare909.h delete mode 100644 PolyDrums_v0_1_5_DelayNoLPF/ADSRslow.h delete mode 100644 PolyDrums_v0_1_5_DelayNoLPF/PolyDrums_v0_1_5_DelayNoLPF.ino delete mode 100644 PolyDrums_v0_1_5_DelayNoLPF/hihatc909.h delete mode 100644 PolyDrums_v0_1_5_DelayNoLPF/hihato909.h delete mode 100644 PolyDrums_v0_1_5_DelayNoLPF/kick909.h delete mode 100644 PolyDrums_v0_1_5_DelayNoLPF/snare909.h delete mode 100644 PolyDrums_v0_2_0_DelayDuty/PolyDrums_v0_2_0_DelayDuty.ino delete mode 100644 PolyDrums_v0_2_0_DelayDuty/hihatc909.h delete mode 100644 PolyDrums_v0_2_0_DelayDuty/hihato909.h delete mode 100644 PolyDrums_v0_2_0_DelayDuty/kick909.h delete mode 100644 PolyDrums_v0_2_0_DelayDuty/snare909.h delete mode 100644 README.md delete mode 100644 WaveClass3PolyPlusLPF_BETA/Wave.h delete mode 100644 WaveClass3PolyPlusLPF_BETA/WaveClass3PolyPlusLPF_BETA.ino delete mode 100644 WaveClass3PolyPlusLPF_BETA/hihatc909.h delete mode 100644 WaveClass3PolyPlusLPF_BETA/hihato909.h delete mode 100644 WaveClass3PolyPlusLPF_BETA/kick909.h delete mode 100644 WaveClass3PolyPlusLPF_BETA/snare909.h delete mode 100644 WaveClass4PolyPlusLPF_BETA/ADSRslow.h delete mode 100644 WaveClass4PolyPlusLPF_BETA/Wave.h delete mode 100644 WaveClass4PolyPlusLPF_BETA/WaveClass4PolyPlusLPF_BETA.ino create mode 100644 arduino-monosynth.ino delete mode 100644 fm_v1_ino/fm_v1_ino.ino diff --git a/CheapSynth_FM4osc2Poly_v0_5_6/ADSRslow.h b/CheapSynth_FM4osc2Poly_v0_5_6/ADSRslow.h deleted file mode 100644 index 760d136..0000000 --- a/CheapSynth_FM4osc2Poly_v0_5_6/ADSRslow.h +++ /dev/null @@ -1,307 +0,0 @@ -/* - * ADSR.h - * - * Copyright 2012 Tim Barrass. - * - * This file is part of Mozzi. - * - * Mozzi is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Mozzi is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Mozzi. If not, see . - * - */ - -#ifndef ADSR_H_ -#define ADSR_H_ - -#include "Arduino.h" -//#include -#include "Line.h" -#include "mozzi_fixmath.h" - -/** A simple ADSR envelope generator. -@todo Test whether using the template parameter makes any difference to speed, -and rationalise which units which do and don't need them. -Template objects are messy when you try to use pointers to them, -you have to include the whole template shebang in the pointer handling. -*/ -template -class ADSR -{ -private: - - const unsigned int AUDIO_TICKS_PER_CONTROL; - - unsigned int phase_control_step_counter; - unsigned int phase_num_control_steps; - - enum {ATTACK,DECAY,SUSTAIN,RELEASE,IDLE}; - - - struct phase{ - byte phase_type; - unsigned int control_steps; - unsigned long audio_steps; - Q8n0 level; - }attack,decay,sustain,release,idle; - - phase * current_phase; - - // Linear audio rate transitions for envelope - Line transition; - - inline - unsigned int convertMsecToControlSteps(unsigned int msec){ - return (uint) (((ulong)msec*CONTROL_UPDATE_RATE)>>10); // approximate /1000 with shift - } - - inline - void setPhase(phase * next_phase) { - phase_control_step_counter = 0; - phase_num_control_steps = next_phase->control_steps; - transition.set(Q8n0_to_Q16n16(next_phase->level),next_phase-> control_steps); - current_phase = next_phase; - } - - - - inline - void checkForAndSetNextPhase(phase * next_phase) { - if (++phase_control_step_counter >= phase_num_control_steps){ - setPhase(next_phase); - } - } - - - inline - void checkForAndSetIdle() { - if (++phase_control_step_counter >= phase_num_control_steps){ - transition.set(0,0,1); - current_phase = &idle; - } - } - - - -inline - void setTime(phase * p, unsigned int msec) - { - p->control_steps=convertMsecToControlSteps(msec); - p->audio_steps = (ulong) p->control_steps * AUDIO_TICKS_PER_CONTROL; - } - - -public: - - /** Constructor. - */ - ADSR():AUDIO_TICKS_PER_CONTROL(AUDIO_RATE/CONTROL_UPDATE_RATE) - { - attack.phase_type = ATTACK; - decay.phase_type = DECAY; - sustain.phase_type = SUSTAIN; - release.phase_type = RELEASE; - idle.phase_type = IDLE; - release.level = 0; - } - - -/** Updates the internal controls of the ADSR. - Call this in updateControl(). - */ - void update(){ // control rate - - switch(current_phase->phase_type) { - - case ATTACK: - checkForAndSetNextPhase(&decay); - break; - - case DECAY: - checkForAndSetNextPhase(&sustain); - break; - - case SUSTAIN: - checkForAndSetNextPhase(&release); - break; - - case RELEASE: - checkForAndSetIdle(); - break; - - } - } - - /** Advances one audio step along the ADSR and returns the level. - Call this in updateAudio(). - @return the next value, as an unsigned int. - */ - inline - unsigned int next() - { - return Q16n16_to_Q16n0(transition.next()); - } - - - - /** Start the attack phase of the ADSR. THis will restart the ADSR no matter what phase it is up to. - */ - inline - void noteOn(){ - setPhase(&attack); - } - - - - /** Start the release phase of the ADSR. - @todo fix release for rate rather than steps (time), so it releases at the same rate whatever the current level. - */ - inline - void noteOff(){ - setPhase(&release); - } - - - - - - /** Set the attack level of the ADSR. - @param value the attack level. - */ - inline - void setAttackLevel(byte value) - { - attack.level=value; - } - - - - /** Set the decay level of the ADSR. - @param value the decay level. - */ - inline - void setDecayLevel(byte value) - { - decay.level=value; - } - - - /** Set the sustain level of the ADSR. - @param value the sustain level. Usually the same as the decay level, - for a steady sustained note. - */ - inline - void setSustainLevel(byte value) - { - sustain.level=value; - } - - /** Set the release level of the ADSR. Normally you'd make this 0, - but you have the option of some other value. - @param value the release level (normally 0). - */ - inline - void setReleaseLevel(byte value) - { - release.level=value; - } - - - - /** Set the attack and decay levels of the ADSR. This assumes a conventional - ADSR where the sustain continues at the same level as the decay, till the release ramps to 0. - @param attack the new attack level. - @param value the new sustain level. - */ - inline - void setADLevels(byte attack, byte decay) - { - setAttackLevel(attack); - setDecayLevel(decay); - setSustainLevel(decay); - setReleaseLevel(0); - } - - - - - - - - /** Set the attack time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int attack time in milliseconds. - */ - inline - void setAttackTime(unsigned int msec) - { - setTime(&attack, msec); - } - - - /** Set the decay time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int decay time in milliseconds. - */ - inline - void setDecayTime(unsigned int msec) - { - setTime(&decay, msec); - } - - - /** Set the sustain time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - The sustain phase will finish if the ADSR recieves a noteOff(). - @param value the unsigned int sustain time in milliseconds. - */ - inline - void setSustainTime(unsigned int msec) - { - setTime(&sustain, msec); - } - - - - /** Set the release time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int release time in milliseconds. - */ - inline - void setReleaseTime(unsigned int msec) - { - setTime(&release, msec); - } - - - - /** Set the attack, decay and release times of the ADSR in milliseconds. - The actual times will be resolved within the resolution of CONTROL_RATE. - @param attack_ms the new attack time in milliseconds. - @param decay_ms the new decay time in milliseconds. - @param decay_ms the new sustain time in milliseconds. - @param release_ms the new release time in milliseconds. - */ - inline - void setTimes(unsigned int attack_ms, unsigned int decay_ms, unsigned int sustain_ms, unsigned int release_ms) - { - setAttackTime(attack_ms); - setDecayTime(decay_ms); - setSustainTime(sustain_ms); - setReleaseTime(release_ms); - } - - -}; - -#endif /* ADSR_H_ */ - diff --git a/CheapSynth_FM4osc2Poly_v0_5_6/CheapSynth_FM4osc2Poly_v0_5_6.ino b/CheapSynth_FM4osc2Poly_v0_5_6/CheapSynth_FM4osc2Poly_v0_5_6.ino deleted file mode 100644 index e5b705b..0000000 --- a/CheapSynth_FM4osc2Poly_v0_5_6/CheapSynth_FM4osc2Poly_v0_5_6.ino +++ /dev/null @@ -1,426 +0,0 @@ - -/* - * FM+LFO notes from 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 - * - * 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 - -// 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/CheapSynth_FM4osc2Poly_v0_6/CheapSynth_FM4osc2Poly_v0_6.ino b/CheapSynth_FM4osc2Poly_v0_6/CheapSynth_FM4osc2Poly_v0_6.ino deleted file mode 100644 index f718b32..0000000 --- a/CheapSynth_FM4osc2Poly_v0_6/CheapSynth_FM4osc2Poly_v0_6.ino +++ /dev/null @@ -1,431 +0,0 @@ - -/* - * 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/CheapSynth_FM4oscZoom_v0_5_5.ino b/CheapSynth_FM4oscZoom_v0_5_5.ino deleted file mode 100644 index 583d60b..0000000 --- a/CheapSynth_FM4oscZoom_v0_5_5.ino +++ /dev/null @@ -1,348 +0,0 @@ - -/* - * FM+LFO notes from 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 - * - * 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 - * - */ - -#include -#include -#include // 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 384 -#include -#include -#include - -// 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 oscLFO(COS2048_DATA); -Oscil oscTri1(SAW1024_DATA); -Oscil oscTri2(SAW1024_DATA); - -// envelope generator -ADSR envelope; -ADSR envelope2; - -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 - -unsigned long vibrato=0; - -// initialise globals (some eg amplitude no longer used) -int maxmode=4; -float carrierFreq = 10.f; -float carrier2 = 10.f; -float modFreq = 10.f; -float modDepth = 0; -float amplitude = 0.f; -float modOffset =1; -byte lastnote1=0; -byte lastnote2=0; -int nextenv=1; -int portSpeed=0; -float shifted=0.1f; -int 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); - - envelope.setADLevels(127,100); - envelope.setTimes(20,20,20000,850); // 20000 is so the note will sustain 20 seconds unless a noteOff comes - envelope2.setADLevels(127,100); - envelope2.setTimes(20,20,20000,850); // 20000 is so the note will sustain 20 seconds unless a noteOff comes - - aPortamento.setTime(0u); -// lpf.setResonance(200); -// lpf.setCutoffFreq(255); - oscLFO.setFreq(10); // default LFO frequency - - startMozzi(CONTROL_RATE); -} - - -void HandleProgramChange (byte channel, byte number) -{ - modOffset = modOffsets[number%15]; - 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 ( (mode==0) || portSpeed) - {nextenv=1; lastnote2=999;} - - if (nextenv==1) - { - lastnote1=note; - envelope.noteOn(); - 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))); - oscCarrier.setFreq(carrierFreq); - oscTri1.setFreq(carrierFreq); - modFreq=(carrierFreq * modOffset / (64/bitmask) ); - } - else - { - lastnote2=note; - envelope2.noteOn(); - 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))); - oscSquare2.setFreq(carrier2); - oscTri2.setFreq(carrier2 * (1.0f + ((shifted -0.1f) / 384)) ); - } - -} - -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 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) ) - { - envelope.noteOff(); nextenv=1;} //kill envelope if prev note released - - if ( (note == lastnote2) ) - {envelope2.noteOff(); nextenv=2;} //kill envelope if prev note released - -} - - -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)); - } - else {bitmask=64;} - -if (mode==2) { oscTri2.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 - break; - } -} - -void updateControl(){ - MIDI.read(); - envelope.update(); - envelope2.update(); - -if ( portSpeed ) - { - carrierFreq = Q16n16_to_float ( aPortamento.next() ); //NB presumably returns frequency as Q16n16 - oscCarrier.setFreq(carrierFreq); - oscTri1.setFreq(carrierFreq); - modFreq=(carrierFreq * modOffset / (64/bitmask) ); - } - -if (mode) - { - float modFreq2=(carrier2 * modOffset / (64/bitmask) ); //NB no longer LFO - - if (mode>1) - { - modFreq *= 1.0f + ((shifted -0.1f) / 384); // generates fake LFO via detuning mod osc - modFreq2 *= 1.0f + ((shifted -0.1f) / 384); // generates fake LFO via detuning mod osc - } - oscLFO.setFreq (modFreq2); - } -oscModulator.setFreq( modFreq ); - -} - -// strip the low bits off! - not used in current implementation -int bitCrush(int x, int a) -{ - return (x>>a)<>7 ; -vibrato*= (unsigned long) (carrierFreq * modDepth)>>3; -return (int) ((oscCarrier.phMod( vibrato ) ) * (envelope.next() ) ) >> 8; -// >> 7 = 7 fast binary divisions by 2 = divide by 128 - break; - - case 1: // ADDING square + "converted" sine -//squaredsin1= ( (oscModulator.next() & 0b0000000001000000)-1 ) <<1; -squaredsin1= ( (oscModulator.next() & bitmask) ) <>1 )*envelope.next() ) -+ ( ( (oscSquare2.next() + squaredsin2 )>>1 )*envelope2.next() ) -) >> 8; - break; - - case 2: // 2 tri poly -return (int)( - ( oscTri1.next() *envelope.next() ) - + ( oscTri2.next() *envelope2.next() ) - ) >> 8; - break; - - case 3: // STARTED AS 2 sq poly ORd with matching sines, now big whoop -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 13: // 2 sq poly XORd with matching 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/CheapSynth_SeqMode_v0_9_0.ino b/CheapSynth_SeqMode_v0_9_0.ino deleted file mode 100644 index b6bbbc2..0000000 --- a/CheapSynth_SeqMode_v0_9_0.ino +++ /dev/null @@ -1,300 +0,0 @@ -// CheapSynth "sequencer" mode 2013 - quite clumsily stuck (by Dave Green) on top of -// "A very simple MIDI synth." -// Greg Kennedy 2011 -// http://forum.arduino.cc/index.php?topic=79326.0 -// -// You should be able to spot the note arrays further down, and can use the modulation MIDI control -// to adjust the "modulation depth" (ie how grainy the notes sound) -// -// Other controls: Program Up + Down = change tempo -// Continue = "Pause" - -#include - -#include -#include -#include // table for Oscils to play -#include // table for Oscils to play -#include // table for Oscils to play -#include // for mtof - -#define CONTROL_RATE 128 // powers of 2 please - -// Mozzi example uses COS waves for carrier and modulator -// gets brutal very fast if you use a saw/square carrier -// gets subtly more brutal if you use smaller wavetables (fewer samples per cycle) -Oscil oscCarrier(SQUARE_ANALOGUE512_DATA); -Oscil oscModulator(COS256_DATA); - -int midiNotes[] = { -//these are MIDI note values, ie 12 = C, 24 = next C up -//NB note values of 25+ currently considered as absolute (ie don't change with keypress) -/* -16,16,28,28,16,16,26,28,//lee coombs -16,16,28,28,16,16,26,28, -16,16,28,28,16,16,26,28, -16,16,28,28,16,16,26,28, -*/ -//octaves - blue mon, hung up, erasure? etc -12,24,12,24,12,24,12,24,12,24,12,24,12,24,12,24, -12,24,12,24,12,24,12,24,12,24,12,24,12,24,12,24, - -//descending bass (eg Bowie's Heroes) -24,24,21,19,24,24,21,19,24,24,21,19,24,24,21,19, -24,24,21,19,24,24,21,19,24,24,21,19,24,24,21,19, - -//different accented octaves (similar to OMD's Enola Gay) -12,12,24,12,12,24,12,24, -12,12,24,12,12,24,12,24, -12,12,24,12,12,24,12,24, -12,12,24,12,12,24,12,24, - -/// 12/8 shuffle rhythm (eg Muse) -12,12,24,12,12,24,12,12,24,12,12,24, -12,12,24,12,12,24,12,12,24,12,12,24, -}; - -int modOffsets[] = { -/* -//lee C -12, 12, 12, 12, 12, 19, 12, 12, -12, 12, 12, 12, 12, 19, 12, 12, -12, 12, 12, 12, 12, 19, 12, 12, -12, 12, 12, 12, 12, 19, 12, 12, -*/ -12, 12, 12, 12, 12, 12, 12, 12, //octaves -12, 12, 12, 12, 12, 12, 12, 12, -12, 12, 12, 12, 12, 12, 12, 12, -12, 12, 12, 12, 12, 12, 12, 12, - -// here I'm using different modulation offsets to distinguish between adjacent notes -// (probably also easy to devise a system to play a rest (ie amplitude=0) if note value=0?? -0,12,0,0,12,0,0,0,0,12,0,0,12,0,0,0,//descending bass -0,12,0,0,12,0,0,0,0,12,0,0,12,0,0,0, - -0,12,0,0,12,0,0,0,0,12,0,0,12,0,0,0,//accented octaves -0,12,0,0,12,0,0,0,0,12,0,0,12,0,0,0, - -12, 12, 12, 12, 12, 12, 12, 12, // shuffle -12, 12, 12, 12, 12, 12, 12, 12, -12, 12, 12, 12, 12, 12, 12, 12, -12, 12, 12, 12, 12, 12, 12, 12, -}; - -//float modDepths[] = { -// 0, 1, 3, 0.5, 6, 2, 1, 2, -// 0.5, 8, 3, 0.5, 2, 2, 1, 0.125 -//}; - -float note = 24; -int lastByte; -float bendByte =50; - -int tuneOffset = 0; -int tickLengthConverter = 26; -int arraySize = 32; -int controlTick = 0; -int arrayIndex = 0; -int sequenced; -int playflag = 1; - -float carrierFreq = 10.f; -float modFreq = 10.f; -float bendRead = 10.f; -long modDepth = 1; - -float amplitude = 1.f; - -void setParams(){ - // mtof converts MIDI note range to Hz freq -sequenced=midiNotes[arrayIndex + (arraySize*tuneOffset)]; - -if (sequenced<25) {sequenced += note; } else {sequenced += 36; } -//if (tuneOffset >0) {sequenced -= 12; } - -carrierFreq = mtof(sequenced); - -// FM harmonics are most musical when modulator's @ simple musical offsets from carrier -// EG +12 semitones (1 oct), -24 semitones (-2 oct), +19 semitones (+1 octave and a fifth) -modFreq = mtof( ( sequenced + modOffsets[arrayIndex+ (arraySize*tuneOffset)] ) ); - -// I like to make modulation depth (in Hz) some ratio of the carrier's freq -// That way, the perceived intensity of the FM is the same throughout the note range -// modDepth = (long) 6; -bendRead=(bendByte / 30); -modDepth = (long) carrierFreq * bendRead * bendRead; // 7 was good - - // Set oscillator frequencies - oscCarrier.setFreq(carrierFreq); - oscModulator.setFreq(modFreq); -} - -// Move on to the next note -void incrementIndexes(){ - arrayIndex ++; - int sizelimit=arraySize-1; - -//Sample code on how to view what's going on -Serial.end(); -Serial.begin(115200); -Serial.print(" arrayIndex:"); -Serial.println( arrayIndex - ); -Serial.println(); -Serial.end(); -Serial.begin(31250); - -if (tuneOffset==3) {sizelimit = 23;} // hack to allow patterns of different length -if(arrayIndex>sizelimit){ - arrayIndex = 0; - } -} - -// NOW BACK TO YOUR REGULARLY SCHEDULED MIDI SCAN - comments by Greg Kennedy 2011 - -#define statusLed 13 -#define tonePin 8 - -// MIDI channel to answer to, 0x00 - 0x0F -#define myChannel 0x00 -// set to TRUE and the device will respond to all channels -#define respondAllChannels true - -// midi commands -#define MIDI_CMD_NOTE_OFF 0x80 -#define MIDI_CMD_NOTE_ON 0x90 -#define MIDI_CMD_KEY_PRESSURE 0xA0 -#define MIDI_CMD_CONTROLLER_CHANGE 0xB0 -#define MIDI_CMD_PROGRAM_CHANGE 0xC0 -#define MIDI_CMD_CHANNEL_PRESSURE 0xD0 -#define MIDI_CMD_PITCH_BEND 0xB0 - -// this is a placeholder: there are -// in fact real midi commands from F0-FF which -// are not channel specific. -// this simple synth will just ignore those though. -#define MIDI_CMD_SYSEX 0xF0 - -// a dummy "ignore" state for commands which -// we wish to ignore. -#define MIDI_IGNORE 0x00 - -// midi "state" - which data byte we are receiving -#define MIDI_STATE_BYTE1 0x00 -#define MIDI_STATE_BYTE2 0x01 - -// MIDI note to frequency -// This isn't exact and may sound a bit detuned at lower notes, because -// the floating point values have been rounded to uint16. -// Based on A440 tuning. - -// I would prefer to use the typedef for this (prog_uint16_t), but alas that triggers a gcc bug -// and does not put anything into the flash memory. - -// Also note the limitations of tone() which at 16mhz specifies a minimum frequency of 31hz - in other words, notes below -// B0 will play at the wrong frequency since the timer can't run that slowly! -uint16_t frequency[128] PROGMEM = {8, 9, 9, 10, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 19, 21, 22, 23, 24, 26, 28, 29, 31, 33, 35, 37, 39, 41, 44, 46, 49, 52, 55, 58, 62, 65, 69, 73, 78, 82, 87, 92, 98, 104, 110, 117, 123, 131, 139, 147, 156, 165, 175, 185, 196, 208, 220, 233, 247, 262, 277, 294, 311, 330, 349, 370, 392, 415, 440, 466, 494, 523, 554, 587, 622, 659, 698, 740, 784, 831, 880, 932, 988, 1047, 1109, 1175, 1245, 1319, 1397, 1480, 1568, 1661, 1760, 1865, 1976, 2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951, 4186, 4435, 4699, 4978, 5274, 5588, 5920, 5920, 6645, 7040, 7459, 7902, 8372, 8870, 9397, 9956, 10548, 11175, 11840, 12544}; - -//setup: declaring iputs and outputs and begin serial -void setup() { - startMozzi(CONTROL_RATE); - - pinMode(statusLed,OUTPUT); // declare the LED's pin as output - - pinMode(tonePin,OUTPUT); // setup tone output pin - - //start serial with midi baudrate 31250 - // or 38400 for debugging (eg MIDI over serial from PC) - Serial.begin(31250); - - // indicate we are ready to receive data! - digitalWrite(statusLed,HIGH); -} - -//loop: wait for serial data - DG: in hindsight, this should really go in updateControl() -// (impressed that it even works this way round!) -void loop () { - audioHook(); - static byte lastCommand = MIDI_IGNORE; - static byte state; - - while (Serial.available()) { - - // read the incoming byte: - byte incomingByte = Serial.read(); - - // Command byte? - if (incomingByte & 0b10000000) { - if (respondAllChannels || - (incomingByte & 0x0F) == myChannel) { // See if this is our channel - - if (incomingByte==0xFC) {tuneOffset--; {if (tuneOffset<0) tuneOffset=3;} } - if (incomingByte==0xFA) {tuneOffset++; {if (tuneOffset>3) tuneOffset=0;} } - if (incomingByte==0xFB) {playflag++; {if (playflag>1) playflag=0;} } - - lastCommand = incomingByte & 0xF0; - } else { // Not our channel. Ignore command. - lastCommand = MIDI_IGNORE; - } - state = MIDI_STATE_BYTE1; // Reset our state to byte1. - } else if (state == MIDI_STATE_BYTE1) { // process first data byte - if ( lastCommand==MIDI_CMD_NOTE_OFF ) - { // if we received a "note off", make sure that is what is currently playing - if (note == incomingByte) noTone(tonePin); - state = MIDI_STATE_BYTE2; // expect to receive a velocity byte - } else if ( lastCommand == MIDI_CMD_NOTE_ON ){ // if we received a "note on", we wait for the note (databyte) - lastByte=incomingByte; // save the current note - state = MIDI_STATE_BYTE2; // expect to receive a velocity byte - } - // implement whatever further commands you want here - else if ( lastCommand == MIDI_CMD_PITCH_BEND ){ - bendByte=incomingByte; // save the current note - state = MIDI_STATE_BYTE1; // expect to receive a velocity byte - } - - else if ( lastCommand == MIDI_CMD_PROGRAM_CHANGE ) - { -tickLengthConverter = 31 - (incomingByte % 32); - - // save the current note - state = MIDI_STATE_BYTE1; // expect to receive a velocity byte - } - - - } else { // process second data byte - if (lastCommand == MIDI_CMD_NOTE_ON) { - if (incomingByte != 0) { - note = lastByte; -// tone(tonePin,(unsigned int)pgm_read_word(&frequency[note])); -// NB ToneMIDISynth generally good for diagnosing MIDI activity -// setParams(); - } else if (note == lastByte) { - noTone(tonePin); - } - } - state = MIDI_STATE_BYTE1; // message data complete - // This should be changed for SysEx - } - } -} - -void updateControl(){ - if(controlTick == 0) - { - setParams(); - incrementIndexes(); - } - - // Update controlTick - controlTick +=playflag; - - if(controlTick > tickLengthConverter) - { - controlTick = 0; - } -} - -int updateAudio(){ - long vibrato = modDepth * oscModulator.next(); - return (int) (oscCarrier.phMod(vibrato)) * amplitude; -} diff --git a/Mozzi_drumsDG0_0_2BETA/Mozzi_drumsDG0_0_2BETA.ino b/Mozzi_drumsDG0_0_2BETA/Mozzi_drumsDG0_0_2BETA.ino deleted file mode 100644 index f1810c2..0000000 --- a/Mozzi_drumsDG0_0_2BETA/Mozzi_drumsDG0_0_2BETA.ino +++ /dev/null @@ -1,172 +0,0 @@ -/* Example of a sound being triggered by MIDI input. - * - * 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, lowpass filter - * 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 - * Now with drums! - */ - - -#include -#include -#include // oscillator template -#include // for envelope -#include - -//#include // sine table for oscillator -#include -#include "kick909.h" -#include "snare909.h" -#include "hihatc909.h" -#include "hihato909.h" - -#include -#include -#include -#include - -// use #define for CONTROL_RATE, not a constant -#define CONTROL_RATE 128 // powers of 2 please - -unsigned long ctrlCounter = 0; - -// audio sinewave oscillator -//Oscil osc(SIN2048_DATA); -Oscil osc(SAW2048_DATA); - -// drums -Sample kickSamp(kick909_DATA); -Sample snareSamp(snare909_DATA); -Sample hihatcSamp(hihatc909_DATA); -Sample hihatoSamp(hihato_DATA); - -byte pattern[4][16] = { - //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, // 0 hhc - 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, 1, 0, // 2 snare - 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1 // 3 kick -}; - -// envelope generator -ADSR envelope; -LowPassFilter lpf; -int crushCtrl = 0; - -#define LED 13 // to see if MIDI is being recieved - -void HandleNoteOn(byte channel, byte note, byte velocity) { - //osc.setFreq(mtof(note)); // simple but less accurate frequency - osc.setFreq_Q16n16(Q16n16_mtof(Q8n0_to_Q16n16(note))); // accurate frequency - envelope.noteOn(); - digitalWrite(LED,HIGH); -} - -void HandleNoteOff(byte channel, byte note, byte velocity) { - envelope.noteOff(); - digitalWrite(LED,LOW); -} - -void HandleControlChange (byte channel, byte number, byte value) -{ - // http://www.indiana.edu/~emusic/cntrlnumb.html - switch(number) { - //case 1: // modulation wheel - case 105: - lpf.setCutoffFreq(value*2); // control messages are in [0, 127] range - break; - case 106: - //lpf.setResonance(value*2); - crushCtrl = value; - break; - } -} - -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); - - envelope.setADLevels(127,64); - envelope.setTimes(50,200,10000,200); // 10000 is so the note will sustain 10 seconds unless a noteOff comes - - lpf.setResonance(200); - lpf.setCutoffFreq(255); - - osc.setFreq(440); // default frequency - - kickSamp.setFreq((float) kick909_SAMPLERATE / (float) kick909_NUM_CELLS); - snareSamp.setFreq((float) snare909_SAMPLERATE / (float) snare909_NUM_CELLS); - hihatcSamp.setFreq((float) hihatc909_SAMPLERATE / (float) hihatc909_NUM_CELLS); - hihatoSamp.setFreq((float) hihato_SAMPLERATE / (float) hihato_NUM_CELLS); - - //snareSamp.start(); - - startMozzi(CONTROL_RATE); -} - -int beat = 0; -int oldBeat = 0; - -void updateControl(){ - MIDI.read(); - envelope.update(); - - // drums - ctrlCounter++; - // this is called at 128Hz -> 120bmp!? - beat = ((ctrlCounter*2*4)>>7); - if (beat != oldBeat) { - if (pattern[0][beat&0xf]) hihatcSamp.start(); - if (pattern[1][beat&0xf]) hihatoSamp.start(); - if (pattern[2][beat&0xf]) snareSamp.start(); - if (pattern[3][beat&0xf]) kickSamp.start(); - } - oldBeat = beat; -} - -// strip the low bits off! -int bitCrush(int x, int a) -{ - return (x>>a)<>8; -// return (int) (envelope.next() * lpf.next(osc.next()))>>8; - int x = (int) (envelope.next() * osc.next())>>8; - - //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); - - // drums please! - int drums = kickSamp.next() + snareSamp.next() + hihatcSamp.next() + hihatoSamp.next(); - x += drums<<1; - return x; -} - - -void loop() { - audioHook(); // required here -} - diff --git a/Mozzi_drumsDG0_0_2BETA/hihatc909.h b/Mozzi_drumsDG0_0_2BETA/hihatc909.h deleted file mode 100644 index d52992d..0000000 --- a/Mozzi_drumsDG0_0_2BETA/hihatc909.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef hihatc909_H_ -#define hihatc909_H_ - -#include "Arduino.h" -#include - -#define hihatc909_NUM_CELLS 1024 -#define hihatc909_SAMPLERATE 16384 - -const char __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/Mozzi_drumsDG0_0_2BETA/hihato909.h b/Mozzi_drumsDG0_0_2BETA/hihato909.h deleted file mode 100644 index a36f866..0000000 --- a/Mozzi_drumsDG0_0_2BETA/hihato909.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef hihato_H_ -#define hihato_H_ - -#include "Arduino.h" -#include - -#define hihato_NUM_CELLS 2048 -#define hihato_SAMPLERATE 16384 - -const char __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/Mozzi_drumsDG0_0_2BETA/kick909.h b/Mozzi_drumsDG0_0_2BETA/kick909.h deleted file mode 100644 index 3ddf8cd..0000000 --- a/Mozzi_drumsDG0_0_2BETA/kick909.h +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef kick909_H_ -#define kick909_H_ - -#include "Arduino.h" -#include - -#define kick909_NUM_CELLS 2048 -#define kick909_SAMPLERATE 16384 - -const char __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/Mozzi_drumsDG0_0_2BETA/snare909.h b/Mozzi_drumsDG0_0_2BETA/snare909.h deleted file mode 100644 index d42b2e3..0000000 --- a/Mozzi_drumsDG0_0_2BETA/snare909.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef snare909_H_ -#define snare909_H_ - -#include "Arduino.h" -#include - -#define snare909_NUM_CELLS 2048 -#define snare909_SAMPLERATE 16384 - -const char __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_ */ diff --git a/PolyDrums_v0_1_3_DelayLPF/ADSRslow.h b/PolyDrums_v0_1_3_DelayLPF/ADSRslow.h deleted file mode 100644 index 760d136..0000000 --- a/PolyDrums_v0_1_3_DelayLPF/ADSRslow.h +++ /dev/null @@ -1,307 +0,0 @@ -/* - * ADSR.h - * - * Copyright 2012 Tim Barrass. - * - * This file is part of Mozzi. - * - * Mozzi is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Mozzi is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Mozzi. If not, see . - * - */ - -#ifndef ADSR_H_ -#define ADSR_H_ - -#include "Arduino.h" -//#include -#include "Line.h" -#include "mozzi_fixmath.h" - -/** A simple ADSR envelope generator. -@todo Test whether using the template parameter makes any difference to speed, -and rationalise which units which do and don't need them. -Template objects are messy when you try to use pointers to them, -you have to include the whole template shebang in the pointer handling. -*/ -template -class ADSR -{ -private: - - const unsigned int AUDIO_TICKS_PER_CONTROL; - - unsigned int phase_control_step_counter; - unsigned int phase_num_control_steps; - - enum {ATTACK,DECAY,SUSTAIN,RELEASE,IDLE}; - - - struct phase{ - byte phase_type; - unsigned int control_steps; - unsigned long audio_steps; - Q8n0 level; - }attack,decay,sustain,release,idle; - - phase * current_phase; - - // Linear audio rate transitions for envelope - Line transition; - - inline - unsigned int convertMsecToControlSteps(unsigned int msec){ - return (uint) (((ulong)msec*CONTROL_UPDATE_RATE)>>10); // approximate /1000 with shift - } - - inline - void setPhase(phase * next_phase) { - phase_control_step_counter = 0; - phase_num_control_steps = next_phase->control_steps; - transition.set(Q8n0_to_Q16n16(next_phase->level),next_phase-> control_steps); - current_phase = next_phase; - } - - - - inline - void checkForAndSetNextPhase(phase * next_phase) { - if (++phase_control_step_counter >= phase_num_control_steps){ - setPhase(next_phase); - } - } - - - inline - void checkForAndSetIdle() { - if (++phase_control_step_counter >= phase_num_control_steps){ - transition.set(0,0,1); - current_phase = &idle; - } - } - - - -inline - void setTime(phase * p, unsigned int msec) - { - p->control_steps=convertMsecToControlSteps(msec); - p->audio_steps = (ulong) p->control_steps * AUDIO_TICKS_PER_CONTROL; - } - - -public: - - /** Constructor. - */ - ADSR():AUDIO_TICKS_PER_CONTROL(AUDIO_RATE/CONTROL_UPDATE_RATE) - { - attack.phase_type = ATTACK; - decay.phase_type = DECAY; - sustain.phase_type = SUSTAIN; - release.phase_type = RELEASE; - idle.phase_type = IDLE; - release.level = 0; - } - - -/** Updates the internal controls of the ADSR. - Call this in updateControl(). - */ - void update(){ // control rate - - switch(current_phase->phase_type) { - - case ATTACK: - checkForAndSetNextPhase(&decay); - break; - - case DECAY: - checkForAndSetNextPhase(&sustain); - break; - - case SUSTAIN: - checkForAndSetNextPhase(&release); - break; - - case RELEASE: - checkForAndSetIdle(); - break; - - } - } - - /** Advances one audio step along the ADSR and returns the level. - Call this in updateAudio(). - @return the next value, as an unsigned int. - */ - inline - unsigned int next() - { - return Q16n16_to_Q16n0(transition.next()); - } - - - - /** Start the attack phase of the ADSR. THis will restart the ADSR no matter what phase it is up to. - */ - inline - void noteOn(){ - setPhase(&attack); - } - - - - /** Start the release phase of the ADSR. - @todo fix release for rate rather than steps (time), so it releases at the same rate whatever the current level. - */ - inline - void noteOff(){ - setPhase(&release); - } - - - - - - /** Set the attack level of the ADSR. - @param value the attack level. - */ - inline - void setAttackLevel(byte value) - { - attack.level=value; - } - - - - /** Set the decay level of the ADSR. - @param value the decay level. - */ - inline - void setDecayLevel(byte value) - { - decay.level=value; - } - - - /** Set the sustain level of the ADSR. - @param value the sustain level. Usually the same as the decay level, - for a steady sustained note. - */ - inline - void setSustainLevel(byte value) - { - sustain.level=value; - } - - /** Set the release level of the ADSR. Normally you'd make this 0, - but you have the option of some other value. - @param value the release level (normally 0). - */ - inline - void setReleaseLevel(byte value) - { - release.level=value; - } - - - - /** Set the attack and decay levels of the ADSR. This assumes a conventional - ADSR where the sustain continues at the same level as the decay, till the release ramps to 0. - @param attack the new attack level. - @param value the new sustain level. - */ - inline - void setADLevels(byte attack, byte decay) - { - setAttackLevel(attack); - setDecayLevel(decay); - setSustainLevel(decay); - setReleaseLevel(0); - } - - - - - - - - /** Set the attack time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int attack time in milliseconds. - */ - inline - void setAttackTime(unsigned int msec) - { - setTime(&attack, msec); - } - - - /** Set the decay time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int decay time in milliseconds. - */ - inline - void setDecayTime(unsigned int msec) - { - setTime(&decay, msec); - } - - - /** Set the sustain time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - The sustain phase will finish if the ADSR recieves a noteOff(). - @param value the unsigned int sustain time in milliseconds. - */ - inline - void setSustainTime(unsigned int msec) - { - setTime(&sustain, msec); - } - - - - /** Set the release time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int release time in milliseconds. - */ - inline - void setReleaseTime(unsigned int msec) - { - setTime(&release, msec); - } - - - - /** Set the attack, decay and release times of the ADSR in milliseconds. - The actual times will be resolved within the resolution of CONTROL_RATE. - @param attack_ms the new attack time in milliseconds. - @param decay_ms the new decay time in milliseconds. - @param decay_ms the new sustain time in milliseconds. - @param release_ms the new release time in milliseconds. - */ - inline - void setTimes(unsigned int attack_ms, unsigned int decay_ms, unsigned int sustain_ms, unsigned int release_ms) - { - setAttackTime(attack_ms); - setDecayTime(decay_ms); - setSustainTime(sustain_ms); - setReleaseTime(release_ms); - } - - -}; - -#endif /* ADSR_H_ */ - diff --git a/PolyDrums_v0_1_3_DelayLPF/PolyDrums_v0_1_3_DelayLPF.ino b/PolyDrums_v0_1_3_DelayLPF/PolyDrums_v0_1_3_DelayLPF.ino deleted file mode 100644 index 2b612f4..0000000 --- a/PolyDrums_v0_1_3_DelayLPF/PolyDrums_v0_1_3_DelayLPF.ino +++ /dev/null @@ -1,495 +0,0 @@ - -/* Example of a sound being triggered by MIDI input. - * - * 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, lowpass filter - * 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 - * Now with drums! (still has all this code in there, commented out : ) - -S Green: -mod controller/ribbon is low pass filter cut-off -big button switches between tri/rectangle/noise/saw -(noise is at constant frequency) - -NB think mostly fixed, but may still be possible to crash filter with loud sounds, hit reset! - - */ - - -#include -#include -#include // oscillator template -#include // for envelope -#include -#include -#include - -#include // sine table for oscillator -//#include -//#include - -#include -#include -#include -#include -#include "Wave.h" -#include -#include - -#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); - -#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 stepCounter = 0; -unsigned long ticksPerStep = (60*CONTROL_RATE) / (BPM*STEPS_PER_BEAT); - -// audio sinewave oscillator -//Oscil osc(SIN2048_DATA); -//Oscil osc(SAW2048_DATA); -//Oscil osc(TRIANGLE2048_DATA); -//Wave myosc; -//Wave lfo; -Oscil lfo(SIN2048_DATA); -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 step = 0; -int waveType = 0; - -byte kickOn=1; -byte snareOn=1; -byte hatsOn=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 - -byte pattern[4][16] = { - //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, // 0 hhc - 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, // 2 snare - 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, // 3 kick -}; - -// 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); - -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>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 : ) -kickOn=(! kickOn); -} - -void HandleStart () { //this is the Back button on the Xbox keyboard -// octave *= 2.0f; -// if (octave > 16.0f) octave = 1.0f; -//Dave G: no longer used : ) -hatsOn=(! hatsOn); -} - -void HandleContinue () { // the big round button on all keytars -snareOn=(! snareOn); -} - -void updateControl(){ -#if ENABLE_MIDI - MIDI.read(); -#endif - - //envelope.update(); - - // update playing envelopes - for(int i=0; i>5; - 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 0 - // push buttons - int button0 = !digitalRead(BUTTON0_PIN); // active low - int button1 = !digitalRead(BUTTON1_PIN); - - /* - if (button0) { - // trigger - //envelope.noteOn(); - //lpf.reset(); - digitalWrite(LED, HIGH); - } else { - digitalWrite(LED, LOW); - } - */ - - if (button0 && !button0_old) { - lfo.setType((WaveType) ((((int) lfo.getType()) + 1) % 3)); - } - button0_old = button0; - - if (button1 & !button1_old) { - waveType = (waveType + 1) & 3; - //myosc.setType((WaveType) waveType); - for(int i=0; i ticksPerStep) { - step = (step+1) & 0xf; - stepCounter = 0; - -//if (step==0 || step==8) {HandleNoteOn(1, 48, 128); } - - //semi-perceptible BPM-locked phaser - int filterlevel=step; if (step>7) {filterlevel=15-step;} - lpf.setCutoffFreq( (filterlevel+11) <<3 ); //maps to 72-192 - lpf.setResonance( (filterlevel+10) <<3); - if (pattern[0][step] && hatsOn) hihatcSamp.start(); - if (pattern[1][step] && hatsOn) hihatoSamp.start(); - if (pattern[2][step] && snareOn) snareSamp.start(); - if (pattern[3][step] && kickOn) kickSamp.start(); - } - } -#endif - -#if 0 - // knobs - int knob0 = adcGetResult(0); // [0, 1023] - int knob1 = adcGetResult(1); - //lpf.setCutoffFreq(knob0>>2); - //lpf.setResonance(knob1>>2); - - //crushCtrl = knob1>>7; - lfo.setFreq((float) knob0); - //myosc.setFreq((float) knob1); - //myosc.setFreq((unsigned int) knob0*20); - //myosc.setPulseWidth((unsigned char) (knob1>>2)); - - // start the next read cycle in the background - adcReadAllChannels(); -#endif - -#if DEBUG - Serial.println(knob0); -#endif -} - -// strip the low bits off! -int bitCrush(int x, int a) -{ - return (x>>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 = 0; - 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 = (x * lfo.next())>>8; - x = lpf.next(x); - -#if DRUM_SAMPLES - if (enableDrums) { - // drums please! - int drums = kickSamp.next() + snareSamp.next() + hihatcSamp.next() + hihatoSamp.next(); - //drums = (drums>>4)<<4; - x += drums; - } -#endif - - return x; -} - - -void loop() { - audioHook(); // required here -} - - - diff --git a/PolyDrums_v0_1_3_DelayLPF/Wave.h b/PolyDrums_v0_1_3_DelayLPF/Wave.h deleted file mode 100644 index a9afd72..0000000 --- a/PolyDrums_v0_1_3_DelayLPF/Wave.h +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Wave.h - * - * Simon Green 2013. - * - * Based on Mozzi "Oscil.h" - */ - -#ifndef WAVE_H_ -#define WAVE_H_ - -#include "Arduino.h" -#include "mozzi_fixmath.h" -#include - -// fractional bits for oscillator index precision -#define OSCIL_F_BITS 16 -#define OSCIL_F_BITS_AS_MULTIPLIER 65536 -#define NUM_TABLE_CELLS 256 -#define ADJUST_FOR_NUM_TABLE_CELLS 8 -#define UPDATE_RATE AUDIO_RATE - -/** Generate waveform -*/ - -enum WaveType { WAVE_SAW=0, WAVE_TRI, WAVE_RECT, WAVE_NOISE }; - -class Wave -{ -public: - /** Constructor. "Wave mywave;" makes a Wave oscillator - */ - Wave () { - phase_fractional = 0; - phase_increment_fractional = 0; - wavetype = WAVE_SAW; - noise = 0xACE1; - pulse_width = 128; - } - - /** Increments one step along the phase. - @return the next value. - */ - inline - char next() - { - incrementPhase(); - - char w; - //ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - int n = (phase_fractional >> OSCIL_F_BITS) & (NUM_TABLE_CELLS-1); - switch(wavetype) { - case WAVE_SAW: - w = n - 128; - break; - case WAVE_TRI: - if (n & 0x80) // >= 128 - w = ((n^0xFF)<<1)-128; - else - w = (n<<1)-128; - break; - case WAVE_RECT: - if (n > pulse_width) - w = 127; - else - w = -127; - break; - case WAVE_NOISE: - noise = (noise >> 1) ^ (-(noise & 1) & 0xB400u); - w = noise>>8; - break; - } - } - return w; - } - - /** Set the wave type - */ - inline - void setType(WaveType x) - { - wavetype = x; - } - - WaveType getType() { return wavetype; } - - /** Set the pulse width for rectangle wave - */ - inline - void setPulseWidth(unsigned char x) - { - pulse_width = x; - } - - /** Set the oscillator frequency with an unsigned int. This is faster than using a - float, so it's useful when processor time is tight, but it can be tricky with - low and high frequencies, depending on the size of the wavetable being used. If - you're not getting the results you expect, try explicitly using a float, or try - setFreq_Q24n8() or or setFreq_Q16n16(). - @param frequency to play the wave table. - */ - inline - void setFreq (unsigned int frequency) { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - phase_increment_fractional = ((((unsigned long)NUM_TABLE_CELLS<>3)/(UPDATE_RATE>>6)) << (F_BITS-(8-3+6)); - phase_increment_fractional = (((((unsigned long)NUM_TABLE_CELLS<>3)*frequency)/(UPDATE_RATE>>6)) - << (OSCIL_F_BITS - ADJUST_FOR_NUM_TABLE_CELLS - (8-3+6)); - } - } - - - /** Set the frequency using Q16n16 fixed-point number format. This is useful in - combination with Q16n16_mtof(), a fast alternative to mtof(), using Q16n16 - fixed-point format instead of floats. Note: this should work OK with tables 2048 cells or smaller and - frequencies up to 4096 Hz. Can't be used with UPDATE_RATE less than 64 Hz. - @param frequency in Q16n16 fixed-point number format. - */ - inline - void setFreq_Q16n16(Q16n16 frequency) - { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - //phase_increment_fractional = ((frequency * (NUM_TABLE_CELLS>>7))/(UPDATE_RATE>>6)) << (F_BITS-16+1); - phase_increment_fractional = (((((unsigned long)NUM_TABLE_CELLS<>7)*frequency)/(UPDATE_RATE>>6)) - << (OSCIL_F_BITS - ADJUST_FOR_NUM_TABLE_CELLS - 16 + 1); - - } - } - -private: - /** Increments the phase of the oscillator without returning a sample. - */ - inline - void incrementPhase() - { - //phase_fractional += (phase_increment_fractional | 1); // odd phase incr, attempt to reduce frequency spurs in output - phase_fractional += phase_increment_fractional; - } - - unsigned long phase_fractional; - volatile unsigned long phase_increment_fractional; - - unsigned char pulse_width; - uint16_t noise; - - WaveType wavetype; -}; - -#endif /* WAVE_H_ */ diff --git a/PolyDrums_v0_1_3_DelayLPF/hihatc909.h b/PolyDrums_v0_1_3_DelayLPF/hihatc909.h deleted file mode 100644 index d52992d..0000000 --- a/PolyDrums_v0_1_3_DelayLPF/hihatc909.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef hihatc909_H_ -#define hihatc909_H_ - -#include "Arduino.h" -#include - -#define hihatc909_NUM_CELLS 1024 -#define hihatc909_SAMPLERATE 16384 - -const char __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_1_3_DelayLPF/hihato909.h b/PolyDrums_v0_1_3_DelayLPF/hihato909.h deleted file mode 100644 index a36f866..0000000 --- a/PolyDrums_v0_1_3_DelayLPF/hihato909.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef hihato_H_ -#define hihato_H_ - -#include "Arduino.h" -#include - -#define hihato_NUM_CELLS 2048 -#define hihato_SAMPLERATE 16384 - -const char __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_1_3_DelayLPF/kick909.h b/PolyDrums_v0_1_3_DelayLPF/kick909.h deleted file mode 100644 index 3ddf8cd..0000000 --- a/PolyDrums_v0_1_3_DelayLPF/kick909.h +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef kick909_H_ -#define kick909_H_ - -#include "Arduino.h" -#include - -#define kick909_NUM_CELLS 2048 -#define kick909_SAMPLERATE 16384 - -const char __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_1_3_DelayLPF/snare909.h b/PolyDrums_v0_1_3_DelayLPF/snare909.h deleted file mode 100644 index d42b2e3..0000000 --- a/PolyDrums_v0_1_3_DelayLPF/snare909.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef snare909_H_ -#define snare909_H_ - -#include "Arduino.h" -#include - -#define snare909_NUM_CELLS 2048 -#define snare909_SAMPLERATE 16384 - -const char __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_ */ diff --git a/PolyDrums_v0_1_5_DelayNoLPF/ADSRslow.h b/PolyDrums_v0_1_5_DelayNoLPF/ADSRslow.h deleted file mode 100644 index e4d6813..0000000 --- a/PolyDrums_v0_1_5_DelayNoLPF/ADSRslow.h +++ /dev/null @@ -1,309 +0,0 @@ -/* - * ADSRslow.h - * - * Copyright 2012 Tim Barrass. - * - tiny modification by Dave Green in setPhase for calling at Control Rate - - * This file is part of Mozzi. - * - * Mozzi is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Mozzi is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Mozzi. If not, see . - * - */ - -#ifndef ADSR_H_ -#define ADSR_H_ - -#include "Arduino.h" -//#include -#include "Line.h" -#include "mozzi_fixmath.h" - -/** A simple ADSR envelope generator. -@todo Test whether using the template parameter makes any difference to speed, -and rationalise which units which do and don't need them. -Template objects are messy when you try to use pointers to them, -you have to include the whole template shebang in the pointer handling. -*/ -template -class ADSR -{ -private: - - const unsigned int AUDIO_TICKS_PER_CONTROL; - - unsigned int phase_control_step_counter; - unsigned int phase_num_control_steps; - - enum {ATTACK,DECAY,SUSTAIN,RELEASE,IDLE}; - - - struct phase{ - byte phase_type; - unsigned int control_steps; - unsigned long audio_steps; - Q8n0 level; - }attack,decay,sustain,release,idle; - - phase * current_phase; - - // Linear audio rate transitions for envelope - Line transition; - - inline - unsigned int convertMsecToControlSteps(unsigned int msec){ - return (uint) (((ulong)msec*CONTROL_UPDATE_RATE)>>10); // approximate /1000 with shift - } - - inline - void setPhase(phase * next_phase) { - phase_control_step_counter = 0; - phase_num_control_steps = next_phase->control_steps; - transition.set(Q8n0_to_Q16n16(next_phase->level),next_phase-> control_steps); -// Dave G: divide by control_steps rather than audio_steps to call at Control Rate instead! - current_phase = next_phase; - } - - - - inline - void checkForAndSetNextPhase(phase * next_phase) { - if (++phase_control_step_counter >= phase_num_control_steps){ - setPhase(next_phase); - } - } - - - inline - void checkForAndSetIdle() { - if (++phase_control_step_counter >= phase_num_control_steps){ - transition.set(0,0,1); - current_phase = &idle; - } - } - - - -inline - void setTime(phase * p, unsigned int msec) - { - p->control_steps=convertMsecToControlSteps(msec); - p->audio_steps = (ulong) p->control_steps * AUDIO_TICKS_PER_CONTROL; - } - - -public: - - /** Constructor. - */ - ADSR():AUDIO_TICKS_PER_CONTROL(AUDIO_RATE/CONTROL_UPDATE_RATE) - { - attack.phase_type = ATTACK; - decay.phase_type = DECAY; - sustain.phase_type = SUSTAIN; - release.phase_type = RELEASE; - idle.phase_type = IDLE; - release.level = 0; - } - - -/** Updates the internal controls of the ADSR. - Call this in updateControl(). - */ - void update(){ // control rate - - switch(current_phase->phase_type) { - - case ATTACK: - checkForAndSetNextPhase(&decay); - break; - - case DECAY: - checkForAndSetNextPhase(&sustain); - break; - - case SUSTAIN: - checkForAndSetNextPhase(&release); - break; - - case RELEASE: - checkForAndSetIdle(); - break; - - } - } - - /** Advances one audio step along the ADSR and returns the level. - Call this in updateAudio(). - @return the next value, as an unsigned int. - */ - inline - unsigned int next() - { - return Q16n16_to_Q16n0(transition.next()); - } - - - - /** Start the attack phase of the ADSR. THis will restart the ADSR no matter what phase it is up to. - */ - inline - void noteOn(){ - setPhase(&attack); - } - - - - /** Start the release phase of the ADSR. - @todo fix release for rate rather than steps (time), so it releases at the same rate whatever the current level. - */ - inline - void noteOff(){ - setPhase(&release); - } - - - - - - /** Set the attack level of the ADSR. - @param value the attack level. - */ - inline - void setAttackLevel(byte value) - { - attack.level=value; - } - - - - /** Set the decay level of the ADSR. - @param value the decay level. - */ - inline - void setDecayLevel(byte value) - { - decay.level=value; - } - - - /** Set the sustain level of the ADSR. - @param value the sustain level. Usually the same as the decay level, - for a steady sustained note. - */ - inline - void setSustainLevel(byte value) - { - sustain.level=value; - } - - /** Set the release level of the ADSR. Normally you'd make this 0, - but you have the option of some other value. - @param value the release level (normally 0). - */ - inline - void setReleaseLevel(byte value) - { - release.level=value; - } - - - - /** Set the attack and decay levels of the ADSR. This assumes a conventional - ADSR where the sustain continues at the same level as the decay, till the release ramps to 0. - @param attack the new attack level. - @param value the new sustain level. - */ - inline - void setADLevels(byte attack, byte decay) - { - setAttackLevel(attack); - setDecayLevel(decay); - setSustainLevel(decay); - setReleaseLevel(0); - } - - - - - - - - /** Set the attack time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int attack time in milliseconds. - */ - inline - void setAttackTime(unsigned int msec) - { - setTime(&attack, msec); - } - - - /** Set the decay time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int decay time in milliseconds. - */ - inline - void setDecayTime(unsigned int msec) - { - setTime(&decay, msec); - } - - - /** Set the sustain time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - The sustain phase will finish if the ADSR recieves a noteOff(). - @param value the unsigned int sustain time in milliseconds. - */ - inline - void setSustainTime(unsigned int msec) - { - setTime(&sustain, msec); - } - - - - /** Set the release time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int release time in milliseconds. - */ - inline - void setReleaseTime(unsigned int msec) - { - setTime(&release, msec); - } - - - - /** Set the attack, decay and release times of the ADSR in milliseconds. - The actual times will be resolved within the resolution of CONTROL_RATE. - @param attack_ms the new attack time in milliseconds. - @param decay_ms the new decay time in milliseconds. - @param decay_ms the new sustain time in milliseconds. - @param release_ms the new release time in milliseconds. - */ - inline - void setTimes(unsigned int attack_ms, unsigned int decay_ms, unsigned int sustain_ms, unsigned int release_ms) - { - setAttackTime(attack_ms); - setDecayTime(decay_ms); - setSustainTime(sustain_ms); - setReleaseTime(release_ms); - } - - -}; - -#endif /* ADSR_H_ */ - diff --git a/PolyDrums_v0_1_5_DelayNoLPF/PolyDrums_v0_1_5_DelayNoLPF.ino b/PolyDrums_v0_1_5_DelayNoLPF/PolyDrums_v0_1_5_DelayNoLPF.ino deleted file mode 100644 index c2dee16..0000000 --- a/PolyDrums_v0_1_5_DelayNoLPF/PolyDrums_v0_1_5_DelayNoLPF.ino +++ /dev/null @@ -1,504 +0,0 @@ - -/* Example of a sound being triggered by MIDI input. - * - * 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, lowpass filter - * 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 - * Now with drums! (& still has some LPF code in there, commented out : ) - -NB Needs tweaked ADSRslow.h (probably put this in your usual Mozzi libraries directory along with -the normal ADSR.h, seems less picky about where the drum sounds go) -Note also use of smallest wavetables; there was some sort of note buffering issue when using the 1024 byte versions..?! - -S Green: -mod controller/ribbon was low pass filter cut-off (disabled in this version) -DG Oct 2013: -up/down next to octave switches between square/saw/triangle waves (all 2-note polyphonic, no portamento) -big button switches between backing options, button to the right=other drums on/off, -button to the left toggles delay mode on/off - - */ -#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 // oscillator template -#include // for envelope -#include -#include -#include - -#include // sine table for oscillator -#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 tickCounter = 0; -unsigned long ticksPerStep = (60*CONTROL_RATE) / (BPM*STEPS_PER_BEAT); - -//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; - 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 = 0; - -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 - -byte pattern[7][16] = { - //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, // 0 hhc - 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, // 2 snare - 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, // 4 bass - 24,0,12,0,24,0,12,0, 34, 0,22,0,29,0,17,0, // 5 bass - 12,0,12,0,14,0,12,0, 15,16,12,0,17,0,16,0, // 6 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); - -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>7); - for(int i=0; i> 8); - } - -} - -void HandleStop () { //this is the Back button on the Xbox keyboard -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)%4; -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 0 - // push buttons - int button0 = !digitalRead(BUTTON0_PIN); // active low - int button1 = !digitalRead(BUTTON1_PIN); - - /* - if (button0) { - // trigger - //envelope.noteOn(); - //lpf.reset(); - digitalWrite(LED, HIGH); - } else { - digitalWrite(LED, LOW); beat - } - */ - - if (button0 && !button0_old) { - // lfo.setType((WaveType) ((((int) lfo.getType()) + 1) % 3)); - } - button0_old = button0; - - if (button1 & !button1_old) { - waveType = (waveType + 1) & 3; - //myosc.setType((WaveType) waveType); - for(int i=0; i ticksPerStep) { - beat = (beat+1) & 0xf; - tickCounter = 0; - -//if (beat==0 || beat==8) {HandleNoteOn(1, 48, 128); } - - //semi-perceptible BPM-locked phaser -// int filterlevel=beat; if (beat>7) {filterlevel=15-beat;} -// lpf.setCutoffFreq( (filterlevel+11) <<3 ); //maps to 72-192 -// lpf.setResonance( (filterlevel+10) <<3); - if (hatsOn && pattern[0][beat]) hihatcSamp.start(); - if (hatsOn && pattern[1][beat]) hihatoSamp.start(); - if (snareOn && pattern[2][beat]) snareSamp.start(); - if (snareOn && pattern[3][beat]) kickSamp.start(); - if (bassOn && pattern[bassOn+3][beat]) { HandleNoteOn(0, pattern[bassOn+3][beat]+24, 0) ;} - } - } -#endif - -#if 0 - // knobs - int knob0 = adcGetResult(0); // [0, 1023] - int knob1 = adcGetResult(1); - //lpf.setCutoffFreq(knob0>>2); - //lpf.setResonance(knob1>>2); - - //crushCtrl = knob1>>7; -// lfo.setFreq((float) knob0); - //myosc.setFreq((float) knob1); - //myosc.setFreq((unsigned int) knob0*20); - //myosc.setPulseWidth((unsigned char) (knob1>>2)); - - // start the next read cycle in the background - adcReadAllChannels(); -#endif - -#if DEBUG - Serial.println(knob0); -#endif -} - -// strip the low bits off! -int bitCrush(int x, int a) -{ - return (x>>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 avoids crashes 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_1_5_DelayNoLPF/hihatc909.h b/PolyDrums_v0_1_5_DelayNoLPF/hihatc909.h deleted file mode 100644 index d52992d..0000000 --- a/PolyDrums_v0_1_5_DelayNoLPF/hihatc909.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef hihatc909_H_ -#define hihatc909_H_ - -#include "Arduino.h" -#include - -#define hihatc909_NUM_CELLS 1024 -#define hihatc909_SAMPLERATE 16384 - -const char __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_1_5_DelayNoLPF/hihato909.h b/PolyDrums_v0_1_5_DelayNoLPF/hihato909.h deleted file mode 100644 index a36f866..0000000 --- a/PolyDrums_v0_1_5_DelayNoLPF/hihato909.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef hihato_H_ -#define hihato_H_ - -#include "Arduino.h" -#include - -#define hihato_NUM_CELLS 2048 -#define hihato_SAMPLERATE 16384 - -const char __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_1_5_DelayNoLPF/kick909.h b/PolyDrums_v0_1_5_DelayNoLPF/kick909.h deleted file mode 100644 index 3ddf8cd..0000000 --- a/PolyDrums_v0_1_5_DelayNoLPF/kick909.h +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef kick909_H_ -#define kick909_H_ - -#include "Arduino.h" -#include - -#define kick909_NUM_CELLS 2048 -#define kick909_SAMPLERATE 16384 - -const char __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_1_5_DelayNoLPF/snare909.h b/PolyDrums_v0_1_5_DelayNoLPF/snare909.h deleted file mode 100644 index d42b2e3..0000000 --- a/PolyDrums_v0_1_5_DelayNoLPF/snare909.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef snare909_H_ -#define snare909_H_ - -#include "Arduino.h" -#include - -#define snare909_NUM_CELLS 2048 -#define snare909_SAMPLERATE 16384 - -const char __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_ */ 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 deleted file mode 100644 index 7c06b20..0000000 --- a/PolyDrums_v0_2_0_DelayDuty/PolyDrums_v0_2_0_DelayDuty.ino +++ /dev/null @@ -1,480 +0,0 @@ - -/* 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 deleted file mode 100644 index d2b9d76..0000000 --- a/PolyDrums_v0_2_0_DelayDuty/hihatc909.h +++ /dev/null @@ -1,57 +0,0 @@ -#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 deleted file mode 100644 index fd3a74d..0000000 --- a/PolyDrums_v0_2_0_DelayDuty/hihato909.h +++ /dev/null @@ -1,103 +0,0 @@ -#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 deleted file mode 100644 index 8dc2b21..0000000 --- a/PolyDrums_v0_2_0_DelayDuty/kick909.h +++ /dev/null @@ -1,119 +0,0 @@ -#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 deleted file mode 100644 index 7ed733c..0000000 --- a/PolyDrums_v0_2_0_DelayDuty/snare909.h +++ /dev/null @@ -1,116 +0,0 @@ -#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_ */ diff --git a/README.md b/README.md deleted file mode 100644 index 5f95b90..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -cheapsynth -========== - -Patches and utilities for our Cheapsynth Arduino instrument diff --git a/WaveClass3PolyPlusLPF_BETA/Wave.h b/WaveClass3PolyPlusLPF_BETA/Wave.h deleted file mode 100644 index a9afd72..0000000 --- a/WaveClass3PolyPlusLPF_BETA/Wave.h +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Wave.h - * - * Simon Green 2013. - * - * Based on Mozzi "Oscil.h" - */ - -#ifndef WAVE_H_ -#define WAVE_H_ - -#include "Arduino.h" -#include "mozzi_fixmath.h" -#include - -// fractional bits for oscillator index precision -#define OSCIL_F_BITS 16 -#define OSCIL_F_BITS_AS_MULTIPLIER 65536 -#define NUM_TABLE_CELLS 256 -#define ADJUST_FOR_NUM_TABLE_CELLS 8 -#define UPDATE_RATE AUDIO_RATE - -/** Generate waveform -*/ - -enum WaveType { WAVE_SAW=0, WAVE_TRI, WAVE_RECT, WAVE_NOISE }; - -class Wave -{ -public: - /** Constructor. "Wave mywave;" makes a Wave oscillator - */ - Wave () { - phase_fractional = 0; - phase_increment_fractional = 0; - wavetype = WAVE_SAW; - noise = 0xACE1; - pulse_width = 128; - } - - /** Increments one step along the phase. - @return the next value. - */ - inline - char next() - { - incrementPhase(); - - char w; - //ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - int n = (phase_fractional >> OSCIL_F_BITS) & (NUM_TABLE_CELLS-1); - switch(wavetype) { - case WAVE_SAW: - w = n - 128; - break; - case WAVE_TRI: - if (n & 0x80) // >= 128 - w = ((n^0xFF)<<1)-128; - else - w = (n<<1)-128; - break; - case WAVE_RECT: - if (n > pulse_width) - w = 127; - else - w = -127; - break; - case WAVE_NOISE: - noise = (noise >> 1) ^ (-(noise & 1) & 0xB400u); - w = noise>>8; - break; - } - } - return w; - } - - /** Set the wave type - */ - inline - void setType(WaveType x) - { - wavetype = x; - } - - WaveType getType() { return wavetype; } - - /** Set the pulse width for rectangle wave - */ - inline - void setPulseWidth(unsigned char x) - { - pulse_width = x; - } - - /** Set the oscillator frequency with an unsigned int. This is faster than using a - float, so it's useful when processor time is tight, but it can be tricky with - low and high frequencies, depending on the size of the wavetable being used. If - you're not getting the results you expect, try explicitly using a float, or try - setFreq_Q24n8() or or setFreq_Q16n16(). - @param frequency to play the wave table. - */ - inline - void setFreq (unsigned int frequency) { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - phase_increment_fractional = ((((unsigned long)NUM_TABLE_CELLS<>3)/(UPDATE_RATE>>6)) << (F_BITS-(8-3+6)); - phase_increment_fractional = (((((unsigned long)NUM_TABLE_CELLS<>3)*frequency)/(UPDATE_RATE>>6)) - << (OSCIL_F_BITS - ADJUST_FOR_NUM_TABLE_CELLS - (8-3+6)); - } - } - - - /** Set the frequency using Q16n16 fixed-point number format. This is useful in - combination with Q16n16_mtof(), a fast alternative to mtof(), using Q16n16 - fixed-point format instead of floats. Note: this should work OK with tables 2048 cells or smaller and - frequencies up to 4096 Hz. Can't be used with UPDATE_RATE less than 64 Hz. - @param frequency in Q16n16 fixed-point number format. - */ - inline - void setFreq_Q16n16(Q16n16 frequency) - { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - //phase_increment_fractional = ((frequency * (NUM_TABLE_CELLS>>7))/(UPDATE_RATE>>6)) << (F_BITS-16+1); - phase_increment_fractional = (((((unsigned long)NUM_TABLE_CELLS<>7)*frequency)/(UPDATE_RATE>>6)) - << (OSCIL_F_BITS - ADJUST_FOR_NUM_TABLE_CELLS - 16 + 1); - - } - } - -private: - /** Increments the phase of the oscillator without returning a sample. - */ - inline - void incrementPhase() - { - //phase_fractional += (phase_increment_fractional | 1); // odd phase incr, attempt to reduce frequency spurs in output - phase_fractional += phase_increment_fractional; - } - - unsigned long phase_fractional; - volatile unsigned long phase_increment_fractional; - - unsigned char pulse_width; - uint16_t noise; - - WaveType wavetype; -}; - -#endif /* WAVE_H_ */ diff --git a/WaveClass3PolyPlusLPF_BETA/WaveClass3PolyPlusLPF_BETA.ino b/WaveClass3PolyPlusLPF_BETA/WaveClass3PolyPlusLPF_BETA.ino deleted file mode 100644 index fec5fc5..0000000 --- a/WaveClass3PolyPlusLPF_BETA/WaveClass3PolyPlusLPF_BETA.ino +++ /dev/null @@ -1,419 +0,0 @@ -/* Example of a sound being triggered by MIDI input. - * - * 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, lowpass filter - * 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 - * Now with drums! (still has all this code in there, commented out : ) - -S Green: -mod controller/ribbon is low pass filter cut-off -big button switches between tri/rectangle/noise/saw -(noise is at constant frequency) - -NB quite easy to crash the filter with loud sounds, hit reset! - - */ - - -#include -#include -#include // oscillator template -#include // for envelope -#include -#include -#include - -#include // sine table for oscillator -//#include -//#include - -#include -#include -#include -#include -#include "Wave.h" - -#define MAX_NOTES 3 -//Dave G: seems to do 3 note polyphony without clicking - -#define DRUM_SAMPLES 0 - -#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 stepCounter = 0; -unsigned long ticksPerStep = (60*CONTROL_RATE) / (BPM*STEPS_PER_BEAT); - -// audio sinewave oscillator -//Oscil osc(SIN2048_DATA); -//Oscil osc(SAW2048_DATA); -//Oscil osc(TRIANGLE2048_DATA); -//Wave myosc; -//Wave lfo; -Oscil lfo(SIN2048_DATA); - -struct Channel { - Wave osc; - //Oscil osc; - ADSR env; - byte note; -}; -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 = false; - -int step = 0; -int waveType = 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 - -byte pattern[4][16] = { - //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, // 0 hhc - 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, // 1 hho - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, // 2 s - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 // 3 k -}; - -// 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); - -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); -#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, 200); -#endif - - for(int i=0; i>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 : ) -} - -void HandleContinue () { // the big round button on all keytars - - // change wave - waveType = (waveType + 1) & 3; - - for(int i=0; i ticksPerStep) { - step = (step+1) & 0xf; - stepCounter = 0; - if (pattern[0][step]) hihatcSamp.start(); - if (pattern[1][step]) hihatoSamp.start(); - if (pattern[2][step]) snareSamp.start(); - if (pattern[3][step]) kickSamp.start(); - } - } -#endif - -#if 0 - // knobs - int knob0 = adcGetResult(0); // [0, 1023] - int knob1 = adcGetResult(1); - //lpf.setCutoffFreq(knob0>>2); - //lpf.setResonance(knob1>>2); - - //crushCtrl = knob1>>7; - lfo.setFreq((float) knob0); - //myosc.setFreq((float) knob1); - //myosc.setFreq((unsigned int) knob0*20); - //myosc.setPulseWidth((unsigned char) (knob1>>2)); - - // start the next read cycle in the background - adcReadAllChannels(); -#endif - -#if DEBUG - Serial.println(knob0); -#endif -} - -// strip the low bits off! -int bitCrush(int x, int a) -{ - return (x>>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 = 0; - for(int i=0; i>8; - } -//Dave G: might crash less if this went through some sort of waveshaper here? - - //x = (x*gain)>>8; - //x = (x * lfo.next())>>8; - x = lpf.next(x); - -#if DRUM_SAMPLES - if (enableDrums) { - // drums please! - int drums = kickSamp.next() + snareSamp.next() + hihatcSamp.next() + hihatoSamp.next(); - //drums = (drums>>4)<<4; - x += drums*2; - } -#endif - - return x; -} - - -void loop() { - audioHook(); // required here -} - diff --git a/WaveClass3PolyPlusLPF_BETA/hihatc909.h b/WaveClass3PolyPlusLPF_BETA/hihatc909.h deleted file mode 100644 index d52992d..0000000 --- a/WaveClass3PolyPlusLPF_BETA/hihatc909.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef hihatc909_H_ -#define hihatc909_H_ - -#include "Arduino.h" -#include - -#define hihatc909_NUM_CELLS 1024 -#define hihatc909_SAMPLERATE 16384 - -const char __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/WaveClass3PolyPlusLPF_BETA/hihato909.h b/WaveClass3PolyPlusLPF_BETA/hihato909.h deleted file mode 100644 index a36f866..0000000 --- a/WaveClass3PolyPlusLPF_BETA/hihato909.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef hihato_H_ -#define hihato_H_ - -#include "Arduino.h" -#include - -#define hihato_NUM_CELLS 2048 -#define hihato_SAMPLERATE 16384 - -const char __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/WaveClass3PolyPlusLPF_BETA/kick909.h b/WaveClass3PolyPlusLPF_BETA/kick909.h deleted file mode 100644 index 3ddf8cd..0000000 --- a/WaveClass3PolyPlusLPF_BETA/kick909.h +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef kick909_H_ -#define kick909_H_ - -#include "Arduino.h" -#include - -#define kick909_NUM_CELLS 2048 -#define kick909_SAMPLERATE 16384 - -const char __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/WaveClass3PolyPlusLPF_BETA/snare909.h b/WaveClass3PolyPlusLPF_BETA/snare909.h deleted file mode 100644 index d42b2e3..0000000 --- a/WaveClass3PolyPlusLPF_BETA/snare909.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef snare909_H_ -#define snare909_H_ - -#include "Arduino.h" -#include - -#define snare909_NUM_CELLS 2048 -#define snare909_SAMPLERATE 16384 - -const char __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_ */ diff --git a/WaveClass4PolyPlusLPF_BETA/ADSRslow.h b/WaveClass4PolyPlusLPF_BETA/ADSRslow.h deleted file mode 100644 index 760d136..0000000 --- a/WaveClass4PolyPlusLPF_BETA/ADSRslow.h +++ /dev/null @@ -1,307 +0,0 @@ -/* - * ADSR.h - * - * Copyright 2012 Tim Barrass. - * - * This file is part of Mozzi. - * - * Mozzi is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Mozzi is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Mozzi. If not, see . - * - */ - -#ifndef ADSR_H_ -#define ADSR_H_ - -#include "Arduino.h" -//#include -#include "Line.h" -#include "mozzi_fixmath.h" - -/** A simple ADSR envelope generator. -@todo Test whether using the template parameter makes any difference to speed, -and rationalise which units which do and don't need them. -Template objects are messy when you try to use pointers to them, -you have to include the whole template shebang in the pointer handling. -*/ -template -class ADSR -{ -private: - - const unsigned int AUDIO_TICKS_PER_CONTROL; - - unsigned int phase_control_step_counter; - unsigned int phase_num_control_steps; - - enum {ATTACK,DECAY,SUSTAIN,RELEASE,IDLE}; - - - struct phase{ - byte phase_type; - unsigned int control_steps; - unsigned long audio_steps; - Q8n0 level; - }attack,decay,sustain,release,idle; - - phase * current_phase; - - // Linear audio rate transitions for envelope - Line transition; - - inline - unsigned int convertMsecToControlSteps(unsigned int msec){ - return (uint) (((ulong)msec*CONTROL_UPDATE_RATE)>>10); // approximate /1000 with shift - } - - inline - void setPhase(phase * next_phase) { - phase_control_step_counter = 0; - phase_num_control_steps = next_phase->control_steps; - transition.set(Q8n0_to_Q16n16(next_phase->level),next_phase-> control_steps); - current_phase = next_phase; - } - - - - inline - void checkForAndSetNextPhase(phase * next_phase) { - if (++phase_control_step_counter >= phase_num_control_steps){ - setPhase(next_phase); - } - } - - - inline - void checkForAndSetIdle() { - if (++phase_control_step_counter >= phase_num_control_steps){ - transition.set(0,0,1); - current_phase = &idle; - } - } - - - -inline - void setTime(phase * p, unsigned int msec) - { - p->control_steps=convertMsecToControlSteps(msec); - p->audio_steps = (ulong) p->control_steps * AUDIO_TICKS_PER_CONTROL; - } - - -public: - - /** Constructor. - */ - ADSR():AUDIO_TICKS_PER_CONTROL(AUDIO_RATE/CONTROL_UPDATE_RATE) - { - attack.phase_type = ATTACK; - decay.phase_type = DECAY; - sustain.phase_type = SUSTAIN; - release.phase_type = RELEASE; - idle.phase_type = IDLE; - release.level = 0; - } - - -/** Updates the internal controls of the ADSR. - Call this in updateControl(). - */ - void update(){ // control rate - - switch(current_phase->phase_type) { - - case ATTACK: - checkForAndSetNextPhase(&decay); - break; - - case DECAY: - checkForAndSetNextPhase(&sustain); - break; - - case SUSTAIN: - checkForAndSetNextPhase(&release); - break; - - case RELEASE: - checkForAndSetIdle(); - break; - - } - } - - /** Advances one audio step along the ADSR and returns the level. - Call this in updateAudio(). - @return the next value, as an unsigned int. - */ - inline - unsigned int next() - { - return Q16n16_to_Q16n0(transition.next()); - } - - - - /** Start the attack phase of the ADSR. THis will restart the ADSR no matter what phase it is up to. - */ - inline - void noteOn(){ - setPhase(&attack); - } - - - - /** Start the release phase of the ADSR. - @todo fix release for rate rather than steps (time), so it releases at the same rate whatever the current level. - */ - inline - void noteOff(){ - setPhase(&release); - } - - - - - - /** Set the attack level of the ADSR. - @param value the attack level. - */ - inline - void setAttackLevel(byte value) - { - attack.level=value; - } - - - - /** Set the decay level of the ADSR. - @param value the decay level. - */ - inline - void setDecayLevel(byte value) - { - decay.level=value; - } - - - /** Set the sustain level of the ADSR. - @param value the sustain level. Usually the same as the decay level, - for a steady sustained note. - */ - inline - void setSustainLevel(byte value) - { - sustain.level=value; - } - - /** Set the release level of the ADSR. Normally you'd make this 0, - but you have the option of some other value. - @param value the release level (normally 0). - */ - inline - void setReleaseLevel(byte value) - { - release.level=value; - } - - - - /** Set the attack and decay levels of the ADSR. This assumes a conventional - ADSR where the sustain continues at the same level as the decay, till the release ramps to 0. - @param attack the new attack level. - @param value the new sustain level. - */ - inline - void setADLevels(byte attack, byte decay) - { - setAttackLevel(attack); - setDecayLevel(decay); - setSustainLevel(decay); - setReleaseLevel(0); - } - - - - - - - - /** Set the attack time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int attack time in milliseconds. - */ - inline - void setAttackTime(unsigned int msec) - { - setTime(&attack, msec); - } - - - /** Set the decay time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int decay time in milliseconds. - */ - inline - void setDecayTime(unsigned int msec) - { - setTime(&decay, msec); - } - - - /** Set the sustain time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - The sustain phase will finish if the ADSR recieves a noteOff(). - @param value the unsigned int sustain time in milliseconds. - */ - inline - void setSustainTime(unsigned int msec) - { - setTime(&sustain, msec); - } - - - - /** Set the release time of the ADSR in milliseconds. - The actual time taken will be resolved within the resolution of CONTROL_RATE. - @param value the unsigned int release time in milliseconds. - */ - inline - void setReleaseTime(unsigned int msec) - { - setTime(&release, msec); - } - - - - /** Set the attack, decay and release times of the ADSR in milliseconds. - The actual times will be resolved within the resolution of CONTROL_RATE. - @param attack_ms the new attack time in milliseconds. - @param decay_ms the new decay time in milliseconds. - @param decay_ms the new sustain time in milliseconds. - @param release_ms the new release time in milliseconds. - */ - inline - void setTimes(unsigned int attack_ms, unsigned int decay_ms, unsigned int sustain_ms, unsigned int release_ms) - { - setAttackTime(attack_ms); - setDecayTime(decay_ms); - setSustainTime(sustain_ms); - setReleaseTime(release_ms); - } - - -}; - -#endif /* ADSR_H_ */ - diff --git a/WaveClass4PolyPlusLPF_BETA/Wave.h b/WaveClass4PolyPlusLPF_BETA/Wave.h deleted file mode 100644 index a9afd72..0000000 --- a/WaveClass4PolyPlusLPF_BETA/Wave.h +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Wave.h - * - * Simon Green 2013. - * - * Based on Mozzi "Oscil.h" - */ - -#ifndef WAVE_H_ -#define WAVE_H_ - -#include "Arduino.h" -#include "mozzi_fixmath.h" -#include - -// fractional bits for oscillator index precision -#define OSCIL_F_BITS 16 -#define OSCIL_F_BITS_AS_MULTIPLIER 65536 -#define NUM_TABLE_CELLS 256 -#define ADJUST_FOR_NUM_TABLE_CELLS 8 -#define UPDATE_RATE AUDIO_RATE - -/** Generate waveform -*/ - -enum WaveType { WAVE_SAW=0, WAVE_TRI, WAVE_RECT, WAVE_NOISE }; - -class Wave -{ -public: - /** Constructor. "Wave mywave;" makes a Wave oscillator - */ - Wave () { - phase_fractional = 0; - phase_increment_fractional = 0; - wavetype = WAVE_SAW; - noise = 0xACE1; - pulse_width = 128; - } - - /** Increments one step along the phase. - @return the next value. - */ - inline - char next() - { - incrementPhase(); - - char w; - //ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - int n = (phase_fractional >> OSCIL_F_BITS) & (NUM_TABLE_CELLS-1); - switch(wavetype) { - case WAVE_SAW: - w = n - 128; - break; - case WAVE_TRI: - if (n & 0x80) // >= 128 - w = ((n^0xFF)<<1)-128; - else - w = (n<<1)-128; - break; - case WAVE_RECT: - if (n > pulse_width) - w = 127; - else - w = -127; - break; - case WAVE_NOISE: - noise = (noise >> 1) ^ (-(noise & 1) & 0xB400u); - w = noise>>8; - break; - } - } - return w; - } - - /** Set the wave type - */ - inline - void setType(WaveType x) - { - wavetype = x; - } - - WaveType getType() { return wavetype; } - - /** Set the pulse width for rectangle wave - */ - inline - void setPulseWidth(unsigned char x) - { - pulse_width = x; - } - - /** Set the oscillator frequency with an unsigned int. This is faster than using a - float, so it's useful when processor time is tight, but it can be tricky with - low and high frequencies, depending on the size of the wavetable being used. If - you're not getting the results you expect, try explicitly using a float, or try - setFreq_Q24n8() or or setFreq_Q16n16(). - @param frequency to play the wave table. - */ - inline - void setFreq (unsigned int frequency) { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - phase_increment_fractional = ((((unsigned long)NUM_TABLE_CELLS<>3)/(UPDATE_RATE>>6)) << (F_BITS-(8-3+6)); - phase_increment_fractional = (((((unsigned long)NUM_TABLE_CELLS<>3)*frequency)/(UPDATE_RATE>>6)) - << (OSCIL_F_BITS - ADJUST_FOR_NUM_TABLE_CELLS - (8-3+6)); - } - } - - - /** Set the frequency using Q16n16 fixed-point number format. This is useful in - combination with Q16n16_mtof(), a fast alternative to mtof(), using Q16n16 - fixed-point format instead of floats. Note: this should work OK with tables 2048 cells or smaller and - frequencies up to 4096 Hz. Can't be used with UPDATE_RATE less than 64 Hz. - @param frequency in Q16n16 fixed-point number format. - */ - inline - void setFreq_Q16n16(Q16n16 frequency) - { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - //phase_increment_fractional = ((frequency * (NUM_TABLE_CELLS>>7))/(UPDATE_RATE>>6)) << (F_BITS-16+1); - phase_increment_fractional = (((((unsigned long)NUM_TABLE_CELLS<>7)*frequency)/(UPDATE_RATE>>6)) - << (OSCIL_F_BITS - ADJUST_FOR_NUM_TABLE_CELLS - 16 + 1); - - } - } - -private: - /** Increments the phase of the oscillator without returning a sample. - */ - inline - void incrementPhase() - { - //phase_fractional += (phase_increment_fractional | 1); // odd phase incr, attempt to reduce frequency spurs in output - phase_fractional += phase_increment_fractional; - } - - unsigned long phase_fractional; - volatile unsigned long phase_increment_fractional; - - unsigned char pulse_width; - uint16_t noise; - - WaveType wavetype; -}; - -#endif /* WAVE_H_ */ diff --git a/WaveClass4PolyPlusLPF_BETA/WaveClass4PolyPlusLPF_BETA.ino b/WaveClass4PolyPlusLPF_BETA/WaveClass4PolyPlusLPF_BETA.ino deleted file mode 100644 index 8469753..0000000 --- a/WaveClass4PolyPlusLPF_BETA/WaveClass4PolyPlusLPF_BETA.ino +++ /dev/null @@ -1,434 +0,0 @@ - -/* Example of a sound being triggered by MIDI input. - * - * 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, lowpass filter - * 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 - * Now with drums! (still has all this code in there, commented out : ) - -S Green: -mod controller/ribbon is low pass filter cut-off -big button switches between tri/rectangle/noise/saw -(noise is at constant frequency) - -NB think mostly fixed, but may still be possible to crash filter with loud sounds, hit reset! - - */ - - -#include -#include -#include // oscillator template -#include // for envelope -#include -#include -#include - -#include // sine table for oscillator -//#include -//#include - -#include -#include -#include -#include -#include "Wave.h" -#include -#include - -#define MAX_NOTES 4 -//Dave G: now seems to do 4 note polyphony without clicking (higher notes are a bit grainy) -int threshold=255/MAX_NOTES; - -#define DRUM_SAMPLES 0 - -/* -#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 stepCounter = 0; -unsigned long ticksPerStep = (60*CONTROL_RATE) / (BPM*STEPS_PER_BEAT); - -// audio sinewave oscillator -//Oscil osc(SIN2048_DATA); -//Oscil osc(SAW2048_DATA); -//Oscil osc(TRIANGLE2048_DATA); -//Wave myosc; -//Wave lfo; -Oscil lfo(SIN2048_DATA); -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; - 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 = false; - -int step = 0; -int waveType = 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 - -byte pattern[4][16] = { - //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, // 0 hhc - 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, // 1 hho - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, // 2 s - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 // 3 k -}; - -// 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); - -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); -#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, 200); -#endif - - for(int i=0; i>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 : ) -} - -void HandleContinue () { // the big round button on all keytars - - // change wave - waveType = (waveType + 1) & 3; - - for(int i=0; ithreshold) {chan[i].gain=threshold;} - // threshold=255/MAX_NOTES, genuinely not sure if this is best approach but stops crashes :) - } - -#if 0 - // push buttons - int button0 = !digitalRead(BUTTON0_PIN); // active low - int button1 = !digitalRead(BUTTON1_PIN); - - /* - if (button0) { - // trigger - //envelope.noteOn(); - //lpf.reset(); - digitalWrite(LED, HIGH); - } else { - digitalWrite(LED, LOW); - } - */ - - if (button0 && !button0_old) { - lfo.setType((WaveType) ((((int) lfo.getType()) + 1) % 3)); - } - button0_old = button0; - - if (button1 & !button1_old) { - waveType = (waveType + 1) & 3; - //myosc.setType((WaveType) waveType); - for(int i=0; i ticksPerStep) { - step = (step+1) & 0xf; - stepCounter = 0; - if (pattern[0][step]) hihatcSamp.start(); - if (pattern[1][step]) hihatoSamp.start(); - if (pattern[2][step]) snareSamp.start(); - if (pattern[3][step]) kickSamp.start(); - } - } -#endif - -#if 0 - // knobs - int knob0 = adcGetResult(0); // [0, 1023] - int knob1 = adcGetResult(1); - //lpf.setCutoffFreq(knob0>>2); - //lpf.setResonance(knob1>>2); - - //crushCtrl = knob1>>7; - lfo.setFreq((float) knob0); - //myosc.setFreq((float) knob1); - //myosc.setFreq((unsigned int) knob0*20); - //myosc.setPulseWidth((unsigned char) (knob1>>2)); - - // start the next read cycle in the background - adcReadAllChannels(); -#endif - -#if DEBUG - Serial.println(knob0); -#endif -} - -// strip the low bits off! -int bitCrush(int x, int a) -{ - return (x>>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 = 0; - 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 = (x * lfo.next())>>8; - x = lpf.next(x); - -#if DRUM_SAMPLES - if (enableDrums) { - // drums please! - int drums = kickSamp.next() + snareSamp.next() + hihatcSamp.next() + hihatoSamp.next(); - //drums = (drums>>4)<<4; - x += drums*2; - } -#endif - - return x; -} - - -void loop() { - audioHook(); // required here -} - - - diff --git a/arduino-monosynth.ino b/arduino-monosynth.ino new file mode 100644 index 0000000..f399fb5 --- /dev/null +++ b/arduino-monosynth.ino @@ -0,0 +1,170 @@ +/* Example of a sound being triggered by MIDI input. + * + * 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, lowpass filter + * 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 + * + * dgreen - nutty portamento added! + */ + +#include +#include +#include // oscillator template +#include // for envelope +#include +#include +#include +#include +#include // table for Oscils to play +#include // table for Oscils to play + +// use #define for CONTROL_RATE, not a constant +#define CONTROL_RATE 256 // powers of 2 please + +// Mozzi example uses COS waves for carrier and modulator +// Shit gets brutal very fast if you use a saw/square carrier +// Shit gets subtly more brutal if you use smaller wavetables (fewer samples per cycle) +Oscil oscCarrier(SAW_ANALOGUE512_DATA); +Oscil oscModulator(COS2048_DATA); +Oscil oscLFO(COS2048_DATA); + +// envelope generator +ADSR envelope; +Portamento aPortamento; + +MIDI_CREATE_DEFAULT_INSTANCE(); + +#define LED 13 // to see if MIDI is being recieved + +unsigned long vibrato = 0; +float carrierFreq = 10.f; +float modFreq = 10.f; +float modDepth = 0; +float amplitude = 0.f; +float modOffset = 1; +byte lastnote = 0; +int portSpeed = 100; + +float modOffsets[] = { + 4, 3.5, 3, 2.5, + 2, 1.5, 1, 0.6666667, + 0.5, 0.4, 0.3333333, 0.2857, + 0.25, 0, 0, 0, + 0, 0, 0 +}; // freq ratios corresponding to DP's preferred intervals of 7, 12, 7, 19, 24, 0, 12, -12, etc + +void setup() +{ + pinMode(LED, OUTPUT); + + MIDI.begin(MIDI_CHANNEL_OMNI); + MIDI.setHandleNoteOn(HandleNoteOn); + MIDI.setHandleNoteOff(HandleNoteOff); + MIDI.setHandleControlChange(HandleControlChange); + MIDI.setHandlePitchBend(HandlePitchBend); + MIDI.setHandleProgramChange(HandleProgramChange); + MIDI.setHandleContinue(HandleContinue); + + envelope.setADLevels(255, 174); + envelope.setTimes(10, 50, 20000, 200); // 20000 is so the note will sustain 20 seconds unless a noteOff comes + aPortamento.setTime(50u); + oscLFO.setFreq(10); // default frequency + + startMozzi(CONTROL_RATE); +} + + +void HandleProgramChange (byte channel, byte number) +{ + // Use MIDI Program Change to select an interval between carrier and modulator oscillator + modOffset = modOffsets[number % 15]; +} + +void HandleNoteOn(byte channel, byte note, byte velocity) +{ + aPortamento.start((byte)(((int) note) - 5)); + + lastnote = note; + envelope.noteOn(); + + digitalWrite(LED, HIGH); +} + +void HandleContinue () +{ + portSpeed += 100; + + if (portSpeed > 500) + { + portSpeed = 0; + } + + aPortamento.setTime(portSpeed); +} + +void HandleNoteOff(byte channel, byte note, byte velocity) +{ + if (note == lastnote) + { + envelope.noteOff(); + digitalWrite(LED, LOW); + } +} + +void HandlePitchBend (byte channel, int bend) +{ + float shifted = float ((bend + 8500) / 2048.f) + 0.1f; + oscLFO.setFreq(shifted); +} + +void HandleControlChange (byte channel, byte number, byte value) +{ + if(number == 1) + { + float divided = float(value / 46.f); + modDepth = (divided * divided); + if (modDepth > 5) + { + modDepth = 5; + } + if (modDepth < 0.2) + { + modDepth = 0; + } + } +} + +void updateControl() +{ + MIDI.read(); + envelope.update(); + carrierFreq = Q16n16_to_float (aPortamento.next()); //NB presumably returns frequency as Q16n16 + modFreq = carrierFreq * modOffset; + oscCarrier.setFreq(carrierFreq); + oscModulator.setFreq(modFreq); +} + +int updateAudio() +{ + vibrato = (unsigned long) (oscLFO.next() * oscModulator.next()) >> 7; + vibrato *= (unsigned long) (carrierFreq * modDepth) >> 3; + return (int) ((oscCarrier.phMod(vibrato)) * (envelope.next())) >> 7; +} + +void loop() +{ + audioHook(); +} + + diff --git a/fm_v1_ino/fm_v1_ino.ino b/fm_v1_ino/fm_v1_ino.ino deleted file mode 100644 index 4c1b965..0000000 --- a/fm_v1_ino/fm_v1_ino.ino +++ /dev/null @@ -1,167 +0,0 @@ -/* Example of a sound being triggered by MIDI input. - * - * 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, lowpass filter - * 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 - * - * dgreen - nutty portamento added! - */ - -#include -#include -#include // oscillator template -#include // for envelope -#include -#include -#include -#include -#include // table for Oscils to play -#include // table for Oscils to play - -// use #define for CONTROL_RATE, not a constant -#define CONTROL_RATE 256 // powers of 2 please - -// Mozzi example uses COS waves for carrier and modulator -// Shit gets brutal very fast if you use a saw/square carrier -// Shit gets subtly more brutal if you use smaller wavetables (fewer samples per cycle) -Oscil oscCarrier(SQUARE_ANALOGUE2048_DATA); -Oscil oscModulator(COS2048_DATA); -Oscil oscLFO(COS2048_DATA); - -// envelope generator -ADSR envelope; -Portamento aPortamento; - -#define LED 13 // to see if MIDI is being recieved - -unsigned long vibrato = 0; -float carrierFreq = 10.f; -float modFreq = 10.f; -float modDepth = 0; -float amplitude = 0.f; -float modOffset = 1; -byte lastnote = 0; -int portSpeed = 100; - -float modOffsets[] = { - 4, 3.5, 3, 2.5, - 2, 1.5, 1, 0.6666667, - 0.5, 0.4, 0.3333333, 0.2857, - 0.25, 0, 0, 0, - 0, 0, 0 -}; // freq ratios corresponding to DP's preferred intervals of 7, 12, 7, 19, 24, 0, 12, -12, etc - -void setup() -{ - pinMode(LED, OUTPUT); - - MIDI.begin(MIDI_CHANNEL_OMNI); - MIDI.setHandleNoteOn(HandleNoteOn); - MIDI.setHandleNoteOff(HandleNoteOff); - MIDI.setHandleControlChange(HandleControlChange); - MIDI.setHandlePitchBend(HandlePitchBend); - MIDI.setHandleProgramChange(HandleProgramChange); - MIDI.setHandleContinue(HandleContinue); - - envelope.setADLevels(255, 174); - envelope.setTimes(10, 50, 20000, 10); // 20000 is so the note will sustain 20 seconds unless a noteOff comes - aPortamento.setTime(50u); - oscLFO.setFreq(10); // default frequency - - startMozzi(CONTROL_RATE); -} - - -void HandleProgramChange (byte channel, byte number) -{ - // Use MIDI Program Change to select an interval between carrier and modulator oscillator - modOffset = modOffsets[number % 15]; -} - -void HandleNoteOn(byte channel, byte note, byte velocity) -{ - aPortamento.start((byte)(((int) note) - 5)); - - lastnote = note; - envelope.noteOn(); - - digitalWrite(LED, HIGH); -} - -void HandleContinue () -{ - portSpeed += 100; - - if (portSpeed > 500) - { - portSpeed = 0; - } - - aPortamento.setTime(portSpeed); -} - -void HandleNoteOff(byte channel, byte note, byte velocity) -{ - if (note == lastnote) - { - envelope.noteOff(); - digitalWrite(LED, LOW); - } -} - -void HandlePitchBend (byte channel, int bend) -{ - float shifted = float ((bend + 8500) / 2048.f) + 0.1f; - oscLFO.setFreq(shifted); -} - -void HandleControlChange (byte channel, byte number, byte value) -{ - if(number == 1) - { - float divided = float(value / 46.f); - modDepth = (divided * divided); - if (modDepth > 5) - { - modDepth = 5; - } - if (modDepth < 0.2) - { - modDepth = 0; - } - } -} - -void updateControl() -{ - MIDI.read(); - envelope.update(); - carrierFreq = Q16n16_to_float (aPortamento.next()); //NB presumably returns frequency as Q16n16 - modFreq = carrierFreq * modOffset; - oscCarrier.setFreq(carrierFreq); - oscModulator.setFreq(modFreq); -} - -int updateAudio() -{ - vibrato = (unsigned long) (oscLFO.next() * oscModulator.next()) >> 7; - vibrato *= (unsigned long) (carrierFreq * modDepth) >> 3; - return (int) ((oscCarrier.phMod(vibrato)) * (envelope.next())) >> 7; -} - -void loop() -{ - audioHook(); -} - -- cgit v1.3