Take the 2-minute tour ×
Signal Processing Stack Exchange is a question and answer site for practitioners of the art and science of signal, image and video processing. It's 100% free, no registration required.

For someone who has some experience in software development, loves his synths and knows the [very] basics of digital audio representation, what are the first steps he should follow in order to program a music synthesizer, DSP-wise?

share|improve this question
add comment

6 Answers

up vote 15 down vote accepted

Get Real Sound Synthesis for Interactive Applications, and download the Synthesis Toolkit. That will give you practical introductions and quality source code for most digital synthesis methods in use. Then pick whichever method you find most interesting, and start modifying the corresponding STK code to do what you want. Then try building something similar from scratch.

In addition, like hotpaw2 suggested, anything from JOS is also great introductory material. In particular, Introduction to Digital Filters with Audio Applications and Mathematics of the Discrete Fourier Transform both start from the basics, and don't assume a lot of background.

From a digital filter/effects perspective, another good starting point is to check out Faust. You don't even have to learn their block-diagram signal processing language, you can just use the examples to dump out VST, LADSPA, etc. template code as quick way of getting something running [which you can then modify].

That being said, it's even easier to start out with sound rendering, which is basically the same thing, but without worrying about real-time operation or interactivity. You just save wav files to disk. It's a great way to experiment with new techniques before going through the trouble of making them run quickly.

share|improve this answer
    
+1 for the book alone. –  Phonon Sep 12 '11 at 16:08
    
Perfect answer - it spans a very well balanced amount of matters. Thank you! –  vemv Sep 14 '11 at 10:36
    
@vemv Thanks. Glad to help. –  datageist Sep 14 '11 at 17:27
add comment

I would read an introductory book on DSP plus some books on the subject of computer music (Amazon and other bookstores list several). There's also a wealth of course material from Stanford on DSP and sound synthesis. Books on the human auditory system and psychoacoustics might also be helpful.

share|improve this answer
add comment

First you need to decide what kind of synthesiser you want to build - additive, FM, sample-based, etc. You also need to decide whether you want to emulate some kind of existing analogue synthesiser or just design your own.

The rest is fairly easy - you just need to implement the various synthesiser building blocks (e.g. oscillators, filters, noise generators, envelope shapers, etc) in software and then implement a way of "wiring" these together and controlling their parameters.

See Hal Chamberlin's book, Musical Applications of Microprocessors, which is a good introduction to many of the basics.

share|improve this answer
add comment

I'm quite surprised nobody mentioned SynthMaker yet. It's ridiculously easy to use, and though it makes it difficult to go low-level (be sure to use developer mode), you can learn a lot about Synthesizer architecture with it, and also about general DSP. And you can actually make use of the things built with it, in fact, I use it to construct almost all of my plugins.

share|improve this answer
    
As a software developer I've been always reluctant to wizards but I bet DSP is a deep world so SynthMaker could be handy. In addition a couple of mates have had a good experience with it :) –  vemv Sep 14 '11 at 10:41
    
I was going to mention SynthMaker myself. It's a great program. –  Matt M. Nov 30 '11 at 21:28
add comment

As some of the other contributors have mentioned, a good primer on DSP is a must. This is a great book> http://www.dspguide.com/ and the author has kindly provided a full and free PDF download. Another common music tech course book which gives good high level views of various synthesis techniques is> http://www.amazon.com/Computer-Music-Tutorial-Curtis-Roads/dp/0262680823. I would also reiterate what the previous contributor suggested, Synthmaker, which is a very convenient visual development environment for developing VST plugins. Finally, if you just want to experiment without going to deeply into it you could try using Csound which is a programming language specifically designed for sound synthesis.

share|improve this answer
    
Thank you, must try the former book. –  vemv Sep 14 '11 at 10:48
add comment

I just want to chime in since most of the answers focus on DSP issues. If you don't use a block design system like SynthMaker, you are going to spend a lot of development time in dealing with voice management. If you were writing a VSTi instrument plugin from scratch, the learning curve is much longer than for effect plugins. You will have to manage each note object, decide what happens when there are 20 notes on if your DSP is only fast enough for 16 voices, respond to pitch bend, portamento, modulation, etc. This is no easy task and that's why I highly recommend starting with Buzz or SynthMaker, and rolling your own when you finally come up against a wall.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.