SynthMaker

unusual noise generators

Archive · 2012 27 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

tester ·

Random noise generator - so simple and so complicated. I'm looking for a random noise generators, that could be used for feeding LFOs. But I don't mean filtering a wideband noise with lowpass filter. Rather generating a slow random pattern with maximum dynamics level comparable to maximum frequency representation - if I understand this topic correctly. If I don't understand it correctly - then I mean just a slow change and max level of dynamics under control.

Now I guess, that this was a first part.

Due to lack of keywords, I don't know how to describe the second aspect of what I look for. Probably i mean a pattern representation, like the white noise, pink noise, brown noise. But maybe I mean some level of harmonization too (attractor curvature?).

That was the second part.

Anyone worked on such or similar topic?

oddson ·

Sounds like you might be talking about a random walk...

x(t) = x(t-1) + random element

You can get more complicated so that there is some tendancy to return to the origin as the devaiation from the origin grows too large.

trogluddite ·

tester wrote: Anyone worked on such or similar topic?

lesobrod did quite a bit of work on random LFO's etc. Not seen him around here for a while now 🙁 - but the Advanced Search will let you filter by username (or look him up in the "members" list next to the 'logout' button).

tester ·

It looks I forgot to push "submit" button when I was last time here. Thanks for interest.

I'm checking lesobrod's random LFO from here, but connected to simple sine gen (taken from NoiseModulation.osm example) as a freq sender - somewhat it sounds... hmm... almost a like regular pattern (no homogenic spread)? Hmm... I check on that later; maybe some lin/log conversion is required.

@oddson - being honest - I don't know. It's a blind-walking right now.

//edit:

I have an idea to check. Simple random number generator connected to my "linear->logarithmic spread" converter plus periodic trigger (regulated ticking frequency = resolution x speed) plus dezipper. This trigger could be driven by another random generator too. Could work? 😉

//edit2:

Found something here - "AnotherSlowRandom))).osm" sounds promising.

tester ·

Okay, I think this approach is the easiest way to go. I borrowed random noise generator from "AnotherSlowRandom))).osm", and now here is my question. Although the pattern I'm getting is fine, duplicated module with the same user settings - generates the same thing like his brother.

If this would be universal "random LFO" for multi-osc purpose, then my guess is, that somewhere there (brown noise, coefs or res/nonres module?) - an external parameter must be added in order to make the pattern different (not "just delayed") yet within similar noise dynamics. Where? Within what range?

oddson ·

There's nothing "random" in there -- and I'm not splitting hairs about 'pseudo-random' -- there's nothing but a simple deterministic formula so of course it's going to have the same pattern every time.

But if you're happy enough with the pattern just change the 'rand' parameter ever-so-slightly in one of the 'brown noise' modules and not the other...

I changed it by one-millionth and got the result I think you're looking for.

oddson ·

Er um... you might want to go a little more divergent that that. 😊

tester ·

By "randomness" I mean any formula that is different from periodic and has no clear periodicities inside. Hmm... Hmm... It's like with ocean waves or rain or wind or any other natural noise. It has it's pattern type (nature how it sounds, when you filter few Hz part of spectra), it is somewhat vaguely self-similar, but it is different in details (not repeatable when starting from beginning). Depending on these parameters (pattern, similarity and differences) - various sound sources are good/compatible for mixing or not, or they represent different applications.

If you right, then I guess using simple "random" primitive (with trigger on selection) to add small amount of vaule there - should do. I check that later. Thanks.

Meanwhile maybe someone finds - how to produce different "pattern types", like differences between rain, ocean waves, brooks, rivers or even simple boiling waters. If you take such sounds of nature, and if you use let say 6 or 10Hz wide, sharp-edged set of a few filters, adding them somewhere in range between 100 and 900Hz in harmonic way, then you know what I mean.

tester ·

Okay, I still don't know where to add a random fraction of float in order to get just ditterent pattern (for mixing and having different inputs within the mix) at similar speed and depth. Not to "rand" in brown noise as oddson suggested.

@trogluddite - you played for a while with this schematic and idea - could you bring some light on it?

oddson ·

Your random numbers generators are not hooked up to your 'brown noise' generators:

Also you've shrunk the input on the random component pretty small... the impact may be too little to notice even when you do hook it up correctly.

tester ·

It was connected, but I disconnected it intentionally. With these fractional values I defined inside my triggered rng - it seemed to not to work properly anyway. I'm guessing, that this "brown noise" formula is functional "as it is", without additions on "rand" (which I redefined from float to streamin node) section. Thus - probably something else must be somewhere else added in order to get proper results (or I don't know what level of fractions is appropriate in order to still have similar sounding formula).

oddson ·

tester wrote: ith these fractional values I defined inside my triggered rng - it seemed to not to work

Yeah... for some reason it won't allow addition at the code input like it does everywhere else... (bug?)

Just use an add primitive or add at a float data primitive first.

If you extract out what you're trying to accomplish with the 'slow noise' from the rest of this stuff (which I don't think is enough of interest to most people here to get them to bother to figure out what you're trying to accomplish as your larger goal) you could likely get the help you're looking for on you smaller goal.

Also if you could elaborate on what is or isn't working about it -- after you've pulled it out from your larger project -- that would likely help too.

tester ·

Generally there is no big secret behind the larger goal. Slow-noise routine will be used as one of selectable sources for making spatial irregular (but pleasant / acceptable for ears) tonal sound (via frequency modulation and direct generation) and for making wind-like amplitude modulation (in similar way to original design). Two modifable parameters are in place here - frequency range of random changes and average speed of these changes; dynamics of irregularity - maybe. Right now, the whole project is a "technical signal generator" and serves for exploration of options; when it's released "as it is" right now - it will be freeware.

Now the thing with randomness is. I'd like to have the same kind of dynamics of noise/irregularity on each paralely running gen, but different "noise content" for each. There would be no problem if the schematic would produce random noise using some external inputs and not just irregular deterministic pattern; but I have no experience in that area.

So the "code" primitive does not accepts direct linking of various inputs correctly? I didn't know.

martinvicanek ·

tester wrote: [...] the same kind of dynamics of noise/irregularity on each paralely running gen, but different "noise content" for each.

Do you mean uncorrelated random sequences? This can be done with a different seed for each random number generator.

tester ·

I don't know what is the technical term for it and that's the problem. 🙂 But if you have two similar birch trees, then they never are identical, yet always they are birch trees and not pine trees so to speak. Or - if you have typical wind and typical rain - then although they both all "noises" - they have different dynamics from each other; but even different kind of typical rains - will represent the same kind of dynamics (when you mix rain recording with other rain you get homogenic rain, but when you mix rain and wind recording, then you get distinguishable both; I mean typical recordings). So I uncorrelated sequences - yes, but still in the same "family".

I'm going to check tomorrow what oddson said about this node issue; by the "seed" you mean the "rand" node in the schematic?

martinvicanek ·

Here is an illustration of two uncorrelated random sequences:

I took two instances of the popular portable quick and dirty whitish pseudo random number generator with different seeds. "Pseudo" means that the random sequence is in fact strictly deterministic and will be the same each time it is triggered. With different seeds (= starting points) you will get different sequences, even though the algorithm is otherwise identical. Good random number generators will produce white noise no matter what seed you choose (the one in the image may not be as good).

So once you have two different random sequences with the same spectral characteristics you can lowpass them etc.

tester ·

I see. Okay, I will check that when I'm on my SM computer, thanks.

//edit: Just checked. Works fine. Thanks for additional explanation on that.

tester ·

Here is another small thing. I added a switch to select between common and different seed for left/right channel noise. Common seed will produce mono sound, different seeds will make independent channels. Works fine when turning on and off the soundcard. Now - how to reset the sound generation on seed switch, without turing off/on the soundcard? Like hard resync node.

oddson ·

'Clear Audio' primitive will do exactly this -- restarts all running audio processes.

tester ·

Okay, thanks for advice!

oddson ·

You may prefer to use an external seed instead (see my attachment above) as Clear Audio will disrupt everything and not just restart the noise generators.

tester ·

How the external seed will change anything? What I need to reset on seed change (from different per channel to common for both) - is the state of these noise gens. Otherwise - even if I change the seed during playback - left and right channel will not synchronize (no mono sounding output so to speak). The concept is to switch between random patterns and one pattern that can be spatialized manually via L/R delay. Am I missing something?

Chaoslala ·

I like to use it like this !:

"streamin in; streamout out; float rand; stage(0){rand =0.1001;} stage(2) { rand =in; rand = rand*3; rand = rand - (rand>2)&1; rand = rand - (rand>1)&1; out = (rand*2 -1)/20; }" strangly it preserve the note of the input and make a little overdrive. Be carefull with the output volume if you try !

oddson ·

tester wrote: How the external seed will change anything? What I need to reset on seed change (from different per channel to common for both) - is the state of these noise gens. Otherwise - even if I change the seed during playback - left and right channel will not synchronize (no mono sounding output so to speak). The concept is to switch between random patterns and one pattern that can be spatialized manually via L/R delay. Am I missing something?

No... I was missing something. I was thinking about de-syncing only and not re-syncing.

And my reference to seeding was for a schematic I never posted... 😊

martinvicanek ·

This is how I would implement an external seed:

tester ·

Meanwhile I have discovered something else. It's a conceptual randomization for LFO based on trigger-shooter with delay and dezippers (not finished yet), but is fast, provides somewhat good sound values (see the FM example) and at least I know which parameters are under my control 😉. Also - I can put the stream of greens through some "primitive" calculations that I used before (like linear to log random spread), so there are various directions to check.

tester ·

So here is my random stereo generator for FM and AM applications (schematic shows both example settings).

It is fast, made on primitives, various modifications can be added without SM coding knowledge (like random spread conversion/type). One thing is "cheated" here a little bit, but it should not be a problem. "Speed". While input values are in Hz, output is in miliseconds on a integer basis (both, for counter and dezipper). The higher "speed" value, the greater frequency step. But - it is for slow speeds, so this inaccuracy is not so important. Besides - this is random LFO. "Speed" represents how often generator should change it's value, but - vaules to change are in random range and they are passing through dezipper to become a signal, thus - it is still randomness, although triggered on a regular basis. The fact that generators have common basis - may serve for better output - more pleasant, because this is what it is about - pleasant randomness/irregularity. And this one is random and not just irregular (at least if the SM random primitive uses some random basis).

I resigned from "common seed", because after playing with delay as an equivalend of "phase offset" - I came to the conclusion that this is not needed for my little project.

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.