keyth72
Well-known member
Usually when I set out to make a new guitar effect "thing", I develop it in a vacuum until I think it's ready, and then I'll share the finished product. This time, I thought it would be fun to document the development process, and bounce ideas off the community.
These are the current goals/parameters for the project:
- Daisy Seed based 125B pedal to have as a base platform for multi-effect modules, and testing new DSP ideas
- Stereo in/out
- Midi in/out (mini trs) OR Midi In / Expression In
- Controls: 6 knobs, three 3-way switches, two footswitches, optional outboard dip switches (think Chase Bliss or Walrus Audio Mako control layout)
- Through hole parts (no SMD)
- As cheap as possible for hobbyists to build a single unit, and using widely available parts
- KiCad for pcb design, 2 layer board
- Tayda drill template for enclosure
- Will be using c++ for software development
- Relay bypass is desired, but for me, not necessary (I think this would take either a larger enclosure, or separate board, based on the layout I currently have due to space)
^^^ maybe an option to swap midi in/out for relay bypass using different versions of the pcb?
- Include the low pass filter fix for potential Daisy Seed rev 7 noise
- Adobe Illustrator template for Tayda UV printing, optional
I currently have a version 1 pcb on order from OSHpark, with everything except midi in/out. If this build goes well, I'll add midi and any other features /lessons learned. Planning on setting up a public Github repo and adding to it as I verify things work. PCB design is fairly new to me, so layout advice is appreciated.
I was also thinking people might want to know how to set up the code to use different I/O pins on the Daisy Seed. Normally I just modify libdaisy's "daisy_petal" class, then have a header file as an abstraction to make it easier to understand (similar to the terrarium.h file). I can share some examples if so.
Oh yeah, and I'm calling it "Funbox". I had some cool names like "Nebulae" or "Cerebrum" in mind, but guys, I just gotta go with Funbox.
My version 1 PCB and Tayda order should arrive in a few weeks, will post updates here. Here is the OSHpark render of my current board:
As you can see, the placement of the Daisy Seed and potentiometers are approximately the same as Terrarium, but to help with space for the TL074 I turned the switches sideways. 2 button right-angle dipswitch is on the lower left. I think by expanding the board on the top there's room for MIDI in/out, or possibly relay bypass. I measured about a centimeter of leeway in my Terrarium build before running into the audio in/out jacks.
__________________________________________________________________________________________________________
I'll just edit the post so that updates remain at the top of the thread:
5/15/24
PCB and Enclosure came in the mail on the same day.. what luck! Built, tested, works. I'll need to make some minor adjustments to the drill template for the Daisy Seed USB port and the dip switches. I also might look into a sturdier part for the dip switch. If anyone has experience using dip switch arrays, I'd be curious how it turned out, and what part/manufacturer you went with.
Next on the list: test some real effects on it, right now I just tried a few simple things to verify all the controls respond as expected, and that stereo processing works. And then for the next board, add MIDI and Expression via two mini TRS jacks.
______________________________________________________________________________________________________________________
Update: 5/31/2024
The Funbox repo is now public! Still lots of work to do but here it is in case anyone wants to follow it's development.
https://github.com/GuitarML/FunBox
At this point in time the version 1 board (stereo) has been thoroughly tested, and I have a handful of pedal software modules for it at various stages of development. All of them will build and run on the Daisy Seed, but I am currently tweaking them and adding features. Video demos to come.
I have the version 3 board (adds midi and expression) and I'm waiting on a Tayda order to build and test it.
That's all for now.
______________________________________________________________________________________________________________________
Update: 6/11/2024
I have built the version 3 Funbox, and there were a few hiccups but it mostly works. This version adds expression and midi inputs from two 1/8" TRS jacks on either side of the pedal. It also uses a 4 count dip switch instead of a 2 count.
The first issue was mechanical. I currently have the 1/8" trs jacks and dip switch array protruding out of the holes of the enclosure slightly. I imagined being able to finagle them into the enclosure, but once I soldered the knobs on the board this idea didn't work! I had to file down the outside plastic of the trs jacks to be flush with the inside of the enclosure, as well as bend the dip switch array in somewhat, to fit the soldered pcb into the enclosure. In a future revision of the v3 board I plan on pulling these inward a millimeter or two so that this is not an issue.
Midi input has been tested, and it works!
The second issue is in the expression input circuit. I followed the Electrosmith "Daisy Petal" schematic (except I used a TL072 op amp instead of an OPA), but I'm having an issue with one side of the dual op amp output. An expression pedal is simply a voltage divider (normal potentiometer), but I think the idea of using a dual op amp with unity gain is to isolate the Daisy Seed if you accidently put something with a voltage on it, like CV. One op amp is on the 3.3V reference voltage from the Daisy Seed, and the other op amp is on the return voltage from the potentiometer in the expression pedal, which then goes into the ADC input on the Daisy Seed like any other knob control.
In measuring the voltages from the TL072 the output of the second op amp is giving me weird results, it should be 0v to 3.3v as you move the expression, but I'm reading a range of 4v to 1v, then back up to 4v as the expression pedal is moved. I tried a second TL072 op amp with the same results. The voltage coming out of the expression pedal is correct, 0 to 3.3v, but once it goes through the second unity op amp something weird is happening. The TL072 is powered by 5v as shown in the Electrosmith schematic, which I'll link here:
The good news is, if I bypass the op amps and jumper the pins so that the expression pedal acts as a direct potentiometer (no intermediate op amps) then it works as expected!
Here is the pedal (as you can see in the gut shot, the TL072 for the expression circuit at the top has been removed):
I've tested out some of my software modules and the existing stuff works, so at least I didn't break anything going from version 1 to version 3 of the board! Just need to figure out what's going on with the expression circuit, and adjust the positioning of the 1/8" jacks and dip switch so that it's easier to install into the enclosure.
Edit: I think the TL072 was not the right choice for the expression pedal op amp, the op amp electrosmith used is classified as a "rail to rail", where the TL072 isn't. I'm going to try a different dual op amp, an MCP6002, in it's place and see if that works.
_____________________________________
6/14/24
Yes! MCP6002 was the correct part to use, expression works as designed now. Will update the v3 board in the GitHub repo. After a little more learning about op amps, I think what was happening with the TL072 was something called “phase inversion”, where the voltage was outside of the specification, or too close to the lower rail of 0v/ground. TL072 can’t go below around the lower rail+1v or so, so this phase inversion was happening as the expression pedal was pressed. The MCP6002 is a rail to rail op amp, so it can go the range of what’s powering the chip, in this case 0v to 5v.
_____________________________________
6/15/24
GitHub repo has been updated, I also moved a couple of components around to make the layout a little cleaner, and pulled the 1/8 jacks and dip switches inward to make install easier. Will order the new version (3.1) soon and test. Now for the fun part (at least to me), writing effect code and making demos!
_____________________________________
Here’s a short demo of my expression code:
This is using the “Mars” module from the code on GitHub, which is an amp sim (neural model + IR) with a multi mode delay. What you hear in the video is the klon model, with IR off since I’m running through my amp, and dotted 8th delay mode, with the delay time, tone, and volume being modulated by the expression pedal.
_____________________________________
7/13/24
After some testing with different op amps for the audio buffers, I’ve updated the board to use the MCP6024 quad op amp instead of the TL074. This was done to reduce noise. The pinout is exactly the same, so the only real change is the part label on the board. This change is reflected in version 3.2 and has been updated in the GitHub repo.
The part I’m using can be found here:
These are the current goals/parameters for the project:
- Daisy Seed based 125B pedal to have as a base platform for multi-effect modules, and testing new DSP ideas
- Stereo in/out
- Midi in/out (mini trs) OR Midi In / Expression In
- Controls: 6 knobs, three 3-way switches, two footswitches, optional outboard dip switches (think Chase Bliss or Walrus Audio Mako control layout)
- Through hole parts (no SMD)
- As cheap as possible for hobbyists to build a single unit, and using widely available parts
- KiCad for pcb design, 2 layer board
- Tayda drill template for enclosure
- Will be using c++ for software development
- Relay bypass is desired, but for me, not necessary (I think this would take either a larger enclosure, or separate board, based on the layout I currently have due to space)
^^^ maybe an option to swap midi in/out for relay bypass using different versions of the pcb?
- Include the low pass filter fix for potential Daisy Seed rev 7 noise
- Adobe Illustrator template for Tayda UV printing, optional
I currently have a version 1 pcb on order from OSHpark, with everything except midi in/out. If this build goes well, I'll add midi and any other features /lessons learned. Planning on setting up a public Github repo and adding to it as I verify things work. PCB design is fairly new to me, so layout advice is appreciated.
I was also thinking people might want to know how to set up the code to use different I/O pins on the Daisy Seed. Normally I just modify libdaisy's "daisy_petal" class, then have a header file as an abstraction to make it easier to understand (similar to the terrarium.h file). I can share some examples if so.
Oh yeah, and I'm calling it "Funbox". I had some cool names like "Nebulae" or "Cerebrum" in mind, but guys, I just gotta go with Funbox.
My version 1 PCB and Tayda order should arrive in a few weeks, will post updates here. Here is the OSHpark render of my current board:
As you can see, the placement of the Daisy Seed and potentiometers are approximately the same as Terrarium, but to help with space for the TL074 I turned the switches sideways. 2 button right-angle dipswitch is on the lower left. I think by expanding the board on the top there's room for MIDI in/out, or possibly relay bypass. I measured about a centimeter of leeway in my Terrarium build before running into the audio in/out jacks.
__________________________________________________________________________________________________________
I'll just edit the post so that updates remain at the top of the thread:
5/15/24
PCB and Enclosure came in the mail on the same day.. what luck! Built, tested, works. I'll need to make some minor adjustments to the drill template for the Daisy Seed USB port and the dip switches. I also might look into a sturdier part for the dip switch. If anyone has experience using dip switch arrays, I'd be curious how it turned out, and what part/manufacturer you went with.
Next on the list: test some real effects on it, right now I just tried a few simple things to verify all the controls respond as expected, and that stereo processing works. And then for the next board, add MIDI and Expression via two mini TRS jacks.
______________________________________________________________________________________________________________________
Update: 5/31/2024
The Funbox repo is now public! Still lots of work to do but here it is in case anyone wants to follow it's development.
https://github.com/GuitarML/FunBox
At this point in time the version 1 board (stereo) has been thoroughly tested, and I have a handful of pedal software modules for it at various stages of development. All of them will build and run on the Daisy Seed, but I am currently tweaking them and adding features. Video demos to come.
I have the version 3 board (adds midi and expression) and I'm waiting on a Tayda order to build and test it.
That's all for now.
______________________________________________________________________________________________________________________
Update: 6/11/2024
I have built the version 3 Funbox, and there were a few hiccups but it mostly works. This version adds expression and midi inputs from two 1/8" TRS jacks on either side of the pedal. It also uses a 4 count dip switch instead of a 2 count.
The first issue was mechanical. I currently have the 1/8" trs jacks and dip switch array protruding out of the holes of the enclosure slightly. I imagined being able to finagle them into the enclosure, but once I soldered the knobs on the board this idea didn't work! I had to file down the outside plastic of the trs jacks to be flush with the inside of the enclosure, as well as bend the dip switch array in somewhat, to fit the soldered pcb into the enclosure. In a future revision of the v3 board I plan on pulling these inward a millimeter or two so that this is not an issue.
Midi input has been tested, and it works!
The second issue is in the expression input circuit. I followed the Electrosmith "Daisy Petal" schematic (except I used a TL072 op amp instead of an OPA), but I'm having an issue with one side of the dual op amp output. An expression pedal is simply a voltage divider (normal potentiometer), but I think the idea of using a dual op amp with unity gain is to isolate the Daisy Seed if you accidently put something with a voltage on it, like CV. One op amp is on the 3.3V reference voltage from the Daisy Seed, and the other op amp is on the return voltage from the potentiometer in the expression pedal, which then goes into the ADC input on the Daisy Seed like any other knob control.
In measuring the voltages from the TL072 the output of the second op amp is giving me weird results, it should be 0v to 3.3v as you move the expression, but I'm reading a range of 4v to 1v, then back up to 4v as the expression pedal is moved. I tried a second TL072 op amp with the same results. The voltage coming out of the expression pedal is correct, 0 to 3.3v, but once it goes through the second unity op amp something weird is happening. The TL072 is powered by 5v as shown in the Electrosmith schematic, which I'll link here:
The good news is, if I bypass the op amps and jumper the pins so that the expression pedal acts as a direct potentiometer (no intermediate op amps) then it works as expected!
Here is the pedal (as you can see in the gut shot, the TL072 for the expression circuit at the top has been removed):
I've tested out some of my software modules and the existing stuff works, so at least I didn't break anything going from version 1 to version 3 of the board! Just need to figure out what's going on with the expression circuit, and adjust the positioning of the 1/8" jacks and dip switch so that it's easier to install into the enclosure.
Edit: I think the TL072 was not the right choice for the expression pedal op amp, the op amp electrosmith used is classified as a "rail to rail", where the TL072 isn't. I'm going to try a different dual op amp, an MCP6002, in it's place and see if that works.
_____________________________________
6/14/24
Yes! MCP6002 was the correct part to use, expression works as designed now. Will update the v3 board in the GitHub repo. After a little more learning about op amps, I think what was happening with the TL072 was something called “phase inversion”, where the voltage was outside of the specification, or too close to the lower rail of 0v/ground. TL072 can’t go below around the lower rail+1v or so, so this phase inversion was happening as the expression pedal was pressed. The MCP6002 is a rail to rail op amp, so it can go the range of what’s powering the chip, in this case 0v to 5v.
_____________________________________
6/15/24
GitHub repo has been updated, I also moved a couple of components around to make the layout a little cleaner, and pulled the 1/8 jacks and dip switches inward to make install easier. Will order the new version (3.1) soon and test. Now for the fun part (at least to me), writing effect code and making demos!
_____________________________________
Here’s a short demo of my expression code:
This is using the “Mars” module from the code on GitHub, which is an amp sim (neural model + IR) with a multi mode delay. What you hear in the video is the klon model, with IR off since I’m running through my amp, and dotted 8th delay mode, with the delay time, tone, and volume being modulated by the expression pedal.
_____________________________________
7/13/24
After some testing with different op amps for the audio buffers, I’ve updated the board to use the MCP6024 quad op amp instead of the TL074. This was done to reduce noise. The pinout is exactly the same, so the only real change is the part label on the board. This change is reflected in version 3.2 and has been updated in the GitHub repo.
The part I’m using can be found here:
Last edited: