Risset Rhythm in VCV

Recently there has been some interest within the VCV community about Risset Rhythms - something I had never heard of before. They are a compositional technique that gives the illusion of a constantly accelerating or decelerating rhythm, very similar to a Shepard tone, or Shepard scale, or Risset - Shepard glissando.

There is a decent Wikipedia article about Shepard tones that includes the following example of a Risset rhythm - the best and most musical example I have been able to find.

So I decided to take a stab at creating a Risset rhythm within VCV Rack, and I will share what I have discovered so far.

The Shepard tone and Risset rhythm are closely aligned, one involves looped rising (or falling) pitch, the other accelerating (or decelerating) tempo. Think of a rising or falling ramp wave to represent the pitch or tempo. Both have two or more voices that are out of phase with each other, with each voice fading out around the discontinuity of the ramp wave, so that both extremes of the loop fade away. When one voice is silent, there is always another voice in the middle of the ramp that is full volume. The pitch/tempo extremes fade in/out, and your brain perceives the louder section of each voice constantly and smoothly changing in one direction.

Both Risset rhythm and Shepard tone keep the parallel voices at octave intervals.

Remember that there is a close relationship between rhythm and harmony. For example, polyrhythms become harmonic chords when sped up to audio rates. So I think it intuitively makes sense that the underlying mechanism behind a Shepard tone and Risset rhythm is the same.

So my first goal was to create a Shepard tone (actually a Risset-Shepard Glissando). This is by far the simplest construct because we don’t have to worry about the relative phase of the polyphonic VCO voices. We only have to worry about the phases of the LFO ramp waves driving pitch and the sine/triangle waves driving the VCA.

The Count Modula Shepard Generator works great, but it is limited to rising tones. Also the Count Modula module uses a triangle wave for the VCA envelopes, whereas I think most implementations use either a Bell curve or a sine wave (actually cosine).

The Count Modula module provides the saw and unipolar triangle waves at multiple phase intervals, and for each pair, the triangle is -90 degrees (+270) out of phase with the saw so that the low (0) point of the triangle corresponds to the saw wave discontinutity.

I found that a pair of Bogaudio 4 FO LFOs can easily do the same as long as you sync them using the RESET input. I chose the 4 FO because I only wanted four voices, but if you want 8 voices you can use the 8 FO instead. The Bogaudio modules give you the option of a rising or falling ramp, as well as sine or triangle for the VCA. It was just a bit confusing getting the right ramp/sine phase relationships until I got used to it.

I offset the VCA (sine or triangle) LFO so that it goes from 0 to 10. For the ramp I used a 40% scale and offset by 2V so that it goes from 0 to 4, and each voice is effectively 1 octave apart from its +/- 90 degree phase neighbor at any given time.

Here is the result. Within the video, roughly 1/4 of the time is spent on each waveform combination. It starts out with a rising pitch ramp and sine VCA envelope. It then switches to rising ramp and triangle. Then falling ramp and triangle, and then finally falling ramp and sine. The difference between triangle and sine is subtle, but definitely audible.

Risset Shepard Glissando.vcv (1.8 KB)

Next I tackled creating a Risset rhythm using 3 drum voices playing 1/4 (kick), 1/8 (higher tom), and 1/16 (closed hat) notes that accelerate or decelerate. The intent is for your brain to transition concentration from one voice to the next over time. Say for the accelerating case, you might here the 1/4 kick accelerating, and as it fades out and the next voice fades in, the 1/8 tom should be at the same tempo as the fading out kick. Likewise as the 1/8 fades out, it aligns with the next 1/16 fading in. It doesn’t work out exactly like that, but I still think it is effective.

So the ramp drives an LFO functioning as a 1/16 note clock. The clock is subdivided by flip flops to provide 1/8 and 1/4 note pulses as well. The main problem I have not solved is how to set the frequency of the ramp in relationship to the starting frequency of the LFO clock such that every ramp cycle corresponds to the LFO clock starting on a down beat. I have not achieved that, and I think it takes some basic calculus to figure it out (I’m going to guess differential equations, but I’m not sure).

It has been many decades since I worked with calculus, so I punted, and instead decided to reset each LFO clock voice when the ramp rolls over and the voice is silent. In this way the rhythms should be consistent, and the reset glitch will not be heard.

I use a Bogaudio CMP with input B one sample behind input A. It generates a reset trigger whenever the B and A differ by 1 V, which coincides with the end of cycle that I want. And this technique works equally well with rising and falling ramps.

Here is the Risset rhythm drumming result. Again, each waveform combination gets roughly 1/4 of the video time, in the same sequence as before.

Risset Rhythm Drums.vcv (2.9 KB)

Lastly I attempted a melodic Risset rhythm. I opted to use two melodic lines, one a high pitch using 1/8 notes, and the other a bass line using mostly 1/4 notes. Each line has two voices 180 degrees out of phase, and the melodic lines are 90 degrees out of phase. I ended up using two VCAs for each voice, first applying the broad Risset sine or triangle envelope, and then applying an AD envelope for each note. I’m sure I could have combined signals and used one VCA per voice, but I like being able to monitor the two envelopes separately.

I chose to use a pentatonic D minor scale so that overlapping notes would always be harmonious.

Risset Rhythm Melody.vcv (4.5 KB)

All in all, I’m very happy with the results - I definitely get the illusion of constant acceleration or deceleration. But the examples are not particularly interesting or satisfying in a musical sense. They really just demonstrate the concepts.

I encourage others to take a stab at creating their own Risset rhythms, and posting the results here.

You could use one of my patches as a starting point, or come up with your own patch from scratch.

I would love to hear a more musical example implemented in VCV Rack.

I would also love to see an implementation that does not require a clock reset every time the ramp completes a cycle.


Thank you so much for posting this. It’s funny because only last night I decided to revisit the idea. A Risset Rhythm in VCV is something that has been bugging me for some time now. As you say, I have yet to create something musical, it’s all theory now.

I haven’t had a chance to study your examples, but will do so this evening.

My latest setup is a ramp LFO driving the BPM of Clocked, which is set to 1, 2 and 4 subdivisions, then 3 sequential switches which switch between the subdivisions using a separate LFO. It’s difficult to explain, I’ll try post a patch later

All I can say, is that nothing worked until I multiplied the Ramp LFO (the one that controls the rate) by LOG base2. This was my breakthrough. So you need a standard Ramp LFO (1 to 2 volts) multiplied by LOG base2 (= 0 to 1 volts) which will increase the speed by 1 octave (double time). The Clocked module has 3 subdivisions so actually you increase the speed by 3 times. And everything lines up perfectly.

I’m thinking of rather using Shapemaster to do all the LFO stuff.

Anyway, cool stuff. I’m very curious to see what pops up on this thread.

1 Like

Sorry there is something I must add while we’re on the subject. Google “plastic number” it’s 1.3something something. If you multiply ( or divide ) the time between triggers by this number it will constantly increase (or decrease). This can of course be done with any ratio, but what’s special about this is that it can be layered. Meaning that if you start a second sequence on the second trigger of of the first sequence (and so on) all the triggers line up perfectly.

1 Like

it’s this

pretty interesting


Yeah I actually came across this number by accident. I drew up a Risset Rhythm in CAD software to find out the ratio and ended up with that ratio. Googled it and ended up by the Plastic number. Talk about working backwards :smile:.


Hey thanks for the quote, I’ll try this!

I found a few Risset patches here. The only one I listened to is the first one, which uses the CSound module that you have to install manually (it’s not in the library, and it requires you install CSound on your computer).

1 Like

Thanks for that!

I had seen Purf’s patch before about a Risset rhythm - one of the things that led me to my own journey.

The 3rd patch is basic Sheppard tone, similar to many I have seen, as well as the one I created.

But that first patch! That is cool, and introduces concepts I had not seen before. I had seen a post by Dave Phillips where he used the Risset Harmonic Oscillator in a composition. But I did not understand how that related to the other Risset concepts, and now I know why - because they largely don’t!

Reading up about the complex oscillator - it is described as generating cascading overtones, but I can’t hear any of that in the patch because of all the internal modulation. So I grabbed a copy of the patch and then simplified the VCO output so I could then hear the shifting, falling overtones.

The effect is an interesting artifact of having a series of constant pitch oscillators detuned by fixed small increments. The way the math works out, interference patterns end up creating the effect of a cascading overtone up/down the harmonic series. The various harmonics produce oscillating constructive/destructive interference at slightly different rates, which leads to the cascade. I find this much more interesting than the Sheppard tone that actually involves changing the pitch of the oscillators.


This is the furthest I’ve got so far, trying to create something interesting using Risset Rhythms :smiley:

R2_118b.vcv (12.2 KB)

More experiments to come . . .


I don’t experience the illusion of constant acceleration, rather I hear gradual acceleration followed by a sudden slow down to the original tempo. But a cool patch none-the-less.

Best of all for me - my first sighting of Venom in the wild! :grinning:
That ivory theme looks right at home in a larger patch, harmonious, yet still manages to be distinctive.

Just seeing Venom in your patch makes my day ! Thanks for posting this!


Yeah man your modules are awesome!! Wincomp is incredibly useful. And I love Bernoulli switch, kind of rolls a bunch of modules and routing into a single module. I’ve only really experimented with those two so far, so still lots to play with.

1 Like

I decided not to fade in and out the slow and fast sections (which would have sounded more fluid) and rather leave it jerky.

But the ZZC clock, with it’s phase output solved a bigger issue. Patch the phase output back into it’s V/Oct input (scaled to one octave) and it works perfectly. Everything is in phase. You can even add any number of dividers, and they would also be in phase.

Anyway, I’ll shut up now, moving on. . .:crazy_face:


No, don’t shut up! That info is what this thread is all about. Thanks!

1 Like

A Shepard Tone using band-passed noise.

For those Space Ambient backdrops :smiley:

Shepard Noise.vcvs (7.8 KB)


Great idea!

I prefer the range of textures achieved by the Bogaudio VCF in band pass mode due to its ability to hone in on a single frequency, or cast a wide net. The linear vs pitched band width mode is also interesting.

The SUM modules may not be needed depending on your signal path. The VCV Audio, as well as many mixers are able to merge polyphonic signals.

Bogaudio Shepard Noise.vcv (2.9 KB)


Yes, that sounds way better!! I suppose you can also replace the noise with any harmonically rich audio like a thick pad or sample. The sky’s the limits :smiley:


Yep! And lots of room for modulation of base frequency and/or band width and/or slope - A huge range of atmospheres are possible.


Brilliant! This can go lots of places…


The power of teamwork! @auretvh