3 ms·
I've been getting into this over the past couple of years too and I feel like I sort of hit a wall. I am comfortable writing low level efficient real-time code
by munificent 5y ago
I've been getting into this over the past couple of years too and I feel like I sort of hit a wall.
I am comfortable writing low level efficient real-time code in C (I'm an ex game dev). I understand most synthesis techniques in pretty good detail. I could probably write a book on subtractive synthesis, and I have implemented a complete functioning FM synth.
I get the fundamental concepts around DSP: Nyquist, sampling, Fourier analysis, etc.
But when it comes to sitting down and, say, designing and implementing a filter from scratch, I'm pretty well stuck. Part of it is that most of the material I've found either goes straight to heavy calculus (which I can kind of hack but am pretty rusty on) or to MATLAB (which I don't have).
Likewise, implementing a simple digital sawtooth or square oscillator analytically is trivial. Sample playback is also a piece of cake. But doing those without aliasing seems to jump from super-easy mode all the way to hardcore nightmare. All of a sudden I'm trying to understand what minBLEPs are and other stuff that feels over my head.
Any recommendations on how to get over this hump? Should I get MATLAB?
- Flex247A 5y agoHave you tried GNU Octave? It seems to be a replacement for MATLAB.
- munificent 5y agoI have not, that's a good pointer. Thanks!
- rmnclmnt 5y agoAs an alternative to MATLAB/Octave, may I suggest using Python with Jupyter Notebooks? For exploratory/analysis/prototyping work, I have not found a better platform and ecosystem. These notebooks are really powerful feature-wise, you can mix Markdown notes/documentation with code blocks with data visualization natively, which is a no brainer when doing your research work.
- munificent 5y agoI don't think it's an issue of having some general language for doing math work. My understanding is that MATLAB specifically has a ton of built in functionality for filter design and coefficient calculation.
- burntoutfire 5y agoHow does Jupyter compare with an environment like Spyder, which basically mimics the MATLAB approach? Can I inspect variables, run arbitrary commands against them in a REPL?
- iainctduncan 5y agoI'd suggest looking at code for how people have done it other projects, there are some really good open source implementations of those sorts of things in languages like Csound, PureData, Faust, SuperCollider, etc. Csound is old school, but the band limited VCO is brilliant (the vco2 opcode)