top of page

Spectral Delay Build Report

Harrison Weinstein

This project has gone through many revisions, requiring learning a bunch of new skills, relearning skills long forgotten, and remembering to sleep sometimes (burnout is real). 

The following build report details each version, from the initial concept all the way through our working prototype, including what we accomplished at each stage, and lessons learned from our mistakes.

 

Version 0.0 (aka, does this idea even work?)

Process:

  • Once we had a solid concept of our idea, we knew that in order to create the delay portion we would need either a bucket brigade, PT2399, or microcontroller (MCU) of some kind. Since I had experience with MCUs from my mechatronics background, I was drawn to that solution, especially since we could expand from delays if we had other cool ideas. After looking through some options, we landed on the FV-1 from Spin Semiconductor due to its strength as a DSP chip, while still being relatively simple to start with. (More on this later!)

  • I breadboarded some 2-pole filters to split the channels, which required unearthing some old electrical engineering books and relearning how opamps work. Eventually we would use these analog filters to save code space on the FV-1 but for the time being, we used SpinCAD to cobble together our first programs which included the delays and the filters for testing our idea.


Successes:

  • It worked! We loved the way it sounded, even in this somewhat clunky state, and that was enough to jump start the real hard work ahead. Oh the hard work ahead.


Lessons learned:

  • SpinCAD, while powerful for getting going without any knowledge of SpinASM, we quickly saw that we would need to learn to code directly in SpinASM to accomplish some of our more lofty goals.

  • I might need a signal generator….

 

Version 0.1 (first PCB, and pushing the limits)

Process:

  • Having never designed a PCB, I had to learn KiCad, learn pcb design principles, and convince myself it was going to work.

  • We started simple with the PCB, knowing eventually we would need to incorporate the FV-1 and all the support circuitry. For now, with the FV-1 dev board doing the heavy lifting, we really only needed this PCB to handle the filter circuits. We also figured through hole components would be the way to go, and we would eventually figure out how to solder the FV-1 to the next board.

  • This is where we reached our first limit on the FV-1, the available delay memory only allows for 1 second of delay when clocked at 32kHz. And because our topology was fundamentally a dual delay with independent controls, that memory would be divided even further. We discussed a few options: A. Live with it (and maybe come to a revelation down the road). B: Expand our scope to include TWO FV-1s. C: Use one delay spanning the entire memory with separate taps, sacrificing independent repeats controls. D: Something else?

  • Ultimately we decided we liked the freedom that 2 independent delays gave us, and we didn’t want to immediately send our scope into the stratosphere so we stuck with our current course of action, we would live with it and maybe we’d figure something out.


Successes:

  • Surprisingly the PCB worked, first try. This might sound like a brag, but honestly I was more surprised than anyone. As you’ll see this is not a trend that continues.

  • SpinCAD was more or less abandoned at this point and I was now programming SpinASM directly.


Lessons learned:

  • The PCB worked, but there were plenty of things to learn from it. Particularly that layout is critical. The way I had laid out the inputs and outputs from the board was complete nonsense and made using it quite a labor. Wires and cables were constantly being twisted and criss-crossed.

  • The FV-1 has limitations that for some reason we immediately want to expand our goals directly into and beyond.

 

Version 0.2 (first fully standalone PCB)

Process:

  • This was a wild ride. This was our first attempt to create a PCB that incorporated all the ideas we had envisioned, as well as being completely standalone, not requiring any external development board or power supply. It would be the first attempt at an actual guitar pedal. It was one of those things that seems sane at first, but when you start diving into the details…well you know what they say about the details. They’re next to godliness? No that doesn’t sound right.

  • There was a lot to this, we don’t want to bog you down in every little piece of the minutiae so I will quickly breeze through it. Power supply and voltage regulators, rotary switch logic, expression pedal control logic, SMD soldering of the FV-1, EEPROM programming, 2 layer boards, opamp low-pass/high-pass filters, opamp summing filters, footswitch wiring, component selection, fitting the thing into an enclosure, how do you fit everything onto a PCB!?, SpinASM, datasheets, SpinASM, datasheets, oh and did I mention SpinASM and datasheets?


Successes:

  • It worked! Well….technically it didn’t work, but the problems were pretty minimal. One of the biggest issues was that we had reversed the inputs on the final summing circuit, which made it sound…weird. After some troubleshooting the issue was found and we made some mods to the PCB, added some jumper wires, and it worked!!

  • SpinASM, while quite difficult to understand at first, started to make sense after staring at it for days on end, and eventually I was comfortable enough to write it freely without too much pain.


Lessons learned:

  • Pay attention to the inverting vs non-inverting inputs on opamps

  • Switches pop! Yes, this is when we first discovered the issues related to switch pop. And since we are making a delay, this was an especially pressing issue. We needed the switch pop to basically be reduced to zero otherwise it would just POP pop pop pop pop …. every time you used the switch. It would be completely unusable.

  • LEDs make switches pop! Capacitors with charge stored in them make switches pop! So many things can make switches pop!!

 

Version 0.3 (tap tempo? I hardly know ‘er)

Process:

  • Tap tempo became the next big hurdle to clear. After many discussions, and much googling, we determined that in theory it should be possible to implement tap tempo on something as limited as the FV-1 with its complete lack of GPIO pins and only 3 available pot inputs. However our goal was to use all the pot inputs for delay controls…and the best solution we read about was Slacker’s code, which apparently required 1 or more(?) of the pot inputs for tap tempo control. By this point we had decided we wanted to leave open the possibility of marketing this as an actual product, so I took it upon myself to not use Slacker’s code, but to come up with a completely unique method of implementing the tap tempo.

  • The layout of the PCB didn’t change much from V0.2 to V0.3, just fixing a few of the aforementioned mistakes and minor improvements to the layout in general.

  • It was at this point that we decided to upgrade the breadboard into a full-on Modular Dev Board. We used a video we saw on the Wampler YouTube channel as a guide, fixing the breadboards, FV-1 dev board, and various potentiometers and input/output jacks to a piece of MFD and angle brackets. This drastically improved the testing workflow and would come in handy after V0.4.


Successes:

  • The big one is the tap tempo. I’m so stoked that the solution we found was not only possible, but completely unique (to my knowledge)

  • Given that these boards worked (nearly) flawlessly, we went ahead and soldered up 5 of them, put them in some preliminary enclosures, and sent them to our friends to give us feedback on the functionality, design, and overall fun factor.


Lessons learned:

  • Scope creep is a real bitch. The PCBs worked, the various programs worked, and the tap tempo worked, but we were addicted and we wanted more. There was some functionality we wanted to add such as; the ability to swap which channel went through which filter (using an external switch as a “hot swap”, not by changing programs which caused the audio to cut and the repeats to stop); the ability to select which knob(s) are controlled by the expression pedal, and a slider to affect the speed of the clock running the FV-1. This was our delay time revelation. By slowing the clock speed we can gain extra delay time, while sacrificing just a bit of audio fidelity. Allowing the user to make this change while playing was the fun part. Yes we are masochists.

 

Version 0.4 (high-pass highs, and low-pass lows)

Process:

  • After a long process of discussion and mockups of the PCB design, we decided this was the point of no return. With all these new additions to the design we would either need to increase the size of the enclosure, or switch to SMD components. This change would actually allow us to reduce the size from the 1590XX to the 1590BB2 enclosure.

  • One major issue with changing to all SMD was that we would need a way to upload programs to the EEPROM while it was soldered to the board since we were abandoning the socketed EEPROM. Solving this involved using the FV-1 dev board as a programmer and a POGO pin connector to talk to the SMD board.

  • Additionally, I had started learning LTSpice to simulate the analog circuitry so that I could compare the simulations to the real world designs using my oscilloscope and signal generator with the Bode plot functionality. With this upgrade we felt like we had really nailed down the exact parameters for all the filters and amplifiers.

  • We were excited and apprehensive, this would be a huge upgrade and also a huge risk.

  • And we were right to be apprehensive. This was our first major failure. While the boards we got from JLCPCB were of great quality, there were some major faults in my PCB layout. The board made noise, but not good ones. It felt like I had made every mistake possible. The slider to control the clock only worked in one position, and moving it caused horrible sounds and faults in the FV-1 output. I had somehow messed up the layout of the summing filters AGAIN. The digital logic controlling the expression pedal selection only partially worked, and more.

  • It was so bad, the boards were almost unusable. I was able to cut some traces and add some jumper wires to make the audio path functional, which allowed me to perform some troubleshooting on the clock slider and expression control. But it was not a good feeling. Had we really just wasted hours on hours, and hundreds of dollars on these nearly useless hunks of copper? And to make matters worse, I was not even sure if I could fix the worst of the issues (that damn clock slider).


Successes:

  • Not many…but hey, the SMD design process isn’t too hard, and JLCPCB actually put together a great board.


Lessons learned:

  • Being an engineer I am surprised that it took me this long to incorporate some Quality Control, but this was the kick in the butt I needed. For months I had been using the Modular Dev Board and LTSpice to test all the design changes and manually porting the schematic from LTSpice to KiCad. That last step is where the fault occurred so we created a QC check point here. I would lock my design and hand it off to my partner who would verify that the LTSpice schematic matched the KiCad schematic. Yes, it’s not the most robust system, and ideally the schematic would be ported over from LTSpice to KiCad automatically, but I’m not sure this can be done. So this at least provided us with some reassurance that two sets of eyes had independently verified the layout. Fingers crossed….

 

Version 0.5 (or how I learned to stop worrying and love the Spectral Delay)

Process:

  • The process with this one was slow. After the V0.4 debacle, I was not confident that this design would work. Nearly 8 months passed between testing V0.4 and getting V0.5 made. Work and life stuff got in the way as well, but I’d be lying if I said that was the real reason for the delay (heh…joke?). The clock slider issue was daunting. I researched so much about ground return paths of high frequency signals, crosstalk, via fences, and more. This topic feels like the kind of thing you spend an entire PhD researching and I’ll admit, I took a few ideas and sorta threw them against the wall to see what sticks. And much to my surprise, it worked! Gun to my head, I couldn’t tell you exactly which of the many changes I made actually fixed the issue, maybe it’s all of them combined, but for the time being it works, and that’s what matters.

  • Now that we had the hardware figured out we could once again focus on the software. Since we had moved the switching of the channels to an external control, we had freed up 3 slots for extra programs. This is where we got experimental with it. We added three totally new styles of effect, Delay + Reverb, Reverb + Reverb, and Ping Pong Delay! I was able to solve many of the minor issues that had been plaguing us with the code and the pedal had finally come together.

  • Holy moly we love the way this thing sounds. There are so many new modes we keep discovering, and new soundscapes we didn’t know it was capable of.


Successes:

  • IT’S FINALLY DONE! (Or is it? Spectral Delay Mark 2?)

  • It sounds AMAZING!


Lessons learned:

  • The FV-1 is far too limiting for our dreams. We are already working on learning a completely new system that does not have the limitations that the FV-1 has, although given our history, we will immediately find those limits and wish we had more…

141 views0 comments

Recent Posts

See All

Comments


  • Instagram
  • Grey Facebook Icon
  • Grey YouTube Icon

ABOUT US

We’re a team of engineers and musicians dedicated to making guitar pedals we think are innovative and fun. 

NEW RELEASES

Thanks for visiting. We have mad scientist ideas-a-plenty on their way, so follow us on your favorite social media platform and subscribe to our newsletter for updates. Don't be a coward.

Thanks for submitting!

bottom of page