Here's a video demonstrating combining a Pitch LFO and an Amplitude LFO in Reaktor's Form ensemble to create "infinitely upward" glissando in Reaktor.
I'd like to be able to play a scale or melodic passage of Shepard tones that does this and am envisioning that one way of doing it is to run the Osc output through a filter or EQ which would attenuate frequencies above and below a central bandwidth according to a specific or specified curve.
I have tried using a Peak EQ as well as a couple of the Shaper BP Modules, but am pretty lost in the woods.
Am I even on the right track? Frequently, when I'm playing with the control knobs on the EQ or Shaper, the Synth makes a click sound and needs to be restarted to even generate a tone again.
Will include the panel here, which may give some sense of the value ranges provided by the auto-generated controls:
UPDATE:
Realized last night that my initial approach is completely wrong. EQ or Filtering affects the entire frequency spectrum and will largely just remove upper partials. We need to insert some logic that affects the Amplitude input of the Oscillator.
I imagine that this will be some math between the Pitch input and the Constant (1) seen below.
UPDATE 2
My idea now is to develop some kind of algorithm by which all pitches above and below a specified octave's midpoint–the tritone–(for example F#-66 for the C-60 octave) are exponentially (or perhaps logarithmically) attenuated. My first step along this line of thinking is simply to hard-code a different Amplitude level for all pitches below 66:
So what I want is that note 66
(for example) will be Amplitude 1
, 65
will be 0.9
(maybe), 64
will be 0.8
, etc... and the same where 67
, 68
will be 0.9
, 0.8
and so on. But I imagine I'd ultimately like to be able to control that Amplitude curve with a knob or two, as desired curves might change based on the timbre of the sound.
I'm also wondering if it would make sense to autogenerate the High and Low octaves and only need to play the Middle octave of the scale (or melodic equivalent.)
UPDATE 3
It's quite possibly that I'm misunderstanding how "Shepard Tones" are supposed to work. I am still working on implementing a version of @YourUncleBob's answer.
It seems that "his" approach is to send the sound through a Filter that creates the octave-equivalency-based illusion that support the "infinitely ascending or descending" illusion.
What I had been thinking to do, again, is to create an amplitude attenuation curve which attenuates the volume of each "note" (keyboard input) further as it gets further away from a central tone.
Then as long as the "melody" is played in multiple octaves in parallel, the illusion should work.
I am making some progress. What I have done so far is:
- Subtract pitch input from Central Tone
- Run the Remainder through a
Rectifier
(math) so that negative values are positive. - Compare the Rectified Remainder to 0 and if it's 0, send a
1
to the Amplitude, otherwise, make a fraction out of it sinceAmplitude
is looking for a number from0
to1
. So larger numbers become smaller amounts (ie.2
=>1/2
,3
=>1/3
, etc) - I'm hacking the curve a bit by multiplying the divisor (pitch minus central tone remainder) by
2
so that the fractions are smaller, and also by using0.8
instead of1
for the Central Tone.
I'm displaying some of the numbers:
Then I go through this elaborate process of creating the content in the DAW:
It's kind of cool with a lot to still work out:
- Notes are "clicking" intermittently at the onset
- I'd like to be able to have a logarithmic attenuation curve where it attenuates faster the further it is from the central pitch
- The higher pitches need to attenuate more aggressively than the low ones
- Do I have to actually
play
orprogram
all of these parallel octaves? Seem like the instrument should be able to generate the full spectrum by default.
In the meantime the process is being enjoyable.