[sharing is rungling] stepped havoc in gen~
So there's this Dutch modular synth builder who showed me a device that he named the rungler. It makes use of a CMOS shift register and is driven by two oscillators. The greatest feature of the rungler are the chaotic patterns it generates. Listen for yourself.
(read more at www.jvkr.nl)
This would be the that International Man Of Mystery Rob Hordijk, the Nord Whisperer? Awesome!
Yeah, Rob Hordijk is a legend. Looking sooo forward to digging into this! Sharing is great karma, jvkr.
oh man, had a good play with it just now... :) Lovely lovely! :)
I'm gonna mess some more with it, see if I can't add just a few more controls and make it a little fun-time instrument for those low-inspiration days.
jvkr, just visited your blog post about it - if you ever find it in your heart to share that bigger rungler patch, please let me know. (if it makes you feel better I'd immediately buy mira for it)
like like!
I met mr Hordijk once and he talked so passionately about the Forbidden Planet soundtrack and self-destructing synths built for it that made me thinking how poetry can actually be expressed in the way a tool(synth in this case) is built.
That's what I like about Jitter too: it's poetic piece of software that can be used to make poetic pieces of art.
i met rob many years ago when he was THE nord modular wizzard and he continues to amaze me every time we meet.
in 2008 i was one of the guest editors for the leonardo music journal and asked rob to write an article about the blippoo box, which somehow became its "unofficial missing manual". for those having access, here is the reference:
The Blippoo Box: A Chaotic Electronic Music Instrument, Bent by Design
Rob Hordijk
Leonardo Music Journal, December 2009, Vol. -, No. , Pages 35-43
just recently, the institute where i am teaching bought a very nice hordijk modular system and i have the luxury to toy around with that as a job :-)
http://musikundmedien.net/en/studies/studios/experimentallabor/
very nice patch, jvkr! thanks so much for sharing.
the blippoo has 2 amazing filters too...
(btw alberto de campo made a supercollider version of the blippoo some years ago.)
hey kochhw, that looks so cool! ...I think, at least; any chance of some bigger pictures? I can't really see it there.
oh yeah, sorry, we are working on making enlarged versions available (photos + website is handled by a different department...) the synth is in the topmost photo on the left.
its all quite new :-)
just found a bigger pic on my computer.
look at it on your own risk :-)
(i hope the attachment comes thru)
Thanks for the enthusiastic feedback.
@wetterberg: eventually I will make the code available, I need to clean it up a little, make it shareable. Give me a bit of time. And I don't have any shares in Mira or Cycling :). If you want to start expanding it yourself, what I did is combine it with the bandlimited oscillators gen~ example, and add moog style filters.
@kochhw: yes, the filters, he explained what he did, but I couldn't quite follow. Enjoy your summer!
we all have shares in cycling74 :) just not, you know, real ones.
I don't know what it is, but I know I like it!
:-D
For M4L users here's a version that let's you rungle(?) incoming audio in Live.
There might be a better way to do that but I was having some quick and dirty fun with it.
EDIT: .amxd file not allowed for security reasons…? :-/
Here's the code then (not much to it really):
Very cool. Thanks for sharing guys. It's pretty hard to understand what the code is doing at first glance, but I'm guessing it's shifting memory? Kind of like those old school insane algorithms for calculating square roots kind of like http://en.wikipedia.org/wiki/Fast_inverse_square_root? Or am I totally missing it?
A shift register is indeed at the heart of the rungler. The hardware version makes use of the 4021. The incoming oscillator signal is reduced to a single bit, and three stored bits are used to generate an 8 stage control signal. Here is more background: http://electro-music.com/forum/viewtopic.php?t=38081
I'm curious to try this out with a sigmoid function in place of the comparator. I've had good results with this in another shift register based process.
hey jvkr thanks for sharing - will have a look soon.
What do you mean embedded in copy/paste? I've found the gen code in the actual package, but I'm on Windows and I'm only seeing the actual gen patch, but not the overall patch. Any way I can use the full patch on Windows, or am I going to have to recreate the interface?
Hi johntre, couldn't answer earlier. Well, in building the interface I use a set of my own abstractions, also it's quite messy and moreover there are Mira objects used as well. Including the ui might therefor raise just too many questions. That being said, really everything is in the gen code, so that is most meaningful. Sorry to provide you with the incomplete package. Almost all parameters are in the 0-1 range, and it should be quite straightforward to connect them to dials or sliders of your choice. Happy rungling.
For those who can't open a mac app, I will include the code here.
@PeterMcCulloch how did that work out with the sigmoid?
Was recently working on a gen~ version of another hardware device that works off a shift register so I tried using the simpler rungler example as a jumping off point (poke/peek, clocking). This was causing errors, and after a little troubleshooting I found that there may be problems with the original SimpleRungler patch.
The main issue I found is that I believe the DA converter is reading in reverse. When I viewed the output of each tap individually the bits move from right to left. Changing the math from [+ 1] to [+ 3] before each [wrap] makes the bits move from left to right. If it was correct the first way, please let me know as I'm a "learn as you go" person and could definitely be wrong here but wanted to bring it to your attention.
I've documented each of these changes in the following patch. Very slow speeds are of course required to view the bits accurately. Also, I felt the input may have been changing while waiting to move to the next write position so I've added a [sah] before the [poke] so it is only updated at the start of each transition. Adjusted the length to 8 steps as well. Made the input an xor with the last bit but I see that was added in a more recent version. (I'm working off the original)
As said previously I may be way off base here. This is my first attempt at working with gen~ and might have gotten in over my head. I just wanted to find out for sure since no one has caught this yet.
What you describe in terms of right to left order is correct, and it is intended. The leftmost loop provides a counter for writing values. The +1 creates a pointer, for reading values, to the address right of the one that is being written to and that will be overwritten with the next increment. It represents the value that has been longest in memory.
The reason I did it like this is that by changing the arguments of the wrap object, I can experiment with different sizes of the shift register. Changing the order of the values could also be achieved by modifying the expression object.
If you take a look at the patch three posts above, you will find code for a patch that uses the variable size shift register.
Thanks for the clarification and original patch. It's very educational.
Not much luck with the sigmoid yet. Haven't poked around with it quite enough yet, though.
Have had good results with using non binary values in an implementation of a Klee sequencer in gen~.
a friend showed me his benjolins the other day, and I decided to understand ho it works, so I designed the rungler, the digital to analog converter, and used the great oscillators and filter by ernest.
the syncing ability of the oscillators makes some nice things.
I didn't fine tune the knob ranges, but this would add a lot to the playability.
have fun !
Very nice. And comfortably under 3% cpu here, despite all those branches!
Really like preset 69.
Managed to get some lovely videopac sounds out of this too. :-)
in·dis·pen·sa·ble !
Wow, this sounds so great. Really loving the chaotic patterns.
totally awesome.
anybody happen to have a rungler patch that's NOT built in gen. That way I might have a chance in hell of figuring out how it works ;)
JVKR, thank you for sharing, and thanks to all of you for this fantastic discussion.
I'm really impressed, hot this relatively simple approach may be transformed into something great. And I see a lot of things I can learn from this.
Yes, great discussion and sharing of ideas, info and patches.
Here some "sound sculptures" made with the rungler patches:
http://giorgiomagnanensi.com/sculpting-with-the-rungler/
http://giorgiomagnanensi.com/11-rungler-objects/
Ciao,
g
I'm also a big rungler fan. I used a modified version for a performance a while back. Not well documented I'm afraid, but some record exists in this video:
The video is all done with Jitter and the sound was 5.1 - mixed down to stereo here.
Bertrand, that's an incredible patch. Thank you for sharing it. Everyone needs to try this -- so much fun and sounds great.
great thread ! thx.
@JVKR, thank you for sharing! this patch is really helpful to understand how Rob's idea would look in max. I was wondering, is there any reason why you have each oscillator being both a clock and a "data" source for the "shift registers"? My understanding was each oscillator does only one of the two, whereas here you seem to have two Runglers at work with some inter-dependencies between them.
Good to hear, my pleasure. The truth is that I have never worked with the hardware. The patch is based on a what Rob Hordijk shared in a conversation I had with him. Therefor I don't know whether this is original, but the cross coupling works well. It adds to the, well, 'mayhem'.
my apologies. It seems Rob actually has several implementations of this concept. The one you cooked up is apparently exactly what is in the Blippoo Box:
"The stepped modulation signals are created by using two very short single- bit clocked delay lines. These delay lines have a data input and a clock input. For one delay line the data comes from the square wave of one oscillator and the clock input from the square wave of the other oscillator. For the second delay line the clock and data inputs are reversed. "
On the other hand the Benjolin and Robs own Rungler module would have the OSCs doing EITHER clocking OR feeding the shift register respectively :)