Sign in to follow this  
Glass_Knife

Sound Programming from Scratch

Recommended Posts

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,

 

Share this post


Link to post
Share on other sites

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

Edited by Python Blue

Share this post


Link to post
Share on other sites

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?

Edited by Glass_Knife
can't type

Share this post


Link to post
Share on other sites
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. Edited by Kristoff K.

Share this post


Link to post
Share on other sites

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.

 

 

Share this post


Link to post
Share on other sites

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*. :)

Share this post


Link to post
Share on other sites

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 HEREsmile.png

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

Share this post


Link to post
Share on other sites

Timely topic for me-- I teaching a class at DigiPen on exactly this topic!  (the students' final lab project is a working MIDI synthesizer)

 

There's a very good online introduction to music synthesis and digital audio processing here

http://music.columbia.edu/cmc/musicandcomputers/

 

 

Brian Schmidt

Executive Director GameSoundCon

Brian Schmidt Studios

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this