FV-1 Detuned Chorus (Pythagorus pcb)

phi1

Well-known member
This is an adaptation of the Unison Double Tracker PedalPCB patch. I only used one fv-1 pot input (Depth), which controls the pitch shift up and down together. I had to adjust the code for pitch down, because in the PedalPCB version, the pitch down knob lowers the pitch twice as much as the pitch up knob, so that was a simple code tweak to get them detuning at the same rate. The delay time is fixed slightly shorter than the minimum setting on the PedalPCB version. I tried it without any delay (except the inherent delay needed to do the pitch shifting). This was sterile and thin sounding, so I kept a short delay which is much more pleasant. The Mix knob is analog wet/dry mix from the Pythagorus design, and the Volume pot is set to unity by an internal trimmer. Since only one program is used, I just omitted the toggle switch, and the unused fv-1 pots.

This build is for a friend who I've built a couple other pedals for. I was showing off my recent Arachnid build with dual eeprom, with 16 patches. When we got through all 16, he said go back to that chorusy one. After playing for a minute he said, I want that, just the mix and depth knob. I tried to explain that I could add more controls and more patches with basically no additional cost / work. But, he just wanted the simple chorus pedal.

I have to admit, he might be onto something. I love the simplicity and it really is quite a nice chorus sound (as is the Unison Double Tracker, since it's basically the same thing). On traditional chorus effects, you have a warble sound because the pitch is bending up and down. I like how this version gives the depth of the detune, without the warble, since the pitch shift is constant. Also worth noting, whenever people talk about the EQD Rainbow Machine having a beautiful chorus sound, I'd imagine those same people would much prefer this (or the Unison Double Tracker). The Rainbow Machine is doing something similar when set for chorus (a slight pitch shift), but it's only one direction, and the tracking knob works differently than the delay. Maybe if anyone has built both the leprechaun and the Unison Double Tracker, they could comment on the comparison.

MISADVENTURE: What's with the white wire routed through the hole for the toggle switch? Well, I wanted to fit this in a 1590B. I thought, hey the 2.2" wide Phase II board barely fit in a Small Bear B box. I thought I could just dremel the sides of the 2.25" wide Pythagorus board until it fit. This was NOT a good idea (or at least poor execution). I clipped the trace from FV-1 pin28 to C8 that ran along the side of the board. So, the white wire remakes that connection. After dremeling, the board did barely fit, but I decided turning the board sideways was an easy solution in this case.

Flashing of the chip was done on my PedalPCB FV-1 dev board build.
 

Attachments

  • chorus.jpg
    chorus.jpg
    536.8 KB · Views: 71
  • chorus iso.jpg
    chorus iso.jpg
    510.7 KB · Views: 95
  • chorus gut.jpg
    chorus gut.jpg
    1,018 KB · Views: 97
Great job! I haven't spent enough time figuring out where to start hacking the FV-1 programs yet (beyond SpinCAD), so kudos.
 
This is an adaptation of the Unison Double Tracker PedalPCB patch. I only used one fv-1 pot input (Depth), which controls the pitch shift up and down together. I had to adjust the code for pitch down, because in the PedalPCB version, the pitch down knob lowers the pitch twice as much as the pitch up knob, so that was a simple code tweak to get them detuning at the same rate.

Can you share the code tweak? I'd like to try it.
 
So I don’t think I’ll share the full code, since it’s derived from the pedalpcb code which he sells.

Do you have a pedalpcb fv-1 dev board? Or some other way of reading the code off the eeprom and writing new to the eeprom?

Anyway, after you have the eeprom and have the code uploaded I could give you the info in a personal message.

But basically, I did the following:
-move the pot1 function to pot0 (so both shift up & down run on pot0).
-halve the range of the shift down so that it matches the relative pitch differential of the pitch up.
-set the delay time to default to the minimum pot value (I actually did slightly lower than the original pot minimum).
 
So I don’t think I’ll share the full code, since it’s derived from the pedalpcb code which he sells.

Do you have a pedalpcb fv-1 dev board? Or some other way of reading the code off the eeprom and writing new to the eeprom?

Anyway, after you have the eeprom and have the code uploaded I could give you the info in a personal message.

But basically, I did the following:
-move the pot1 function to pot0 (so both shift up & down run on pot0).
-halve the range of the shift down so that it matches the relative pitch differential of the pitch up.
-set the delay time to default to the minimum pot value (I actually did slightly lower than the original pot minimum).
I would love that info as well. I’m working on a detuned stereo reverb

Thanks!
 
Hey! I've essentially re-written the code to be easier for me to read since the above posts.

Here is the code. The pitch shifts follow info straight from spin-semi site (see the "rom_pitch" sample code and the AN0001 "application note" pdf from the "products" tab of the spinsemi site.

I'm sure a few instructions could be emitted or done more efficiently if needed for combining with another effect in the same algo.

I have a LPF and HPF just because I liked how they sound mixed with the dry signal. This could be omitted (the last 4 lines at the end before the "wrax dacl, 0".
 

Attachments

Hey! I've essentially re-written the code to be easier for me to read since the above posts.

Here is the code. The pitch shifts follow info straight from spin-semi site (see the "rom_pitch" sample code and the AN0001 "application note" pdf from the "products" tab of the spinsemi site.

I'm sure a few instructions could be emitted or done more efficiently if needed for combining with another effect in the same algo.

I have a LPF and HPF just because I liked how they sound mixed with the dry signal. This could be omitted (the last 4 lines at the end before the "wrax dacl, 0".
Hi friend? Is this a transpose? I mean, a pitch shifting algorithm that provides semitones by changing the pitch octave up and down?
 
No, it's a small pitch shift (detune), not transpose or octave.

You've already messaged me a couple times asking for custom octave code, and I sent some code over. At that point it seemed like you wanted me to spend a lot of time writing code for you, and I don't think the FV-1 can do what you wanted anyway.

Also, I've noticed you ask about octaves on pretty much any fv-1 or dsp thread.
 
So I don’t think I’ll share the full code, since it’s derived from the pedalpcb code which he sells.

Do you have a pedalpcb fv-1 dev board? Or some other way of reading the code off the eeprom and writing new to the eeprom?

Anyway, after you have the eeprom and have the code uploaded I could give you the info in a personal message.

But basically, I did the following:
-move the pot1 function to pot0 (so both shift up & down run on pot0).
-halve the range of the shift down so that it matches the relative pitch differential of the pitch up.
-set the delay time to default to the minimum pot value (I actually did slightly lower than the original pot minimum).
I respect your profession and your ability to accomplish things on your own. As someone eager to learn, I only requested a small algorithm: a pitch shifter that shifts notes up and down in semitones, without sound delay and without creating excessive vibration or tremolo effects. If you could send me this as a small gift, I would be very happy as a student. Respectfully...
 
As someone eager to learn, I only requested a small algorithm: a pitch shifter that shifts notes up and down in semitones, without sound delay and without creating excessive vibration or tremolo effects.
What you are asking for is not possible on the FV-1.

There are commercial pedals that can do what you ask. But the lower range on latency is going to be around 15-30ms.

Some people think 15ms is too slow. But sound is slow too. You also get a 15ms delay if you stand 15 feet away from your amp.

Anyway, sorry to continue the derailing of your thread phi1. I love the implementation of this chorus, it’s given me inspiration for some fewer-knob ideas on the Pythagoras platform .
 
Jcpst, I’ve got parts coming for the terrarium and that octave you posted about (by Steve Schulteis) will be one of my first things to try.

I liked your points, especially about latency, hadn’t quite thought of it like that. The main issue with fv-1 pitch shift quality, as I understand it, isn’t so much the speed of the FV-1, but the simple Overlap-Add algorithm that we use on it. For better results, you need to implement Psola or FFT, or apparently the ERB-PS2 that Steve worked well.
 
Back
Top