- Edited
PatchStorage has the closest thing to a wiring diagram. This project gives the general idea that you can modify to match the specific description below:
https://patchstorage.com/dynamic-range-compressor-feedback-topology/
Of course, the above project works as advertised if all you wanted was a dynamic range compressor.
Based on the same wiring diagram, here are some other "broken out" effects that will work on the same wiring diagram:
https://github.com/transmogrifox/Bela_Misc -- specifically "overdrive" and "klingon-tone"
The interface for the whole FX processor is a bit crude for now since I currently depend on the console output to see which effect and parameter are being adjusted.
Here is the most current code for the project:
https://github.com/transmogrifox/transmogriFX_bela
Here is some code that can help get started implementing LCD output and control if you want. Code I haven't pushed to gituhub implements some rudimentary I/O on the LCD so I'm not working totally blind without a computer connected to the IDE, but not good enough to push the code at this point. The audio level meter code has all the pieces needed to design a usable LCD interface.
https://github.com/transmogrifox/Bela_Misc/tree/master/audio_level_meter
The short description is this:
-- Connect 6 pots (10k) between ADC ref pin and gnd with wipers going to Analog input channels 0-5.
-- If you have a wah pedal, disconnect the pot from the wah circuit and connect the pot between ADC ref pin and ground with wiper going to Analog input channel 8.
-- Connect 420 to 500 ohm resistor from 5V to Analog ref pin to make up the extra current drawn by the 10k pots. If you use 100k pots, then the resistor to 5V can be the 4.7k shown in the compressor diagram.
-- Connect bypass pot to digital input 4, switching between 3.3V and GND.
Then for switches, connect either:
1) Normally closed momentary pushbutton switch between digital input pin to ground with 3.3k pull-up resistor to 3.3V.
2) Normally open momentary pushbutton between digital input pin to 3.3V and 3.3k pull-down resistor to ground.
Here are the definitions for what switch channels to use and what they do:
//Control context
#define CONTROL_CONTEXT_SWITCH 3 //input 0 appears to be dead on dev's unit (maybe ESD? or just broken wire)
#define CONTROL_EFFECT_SWITCH 1
#define EFFECT_BYPASS_SWITCH 2
#define WAH_PEDAL_BYPASS 4
I was using digital input channels 0-3, but one was broken so I am using 1-4. As the code is written:
Digital input 1: Scrolls through list of FX, makes them active for control. (CONTROL_EFFECT_SWITCH)
Digital input 2: Toggles on/bypass state of active effect. (EFFECT_BYPASS_SWITCH)
Digital input 3: Scrolls through control pages on the effect, which assigns the pots to different sets of parameters.(CONTROL_CONTEXT_SWITCH)
Digital input 4: Logic high (3.3V) wah is activated unconditionally, Logic low wah can be switched on/off with EFFECT_BYPASS_SWITCH if wah is the active effect selected by CONTROL_EFFECT_SWITCH.
From there the audio path is intended to work like this:
{Guitar} ----->[Bela CH0 IN] ...[Bela CH0 OUT] -->{External FX Chain(FX send/return)}--->[Bela CH1 IN]...[Bela CH1 OUT--->{Amplifier}
Here are some hardware interface circuit ideas, but there is no PCB layout nor BOM:
https://github.com/transmogrifox/Hardware/tree/master/Bela_Input_Buffer
The user interface to this is very crude but all the pieces are there to build a nice FX processing unit. My plan is to abandon the current "render.cpp" and start over from scratch but at my current rate this will be a project of many years.