Recently I see more and more audio / DSP related Nim projects appear, which is awesome, I think.
To help me sift through the crop and eventually keep my notes and assessments of all these projects, I have started a document gathering Nim audio development resources:
https://codeberg.org/SpotlightKid/nim-audio-dev
I hope this will prove useful to other too.
Merge requests welcome, but note the goals listed at the top of the document. This is not intended to be list of each and every Nim project, which handles audio in some way [start with nimpkgs for that], but a help for Nim developers to get an overview of and find libraries and code they can use for their own Open Source audio projects.
Share & Enjoy!
Maybe of interest, I just updated a gist with a silly fast oscillator bank
I mostly use it for, non real time, additive stuff. It should be fast enough for real time and it should be relative easy to make it multi threaded.
(just a gist, as I cannot maintain software and I mostly use it as a mouldable piece and not a library)
- single generalized Goertzel filter
- Hoppin' generalized Goertzel filter bank. Again, something to pick from what one needs. The full version allows to specify resolution/ bin width per frequency in the bank. By hand or with some of the included helper functions. After processing the energy can be distributed over a larger fftSize using Gaussian distribution.
There's more, but scattered all over the place.
FYI a while ago I made https://github.com/SciNim/nimfftw3
I haven't needed to maintain it so far since it's mostly C-bindings but if you open PRs / issues I'll make sure to look at it.
Modal synthesis, with a pool for modes so they can decay properly. Uses SoundIo, took quite some time to figure out, but it works.
https://gist.github.com/ingoogni/4c85ff8add8bb1ea5214bbe38d00f626
Go ahead, it's building blocks after all.
Here's another one, 1/4 sine LUT based oscillators. The basic ones and Phase Distortion, ring modulator, AM, wave shaping. All in simple form to start building from.
https://gist.github.com/ingoogni/b115408fb20d58cffa4d09c343a0a057
More cleaning out the vault, using closure iterators for synthesis. The basic oscillators, chaos oscillators (pendulum and attractors), filters, noise colours, wave terrain synthesis. For most of the the parameters can be floats or iterators, so lots of modulation opportunities. I think most of it can be easily converted to object with init & next proc()
https://gist.github.com/ingoogni/9ec4056da4ee04129efc1e74153bf6a5
Iterative Karplus-Strong percussion:
https://gist.github.com/ingoogni/1e8f92ecc5472e8896ac1cecb8f4ab6a
Sounds amazing!!!!!
Just what the doctor ordered.
If I were to put these in a proper repository, would you be okay to license it as MIT (same as Nim) or another Open Source license?
a drum sequencer deconstructed: https://gist.github.com/ingoogni/23c8dd33d62e43fdf0011aceaeb78604
for more ways to create sequences: https://abrazol.com/books/rhythm1/
the sequencer required an edit to the Karplus-Strong percussion, so it works. But I do not understand: https://gist.github.com/ingoogni/1e8f92ecc5472e8896ac1cecb8f4ab6a
ADSR, after Nigel Redmon's work:
https://gist.github.com/ingoogni/cfb66d86eab19f2f574a6bb64b617f0b
About half way now. The rest is a bigger mess and will take quite some time and there's graphics work waiting.
Oh I see! Well the Karplus Strong sounded pretty good, for one :)
Now the things is that I was going to develop most of these myself, so Ansatz seems to be a lot better than Reissbrett :)
So thanks, good to know I can just pull in whatever is useful.
Bierdeckelhinterseite, is where most of my work starts ... and ends.
go ahead and make something beautiful.