An impementation of a few of the Teensy Audio Library effects objects, in stereo. With a color display user interface.
The delay is a custom version that uses the optional PSRAM chip, which allows for very long delays.
Audio processing is handled by the Teensy4 with an Audio Shield. A Teensy 4.0 can work, but to make really long delays a Teensy 4.1 with at least one PSRAM chip is required. The Teensy4 takes control inputs via MIDI from the user interface section. The appropriate audio objects are dynamically connected for the desired effect (see diagram below).
User interface (UI)
The user interface is implemented on a Raspberry Pi Pico RP2040 with an external EEPROM. The UI takes input from the knobs, plus MIDI in, and sends it to the synth section. UI to synth communication is via an internal MIDI channel. The settings are automatically saved to EEPROM.
The user interface incorporates a VelociRotor 6 Dial Panel plus a VelociRotor 9H to implement the knobs. The 320x240 color display is mechanically mounted on the 6 dial panel, but it is just a pass through connection to the RP2040.
|Mechanical||T4 FX Panel.stl|
|Source Code - Teensy4||teensyfx_teensy4.zip|
|Source Code - RP2040||teensyfx_rp2040.zip|
|Front Panel Module||Six Dial Panel Module|
|Navigation Dial Module||VelociBus Modules|
All the FX settings can be controlled via MIDI.
The mode is set by a MIDI Program Change message.
|0||Delay||The Delay Effect is a 4 tap delay line with feedback (tails). Tge Delay Effect can produce reverb, chorus, and echo sounds.|
|1||Flange||The Flange Effect uses a delay line, combining the original voice with one sample from the delay line, where the position of that sample varies sinusoidally. This produces a harmonically-related series of peaks and notches.|
|2||Granular||The Granular Effect uses a variable speed buffer to shift the pitch of incoming audio.|
|3||Freeverbs||The Freeverbs Effect is a 'High quality stereo Reverb effect, based on Freeverb by Jezar at Dreampoint'|
|4||Filter||The Filter Effect is a state variable (Chamberlin) filter with 12 dB/octave roll-off, adjustable resonance and corner frequency.|
The settings are Continuous Control (CC) messages.
|7||All Modes||'FX Volume' is the amount of effect volume. FX Volume and Thru Volume are mixed to produce the final output.|
|12||All Modes||'Thru Volume' is the amount of original voice. FX Volume and Thru Volume are mixed to produce the final output.|
|89||Delay||'Taps' is the number of delay taps that are mixed to the output, from 0 to 4. Each tap is evenly spaced in the Total Time.|
|90||Delay||'Total Time' is the total delay time, which can be up to 2 seconds. The delay taps are spaced evenly within this time.|
|91||Delay||'Tails Amount' is the amount of effect that is looped back into the delay line. This produces an echo effect. Beware that too much tails amount can result in a positive feedback loop.|
|85||Flange||'Depth' is the modulation (LFO) depth. Larger values give a greater variation.|
|86||Flange||'Offset' is how far back the flanged voice is sampled from the original voice.|
|87||Flange||'LFO Rate' is the modulation frequency. Combined with modulation depth this varies the flange effect.|
|95||Granular||'Grain Size' is the size of the pitch shift sample grain, in milliseconds.|
|94||Granular||'Speed' is the speed ratio (pitch shift) for playback. Values less than 1.0 slow the sound, and greater than 1.0 speeds up.|
|73||Filter||'Filter Type' selects the filter mode, which can be low pass, high pass, or band pass.|
|74||Filter||'Frequency' is filter corner frequency.|
|75||Filter||'Resonance' is the filter's response level. The value ranges from 0.7 to 5.0. Resonance greater than 0.707 will amplify the signal near the corner frequency|
|16||Freeverbs||'Room Size' is the amount of reverberant echo, or apparent room size.|
|17||Freeverbs||'Damping' is the amount of higher frequency echo decay, creating a softer sound similar to a large room filled with people. Lower damping simulates a harsher reverberant field.|
|10||Freeverbs||'Input Pan' selects the Freeverbs input from left/mixed/right.|