## CGS Infinite Melody Explanation (now w/ Diatonic Converter)

Discussing some incredible modules that don't quite fit into the other forum categories.

Moderators: Kent, luketeaford, Joe., lisa

flx
Super Deluxe Wiggler
Posts: 1561
Joined: Wed Oct 05, 2011 4:22 pm

### CGS Infinite Melody Explanation (now w/ Diatonic Converter)

Alright, after explaining the CGS Modulo Magic, here comes Ken Stone’s Infinite Melody module, also found on the Best of CGS MARSH panel.

Oddly, understanding it seemed way easier than trying to explain it. So consider this a first try and let me know how it worked for you. Here’s Ken’s original website for the Infinite Melody for your research too:
https://web.archive.org/web/20170826181 ... elody.html

I think understanding the Infinite Melody is awesome, but since the module doesn’t offer any way to check its internal states when patched (which are plenty and which change at different rates), using it in a 100% deterministic way is very difficult and might even be impossible. Nevertheless, please read on! It’s a cool thing to get your head around and it’s obviously a fun module to simply generate random or chaotic CVs with.

For this explanation I’ll assume that you know how a digital shift register (DSR) works and how to count in binary. You don’t have to be an expert in those things, but you’ll need a basic understanding. There are a lot of tutorials about those topics online fortunately.

What the Infinite Melody does in a nutshell:
You patch a signal into its Noise input, a comparator creates a series of high and low states from that signal and feeds those binary values into A WHOLE LOTTA DIGITAL SHIFT REGISTERS HOLY MOLY! First, it populates a six-stage DSR at the rate of a clock signal at the Clock input. Then, on each incoming clock pulse at the Advance input, the stages of this DSR are fed into six more four-stage DSRs, from where the 1, 2, 3 and Mix outputs are derived. Phew … here, take a look at this beautiful illustration and read on:

The pink stuff:
IN (Noise) receives an input signal which is analyzed by the comparator. Sense knob and CV input control the comparator threshold.

When a pulse is sent to the Clock (CLK) input, the current comparator state (high or low … or 1 or 0) is recorded into the DSR’s first stage. On another clock pulse, a new state is recorded into the DSR’s first stage, shifting the previous value to stage two, then stage three, etc. So the DSR always contains a string of 1s and 0s or rather high and low voltages, shifting from right to left in the illustration above on each clock pulse.

The green stuff:
Below each of the six pink DSR stages is a green four-stage DSR, which records the pink stage’s value upon a clock pulse at the Advance (ADV) input. As usual, on new pulses, new values will be recorded into stage one and previously held values are shifted onwards to the next stages.

The green DSRs’ first stages are representing a 6 bit binary value, being fed into a DAC, which outputs an according voltage at output 1. This means that the Bit 1 DSR (Least Significant Bit - LSB) will affect the output voltage very little while Bit 6 (Most Significant Bit - MSB) will affect it the most.

Stages two and three act the same way and their DAC voltages are sent to the 2 and 3 outputs respectively.

The Mix output behaves differently. Here, each of the six bits (high or low voltages) are sent through their own individual attenuator (pots 1-6) and the resulting voltages are added together before appearing at the Mix output. This let’s you tune each bit to create harmonic melodies. It’s like using a gate sequencer with a CV mixer to create melodies, if you know what I mean.

Maybe take a short break, get a drink and re-read all of the above again, because it gets even more exciting!

Okay, we haven’t discussed the one remaining input yet, the Mode socket. When receiving a high voltage there, the module is in “random” mode, which is a little misleadingly titled in my opinion. It really just means that all green DSRs record new values from the pink DSR stages at the same time, whenever a pulse is detected at the Advance input. So all green DSRs shift together at the Advance clock rate.

When a low voltage is sent to the Mode input, or if nothing is connected there, the module is in “1/f” mode. I won’t explain why it’s called that, because I also think it just makes things too complicated for this document here. You can read about it in Ken’s description linked at the top. In this mode the green DSRs don’t shift together all at once on each Advance clock pulse, but at different clock divisions. The Bit 1 DSR shifts at every pulse, so at the exact Advance clock rate. The Bit 2 DSR shifts at rate /2 (so half as often as Bit 1), Bit 3 DSR at rate /4, Bit 4 DSR at rate /8, Bit 5 DSR at rate /16, Bit 6 DSR at rate /32. So Bit 1 (LSB) may change on each clock pulse, making the DAC output voltage change on each pulse too then, but only very little (because it’s the LSB). Bit 6 (MSB) drastically changes the DAC output voltage, but it only does so every 32nd clock pulse. So small voltage changes happen more frequently than large changes.

Here’s a gif animation. Black arrows indicate clock pulses (left arrow = Clock in, down arrow = Advance in).

Of course both clock inputs work at the same time too, so the pink DSR stages change continuously and the values are recorded into the green DSRs on every Advance pulse.

That’s it actually. It’s really not that difficult in the end, but as I wrote earlier, using it deterministically is a challenge … at least for me. There are so many things to keep track of when patching it, but it’s good to know that the module itself does not actually behave randomly at all, if you don’t feed its Noise and Clock inputs random voltage levels and random pulse sequences. It gets chaotic quickly though, which is great!

So, what do I use this for?
That’s the beauty of the CGS Serge stuff ... you are offered a very abstract feature set and then you have to figure out how to incorporate it into your patches for yourself. Haha! Some things to note though:

- Outputs 1-3 are only somewhat related to each other in 1/f mode (because the green DSRs shift at different times, and the pink input values change frequently). In random mode however, output 1’s voltage is shifted exactly as it is to output 2 and then to output 3 on each clock pulse, because all green DSRs shift at the same rate. You can create some cool CV sequences by changing the Mode with CV (i.e. sending gates into the Mode socket). Changing the Mode resets the 1/f clock division counter too I think.

- In 1/f mode, when the more significant bits change, the output voltage can jump up or down drastically and stay there for a while with only smaller changes. Use the Modulo Magic to reign the voltage range in.

- The Mix knobs can be set to produce harmonically pleasing pitch CV levels. To do this, turn all of them to zero first and start with knob 1, then knob 2, etc. Remember that in 1/f Mode the DSR’s shift at different rates, so Mix knob 1 may change it’s on/off state more often than Mix knob 6.

- Sending very fast, audio-rate clock pulses to the Clock input and a white noise signal to the Noise input will generate random values in the pink DSR. In Random mode those will appear more random at the DAC outputs than in 1/f mode, where they will appear more chaotic (because small changes happen more often than large changes).

I’ll update this when I think of more things

The Diatonic Converter is an add-on circuit which is included in the MARSH panel’s Infinite Melody module.
https://web.archive.org/web/20170826181 ... elody.html

It takes six binary input values (who would have thought?!) and creates diatonic pitch CV from them. It is not a quantizer, as it doesn’t accept analog voltages, but only digital high & low (1 & 0) signals. So it fits right in there with the Infinite Melody, as this one provides DSRs full of binary values.

A diatonic scale is a seven-note scale, with five whole tone and two half tone steps. Like this: C D E F G A B … Look at that! Those are the white keys on the piano, which are called the C Major diatonic scale. Whoop!

The Diatonic Converter uses two binary counters, or binary-to-integer converters, each receiving three of the Infinite Melody’s six binary DSR stages. Why three? Because you only need three binary digits to count to seven … well, to eight actually, so the root note (C in our above example) will sound at the end again one octave higher.

The first counter, receiving the Infinite Melody’s Bits 1-3, outputs one of eight diatonic note CV values. So, for example, when it receives the binary number 011, the Diatonic Converter’s output 3 goes high, playing an E note, which is the third step of the C Major diatonic scale.

The second counter, receiving Bits 4-6, sets the octave (1-8), which is added to the note CV. That's a huge octave range of course and as the second counter receives the DSR's more significant bits, the values don't change very often in 1/f mode. So it can happen that the Diatonic Converter stays in very high or low octaves for a long time. It would be nice to be able to disable the Bits 5 & 6 to keep the octave range down - not just for the Diatonic Converter, but also for the Infinite Melody module itself ...

Oh hey, what's that?!

(I don't know why this picture is displayed so huge)

Looks like Ken already thought of that in his circuit and on the PCB! His Bits are labelled 0-5 (instead of my counting 1-6), so in the image Bits 4 & 5 are the last ones. Those switches are not on the MARSH's Infinite Melody panel unfortunately, but if you're crafty, you might be able to find an empty corner to drill those two wholes into maybe.

Inputs:
The Diatonic Converter is hardwired internally to the Infinite Melody’s DSR 1 stages for melody generation (at least in my MARSH build), but it does feature other inputs on the front panel too.

Root: This input accepts an analog CV which is added to the diatonic output, meaning you can offset the pitch CV, shifting the melodies up or down, changing the root note of the diatonic scale.

Span: By default, the pitch CV steps are tuned to produce a diatonic scale with its typical whole- and half-step intervals. Patching an analog CV into the Span input lets you change the step sizes, creating microtonal scales (very experimental).

Maj/Min: This one accepts a gate signal which switches the diatonic scale from Major to Minor on a high voltage.

Okay dokay, that pretty much covers the whole module! Let me know if anything is still unclear and go ahead and experiment with your Infinite Melody module!
Last edited by flx on Wed Nov 07, 2018 6:26 am, edited 13 times in total.

MindMachine
weekend warrior
Posts: 7156
Joined: Sun Aug 02, 2009 1:45 am
Location: Santa Susana Field Lab
Again - thank you for the detailed breakdown and visuals. Another of the most alluring CGS modules.

Drillionaire
Wiggling with Experience
Posts: 377
Joined: Mon Jan 26, 2015 7:35 pm
Very detailed and useful explanation!

Unless I'm misunderstanding something from Ken's original page, all the shift registers in the module are digital shift registers, and other than the noise source and the outputs of the DACs, all the signals in your diagrams and the circuit are digital.

flx
Super Deluxe Wiggler
Posts: 1561
Joined: Wed Oct 05, 2011 4:22 pm
Drillionaire wrote: Unless I'm misunderstanding something from Ken's original page, all the shift registers in the module are digital shift registers, and other than the noise source and the outputs of the DACs, all the signals in your diagrams and the circuit are digital.
Oh man, you’re right of course! That’s what I get for writing these things late at night. Changed all the ASRs to DSRs in the post.

Apart from the Noise input and the DAC outs, the Mix output is also analog.

flx
Super Deluxe Wiggler
Posts: 1561
Joined: Wed Oct 05, 2011 4:22 pm
Here's a little melody experiment using the Mix output, with three of the six pots tuned to musical intervals. The other three pots are at zero. I'm modulating the Mode input to switch between Random and 1/f, which adds another layer variation. Underneath I've got a root note drone playing form another VCO.

Just a quick recap regarding the Mix output:

The 4th DSR stages high or low voltages are each sent through an attenuator (Pots 1-6). So for example when DSR 3 is high, the voltage of Pot 3 will be added to the mix output. If that voltage is attenuated to 1V, there will be a pitch change of one octave. Of course all the other stages are added too, but if they're low, then nothing is added. With a bit of patience you could probably turn each Pot to a add a semitone step or another specific scale interval, in a way that it would work by itself (only this one Pot) and also when added to the other Pots' outputs.

Cobramatic
Wiggling with Experience
Posts: 477
Joined: Sat Sep 21, 2013 6:45 pm
Location: Sydney
Another Brilliant description and explanation flx - thank you again
I particularly like your gif's showing the bits populating the registers - nice one!

I think part of Ken's description is also valid and a technique I use too:
"And if that wasn't enough, the randomness used by this module is obtained externally, from a regular white noise generator, or other varying voltage source, allowing more structured themes to be created. The random values are loaded in series at a rate determined by an external fast clock. This can simply be a spare output of a VCO (even one in use playing melodies etc.) or it can be deliberately controlled, or slowed right down to gain even more effects. The sensitivity of the random input can also be controlled via CV, again giving more possibilities."
So it is interesting to use different sources for the 'Noise' and 'Clock' inputs varying from audio to slow rates (and a combination of the two), be they random or regular. This does give dramatically different results at the outputs of course.

It can be a very hard module to 'tame' if you want less crazy melodic results, and that is one good use for the Modulo Magic module which you covered in your last post, but also that 'Diatonic Converter' output - so looking forward to your analysis of that in future too

simian
Common Wiggler
Posts: 52
Joined: Thu Dec 01, 2011 2:02 pm
Great write-up. I thought the crude MS paint diagrams of the Modulo Magic post were delightful, but you have certainly outdone yourself with that animated gif, there.

This is one of those circuits that really took hold of my imagination when I'd first read about it (though I've never built or otherwise acquired one): just bits and bits and shifting bits, cascading into bits and bits and other bits, then summed into things.

I imagine it could be useful or at least interesting to monitor its internal states via an LED matrix or something...

flx
Super Deluxe Wiggler
Posts: 1561
Joined: Wed Oct 05, 2011 4:22 pm
Thanks for the comments, everyone! I added the Diatonic Converter explanation to the first post

simian wrote:I imagine it could be useful or at least interesting to monitor its internal states via an LED matrix or something...
Yes, an LED matrix would be very useful indeed and I assume that implementing it wouldn't be too hard, as all of the DSR outputs are accessible already anyway. It just needs space.

Super Deluxe Wiggler
Posts: 2615
Joined: Tue Mar 17, 2009 8:43 am
Location: Clapton Pond
Great write up again flx!

I did make one with the BITS buffered as outputs with LEDs:

flx
Super Deluxe Wiggler
Posts: 1561
Joined: Wed Oct 05, 2011 4:22 pm
the bad producer wrote: I did make one with the BITS buffered as outputs with LEDs:
That looks great! Having the separate Bit outputs probably makes this a fun rhythm machine too. Reminds me of the Gated Comparator, which I really like a lot as well.

simian
Common Wiggler
Posts: 52
Joined: Thu Dec 01, 2011 2:02 pm
flx wrote:
the bad producer wrote: I did make one with the BITS buffered as outputs with LEDs:
That looks great! Having the separate Bit outputs probably makes this a fun rhythm machine too.
Mmm... yes, and (conditionally) looping the primary register from any stage, I presume.

Forgive me the sidebar, but I've been playing an awful lot with a Lorre-Mill Double Knot these days, so I'm oddly inclined to want two as configured above (absurdly redundant as that may seem). I'm staring at a curious 4U-sized void in this rack... and yet my Serge is already so sequence-heavy.

I suppose I have some thinkerin' to do.
flx wrote:Reminds me of the Gated Comparator, which I really like a lot as well.
Need to re-read up on this one, too... or perhaps you'll provide another excellent write-up for my lazy ass?

flx
Super Deluxe Wiggler
Posts: 1561
Joined: Wed Oct 05, 2011 4:22 pm
simian wrote:
flx wrote:Reminds me of the Gated Comparator, which I really like a lot as well.
Need to re-read up on this one, too... or perhaps you'll provide another excellent write-up for my lazy ass?
Haha, yeah, that module would indeed be next on my to do list ... if I had a list. I’ll see what I can do

flx
Super Deluxe Wiggler
Posts: 1561
Joined: Wed Oct 05, 2011 4:22 pm
Here’s a thread for the Gated Comparator:
viewtopic.php?p=2954581#2954581

floris
Wiggling with Experience
Posts: 376
Joined: Fri Jul 30, 2010 4:09 pm
Location: belgium
Contact:
You can hear an example the Infinite Melody from my "Unstoppable" cassette around 1 hour and 20 minutes in this radioshow:
https://kraak.net/avant-guardian/de-neus-van-god-34

flx
Super Deluxe Wiggler
Posts: 1561
Joined: Wed Oct 05, 2011 4:22 pm
floris wrote:You can hear an example the Infinite Melody from my "Unstoppable" cassette around 1 hour and 20 minutes in this radioshow:
https://kraak.net/avant-guardian/de-neus-van-god-34
That's beautiful! You don't happen to remember some info on the patch you had going there?