[sharing is fun] signal rate wiard noisering emulator

cudnylon's icon

I get bored and read about modulars and then try to emulate them using msp for patching practice. Here's my attempt at the Wiard Noisering which produces buchla style pseudo-random voltages using a recursive shift register.

This is meant as a learning exercise but by fiddling with some of output math you could use it in your own patch. I'd imagine it would even be possible to control an actual modular sending the "voltage" output to a Silent Way module or some other sort of interface.

A few notes: the clock in the original goes from 1Hz to 1kHz but as I don't plan to use this at audio rate i've limited it to 0.2Hz to 4Hz. Also due to log~ logic i had to include a little fix to prevent the n+1 output from giving a negative value at zero. I don't believe this to have any effect on the intended output. However there is a feedback "inverter" mentioned in the block diagram I used but didn't explain how it's used. To me that would effect the locked loop so I left it out. A [!-~ 1] object between the final [sah~] output and [send~ old.bit] will add it back.

Max Patch
Copy patch and select New From Clipboard in Max.

Thanks to http://mamonu.weebly.com/wiard-noisering.html for helping get my head around the internal controls along with other various sources (hello to the muff wigglers out there!)

Trip's icon

Hey, that's a really great patch, nice work!

4 years on (:O) it seemed due for an update to be sample accurate in gen. I did what I could. In your original patch there are two separate noise sources for the comparators - as I understand it there is only one noise source in the euro unit. The feedback inversion you mention has its function tied to the fact that both comparators are being seeded by the same noise source, without it the shift register very quickly gets full of the same value. I left your original circuit in with two different noise sources, and added a switch to flip between that and something closer to the original design, as they sound quite different when working at audio rate, and produce quite different types of patterns.

Max Patch
Copy patch and select New From Clipboard in Max.

The outputs are normalled to be between 0-1 for audio output, as I love how this thing sounds as an oscillator with low chance values, but that can easily be changed before the outputs in gen to get it back to between 0-10v. Thanks again for sharing the original patch, I wouldn't have pulled this off without it!

Trip's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Made an edit so the clock speed is controlled by the output of the shift register, sounds a lot closer to a rungler at audio rate - and gives bursts of values at control rate, nice for using the individual bits as triggers. Wasn't really sure what the best way to scale the output of the shift register to the period in samples of the train object, so it's a bit unintuitive, but does the job. Would be nice to have the feedback attenuated and added to the straight clock frequency.

Trip's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Got round to fixing that clocking issue, using frequency instead of period to control the clock now, rate feedback can be attenuated.

razzkazz's icon

Nice work. How would you feel about me porting it for Max for Live and sharing it?

Thanks

.quasar's icon

Pretty awesome topic and port to gen @Trip !

Since aquiring a Modor I was looking into ways of recreating a LFSR Arcade Noise type Oscil. This pretty much fits the need.

Still wish to understand the logic of linear feedback shift registers in gen though

madR's icon

@CUDNYLON @TRIP awesome work! I have mapped it and prepped for Daisy Patch now so one can use it within the module with Oopsy. Love the path of this patch :)

LFSR.maxpat
text/plain 42.08 KB
Prepped for Daisy Patch