Tides V2 per oscillator pitch

I am trying to modify the firmware such that one of the outputs does not respond to the CV input and is only tunable using the frequency knob while in frequency output mode, but it is still responding to the v/oct cv input. So far I have added a base_freq (for the value from the knob) to the block.parameter struct and write to it from cv_reader.cc passing only 0.0fs to the CV input parameters in cv_reader.cc just like all the other parameters. In tides.cc I used subbed base_freq for one channel instead of transposition, and succeed in in having one channel that does not respond to the fm input, put it still responds to the v/oct input.

Is is possible to have completely independent frequencies without significant reworking of the firmware? Different waveforms? If anybody has any Ideas I’d love to hear them.


Tides does not have the guts of a polyphonic oscillator. It’s not like there are 4 independent instances of an oscillator class. Instead, there is a master frequency and 4 ramp obtained by multiplication/division of this master frequency. The whole concept of the module is to have 4 channels providing different “variants” or “views” of a main process.

You can’t configure independent frequencies. The only thing you can configure are the ratios:

So maybe you can override one of the ratio in this array.

Thank you Emilie,

I have already overridden the array and was trying to use that as a ratio to a set frequency, but was surprised that the phase accumulator did not work as expected, but I had not noticed master_phase_ until now. I’ll try more advanced manipulation of the ratios. I’m thinking using the v/oct input to manipulate the ratios of the CV controlled frequencies will be the simplest. My end goal is squeezing in a kick drum alongside 3 oscillators for a mostly self contained kick/bass.

Do you know if multiple waveforms is possible? Or is the existing wavetable interpolation too close to the processing limit?

This module sounds great by the way. I was really surprised how much different it sounds than v1.

Since the module is designed to use the same waveform on all outputs, it mutualizes for all 4 channels the computation of the offset in the wavetable, and of shape_fractional (the blend between the selected waveform and the next), from a linearly interpolated shape variable.

Using a different waveshaper shape on all channels might require this computation to be done four times, independently.

The module is very close to the maximum CPU limit (that’s why there’s this big hack of putting the most demanding variations of the code in RAM). Maybe you can reclaim some CPU by no longer linearly interpolating shape, slope or smoothness over a block (at the risk of adding some zipper noise). TO do this, you just ditch all stmlib::ParameterInterpolator and replace the access to, for example shift_modulation.Next() by the second argument of the constructor of shift_modulation.

When I see this, I wonder if you need any of the original code from Tides… Your goal looks way too different from the original scope of the module to make the existing code useful.

Wouldn’t it be easier to grab some code from Plaits instead? Instantiate a few classes from plaits/dsp (Oscillator, SyntheticBassDrum…)

I think this clarifies a question I’ve had about Tides v2, but just to make sure I understand: the audio rate oscillators will always follow just intonation in frequency multiplication/division mode as you turn the shift knob, and in that mode the fundamental of the just intervals is set by the frequency knob in conjunction with the audio rate external clock. Is my understanding correct?


Great, thanks!

Or maybe using this as a starting point?

Thank you for the tips. I have a basic kick implemented already, but I was having trouble getting it to not track v/oct, which I now understand is due to the master phase accumulator. Switching to plaits based oscillators is probably the solution I’m looking for, and hopefully I’ll learn more swapping out the oscillators, which is a big part of why I’m doing this.

This is really cool, I knew stages was flexible, but had no idea it also had an audio mode. I’m going to need more space in my rack . . .