Why not use a regular phaser effect then? We have quite a few of those in Rack already.
because a phaser (correct me if I’m wrong) can only act dynamically and cannot be set on a static phase shift parameter. in addition, a phaser doubles the signal and alters the phase of the copy. I need a way to phase out a second signal that could very well be different from the first, to exploit its phase cancellations at my convenience and, if I wanted, even automate them.
or this
the waveshape of Bogaudio Sine can be switched via the right-click-menu.
I think I find an easier solution, I show you. If this one won’t work, I’ll try the one you just showed me.
Phase Offset.vcv (1.2 KB)
There is a Bogoudio oscillator that allows you to adjust the phase offset. Today I had an insight: what if it was used as a medium for receiving the v / oct control sent by the midi to my oscillator?
Basically I would have the v / oct go into the v / oct input of the Bogoudio oscillator and the Bogoudio output into the v / oct input of my oscillator. In this way I have already verified that by moving the phase of the Bogoudio oscillator, that of my vco would also vary.
The only problem that remains to be solved is that the output signal from the Bogoudio oscillator should be reconverted into a scale that can be used as cv to control the v / oct.
honestly I did not know, but in any case even in this case this vco can replace mine. there would be no functions.
Didn’t read all but can this help ?
-
not true: you can set a static phase offsett using nystereophaser
-
lfomultiphase too is able to shift phase (out with free phase) (is an lfo)
it isn’t polyphonic unfortunately
ok, TZOP is poly with variable phi
It is not too hard to phase shift your audio after it is generated under the following conditions:
- Your VCO accurately tracks volt per octave
- You know the precise tuning of 0V. Let us assume 0V = C4 = 262.6256 Hz
- You do not change the phase too rapidly
You just need the Bogaudio CVD (TIME) module which very accurately introduces delays up to 1 second, and as small as 1 sample. With the delay set to 1 second, a CV input of 0 = 0 delay, and 10V = 1 second. It responds to CV linearly.
So for any given frequency, you just need to figure out how long 1 cycle lasts, and then you can apply the correct CV to get your desired phase shift.
You know the CV coming into the VCO V/Oct input. The frequency is computed as 261.6256 x 2^Volts, where V is the CV volts. So take the reciprocal and you have the length of one cycle in seconds:
Cycle length = 1/(261.6256 * 2^Volts)
We want 10 volts delay CV to equate to 1 cycle length, or 360 degrees, and 0 volts equal to no delay, or 0 degrees.
The final formula becomes (10 / 261.6256 * 2^Volts) * (CV / 10). which simplifies to
Delay CV input = CV / (261.6256 * 2^Volts)
We want to support negative phase shift (negative voltages), but we cannot go back in time. But adding 360 degrees should give the equivalent (assuming the incoming signal is static). That is the same as adding 10V to the incoming CV if and only if the incoming CV is <0.
The final formula supports delay CV from -10 to 10 volts, equating to -360 to +360 degree phase shifts.
The Frank Buss Formula module easily does all the computations. X gets the VCO V/Oct signal, and Y the +/- 10V phase shift CV. The output is the CV needed for the Bogaudio delay module.
Both the Formula and Bogaudio delay modules are polyphonic.
The patch demonstrates two simultaneous sine waves tuned a perfect 5th apart. The green traces are the raw unshifted audio, and the red the shifted audio.
The accompanying video demonstrates how well it works as long as there are not sudden changes in the phase shift CV. It also shows what happens when the phase CV does change rapidly.
The formula in the uploaded patch is a bit simpler than the one I used in the video, but they are equivalent.
Phase Shift.vcv (2.5 KB)
Really nice workup, @DaveVenom! Very elegantly done.
Might be interesting to swap in WDelay (linked above), or another interpolating delay (if there is one), to see how important the subsample feature is in practice. My guess, not having tried it, is that using a delay that can’t go subsample is going to get audibly “steppy” on higher frequencies, as samples start to represent a higher proportion of the cycle length.
Ah yes, that could explain why at some frequencies the 180 degree shift completely cancels out the unshifted wave (at least to my ears), while others have a very quiet tone I can still hear.
I can see how interpolation could improve the accuracy of the phase shift timing, but I should think that would be at a cost of the accuracy of the overall waveform. And at higher frequencies I would expect the interpolation errors to be worse as well.
I suppose the choice depends on the goal of the phase shifting. With simple delays to the nearest sample, at least the delayed signal can still be a precise copy of the original. I would expect our ears could hear errors in the wave form due to interpolation better than minute timing errors that are less than 1 sample in length.
I wasn’t going to boot up Rack tonight, but look what you’ve gone and done
I’d be curious to hear your impressions if you try it; on a quick test, WDelay sounds and looks way better than I thought it would. It isn’t polyphonic and has a different control law, so a little adjustment needs to be made, but (with the addition of a post-delay inversion) it can cancel even more complex waves down to a very, very soft noise floor, which I’d assume represents the residuum of the interpolation. It also seems to do better on fast delay time changes; more of a tape-scrubbing/BBD-clock-changing effect than digital glitches.
Well done, @philippe.salembier! I for one am going to start using this thing all over the place now.
Cool. Nice demo of phase cancellation as well.
Any patch or formulas to share to save others the time of figuring out the control law?
Oh my! I just did the experiment without worrying about quantifying the phase shift. The Waveguide Delay does sound much better! But man do I struggle trying to figure out the CV control of the delay. And then when you bring the delay modulation into audio rates - ooh baby!
Yes, this is a very cool technique!
Doh! RTFM. I just needed to switch the time delay specification from pitch to time in the context menu. Now it looks like something that can be figured out.
Yeah, the context menu was as far as I got before I had to get back to work I had actually seen it in the docs, mentioned it in a post above, and then forgot about it and floundered for 20 minutes
I might give it another pass in a few hours (if you haven’t figured it out by then!) and I’ll definitely post a patch if I do.
Glad you’re hearing the same quality from it. I’m incredibly impressed by that module! With a double delay (probably just a standard one) I suspect it would do excellent through-zero flanging at almost any speed.
just because you 2 are on fire please check xatto time (and the context menu )
Haha there’s always a NYSTHI
I had missed that one! Will definitely try it too.