Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Noise Generator

I really like the noise generator but i know i wanted something else out of it when looking at the code. More of a granular noise. You can change y32 to y8 and get more of an 8bit noise and playing around with the bits it shifts around can get more of a stutter tone. I am unsure on how much i can shift forward and back within the shift register on the chip to get it to stutter every once in a while? I was thinking to use random (1, 8) or something but random was moving to fast to tell. How do i slow it down a bit to get (y8 << x), (y8 >> y), (y8 << z) to change randomly every few seconds?



  • edited May 6

    I kind of want this sound but i dont want to turn a knob to get it.

  • Do you mean like the part at the end where it sounds kind of like a helicopter?

  • Everything constantly changing every few seconds.

  • edited May 9

    You might be looking for an algorithmic generator - coincidentally I've been working on one for a while, so I tidied it up and published it here.

    The generator makes sound from short lines of code combining regular and bitwise operations: for example, the recording below is the raw output of

    sample = t*(t>>14) ^ (t<<8 ^ t);

    (it's loud - careful)

    That's without touching anything -for each of the examples you have control over three parameters.

    You can get all sorts of sounds out of the module depending on the algorithm, including random noise; actually the last example in the program uses the algorithm from the Noise Generator module (but here you have control over the bit shifts). There's LOTS of room for experimentation! Give it a try and let me know what you think :smile:

    PS. I've just published the program, so all the information is here atm

  • Great i will try it out and play with it. Thank you very much.

  • But then again its still repetitive in away. What i am saying is to change.
    parameters[0] x
    parameters[1] y
    parameters[2] z
    Every switch instead of having 14,8,1 and ect presets switches. You can have each individual parameter values change randomly from 1 to 16 but not have the value freely generated while its playing. More like a sample&hold on the parameters.

  • maybe a randomizer with a delay would do the trick... but what about the delay itself? would you want it to also be random?
  • edited May 12

    Yes or controlled by the pot to control frequency of it changing.

  • edited May 14

    OK, I've uploaded a Noise Random Generator to the repository.

    By default the generator changes the noise parameters on its own, but you can still control frequency and density like in the regular noise program:

    Now, in the loop(), there's a second option you can choose -this one randomizes everything:

    If you navigate to the all random function, there's a delay that you can experiment with. It is not active by default because it doesn't get along with randomizing the grain density (it freezes the sound eventually).

    I added a function that updates the random seed on startup, so the sequences are always different.

    You'll notice that some combinations of parameters produce tones rather than noise. If this were a problem, a way of getting around it would be to have several sets of parameters that produce noise, and alternating between them at random.

    That's all in a pinch, let's see what you think :D

    PS. I didn't go into variable delays in either mode -I think it would make it really hard to control, with all the other parameters in play.

  • Exactly thank you very much!

  • cool! enjoy!
  • The noise generation program on the MiniMo is great! I’m curious about how the noise density is achieved and modulated. Band pass filter? Bit rate? It’s a very interesting effect!
  • hi!

    tl;dr A random generator bombards a sieve at audio rates with particles of all sizes, and you hear more or less particles passing through depending on the size of the sieve -thus controlling the density of the output.

    The noise output depends on three parameters in the program:

    -A: sets the maximum length of an underlying pulse, P
    -B: sets the rate at which we change the width of said pulse P
    -C: sets the value of P's width

    The "underlying pulse" has a frequency so high that we don't hear it directly; if we change the width of the pulse at audio rates, though, we can hear those changes.

    Every B interval we set the pulse P to have the width C

    Depending of what do we do with C, we'll hear different things; in the noise program, C takes a random value at each B interval, and so we hear noise.

    What about A? as I wrote above, A is the maximum length of the base pulse; the smaller it is, the faster the base pulse goes (we won't hear it, regardless). Also, A limits the maximum value of C that will be acknowledged: if we set the pulse to have a width of say 10, but the pulse resets at 3, 3 is all we get.

    So, let's say that we set A to 3:

    The random number generator comes up with a series like this

    2, 125, 15, 200, 37, 42, 1 (everything is 8bit -values go from 0 to 255)

    , which will give us

    2, 3, 3, 3, 3, 3, 1

    , and we won't hear anything during all those 3s.

    Usually I set A (OCR1C, in the program) to 255 to get maximum resolution, but in the noise generator I thought it would be interesting to play with it. The lower its value, the longer the silent gaps; since the pulse is always being fed with random values, which are aperiodic, we still hear noise, but with the perceived effect of having a lower density.

    It's a lot to take in, hopefully it makes sense! For the record, I found this effect by experimenting. I had an intuitive idea of what whould happen, but it's only now that I had to explain it that I've put all the theory properly together.

Sign In or Register to comment.