Spectral Harp patch for Genius

I finally got Spectral Harp released for Genius! It’s a port of my Spectral Harp VST with some modifications and the addition of the diffuser and reverb from Clouds. The audio inputs are used to control position and amplitude and the gate inputs are used to pluck or strum the spectrum. I’ve made a demo video to explain it:

And you can install it from the patch library here:

1 Like

Yay, the spectral blingy wobble thing is done finally! And it’s playable with MIDI controller too apparently.

From a quick look at sources:

  1. Bitcrusher uses discrete number of bits, but it’s not hard to use a real value. Effectively it’s keeping state of 2 bitcrusher and morphing them based on remainder. I have an example here

  2. Same for sample rate reducer, example here.

  3. Probably a good idea to experiment with reverb a bit to see which coefficients fit better. IIRC Clouds has shorter delay length but uses one LFO for smearing (which wasn’t present in original paper), Rings has longer delay lines (+20kb or so) but no smearing. Original Dattoro paper used different delay lengths and I think it had some difference in the reverb tank loop. Or you can just try your own. On H7 MCU you certainly have more room for longer delays compared to F4 that MI modules used.

I also just realized that in using the buffer lengths from Clouds directly, the resulting diffuser / delay lines are shorter than they should be because Clouds runs at 32khz and OWL runs at 48khz.

Yeah, I imagine this made the reverb denser than the original. But also it’s not as simple as just multiplying their lengths by x1.5. Most of them are odd numbers and some tuning would be required to get good results. And if you’re willing to spend time tweaking the reverb coefficients, you might as well try longer delay lines, especially when targeting OWL3 that has plenty of memory.

Btw, the old Datorro paper has a section (1.1) with a few notes about delay length.

Understood about the odd numbers. I thought about converting the data for the Reverb class to delay times in seconds so it could be consistent across sample rates, but as you point out that may result in delay line lengths that are less than ideal. I think I’m not super concerned with having the reverb be “perfect” so much as a way to add a little bit of space to the sound. It’s probably worth reading the original Datorro paper, so thanks for the link. In terms of reverb exploration I think I’m more interested in creating a new reverb patch that exposes the delay times in the reverb tank as parameters to see what happens in “not as good” in-between spaces.

Specifying time in seconds is only something when you would see in a generic description of reverb, not the actual reverb code. That’s because what matters is specific ratios between them. And the delay lines are not fractional.

Reverbs with a lot of delay lines typically use prime numbers for their length, selecting nearest prime around delay length (in seconds) may be somewhat interesting if you need to make it work on different SR. But I’ve heard that typically tweaking parameters (delay length, feedback ratios) takes more than half time of writing a reverb. So I wouldn’t count on such automatic approach, unless you want to have a badly sounding reverb as a sort of special effect!

I would expect the “not as good” delay length to create metallic comb filter-ish sound or resonances at some frequencies. A similar idea that may end up more interesting is to experiment with a modulated delay line that MI reverb has. Maybe it could have variable LFO shapes or something that I find often useful - blending a standard LFO with a chaotic attractor. I think it would mostly lead to a pronounced chorus-like effect.

Generally speaking, Dattorro reverb sounds good, is computationally cheap and easy to understand, but kind of old. I’m planning to read some stuff here regarding more up to date FDN reverbs. That said, I remember someone mentioning that Dattorro’s figure 8 topology can be considered a bastardized FDN reverb too.

Yeah I think you are probably right about this. I noticed in the Dattorro paper that he says ideally all of the delay lines in the tank would be modulated, so it’ll probably be more interesting to use his delay lengths but expose parameters for the modulators.

Yeah, utilizing modulated delay lines is a common improvement that helps reduce amount of resonances without adding extra delay lines. However, this calls for using fractional delay lines, which are a bit more computationally expensive. Moreover, their interpolation adds a certain lowpass filtering effect which changes reverb’s character.

In the Dattorro paper he mentions using all-pass interpolation instead of linear interpolation to avoid the low pass filtering effect, but doesn’t explain what that is in the section on reverberators. So I will probably follow up on that to see what it’s about.