Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How would I implement retro noise? #192

Open
ultrasound1372 opened this issue Sep 26, 2020 · 0 comments
Open

How would I implement retro noise? #192

ultrasound1372 opened this issue Sep 26, 2020 · 0 comments

Comments

@ultrasound1372
Copy link
Contributor

Many pseudo-random noise generators in video game consoles used linear feedback shift registers to generate their noise, which created a string of pseudo random bits that could be read at many speeds, producing a noise that can change pitch and go from a hiss to a rumble, or to be ramped and create all kinds of sound effects. I'm wondering how I would implement this? It doens't have to be put into core, but I am not entirely sure of the arithmetic of LFSR's and how I would adapt it to floating point. The only way I've found to do something like it is using a table, a TableFill, a Noise generator, and an Osc. This is a rather clunky method and the full white frequency has to be 1, meaning smaller values get ridiculously small floating point. If I don't include the continuous TableFill, the noise will become very obviously looped, though I suppose I could extend the table to longer than a second to mitigate this. If I use a Phasor and Pointer instead of an Osc I can produce something like so-called "periodic noise", where the read period is much shorter and becomes somewhat metallic sounding. But this just seems very clunky and inefficient, especially since the fill means my periodic keeps morphing, and I don't really think there's a way for me to control it in the way that retro games did to create sound effects. Might I be helped with a PyoObject to do this for me? A PyoObject would probably make more sense since I could then implement the logic of the LFSR directly, somehow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant