[LAU] Online resources/books for programming sound synthesis software?

Robin Gareus robin at gareus.org
Thu Apr 12 09:40:26 EDT 2007



Damon Chaplin wrote:
> On Thu, 2007-04-12 at 12:59 +0200, Thomas Janu wrote:
>>> The Jack examples are a great place to start looking at code.  Also, I
>>> wrote a howto for people writing Jack apps for the first time: 
>>>
>>> http://www.dis-dot-dat.net/index.cgi?item=/jacktuts/starting/
>>>
>> That's already great, thanks a lot! ;)
>>
>>> I hope you get more sources in this thread, because I would like to
>>> read more myself.
>> More specifically I'm looking for commented code examples/tutorials on how to
>> emulate sound synthesis, so writing oscillators, filters and so on as well as
>> nice examples of the ``big picture'' so that i can see how it's all put together
>> to form a synth. That'd be really nice.
> 
> I've been learning the same stuff recently as well.

when learning to code, it's easier and more fun to start from scratch
rather than jumping on some existing project!  - But I agree with Loki
that linuxaudio is lacking resources and the wheel has been re-invented
too often already..

http://apps.linuxaudio.org/apps/categories/software_sound_synthesis_and_music_composition_packages
http://apps.linuxaudio.org/apps/categories/softsynths_and_samplers
http://apps.linuxaudio.org/apps/categories/general_synthesis_packages

DSSI and LV2 do have well defined API's and once you got a bit of coding
experience, you will gladly embrace those APIs to get things done more
quickly, and it makes it also easier for others to use your code.

There are also a lot of high-level langs to implement synths or
algorithms. (supercollider, Csound, pure-data, ...)



> I've attached my first attempt at a very basic synth using ALSA MIDI for
> input and JACK for output. (Note that I'm not an audio expert so there
> may be a few errors in it. If anyone spots an error please let me know.)

only glimpsed quickly over it, looks good.
minor detail -  in the jack_process callback:

 add   jack_port_get_total_latency(..) to  Note[i].oscillator_offset;

#robin



More information about the Linux-audio-user mailing list