No description, website, or topics provided.
C++ Other
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
experimental Added new module, SynthWaveFolder Jul 9, 2014
old Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
.gitattributes First time check in May 3, 2014
.gitignore First time check in May 3, 2014
DueTimer.cpp First time check in May 3, 2014
DueTimer.h First time check in May 3, 2014
EquationBank.cpp Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
EquationBank.h Mostly just cleanup work. Added ModuleWaveshaper, but I have my doubt… Jul 29, 2014
EquationBankKhepri.cpp Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
EquationBankKhepri.h Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
EquationBankPtah.cpp Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
EquationBankPtah.h Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
EquationBankSobek.cpp Added a bit more of a 'safety margin' on the inputs Aug 7, 2014
EquationBankSobek.h Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
EquationComposer.ino Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
FixedPointMath.cpp Updated documentation Aug 13, 2014
FixedPointMath.h Updated documentation Aug 13, 2014
GlobalChords.cpp Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalChords.h Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalFilterTables.cpp Updated documentation. Added smoothing to a few synth inputs. Aug 10, 2014
GlobalFilterTables.h More optimization on the lowpass filter Jul 18, 2014
GlobalFixedPointMathTables.cpp Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalFixedPointMathTables.h Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalIncrements.cpp Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalIncrements.h Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalLoops.cpp Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
GlobalLoops.h Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
GlobalRingBuffer.cpp Added ModuleFreeze, an audio freeze effect. Also updated delay and fr… Jun 29, 2014
GlobalRingBuffer.h Added ModuleFreeze, an audio freeze effect. Also updated delay and fr… Jun 29, 2014
GlobalSamples.cpp A few comment updates. Also adjusted input voltage range a little bit… Aug 6, 2014
GlobalSamples.h Added more sample based drum kits. Added ModuleKitSelect to choose ki… Jul 20, 2014
GlobalScales.cpp Added 8 more scales to GlobalScales.cpp and ModuleQuantizer. Jul 10, 2014
GlobalScales.h Added 8 more scales to GlobalScales.cpp and ModuleQuantizer. Jul 10, 2014
GlobalSlopes.cpp Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalSlopes.h Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalSpeechTables.cpp Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalSpeechTables.h Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
GlobalWaveshaperTables.cpp Mostly just cleanup work. Added ModuleWaveshaper, but I have my doubt… Jul 29, 2014
GlobalWaveshaperTables.h Mostly just cleanup work. Added ModuleWaveshaper, but I have my doubt… Jul 29, 2014
GlobalWavetables.cpp Added 8 more scales to GlobalScales.cpp and ModuleQuantizer. Jul 10, 2014
GlobalWavetables.h Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
Inputs.cpp Fixed caps of include statement for defines.h May 24, 2014
Inputs.h Updated documentation Aug 13, 2014
Module.cpp CPU optimizations Jul 11, 2014
Module.h Updated documentation Aug 13, 2014
ModuleAdd.cpp Improvements to memory efficienty Jun 25, 2014
ModuleAdd.h Updates to tutorial synths documentation Aug 14, 2014
ModuleAnalogInput.cpp Adjusted inputs to allow for a greater input offset Aug 13, 2014
ModuleAnalogInput.h Improvements to memory efficienty Jun 25, 2014
ModuleArpeggio.cpp Made updates for 1.5.7 compatibility. Jul 20, 2014
ModuleArpeggio.h Made updates for 1.5.7 compatibility. Jul 20, 2014
ModuleBitReducer.cpp Improvements to memory efficienty Jun 25, 2014
ModuleBitReducer.h Improvements to memory efficienty Jun 25, 2014
ModuleChords.cpp Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
ModuleChords.h Improvements to memory efficienty Jun 25, 2014
ModuleClock.cpp Improvements to memory efficienty Jun 25, 2014
ModuleClock.h Reduced memory footprint of ModuleExtClock and ModuleClock Jul 11, 2014
ModuleClockDivider.cpp Improvements to memory efficienty Jun 25, 2014
ModuleClockDivider.h Improvements to memory efficienty Jun 25, 2014
ModuleClockedRandom.cpp Improvements to memory efficienty Jun 25, 2014
ModuleClockedRandom.h Improvements to memory efficienty Jun 25, 2014
ModuleConstant.cpp Improvements to memory efficienty Jun 25, 2014
ModuleConstant.h Improvements to memory efficienty Jun 25, 2014
ModuleCounter.cpp Improvements to memory efficienty Jun 25, 2014
ModuleCounter.h Updates to tutorial synths documentation Aug 14, 2014
ModuleDelay.cpp Updated SynthDrumSelektor documentation. Cleaned up unused variables … Jun 29, 2014
ModuleDelay.h Updated SynthDrumSelektor documentation. Cleaned up unused variables … Jun 29, 2014
ModuleDigitalInput.cpp Improvements to memory efficienty Jun 25, 2014
ModuleDigitalInput.h Improvements to memory efficienty Jun 25, 2014
ModuleDrumSequencer.cpp Made updates for 1.5.7 compatibility. Jul 20, 2014
ModuleDrumSequencer.h Added usage example for ModuleDrumSequencer.h Aug 12, 2014
ModuleDrumSequencer32.cpp Updates to the new drum player. Now uses ModuleDrumSequencer32. Jul 21, 2014
ModuleDrumSequencer32.h Updates to tutorial synths documentation Aug 14, 2014
ModuleENV.cpp More optimization, especially with the lowpass filter Jul 12, 2014
ModuleENV.h Documentation updates Aug 12, 2014
ModuleEqDrum.cpp Improvements to memory efficienty Jun 25, 2014
ModuleEqDrum.h Improvements to memory efficienty Jun 25, 2014
ModuleEquationLooper.cpp Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
ModuleEquationLooper.h Updated documentation Aug 16, 2014
ModuleEquationPlayer.cpp Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
ModuleEquationPlayer.h Updated documentation. Added wave folder to SynthDrumSelektor. Aug 16, 2014
ModuleExtClock.cpp Updated documentation. Added wave folder to SynthDrumSelektor. Aug 16, 2014
ModuleExtClock.h Updated documentation. Added smoothing to a few synth inputs. Aug 10, 2014
ModuleFreeze.cpp Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
ModuleFreeze.h Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
ModuleInput.cpp Added ability to smooth any input for any synth easily within the syn… Jul 6, 2014
ModuleInput.h Updated documentation. Added smoothing to a few synth inputs. Aug 10, 2014
ModuleInputSmooth.cpp Added ability to smooth any input for any synth easily within the syn… Jul 6, 2014
ModuleInputSmooth.h Added comments to ModuleInputSmooth.h. Added smoothing to SynthPatter… Jul 6, 2014
ModuleKitSelect.cpp Made updates for 1.5.7 compatibility. Jul 20, 2014
ModuleKitSelect.h Updates to documentation Aug 12, 2014
ModuleLFO.cpp Added 'Global' prefix to all classes which contain extern arrays. Thi… Jun 28, 2014
ModuleLFO.h Improvements to memory efficienty Jun 25, 2014
ModuleLooper.cpp Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
ModuleLooper.h Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
ModuleLowpassFilter.cpp Updated documentation. Added wave folder to SynthDrumSelektor. Aug 16, 2014
ModuleLowpassFilter.h Upgraded speech player. Removed old, unused lowpass filter code. Jul 3, 2014
ModuleMap.cpp Improvements to memory efficienty Jun 25, 2014
ModuleMap.h Improvements to memory efficienty Jun 25, 2014
ModuleMixer2.cpp Improvements to memory efficienty Jun 25, 2014
ModuleMixer2.h Documentation updates Aug 12, 2014
ModuleMixer3.cpp Improvements to memory efficienty Jun 25, 2014
ModuleMixer3.h Improvements to memory efficienty Jun 25, 2014
ModuleMultiply.cpp Improvements to memory efficienty Jun 25, 2014
ModuleMultiply.h Improvements to memory efficienty Jun 25, 2014
ModuleOscParam.cpp Added Gaetan's new 3-Oscillator synth. Also added arpeggiation synth. Jul 8, 2014
ModuleOscParam.h Added Gaetan's new 3-Oscillator synth. Also added arpeggiation synth. Jul 8, 2014
ModuleOutput.cpp Improvements to memory efficienty Jun 25, 2014
ModuleOutput.h Improvements to memory efficienty Jun 25, 2014
ModulePatternGenerator.cpp Mostly optimizations, cleanup, and comments Jun 28, 2014
ModulePatternGenerator.h Mostly optimizations, cleanup, and comments Jun 28, 2014
ModuleQuantizer.cpp Added 8 more scales to GlobalScales.cpp and ModuleQuantizer. Jul 10, 2014
ModuleQuantizer.h Documentation updates Aug 12, 2014
ModuleRotatingRouter3.cpp Added ModuleRotatingRouter3, and used it in SynthChords to rotate the… Jul 3, 2014
ModuleRotatingRouter3.h Added ModuleRotatingRouter3, and used it in SynthChords to rotate the… Jul 3, 2014
ModuleSampleAndHold.cpp Mostly optimizations, cleanup, and comments Jun 28, 2014
ModuleSampleAndHold.h Mostly optimizations, cleanup, and comments Jun 28, 2014
ModuleSamplePlayer.cpp Added more sample based drum kits. Added ModuleKitSelect to choose ki… Jul 20, 2014
ModuleSamplePlayer.h A few comment updates. Also adjusted input voltage range a little bit… Aug 6, 2014
ModuleSequencer.cpp Mostly optimizations, cleanup, and comments Jun 28, 2014
ModuleSequencer.h Mostly optimizations, cleanup, and comments Jun 28, 2014
ModuleSmooth.cpp Mostly optimizations, cleanup, and comments Jun 28, 2014
ModuleSmooth.h Updated documentation Jul 13, 2014
ModuleSpeechSound.cpp Mostly minor code cleanup. Tried to make a RingMod and failed. Jul 7, 2014
ModuleSpeechSound.h CPU optimizations Jul 11, 2014
ModuleSwitch.cpp Mostly optimizations, cleanup, and comments Jun 28, 2014
ModuleSwitch.h Mostly optimizations, cleanup, and comments Jun 28, 2014
ModuleVCA.cpp Added Gaetan's speech synth Jun 28, 2014
ModuleVCA.h Improvements to memory efficienty Jun 25, 2014
ModuleWaveFolder.cpp Updated ModuleWaveFolder so that the lower and upper level inputs bot… Jul 9, 2014
ModuleWaveFolder.h Updated documentation. Added smoothing to a few synth inputs. Aug 10, 2014
ModuleWaveshaper.cpp Mostly just cleanup work. Added ModuleWaveshaper, but I have my doubt… Jul 29, 2014
ModuleWaveshaper.h Mostly just cleanup work. Added ModuleWaveshaper, but I have my doubt… Jul 29, 2014
ModuleWavetableOsc.cpp CPU optimizations Jul 11, 2014
ModuleWavetableOsc.h Updated documentation. Added smoothing to a few synth inputs. Aug 10, 2014
Modules.h Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
README.md Update README.md Aug 23, 2014
Rand.cpp CPU optimizations Jul 11, 2014
Rand.h Improvements to memory efficienty Jun 25, 2014
Synth.cpp Mostly optimizations, cleanup, and comments Jun 28, 2014
Synth.h Updated documentation Aug 13, 2014
Synth3Osc.cpp Added Gaetan's new 3-Oscillator synth. Also added arpeggiation synth. Jul 8, 2014
Synth3Osc.h Added Gaetan's new 3-Oscillator synth. Also added arpeggiation synth. Jul 8, 2014
SynthArpeggio1.cpp Added Gaetan's new 3-Oscillator synth. Also added arpeggiation synth. Jul 8, 2014
SynthArpeggio1.h Added Gaetan's new 3-Oscillator synth. Also added arpeggiation synth. Jul 8, 2014
SynthAutoDrum.cpp Mostly minor code cleanup. Tried to make a RingMod and failed. Jul 7, 2014
SynthAutoDrum.h More development, cleanup, and comments. Added a smoother to the wave… May 6, 2014
SynthChords.cpp Updated documentation Aug 13, 2014
SynthChords.h Added ModuleRotatingRouter3, and used it in SynthChords to rotate the… Jul 3, 2014
SynthClickers.cpp Added new scales. Removed delay from pattern generator in lue of scal… Jul 2, 2014
SynthClickers.h Attempted some experimental programming, none of which really worked … Jul 5, 2014
SynthDrumPlayer.cpp Updated documentation. Added smoothing to a few synth inputs. Aug 10, 2014
SynthDrumPlayer.h Some updates the the drum modules, which need more work. Also, added … May 10, 2014
SynthDrumSelektor.cpp Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
SynthDrumSelektor.h Updated documentation. Added wave folder to SynthDrumSelektor. Aug 16, 2014
SynthEquationLooper.cpp Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
SynthEquationLooper.h Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
SynthEquationPlayer.cpp Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
SynthEquationPlayer.h Change how equations are organized. Now, equations are organzied into… Jul 26, 2014
SynthLooper.cpp Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
SynthLooper.h Added new beat looper module, which includes two samples from Richard… Sep 8, 2014
SynthMini.cpp Fixed caps of include statement for defines.h May 24, 2014
SynthMini.h Renamed the old SynthSubtractor to SynthMini and made some changes. T… May 16, 2014
SynthMumbler.cpp Mostly minor code cleanup. Tried to make a RingMod and failed. Jul 7, 2014
SynthMumbler.h CPU optimizations Jul 11, 2014
SynthPatterns.cpp Added new module, SynthWaveFolder Jul 9, 2014
SynthPatterns.h Added new scales. Removed delay from pattern generator in lue of scal… Jul 2, 2014
SynthTutorial1.cpp Updated documentation. Added wave folder to SynthDrumSelektor. Aug 16, 2014
SynthTutorial1.h Updated documentation. Added wave folder to SynthDrumSelektor. Aug 16, 2014
SynthTutorial10.cpp Added new ModuleClockedRandom and the new SynthTutorial10 for showing… May 31, 2014
SynthTutorial10.h Added new ModuleClockedRandom and the new SynthTutorial10 for showing… May 31, 2014
SynthTutorial11.cpp Updates to tutorial synths documentation Aug 14, 2014
SynthTutorial11.h Updates to tutorial synths documentation Aug 14, 2014
SynthTutorial12.cpp Updates to tutorial synths documentation Aug 14, 2014
SynthTutorial12.h Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial13.cpp Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial13.h Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial14.cpp Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial14.h Added demo for ModuleRotatingRouter3. Also removed old, unused highpa… Jul 6, 2014
SynthTutorial15.cpp Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial15.h Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial16.cpp Mostly just cleanup work. Added ModuleWaveshaper, but I have my doubt… Jul 29, 2014
SynthTutorial16.h Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial2.cpp Updates to tutorial synths documentation Aug 14, 2014
SynthTutorial2.h Consolidated ocsillator modules into the ModuleWavetableOsc, which se… May 15, 2014
SynthTutorial3.cpp Minor updates to documentation and some code cleanup Jun 7, 2014
SynthTutorial3.h Updates to tutorial synths documentation Aug 14, 2014
SynthTutorial4.cpp Updates to tutorial synths documentation Aug 14, 2014
SynthTutorial4.h Updates to tutorial synths documentation Aug 14, 2014
SynthTutorial5.cpp Updates to tutorial synths documentation Aug 14, 2014
SynthTutorial5.h Updates to tutorial synths documentation Aug 14, 2014
SynthTutorial6.cpp Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial6.h Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial7.cpp Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial7.h Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial8.cpp Created a class called Rand for quickly generating random numbers. Th… May 31, 2014
SynthTutorial8.h Added new ModuleQuantizer and SynthTutorial8 for testing it. Scales a… May 30, 2014
SynthTutorial9.cpp Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthTutorial9.h Created a class called Rand for quickly generating random numbers. Th… May 31, 2014
SynthWavetable.cpp Consolidated ocsillator modules into the ModuleWavetableOsc, which se… May 15, 2014
SynthWavetable.h Make some nice improvements on the usage of wavetables. Wavetables ar… May 14, 2014
SynthWavetableDelay.cpp Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthWavetableDelay.h Mostly minor code cleanup. Tried to make a RingMod and failed. Jul 7, 2014
SynthWavetableFolder.cpp Additions and updates to the tutoral synths documentation Aug 16, 2014
SynthWavetableFolder.h Renamed SynthWavetableBitFolder to SynthWavetableFolder, since the bi… Jul 30, 2014
defines.h Cleaned up defines.h Aug 16, 2014

README.md

Equation Composer

Welcome to the Equation Composer code. For general usage, or instructions on adding your own equations, modules, or synths, see http://www.microbemodular.com/products/equation-composer. If you'd prefer to jump in and start reading the code, try EquationComposer.ino.

In most cases, the code is grouped by file prefix.

  • EquationBank[..] files contain equations that are used for the equation playback (bytebeat) style synths.
  • Global[..] files contain global data used throughout the code. These are often 'const' data types, meaning that they're stored in the Arduino Due's program memory. Also, see defines.h.
  • Module[..] files define the building blocks of the synths.
  • Synth[..] files "wire together" the modules and produce the sound. Synths are selectable via the PRG knob on the EquationComposer.

Let's take a look at a sample synth:

SynthWavetableDelay.cpp:

SynthWavetableDelay::SynthWavetableDelay(Inputs* inputs)
{
	// Create modules
	ModuleWavetableOsc *wavetable_osc = new ModuleWavetableOsc();
	ModuleDelay *delay = new ModuleDelay();

	// Wire up the wavetable oscillator
	wavetable_osc->wavetable_input  = inputs->mod;
	wavetable_osc->frequency_input  = inputs->sr;

	// Put the wavetable oscillator through a delay
	delay->audio_input = wavetable_osc;
	delay->mix_input = inputs->param1;
	delay->feedback_input = inputs->param2;
	delay->length_input = inputs->param3;

	// Output the audio of the delay
	this->last_module = delay;
}

This is a typical synth. Here, the audio of a wavetable synthesizer is being sent into an audio delay, then output. This synth is composed of two modules, the ModuleWavetableOsc and ModuleDelay.

Documentation explaining what each synth does is located in the synth's .h file. For example, SynthWavetableDelay.h contains the following documentation:

// =============================================================================
//
// Name: SynthWavetableDelay
// Type: Audio
// Written by: Bret Truchan, 2014
//
// Description: A wavetable oscillator put through a short audio delay.
//
// SR - Sample rate of the wavetable oscillator
// MOD - Wavetable selection
// [1] - Mix (dry/wet) of the delay effect
// [2] - Delay feedback
// [3] - Delay buffer length
// GATE - not used
//
// =============================================================================

To learn more about each module, see the module reference. Alternatively, each module's .h file contains documentation explaining the module's inputs and outputs, along with sample code for using the module. For example, ModuleDelay.h contains the following documentation:


/*
* +----------------------+
* | ModuleDelay |
* |----------------------|
* > audio_input |
* > mix_input |
* > feedback_input |
* > length_input |
* | output >
* +----------------------+
*
*/
// =============================================================================
//
// ModuleDelay is an extremely short audio delay effect with control over
// mix, feedback, and buffer length. All inputs should range from 0 to 4095.
//
// Example usage:
//
// ModuleWavetableOsc *wavetable_osc = new ModuleWavetableOsc();
// ModuleDelay *delay = new ModuleDelay();
//
// wavetable_osc->wavetable_input = inputs->mod;
// wavetable_osc->frequency_input = inputs->sr;
//
// delay->audio_input = wavetable_osc;
// delay->mix_input = inputs->param1;
// delay->feedback_input = inputs->param2;
// delay->length_input = inputs->param3;
//
// this->last_module = delay;
//