Sound Programming from Scratch

Started by
9 comments, last by bschmidt1962 11 years, 2 months ago

Not sure if this question is better asked here or in the programming forum. I've been playing with sound programming, but I find the APIs hide too much stuff. When I learned 3D graphics, I started by learning from scratch. I would like to know if anyone has any resources (books or online) that teach audio programming from scratch. Much like writing a software renderer from scratch to learn about the algorithms.

I've googled and amazoned, but I don't really know enough about the subject to make a decision if the books I found are any good. And man, I though software books were expensive. Audio books are not cheap. :)

Thanks,

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

Advertisement

Honestly, I'm not sure which forum this belongs in. My hunch, however, would be the programming forum, as you don't have to be a programmer of code to be able to make music.

As for the main topic, I've fluctuated over what I've wanted to do specifically in music, so I sometimes performed a similar search. Sadly, all results I've found so far are either completely irrelevant, or relate only to programming in general.

UPDATE: just found this article. Not sure yet if it has everything you're looking for, but it's a start, at least.

http://www.metafilter.com/105057/Write-Your-Own-Software-Synth

Python Blue - composer available for work

Official Website
Bandcamp

Honestly, I'm not sure which forum this belongs in. My hunch, however, would be the programming forum, as you don't have to be a programmer of code to be able to make music.

Thanks what I thought, but I thought i'd ask here first. I've purchased a book that I thought would help, but it was written for a sound designer. Whenever a topic would start to get interesting (from my perspective) the author would say "Go ask your programmer." as if we're some commodity sound people keep in the basement until they need us. Actually, since I'm in my basement right now, that may be true. smile.png But either way, where did these programmers learn all about audio programming?

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

But either way, where did these programmers learn all about audio programming?

Did you see my edit to my response? :) If not:

http://www.metafilter.com/105057/Write-Your-Own-Software-Synth

Python Blue - composer available for work

Official Website
Bandcamp

I will be checking it out. Thanks. ph34r.png

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

This might be totally irrelevant to your interest, but have you considered making your own ensembles in Reaktor 5? I know this isn't quite what you are looking for, but still, it could be helpful to learn about the signal flow in some particular DSPs or synths.

Other than that, there's also Csounds with its multitude of manuals and tutorials.

One of the issues sending a question to the internet, whether it's to Google, a forum, or Wikipedia, is that if you don't know a lot about the subject, it is hard to ask the right questions.

I'm not trying to figure out how to use Reaktor 5 or Csounds, I want the knowledge so that I could create those programs from scratch by writing all the code by hand.

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

One of the issues sending a question to the internet, whether it's to Google, a forum, or Wikipedia, is that if you don't know a lot about the subject, it is hard to ask the right questions.

I'm not trying to figure out how to use Reaktor 5 or Csounds, I want the knowledge so that I could create those programs from scratch by writing all the code by hand.

Ok I'm tired and ready for bed, so apologies in advance as this will be wishy washy and probably contain errors:

Firstly this is a programming question. A lot of musicians using such software won't have a clue how it works underneath.

Things you want to have a bit of understanding about:

1) What is sound. Get a physics book or wiki and make sure you understand what it is. Soundwaves of compression travelling in the air.

2) As background it's slightly helpful to know how people perceive sound in the ear through the cochlear etc. And that slightly different versions are received in left and right ears, and the brain is able to interpret these differences to perceive direction, distance etc.

3) Understand how computers, and all digital audio devices (cds, dvds etc) output audio. It's done as samples. If you are interested you can read back on the history of this with things like the Fairlight CMI, Synclavier etc.

4) If you are doing things yourself (and sounds like that's what you want) you'll be writing raw audio data out for your device (PC, tablet etc) to play. There are various APIs for this. Which you use isn't that important to your understanding of the rest of the system, as they all tend to do the same thing.

5) Making a music app is about mixing together a bunch of sound sources (could be samples, software instruments, whatever) with the right timing, then usually rigging it up so you can add audio effects to the mix, like reverb, delays, flangers etc. There are lots of ways of doing this. You might be inspired by another program or come up with your own way of doing it.

6) Depending on what your app is to do, you will probably have to spend a lot of time thinking about your GUI, how your sequencer works, tracks patterns. There is no 'rule book', so it's not realistic to expect someone to lay out exactly how you should do this for your program.

7) For your sound sources I'd suggest starting with being able to just handle samples for instruments, and varying the pitch. That's pretty easy. I'd also suggest using a plugin system for your instruments, and your effects. You can also have a look at the specs for things like VST plugins if you want ideas, or want to be able to use them in your app (I dunno the practicalities of this).

8) If you want to use realtime MIDI input you need to think about this from the outset, because this will have a lot of design implications (low latency etc).

Right bedtime *yawn*. :)

In case anyone else is interested in the responses, Glass_Knife re-asked this question in one of the programming forums and got a number of helpful responses from a programmer's point of view. You can view the topic HERE. smile.png

- Jason Astle-Adams

In case anyone else is interested in the responses, Glass_Knife re-asked this question in one of the programming forums and got a number of helpful responses from a programmer's point of view. You can view the topic HERE. smile.png

Thanks. I should have posted the link to the other one. Many people have responded with online programming resources. Check it out!

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

This topic is closed to new replies.

Advertisement