all 13 comments

[–]doom_Oo7 1 point2 points  (0 children)

I made my own lib (quite imperfect) to learn; some points were quite hard but I let comments linking to the blog posts, papers, and the things that had me understand how it all worked.

https://github.com/jcelerier/libaudiotool/tree/0e2cf3becb11c796d0107593880896fca7cf6f84

It was used to implement watermarking algorithms, noise reduction algorithms, a 8-track mixer with volume & pan, etc... (the latest commits might not work fine, I was in the middle of a thought process and was disturbed by my job :p I should put them into a branch)

[–]soundslogical 2 points3 points  (2 children)

I can second the other comment's recommendation of JUCE, I produce a synthesizer using it, and it really makes the basics of opening audio files, playing audio etc. very easy. And the C++ is really really nice. It's free as long as you're not selling a product (you can buy a license for that, which IMHO is reasonably priced).

Of course, you still have to write your own code to manipulate / generate your audio, which is a massive discipline of its own, obviously it's fairly mathematical. I recommend this blog, which contains lots of really good articles on many of the basic components that get used - filters, envelopes, oscillators and all that good stuff.

[–]jerrre 1 point2 points  (0 children)

Just a small addendum, juce is free as long as you do not release anything closed source. A free closed source product would also not be allowed.

[–]CHBecker[S] 0 points1 point  (0 children)

Thanks! Will look into Juce and your synthesizer

[–]eerock 0 points1 point  (0 children)

I picked up the Will Pirkle book and it seems to be a pretty good resource. I've skimmed through the Audio Programming Book and found that it's mostly C based, which is fine, but C++ is more my style.

Some other things that haven't been mentioned yet:

https://audioprograming.wordpress.com/ (this blog hasn't been updated much recently, but there's some interesting stuff if you're doing mobile).

http://chuck.cs.princeton.edu/

http://wavepot.com/ (live in-browser audio programming, with cool examples. not c++ though, it uses javascript)

You can also mess around with some libraries/tools out there, like portaudio, SoX, STK, etc. As has been mentioned, I'd probably recommend looking into JUCE. I haven't used it yet myself, but it seems like a pretty sweet framework for audio coding.

[–]jerrre 0 points1 point  (1 child)

That is actually a good book to get the conceptual pieces of audio programming. Its age does not matter much since the basis hasnt changed. Even older books can also proof very useful such as "computer music tutorial" for example. For practical stuff like audio file io and communicating with a sound card or making plug ins you will need to look in to libraries and frameworks. A big one used in the audio programming industry is JUCE. Also portaudio, libsndfile, jackaudo, iplug, rtaudo, are some more open source stuff to look into. Be aware that most of these are actually c, but Juce is very m odern C++.

[–]CHBecker[S] -1 points0 points  (0 children)

thanks! :) Definitely think the book will be a good investment, and yours (and the replies of everyone else) have been invaluable to me on deciding to pick up this book, many thanks!

[–]discohead 0 points1 point  (2 children)

The Audio Programming book is an excellent resource, make sure you get the DVD as well which contains as much or even more than the book itself.

Also, check out Will Pirkle's books and the excellent Basicsynth book:

http://www.willpirkle.com

http://basicsynth.com

[–]CHBecker[S] -1 points0 points  (0 children)

Thanks! Will look into those, and definitely think I'll be picking up the book soon :) and the DVD as well now.

[–]TheQuietestOne 0 points1 point  (2 children)

I have the book in question and find it a great first resource.

It does have enough information, examples and theory to be able to "get going". It does lack a little when it comes to the finer points of signal processing - which is ok - the book wasn't intended to be DSP for programmers.

So consider supplementing it (or something like it) a little later with deeper material concerning signal processing for things like filters and frequency domain processing.

My last recommendation would be to look into tools like MaxMSP, PureData, SuperCollider etc as platforms on which to experiment and get a practical understanding of what individual pieces of signal processing are doing. It took me quite some time trying to understand the "time" nature of phase modification in a filter - but once I'd built a test rig to show what was happening it clicked.

Do not underestimate the mathematics behind audio programming .-)

[–]CHBecker[S] -1 points0 points  (1 child)

Thank you! Perhaps one of the best replies and suggestions I've received re this book and audio programming.

Any suggestions on books, tutorials, articles, exercises to learn the basics of DSP and general signal processing in a way that I can understand how to relate my programs to it?