FXLab - DIY Programmable Stereo Multi FX Pedal

by baritonomarchetto in Circuits > Audio

26 Views, 0 Favorites, 0 Comments

FXLab - DIY Programmable Stereo Multi FX Pedal

IMG_20260205_133040_risultato.jpg
IMG_20260205_110207_risultato.jpg
IMG_20260205_110213_risultato.jpg
IMG_20260205_110219_risultato.jpg
IMG_20260205_110227_risultato.jpg

It was my convinction that developing a digital DIY pedal was not even worth a try.

Not that I am an analog fundamentalist (I am NOT), but it was safe for me to assume that tinkerers-proof microcontroller boards would struggle at sound processing.

What made me completely change my mind is a project from ElectroSmash called PedalShieldUNO: 100% digital, based on the cheapest Arduino board and PWM audio, it was anyway capable of producing serious Daft Punk - like robot distortion/ocave shift and honest fuzz.

Mind blown, new project on it's way!

In this instructable I will show you FXLab, a DIY hardware born to develop custom audio digital effects.

Featuring:

  1. Full stereo path (mono input -> stereo output)
  2. 32KHz sample rate
  3. 12-bit in -> 16-bit out resolution
  4. True bypass
  5. 9 (plain) effects (more to come)
  6. Up to 3 parameters per effect
  7. Up to 16 chains of effects (max 4 effects per chain)
  8. Patch memory
  9. Customizable effects and chains
  10. Opensource

I will describe the circuits adopted, the criticalities I had to face, and their solutions.

I will give a description of the base software I wrote and I will give you "a kick" to help get started in the digital sound processing world.

I will share with you Gerber files to have PCB manufactured thus speeding up the assembly project and increase the success probability.

A lot to write ahead of me, isn't that?!

Supplies

In the following the list of materials. The multi effect is made of three PCBs and a casing.

Casing

  1. 1x GEP2 aluminum alloy expression pedal
  2. 1x 10K ohm potentiomter (WH148)
  3. 2x caps (6 mm shaft)

True Bypass PCB

  1. 1x IDC connector (MALE, 5X2 pins)
  2. 1x LED, 3mm (color of your choice. This is the one that tells you if the FX is engaged or not)
  3. 1x 100K ohm resistor
  4. 1x 10K ohm resistor
  5. 1x 1K ohm resistor
  6. 1x BC547 NPN transistor
  7. 1x footswitch (PBS-24-302, LATCHING)

Rotary Encoders PCB

  1. 1x IDC connector (MALE, 5X2 pins)
  2. 8x 10K ohm resistors
  3. 4x 100 nF capacitor (ceramic)
  4. 2x rotary encoder, 6mm shaft (EC11)

Main PCB

Resistors

  1. 2x 1K ohm
  2. 2x 2K ohm
  3. 7x 4.7K ohm
  4. 1x 39K ohm
  5. 1x 47K ohm
  6. 1x 68K ohm
  7. 8x 100K ohm
  8. 2x 180K ohm
  9. 2x 1M ohm
  10. 1x 500K ohm single turn trimmer (B25P)
  11. 1x 50K ohm single turn trimmer (B25P)

Capacitors

  1. 2x 100uF electrolitic
  2. 3x 10uF electrolitic
  3. 3x 4.7 uF electrolitic
  4. 5x 100nF 104 ceramic
  5. 3x 270pF 271 ceramic
  6. 6x 6.8 nF 682 ceramic

Diodes

  1. 2x LED 3mm (color of your choice. These are the 5V indication and the aux LED)
  2. 2x 1N4004 diode
  3. 2x BAT42 Schottky diode
  4. 1x SB120 Schottky diode

Transistors, voltage regulators, uC, ICs

  1. 1x 7805 voltage regulator
  2. 1x RP2040 Zero microcontroller board
  3. 1x PT8211 16.bit stereo DAC
  4. 3x TL972 operational amplifiers

Connectors and switches

  1. 2x IDC connector (MALE, 5X2 pins)
  2. 1x Screw terminal, 3 pins (W237-103)
  3. 1x DIP switch (DIP-4)
  4. 1x Power jack barrel
  5. 1x SPDT switch (SS12F44) - power ON/OFF switch
  6. 2x Stereo jack female 1/4"
  7. 1x TACT momentary micro switch

Others

  1. 2x ribbon cables with FC/IDC terminals (5x2 pins)


You are also in the need for a soldering station, some solder wire, a driller with adeguate set of drills, patience, patience and patience :)

FXLab - Overview

FXLab is a multi effects circuit hosted in a common aluminum alloy expression pedal. These chassis are sold in every popular online shop nowadays.

These kind of pedals are often used to deliver FX like Wah Wah or voltage attenuation. They are not used for distortion, delay or any other FX other than the two cited.

I anyway adopted one of these because the nice plus an expression pedal brings with respect to box-shaped FX (stompboxes) is a on-the fly control of one of the FX parameters, at the only cost of some additional space.

I liked the idea of having such power under my foot (and honestly this bulky case was calling me for some use!).

FXLab is layed down like a common pedal, with it's signal input on the right, output on the left, effect engage visual indicator (LED) on the upper part, 9V center negative (or battery powered) supply.

What makes it special is the internal part.

At the bare bottom, we have a microcontroller board in charge of reading incoming audio signal, process it then output it through an external, dedicated 16-bits, stereo DAC. The microcontroller board acts then as a DSP (Digital Sound Processor).

The microcontroller board adopted (RP2040 Zero, a sort of Raspberry Pi Pico in small form factor) has excellent computational power, it is damn cheap and has a vast and helpful community of tinkerers around. This makes it a perfect choice for a platform oriented to give the possibility to people to create classic and even new and unheard effects with ease.

Simple analog filters at input/output stages and a DRY/WET mixer serve the microcontroller to reduce digital noise and artifacts and giveing some analog warmth to the processed signal

More details about the hardware and software in the folowing Steps.

Effects for Dummies

Please note that I’m keeping things at a basic level here. If you’re already familiar with the topic, you can jump straight to the next step ;)

Working Principle

The working principle of a digital effect pedal is actually very simple: an incoming wave (which in electronic terms is an evolving voltage) is first "cleaned by a series of filters and then recorded/digitalized at microcontroller board input (analog to digital convertion).

In this phase a packet of instant voltages is converted into numbers and collected in memory. We have collected a "sample". Every single sample is a digital representation of the incoming wave at a certain instant.

Modifications (processing) of those samples is the hearth of the effect application process.

Data processerd inside the microcontroller are then converted back to an evolving voltage, different from the one incoming, but still keeping it's soul. Romantic, isn't it :)

The microcontroller board works as a so called digital sound processor (DSP). In this project setup it also performs other tasks such as reading peripherals (buttons, potentiometers), blinking LEDs and so on.

The first firmware one has to write reads the input evolving voltage and outputs the same voltage, as clean as possibile. This is actually a very important phase because on the quality of this "clean" code depends most of the quality of any "modification" code.

"Applying an effect" in digital world means manipulate "clean" data such to emulate the target effect behaviour. The description of such beahviour for some common effect follows.

Gain

The simplest "effect" one could think of. This can be simply emulated by multiplying by a given factor any recorded incoming voltage.

The effectiveness depends on the DAC output headroom: go too high and you will start having digital distortion (and noise), but also unpredictable effects in the case of overflow; go down and the volume will drop to unhearable levels (or, return strange "underflow" results).

Distortion, Fuzz

In analog world, distortion starts when incoming signal amplitude is higher than a predetermined threshold. Any signal higher than that threshold is "clipped" to that value.

This means that a distortion can be emulated by limiting the wave data value to something lower than the maximum bit depth of the output DAC.

At extreme low data thresholds and asymmetrical clipping, you will end with a fuzz type of distortion.

Tremolo, Vibrato

Tremolo is the periodic variation of a soundwave gain. This can be achieved by appliyng a low frequency variation to the instant voltage collected at pedal input.

By applying the low frequency variation to the pitch of incoming data (in example by stretching and compressing the timing such data are outputted) you end with a vibrato effect.

Delay, Chorus, Flanger, Reverb

These are all time-based effects.

Time-based effects are likely the most difficult to master, especially with limited specs hardware.

Delay time is for sure a crucial difference between these. When the output signal is well delayed from the generating signal (> 300 ms) we have delay (add feedback to have "echo"); when they come closer in time, we are in the chorus (<30 ms) ballpark (add more delay lines to have "ensemble"). Last but not least comes flanger (<0.3 ms).

Chorus is not only a fast delay, though. It also calls for due modulation of the delay time to trigger it's magic.

Flanger, on the other end, is not only a super-fast delay. It needs pitch modulation over time.

Speed, repetitions (often referred to as "feedback") and modulation intensity (or "depth") are also very important characteristics. A very nice writing by Jon Dawson where the differences between time based effects (more precisely "modulation effects") are described can be found HERE.

To digitally emulate a time based effect we want to store a portion of incoming data in a buffer (array), then output those data at appropriate times.

The dimension of the buffer array and output frequency determines the maximum delay time of the device.

Bit Crusher, Daft Distortion

These are pure digital "distorsive" effects. They work by reducing the digital resolution of an audio signal, creating lo-fi, grainy, metallic, and glitchy/noisy textures.

To obtain such effects you can "shift on pourpouse" some data down to reduce bit depth, then up to gain volume. You can control the bit crushing level by defining how many bits to loose.


Those described are possible ways to emulate common guitar effects. Don't forget that digital technology gives room to imagination (and, why not, "lucky stumbles") to create something completely new.

We are all hungry of un-heard effects!

Sampling for Dummies

Please note that I’m keeping things at a basic level here. If you’re already familiar with the topic, you can jump straight to the next step ;)

Sampling an incoming signal is an art on it's own. It asks for a tradeoff between hardware limitations and ear perception in order to gain the best output possible.

Sampling is a crucial phase in any digital effect, so it's important to understand some basic concept before any modification to the software.

The two most important parameters in sampling are sample rate and sample bit-depth, or resolution.

Sample rate is the frequency at which samples are stored. In the audio realm this goes from 8 KHz to 48 KHz or higher.

Sample bit depth (or number of bits) someway refers to the amplitude of the sample: the higher the bit number, the higher the resolution of a sample.

To further simplify the visualization of these two parameters, think at sample rate as a parameter defining the recorded signal horizontal resolution, bit rate the vertical resolution.

Higher sample rate means more samples per second, which in turn means that the highest audio frequency you can capture increase. Nyquist law states that if you want to sample a 20 kHz signal, you need at least twice that (40 kHz), but more is better.

Dealing with microcontroller limitations means accepting compromises, both in terms of sample rate and sample frequency.

A sample rate of 16KHz is common is projects like this, especially when highly pitched waves haven't to be expected.

What limits sample bit resolution is the analog-to-digital converter (ADC). In this project I have adopted a RP2040 microprocessor, which has an internal ADC with 12-bit resolution.

After processing, we have to turn the digital signal to analog. To make this "correctly", data hitting the DAC must be shifted to match it's bit dept. In example, the PT8211 used in this project has a 16-bit resolution.

FXLab - Circuits

IMG_20260205_103245_risultato.jpg
IMG_20260205_103323_risultato.jpg
IMG_20260205_110207_risultato.jpg
IMG_20260205_103228_risultato.jpg
inputStage.png
mixerStage.png
LED_status.png
SallenKeyLP.png
VG_buffering.png

Power Supply Stage

The pedal works out of a 9V alcaline battery or 9V center negative switching PSU.

Out of the main 9V power source a series of other tensions are derived.

The most important is +5V, which in turn is internally lowened to 3.3V by the built-in MCU step down converter to juice the RP2040.

A robust TL7805 is here used to generate 5V from 9V, even if the system do not drain too much current.

Other tensions are used as virtual grounds for operational amplifiers. These allow op-amps to operate with no distortion by appropriately DC shift incoming audio signals.

Input stage virtual ground is set @1.6V through a voltage divider and final buffer. Output stage virtual ground is set @4.5V with a divider only. Both see electrolite capacitors at their outputs for stabilization.

The two supply sources (battery and PSU) are kept isolated from each other by the use of the PSU connector ground breaker, a well known mechanical approach used in commercial products.

Battery is protected against wrong polarity connection through a series SB120 Schottky diode for safety.

The circuit is protected against wrong polarity with a 1N4004 diode connectind GND and PSU+.

The input audio jack is used as switch for battery operation: if no input jack is inserted, the battery "-" (B-) is not connected to ground and current cannot flow. This is a simply trick adopted by pedals manufacturers asking for no additional components. It's made by using a stereo input jack and connecting B- to the ring. When a mono input jack is inserted, the ring is shorted to ground and the battery can erogate current. Niiice :)

Input Stage

Input stage is very close to the one adopted by Electrosmash in their PedalShieldUNO, which in turn is very similar to those adopted by manufacturers of commercial digital processor. ElectroSmash themself made a very interesting analysis of the input stage of a Danelectro delay which closely resembles the solution adopted.

Input stage is MONO, and served by an op-amp in order to increase the impedence and keep the guitar signal unaffected. A series of RC filters reduce noise before hitting the microcontroller board.

Being that Pi Pico accepts a maximun input level of 3.3V, one easy way to limit the incoming voltage to such tensions is by powering the buffer stage @3.3V.

The most common opamp one could think of (TL072) calls for at least 6V rail-to-rail to operate in its linear region, so it's a no-go in this case. I have then adopted a less common op-amp (TL972, or TS972) which works well at low voltages.

Input stage op-amp is over and under-voltage protected with low drop Schottky diodes (BAT42). Being the room for input voltage already limited, using two diodes such as 1N4148 (0.7V drop each) is not recommended.

The remaining input op-amp is used to buffer the 1.6V virtual ground and keep it steady.

Digital-to-Analog Convertion

In a previous project of mine I messed up with PWM audio. I had to face the fact that PWM is not good enought to my ears, and a DAC (even the cheaper available) gives sensibly better results.

In the aforementioned project I used a PT8211 stereo DAC to fight against PWM limits, and it saved the project. A no brainer then.

PT8211 is a 16 bits DAC, massively used by DIY community, so it's a good candidate for a project like this, even for novices.

Wet/Dry Mixing Stage

After being processed, the left DAC channel goes through an inverting, mixing (summing) stage where it is mixed with a user definable amount of (filtered) dry signal. This stage is convenient to give more "life" to an otherwise 100% digital signal.

This stage gives a 2X gain to the summed signal.

The right, processed channel is instead buffered through the remaining opamp in 2X gain, inverting configuration.

Please notice that only the left channel has analog control over dry/wet signal.

Filter Stage

The output stage adopts the same solution I used in my Pi Pico Wavetable Oscillator Eurorack module. Both signals from the previous stage are independently low-pass filtered to limit digital artifacts at higher frequencies (noises and whines).

The filter adopted is a Sallen-Key low-pass filter: a simple-but-effective, second-order active filter.

The filter is not amplified, like I did in my wavetable oscillator, because there's already a 2X gain in the mixing stage.

An AC coupling capacitor and a current limiting series resistor complete che output stage for the RIGHT channel. The LEFT/MONO channel goes instead through the true bypass section before being filtered and outputted (see next).

True Bypass

The foot switch is configured in true bypass mode. When you deactivate the pedal, the input jack is wired directly to the left/mono output and the right channel muted at DAC level.

Common guitar pedal footswitches have 3 poles to toy with. Two are used to deliver the bypass function. The third pole is commonly used to light a LED indicating the status (on or off) of the effect.

Being that I also wanted to receive a status indication of the FX engagement, I adopted a simple circuit to catch both functions.

Here a Falstad's CircuitJS simulation of the circuit.

Please notice that only the left channel has true bypass. Right channel signal is "digital-only" and fully generated inside the pedal (MONO-to-STEREO).

Daughterboards

I designed three daughterboards to host different elements.

The first one is the footswitch daughterboard. It hosts the footswitch and a secondary circuit to monitor the state of the footswitch.

The second one is a potentiometer board. It hosts two potentiometers and is intended to be mounted on the left side of the pedal. I didn't adopted this in my project, but it's there for future use.

The third one is similar to the potentiometers board, but hosts two rotary encoders. This is the one that I actually used in this project because (a) it reduce the ADCInput load (monitoring two pots in less CPU intensive than four), (b) it is more stable than pot readings.

The rotary encoders board has a built-in debounce circuit to avoid false readings.

Potentiometers board and rotary board have elements placed with the same spacing, so they can be swapped with no further hardware modifications.

OK Computer

At the base of the software there's Arduino IDE and Earl Phil Hower Arduino Pico core. These two toghether make a solid platform to toy with a RP2040-based microcontroller board.

Audio signal handling is a niche asking for very specific features, the most important being sampling signals at high speed. Default Arduino's "analogRead()" function is not good for audio signal readings because of its "not upright" timing.

Luckily for us, Arduino Pico environment has a library named ADCInput that makes this task tinkerer-proof :).

Another thing that made a difference in this project was the use of AI to write effects. Once the base code was written, with it's due hardware definitions and general structure, it was a matter of asking the kind of effect needed to the AI to see a list of lines generated.

Some times they worked with minimum-to-no modifications, some times I had to take full control of the situation, but I must confess that I had a lot of fun experimenting this way.

Turning the final effect from a "ethimologically correct" effect to something musically good calls for your taste, since the AI is instrucred, not smart. But it allows us to focus on WHAT we want rather than HOW to do it.

If you have already dealt with AI you certainly know how important it is to give proper input. This is what I found working best with this project:


“I’m working on a pedal-based multi-effects unit built around an RP2040. The multi-effects unit has a pedal (expression pedal) and two rotary encoders. The full audio path is: guitar → analog buffer → RP2040 (12-bit, unsigned) → PT8211 (16-bit, SIGNED) → analog wet/dry mixer → Stereo output. Keep left channel signal 100% WET. Keep right channel WET/DRY fixed at 50%. The two channels (left and right) are independent of each other. The hardware works well, and the PT8211 is handled correctly (LSBJ format). Write the code for a EFFECT NAME HERE


Notice that left channel is kept WET-only because the DRY/WET blending is hardware set through the dedicated on-board trimmer. This isn't a valuable information for the AI.

You also want to attach the full code, for a copy-and-paste result.

Code Structure and How-to

DIP 4X4.png

Effect's Chains

The code is structured such that effects can be developed independently from each other, then used alone or in any effects chain, in any order.

In the moment I am writing, default effects are:

  1. Compressor
  2. Octaver
  3. Distortion
  4. Daft Distorstion
  5. Bit Crusher
  6. Delay
  7. Chorus
  8. Flanger
  9. Reverb

Current code handles 16 chains of maximum 4 effects each.

In the moment I am writing, default chains are:

  1. Compressor → Distortion → Chorus
  2. Compressor → Distortion → Flanger
  3. Compressor → Distortion → Reverb
  4. Compressor → Daft Distortion → Delay
  5. Compressor → Daft Distortion → Chorus
  6. Compressor → Daft Distortion → Flanger
  7. Compressor → Daft Distortion → Reverb
  8. Octaver → Distortion → Delay
  9. Octaver → Distortion → Flanger
  10. Octaver → Daft Distortion → Delay
  11. Octaver → Bit Crush → Delay
  12. Distortion
  13. Delay
  14. Chorus
  15. Flanger
  16. Reverb

User can select the chain of interest by setting the 4-bit DIP switch according to attached scheme (0 means OFF, 1 means ON).

Please notice that actual chains are limited to max 3 effects each, even if the code could handle 4.

Effect's Parameters

Each effect has two or three control parameters. In general, the most effective (or "expressive") is at player's foot, the other two assigned to rotaries.

Here is the current effects parameters mapping:


| Effect | Foot Pedal (Param 0)| Rotary 1 (Param 1) | Rotary 2 (Param 2) |

| Compressor | Sustain / Threshold | Attack | Output Level (Make-up Gain) |

| Octaver | (unused) | Left Octave Shift | Right Octave Shift |

| Distortion | Drive | Body Output Gain | Tone (Low-pass Filter) |

| Daft Distortion | Drive + Smpl Redct. | (unused) | Stereo Width |

| Bit Crush | Drive | Bit Depth | Sample Rate Reduction |

| Delay | Feedback | Delay Time | Stereo Spread (L/R Offset) |

| Chorus | LFO Rate | Modulation Depth | Base Delay Time |

| Flanger | LFO Rate | Modulation Depth | Feedback |

| Reverb | Pre-Delay | Decay | Damping |


The code is written such that user can change the modulator (footpedal or encoder) for any parameter. This has to be done at code level, not on the fly.

Effect parameters can be changed when the parameter is in focus. To move focus from one parameter to the previous/next, user can press the encoder "Z" button.

All effects have left channel 100% WET (mix is set at hardware level through the dedicated trimmer), right channel is fixed 50% WET, 50% DRY.

Memory!

Parameters values can be stored for recall. Memorized parameters are kept in flash memory after shut down and reloaded at power on.

Flash memory cannot be written for more than 100.000 times, so writing to it must be a user-trigged action, not authomatic.

User can record parameters values simply by pressing the on-board, dedicated button.

Bit In, Bit Out, Bit Math... Lot Fun :)

To roll your own FX out (or at least debug some noisy effect), it is very important to keep track of the bit depth of your processed data. You run the risk of unexpected distortion or too low volume otherwise.

In the development of some audio manipulation projects I have learned that there are two rules of thumb to keep in mind when doing bit-math:

  1. If you sum two x-bit variables, the resulting variable bit depth will be x+1 (i.e. if you are summing two 12-bit variables, you end with a 13-bit variable). Always sum variabes with the same bit-depth.
  2. If you multiply two x-bit varibales, the resulting variable bit depth will be 2x (i.e. 12 bit variable * 12 bit variable gives a 24 bit variable).

To shift variables from one depth to the other, greyed coders use shift operators ("<<" to increase bit depth, ">>" to decrease bit depth).

The microcontroller board in use has four 12-bit ADC inputs available. This means that the one used to sample the incoming audio signal will return a train of numbers (samples) from 0 to 4095.

The DAC adopted has a maximum output bit depth of 16 bits. This means that DATA needs to be shifted to 16 bit before being outputted. 16 bit is also the dimension of tipical Arduino variables ("int"), so it fits perfectly :)

SMD Soldering Hints

IMG_20260203_121626_risultato.jpg

SMD components are becoming increasingly necessary in DIY projects. Whether it's because some interesting ICs are only available in SMD packages, or because SMD parts are often cheaper than their THT counterparts, sooner or later we all have to deal with them.

In this project I had to adopt a special version of op-amp capable to work at low voltages (TL972, or TS972). This was really necessary at input stage only, but to keep parts count low I used that component for all opamps. This op-amp is difficult to find legit in DIP-8 package, so I had to use the SMD version.

Soldering SMD components calls for some strategy with a common stylus soldering station.

Here are some free suggestions for you:

General Procedure:

  1. solder SMD components first. You want space around your solder tip and you don't want to trash other components in the case you have to trash everything.
  2. use a thin iron to solder the chip.
  3. clean the iron frequently. Solder wire has a flux core that degrade after a while. The solder becomes "sticky" and difficult to handle.
  4. use a magnifing glass to zoom the soldering area (even better would be one of those digital microscopes they sell nowadays, but it's not everybody priority I know).
  5. use soldering flux. My personal favourite are siringes containing dense flux.
  6. The iron temperature is very important: it should be high enought to fast melt the solder, but not too high to kill the IC. I set mine @ 370-380°C.

Soldering Method:

  1. put flux in the IC's pads whole area
  2. melt a little amount of solder on one PCB's IC pad. Choose one of those pads with a side free from other pads (pin 1, in example). You want to see a certain amount of solder over the pad, but no shorts between adiacent pads.
  3. place the SMD IC over it with the right orientation and apply soldering flux. Be 100% sure the IC has the right orientation!!
  4. remelt the pad-solder with a clean iron tip while applying a very small pressure on top of the IC.

When the first IC leg is firmly soldered, check if all legs are well aligned to their respective pads. If yes, use some flux and fresh solder wire to solder all the other legs to pads, starting from those on the opposite side to the one firstly soldered.

It can happen that two (or more) legs are shorted with solder. If this happen, clean the soldering iron and pass it through the shorted legs side moving it from up to down or viceversa. The excess solder will stick to the iron and the short will go.

Alternatively...

If you don't feel confident soldering small SMD components, be aware that most PCBs manufacturing Companies offer a SMD assembly service.

SMDs you see in this Instructable have been populated by JLCPCB SMD assembly service. Very good results indeed!

They have legit TL972 (or ST972) in stock, so it's a good way to catch two birds with a single net ;)

Please notice that only SMD components will be assembled; THT components will need to be soldered.

Pedal Chassis Modification

IMG_20260205_101115_risultato.jpg
IMG_20260205_101235_risultato.jpg
IMG_20260205_101451_risultato.jpg
IMG_20260205_101601_risultato.jpg
IMG_20260205_101920_risultato.jpg
IMG_20260205_102127_risultato.jpg
IMG_20260205_102301_risultato.jpg

The expression pedal alone limits the ability to fine-tune our effects. It therefore becomes necessary to modify the pedal chassis so that two rotary encoders can be installed on the right side and made accessible.

The encoders PCB can be used as a practical drill mask. In the following the steps to drill the two holes:

  1. Apply some tape to the case in the drill zone. This is to prevent damages (or better "surface scratches") if the driller hits the case surface,
  2. With the help of the drill mask and a pencil, set drill positions
  3. Punch the holes with a hole puncher (optional)
  4. Drill the holes, starting with a very small drill. These are guides for the next drills.
  5. Increase the hole up to 4 or 6 mm
  6. Use a multi-step drill to enlarge the holes up to 8 mm (7 would be a perfect fit).

Now remove the tape, vacuum the working area from debrids et-voilà: you chassis is now ready for the assembly Step.

Case Assembly

IMG_20251016_121614_risultato.jpg
IMG_20251016_122604_risultato.jpg
IMG_20251016_123208_risultato.jpg
IMG_20251016_123722_risultato.jpg
IMG_20251016_124734_risultato.jpg
IMG_20251016_125339_risultato.jpg
IMG_20251016_125412_risultato.jpg
IMG_20251016_125942_risultato.jpg
IMG_20251016_130208_risultato.jpg
IMG_20251016_130333_risultato.jpg
IMG_20251017_112609_risultato.jpg

The case adopted is well known in the DIY community and mostly used for Wah pedals. "GEP-2" is the commercial name and you can source it from any mainstream dealer online.

The case needs to be assembled and, unfortunately comes without build instructions.

(Please notice that in my pictures the two encoders hosting holes have not been drilled yet. You can drill them after assembly, but it's not recommended).

Assembly Steps

1) Assemble the rack shaft (the toothed piece of plastic) on it's mounting braket first. Notice that it has a well defined orientation to work!!

2) Install the rack shaft assembly on the treadle.

3) Install the two front bumbers, the rear bumper and felt switch pad on the treadle.

4) On the case base, install the L-bracket.

5) On the case base, install the center block and tension adjustment screw.

6) Now, put the base and the treadle toghether. The bearing pin, when in position, must be (gently) hammered in place. Do not apply too force or you will damage the case!

7) Give the tension adjustment screw some twist. You want the treadle to stay firmly in position, but not at the point it doesn't move anymore.

8) Install the potentiometer.

9) Tune the potentiometer shaft position such that it don't reach its upper or lower run end.

Assembly Tips

There are some good resources online:

  1. HERE is a video where a GEP2 is assembled from scratch (youtube)
  2. HERE is a nice writing with some additional hints (super-freq.com)

To these two resources, also my pictures and following notes adds.

  1. The hole where to screw the rack shaft tensioner in my unit was a little too small and I had problems makeing the thread with the provided screw. Using a steel screw and inserting/removing it slowly helped a lot.
  2. The rack shaft is dimensioned for the gear it comes with. If you buy a potentiometer with already installed gear, get the rack too.
  3. You want a good contact between the rack shaft and potentiometer gear to transfer pedal position. If they are too close, you will fear gear steps under your foot. The potentiometer will degrade faster and could break. Too loose and they will slide with no motion transfer. This will lead to a non working pedal (oook) but you will run the risk to break the potentiometer.
  4. When installing the potentiometer and testing it, use your hands, not the foot! If the potentiometer reaches the end of it's clockwise or counter-clockwise run, you will likely break it with your weight!
  5. To install a common WH148 linear potentiometer like I did, use two thin washers. The potentiometer thread is not long enought for two 1 mm thick washers, but you want two of them to keep the potentiometer firmly in place.
  6. My pedal had the mounting holes for the rubber feet unthreaded. Don’t try to tap them with a thread tap or you’ll break them. The same goes for the two PCB mounting holes. I preferred to use hot glue instead.

My case package was missing some screw and the switch pad. Not a big deal, but be ready for some small part missing.

External Pi Pico Pedal Projects Links

There are a lot of nice digital effects projects based on microcontroller boards out there. These are often very informative, so it is worth mentioning them here:

Some worth mentioning are:

  1. profdc9 Guitar Pico - 24 effects plus sinusoidal wave generation. Up to 16 effects in a sequence. Gerber available.
  2. Jon Dawson DIY Multi-Effect Guitar Unit - 10 effects, patch memory. Gerber available. Included a very nice disamina about the difference between common effects.
  3. Kenta Ishii RasPi Guitar Pedal - 15 effects plus two buffers. Perfboard project (no Gerbers then).
  4. ElectroSmash PedalShieldUNO - very informative and well worth looking at - 7 effects plus metronome and signal generator. Gerber should be available somewhere, but I couldn't source them.
  5. Open Music Labs Stomp Shield - Arduino UNO based, Gerber available.

Acknowledgments

IMG_20260203_121533_risultato.jpg
IMG_20260203_121603_risultato.jpg
IMG_20260203_121618_risultato.jpg

This project took months to be realized. It was complex enought to call for two preliminary PCBs before being realized in the form I showed you in this article.

Many thanks goes to JLCPCB for sponsoring PCBs manufacturing and SMD assembly for this project.

They also sponsored the manufacturing of all the preliminary PCBs. I wouldn't have gotten this far without their material help.

Many many thanks.

JLCPCB is a high-tech manufacturer specialized in the production of high-reliable and cost-effective PCBs. They offer a flexible PCB assembly service with a huge library of more than 630.000 components in stock at today. This project made use of the service and everything went smooth and clean.

3D printing is part of their portfolio of services so one could create a full finished product, all in one place (note to self: start learning how to create 3D parts!).

What about nano-coated stencils for your SMD projects? You can take advantage of a coupon and test it at reduced price in these days.

By registering at JLCPCB site via THIS LINK (affiliated link) you will receive a series of coupons for your orders. Registering costs nothing, so it could be the right opportunity to give their service a due try ;)

All Gerber files and sketches I realized for this project are stored >>HERE<< (Github).