Can't find it. Thanks.
hjh
Brown noise generator?
Can't find it. Thanks.
hjh
@ddw_music [mrpeach/rojo~]
Subject discussed here..... https://lists.puredata.info/pipermail/pd-list/2015-11/112124.html
David.
@whale-av "[mrpeach/rojo~]"
Hm, deken tells me there's only a 4-year-old 32-bit version?
Another lib to build from source I guess.
EDIT: Oh, and I tried installing mrpeach from deken on Windows (newer version available for Windows) -- Pd 0.50 couldn't load the library (after adding it to the startup path).
So [mrpeach/rojo~] seems for the moment to be dead in the water.
I did try the [noise~] --> [fexpr~ if(abs($x + $y) > 1, $y - $x, $x + $y)]
approach from the mailing list thread. It does alter the spectrum but not as boomy in the low-end as, say, SC's BrownNoise.
hjh
hjh
@ddw_music Not finding that formula in the mailing list. What are the two inputs of $x and $y?
@s.elliot.perez said:
@ddw_music Not finding that formula in the mailing list.
In the message that was directly linked, there is a reference to "the fexpr~ technique that I mentioned" but the technique itself isn't quoted. So you have to go back through a few of the "previous message" links (which is why I said "from the mailing list thread" rather than from the message).
https://lists.puredata.info/pipermail/pd-list/2015-11/112110.html
You can get an approximate brown noise by running a noise source through [fexpr~ if(abs($x+$y)>1.0,$y-$x,$x+$y)] (an integrator with +/- 1 bounds). Scale your noise source by somewhere in the 0.05 to 0.001 range...
Turns out, when I tried it, I had forgotten about scaling the noise input. So I added that just now and it sounds very close, nice and rumbly in the low end.
What are the two inputs of $x and $y?
[fexpr~] appears to be basically undocumented -- opening help on an [fexpr~] object goes to [expr] help, which neglects to explain the difference between [expr~] and [fexpr~].
Anyway... based on the behavior, I have to assume that it's "filter-expr" using filter formula notation to indicate feedforward and feedback terms: $x is the input (feedforward) and $y is the previous sample of output (feedback). $x is an input and $y is not, so the object has an audio inlet for $x only (no inlet for $y). So $x + $y = new sample + previous output = integrator (Brownian motion is integrating a noisy source), and the "if" just makes sure that it stays within -1..+1.
hjh
I have wondered why Pd doesn't seem to have more of these types of primitives in the standard library (i.e. [pink~] [grey~] [brown~] [jitter~] etc)
boonier
@ddw_music Wondering how I could do this with. I suppose you could get $y with an audio delay of 1000/samplerate, add them together and put them into an [abs~]... but there's no [>~] object, so how would one check that at an audio rate? Also, are the last two parts of the equation ($y - $x, and $x + $y) what happens when the condition if(abs($x + $y) > 1 is met? If so, what order are these two parts executed and how are their results recombined?
I didn't invent this technique btw, so take the below with a grain of salt.
I suppose you could get $y with an audio delay of 1000/samplerate...
EDIT: Correct, 1000 ms/sec / SR samples/sec = ms per one sample. (That, I believe, would require setting block size to 1?)
I still am not used to thinking in ms!
but there's no [>~] object, so how would one check that at an audio rate?
That's a really good question. FWIW it's in cyclone, but... IMO this is a basic feature and it surprises me that it's "external."
If so, what order are these two parts executed and how are their results recombined?
Well, the result is, if the condition is true, then the output is the result of the second expression; if false, the output is the result of the third expression. So the order of execution doesn't matter.
hjh
@ddw_music said:
[fexpr~] appears to be basically undocumented -- opening help on an [fexpr~] object goes to [expr] help, which neglects to explain the difference between [expr~] and [fexpr~].
http://yadegari.org/expr/expr.html
but there's no [>~] object, so how would one check that at an audio rate?
yes, I do it with [expr~] or [fexpr~]
Just re-read this after some time (2ys)!
Seems like the ELSE library is the key to all things noise and random
boonier
Oops! Looks like something went wrong!