Announcing: Sapphire Echo

Announcing Sapphire Echo

Back in March, Omri Cohen approached me with the idea of a delay module where you could add or remove delay layers (“taps” as we call them) in a chain. The goal was to make complex delay chains easy and quick to build, and to produce high-quality audio even when changing knobs and switches. (Our motto for this project is “no clicks!”)

Sapphire Echo is the result. Here is Omri’s video about Echo:

Some quick notes:

  • Echo is an expander chain made of one input module (Echo), any number of “tap” modules (Echo Tap), and one output module (Echo Out). You can create or delete layers with a single button click. Only Echo is visible in the VCV Rack module browser, but Echo automatically creates Echo Out, and you can easily add any number of Echo Tap modules.
  • There are two different signal flow configurations: Serial and Parallel. In serial mode, the audio flows left-to-right through the chain and loops back to the front. In parallel mode, the audio input enters all taps at the same time, and each tap processes it independently.
  • The feedback (FDBK) knob controls what fraction of output audio gets mixed with the input and fed back into the delay.
  • Echo is optimized for a stereo workflow, but supports polyphony of up to 16 channels. All audio input, CV input, send/return, and output ports support polyphony. (I had to do this or my friend @DaveVenom would be deeply disappointed. :smile:)
  • Echo comes with an integrated envelope follower for each layer. This is useful for side-chaining, and it also opens a whole world of internal cross-modulation possibilities, with one tap’s envelope modulating another tap’s parameters for example.
  • Echo supports matching the rhythm of an external clock signal, or more fluid rate control with frequency represented by a V/OCT input, or no external rate control at all.
  • You always have visibility of the signal as it flows through the chain, thanks to a signal graph on every tap. The graph started out just as a fun decoration, but I quickly learned it is very useful to see the signal this way while performing a patch. Not only do these graphs help you understand how Echo works, but they can help you “fly the airplane” so to speak.

Documentation

For complete explanation of all the controls and features, see the Sapphire Echo documentation.

Acknowledgements

Omri was the lead designer of Echo, and I was the developer. It was fun working with Omri because I could focus on algorithms, UI design, and coding, while he focused on the deeper issues of goals and features. Both of us contributed to the design and testing.

We would also like to thank @Sickozell, the developer of SickoCV, who participated in some early engineering conversations, and helped me understand the nuances of anti-click crossfading and ramping, along with the tape speed regulation algorithm used in Echo. His guidance saved considerable development time for avoiding clicks/pops in Echo’s audio output.

52 Likes

Amazing work, thanks to everyone involved. I’ll add it to my thread listing polyphonic effects, which I started the other day. Great timing! I’ve always said we need more free polyphonic delays :wink:

I have no idea how to code this, but would it be possible in future to have a mode where changing the delay time doesn’t change the pitch? That would make it the ultimate VCV delay.

Failing that, another suggestion (sorry!) would be locking the resulting pitch change from modulating the delay to octaves, which is one of my favourite effects. I’ve done this before by using a square wave LFO to modulate the delay time, then tuning it by ear. It’s difficult to get it exactly right though.

2 Likes

Thank you so much @VirtualModular!

I think I know what you mean. What Sapphire Echo does when you start sweeping the TIME knob is similar to what the venerable Chronoblob does in its “resampling” mode:

I have been thinking along similar lines. I am considering adding a toggle to Chronoblob-style “crossfading” mode:

This will take some time and thought though. But it’s on the research list!

[EDIT] I added this as issue 164 in the Sapphire project so I won’t forget.

Oh man, that is so interesting! If I understand you, this means you can instantly jump your delay time by multiplying or dividing by 2?

5 Likes

Yes, exactly that. If you use AS Stereo Delay, that creates the effect I’m talking about just by changing the delay time with any signal, but it’s not polyphonic. To make a poly version, I used used one of the delay algorithms in Airwindows, and modulated it with a poly LFO. I should still have the patch somewhere, it was in my modular guitar effects series a few years ago.

And yep, the crossfade mode in Chronoblob was exatly what I was thinking too!

1 Like

Congratulations on the release. I’m already playing with it and it’s fantastic.

Simply stunning! BIG thanks to you and all contributors!

(Only have to figure out now, how I can fit it into my Starship :rocket: :smiley:.)

superb stuff :+1:

thnx for this great module!!!

Excellent

Fantastic module! I am usually intimidated by multi-tap delays, but the excellent design makes me more comfortable, even though it can do much more than most delays.

I recognize those small buttons! They are useful, right!? I never bothered to add shadows to those small buttons, but I see you added the shadow. I may take a look at your code to see how it is done.

I have a suggestion for the graphics. It would be nice if the geometric form around the gate/trigger labels was different depending on the mode. The trigger mode could add a little caret ^ to the center of the top line segment. The gate mode could stay as is. Then a quick glance will let you know what type of input is expected.

I am surprised at your loss of stereo when in polyphonic mode, but I guess you did not want to double the number of audio buffers required. So with the current design, the Pan controls and input become useless in polyphony mode.

Maybe you could have an option to enable stereo polyphony, but only support a maximum of 8 poly channels so the total number of audio buffers does not increase.

1 Like

Omri had this idea all along for how to make it quick and easy for the musician to construct a very sophisticated chain of tape delay loops. You shouldn’t have to add a bunch of cables manually. Echo (hopefully) adds value by saving you time.

Omri and I both wanted Echo to be optimized for a stereo workflow.

I knew if I didn’t add full polyphony, you would immediately let me know you didn’t like that. (For those of you who don’t know, Dave is the backup developer for Sapphire in case I get hit by a bus, so I think I can mess with him a little bit.)

Oh, I like this. I’m a big fan of visual feedback, and that would help. I added it as issue 166.

First of all, I’m just now learning about stereo polyphony for the first time. Cool! I get it. Then panning would work for up to 8 stereo pairs. I like this, and I added it as issue 165.

6 Likes

The difference between mono/stereo and mono/poly can definitely be confusing!

Edit: just remembered you’re well aware of this already and your stereo mix modules are poly capable, so I’m preaching to the converted here. I’ve left my explanation in for the benefit of anyone who hasn’t tried this yet!

@DaveVenom my approach to this is usually to just use the left channel for polyphony, even if a module is stereo too. I then use a spread module to pan the poly channels across a pair of stereo outs, if that makes sense? There are a few modules for this, such Stocaudio Spread (not available natively on Mac), or Mokkba ASSprdr. I also sometimes use Bogaudio Pan polyphonically, so that each channel moves independently in the stereo field. You can think of this as like having 16 mono tracks on a stereo mixer, and automating the pan differently on every channel into a stereo mix bus.

I made a tutorial on polyphonic panning last year, but don’t want to spam a link in Don’s announcement thread. It didn’t get many views but it’s good to see more people taking an interest in this! :joy:

Wow… amazing work Don and Omri! Thank you. From the demo it’s really quite a monster. I know Omri has a Magneto, and I imagine him thinking “damn, we just need this in Rack” :slight_smile: Hours of fun to be had with this one, can’t wait to start playing with it. Also, kudos for making the expansion system seem so frictionless, seems like you set a new, high bar for expander modules here, really great work!

Very very very cool! Thank you!

Especially with the send and returns, this thing is really powerful. I’m playing around with it putting an airwindows module on every send and return to simulate tape delay using ToTape, or distortions, or bitcrush effects and everything gets really beautiful quickly.

Tihihihihihi… :laughing:

1 Like

Ok, now I’m done giggling. :slight_smile: Seriously, awesome work all of you. This is terrific.

I would like to echo (haha) the others sentiment that the polyphonic mode is pretty counterintuitive to use. Especially the fact that the right input still sums into the left side. The poly mode would make more sense to me if right input and output both just did nothing.

And yeah, I understand that 16 x 2 delay buffers potentially eats a lot of memory. Still, I would love it if this had an option to just do that anyway. I’m gonna leave some further comments on the GH issue. And also open another one for delay line clipping options, which is really the only other thing I feel is missing.

Other than that, really really great module. Gonna see a lot of use here no doubt. Thanks a lot!

Beautiful module; thanks guys. Is there a way to scrub through the buffer?

Thank you! No, there is no scrub function currently. It’s not clear to me how that would work. What did you have in mind?

I was thinking of the scan function in Prince of Perception. You send cv and it moves the playhead around.

Ohhh… that is an interesting idea. I will think about this one. I can see how this would work with a single tap, but it’s not clear what it would do when there is a whole series of taps interacting with each other. Unless the scrub only works on a single tap in the chain?

My gut is telling me that this would be difficult to fit this into the existing design without causing other problems.

But it is such an intriguing idea that I don’t want to dismiss it. I will keep thinking about it. I’m open to hearing more ideas of how it would work, too.

1 Like

AWESOME Awesome awesome…