I don't know. Maybe it's time to make this public.

If you are trying to learn audio programming and DSP from scratch (like, *really* from scratch), these notes might be the place to start:


They were lecture notes for a student-led 1-credit audio programming course that I taught in the spring this year, but it's now a course for everyone. Some sections are still in revision, but the main contents are mostly complete.

It's probably more low level and UNIX-centric than most of the audio programming tutorials you can find, so don't expect to learn how to make an audio plugin using JUCE or how to make fancy GUIs etc. But maybe this can be a good thing.

1. you need to know basic C and UNIX shell utilities
2. it contains math, but at most calculus level


All the source code can be found on tig:


Everything there is dual licensed under unlicense or MIT.

The most useful repository is probably mwe, or "minimal working examples":


They are mostly single-file, explorable examples for various multimedia libraries. Can be a great starting point if you are looking for inspirations for audio related projects.

@kst That's amazing resources, thansk for sharing ! How did you achieve such result for your website, it is clean looking, looks as if it was hand-crafted ?

@themartylake @kst I would also love to know what kind of training and/or technology helps you make such websites

@yaxu @themartylake It's really nothing fancy about my setup, just some precompiled html + css.

At one point it was hand-written html, but it became cumbersome to embed diagrams and increment repl counter so I later switched to hakyll, mainly because it's easier to hack pandoc in haskell. Though any static site generator should give you similar results as long as you can control the compiler.

The diagrams and formulae are all offline rendered using latex, converted to svg using dvisvgm, with some post-processing to adjust baseline, so basically I have every tex package at my disposal, though I mainly just use tikz. I don't know why pandoc does some extra work to parse tex code in a markdown file into the AST, but it was quite convenient since all I need to do is to compile the tex code in the AST into an SVG.

Design-wise, it's just an attempt to write tex documents on the web. The notes were supposed to be tex documents, but I don't like handling pagination for diagrams so I translated the entire style to the web.

As for tig, it is created using stagit [1].

[1]: codemadness.org/git/stagit/fil

@kst hey! just wanted to reach out and thank you for sharing your notes for your audio programming course. I'm not using C, but trying to understand building DSP from scratch with Rust, and the chapters on oscillators has been just what i need to get down to the technical/mathematical details that explain the pops and skips being generated by my broken, naive osc algorithm :D

its lovely and thank you so much!

Sign in to participate in the conversation

Welcome to post.lurk.org, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that.

<svg xmlns="http://www.w3.org/2000/svg" id="hometownlogo" x="0px" y="0px" viewBox="25 40 50 20" width="100%" height="100%"><g><path d="M55.9,53.9H35.3c-0.7,0-1.3,0.6-1.3,1.3s0.6,1.3,1.3,1.3h20.6c0.7,0,1.3-0.6,1.3-1.3S56.6,53.9,55.9,53.9z"/><path d="M55.9,58.2H35.3c-0.7,0-1.3,0.6-1.3,1.3s0.6,1.3,1.3,1.3h20.6c0.7,0,1.3-0.6,1.3-1.3S56.6,58.2,55.9,58.2z"/><path d="M55.9,62.6H35.3c-0.7,0-1.3,0.6-1.3,1.3s0.6,1.3,1.3,1.3h20.6c0.7,0,1.3-0.6,1.3-1.3S56.6,62.6,55.9,62.6z"/><path d="M64.8,53.9c-0.7,0-1.3,0.6-1.3,1.3v8.8c0,0.7,0.6,1.3,1.3,1.3s1.3-0.6,1.3-1.3v-8.8C66,54.4,65.4,53.9,64.8,53.9z"/><path d="M60.4,53.9c-0.7,0-1.3,0.6-1.3,1.3v8.8c0,0.7,0.6,1.3,1.3,1.3s1.3-0.6,1.3-1.3v-8.8C61.6,54.4,61.1,53.9,60.4,53.9z"/><path d="M63.7,48.3c1.3-0.7,2-2.5,2-5.6c0-3.6-0.9-7.8-3.3-7.8s-3.3,4.2-3.3,7.8c0,3.1,0.7,4.9,2,5.6v2.4c0,0.7,0.6,1.3,1.3,1.3 s1.3-0.6,1.3-1.3V48.3z M62.4,37.8c0.4,0.8,0.8,2.5,0.8,4.9c0,2.5-0.5,3.4-0.8,3.4s-0.8-0.9-0.8-3.4C61.7,40.3,62.1,38.6,62.4,37.8 z"/><path d="M57,42.7c0-0.1-0.1-0.1-0.1-0.2l-3.2-4.1c-0.2-0.3-0.6-0.5-1-0.5h-1.6v-1.9c0-0.7-0.6-1.3-1.3-1.3s-1.3,0.6-1.3,1.3V38 h-3.9h-1.1h-5.2c-0.4,0-0.7,0.2-1,0.5l-3.2,4.1c0,0.1-0.1,0.1-0.1,0.2c0,0-0.1,0.1-0.1,0.1C34,43,34,43.2,34,43.3v7.4 c0,0.7,0.6,1.3,1.3,1.3h5.2h7.4h8c0.7,0,1.3-0.6,1.3-1.3v-7.4c0-0.2,0-0.3-0.1-0.4C57,42.8,57,42.8,57,42.7z M41.7,49.5h-5.2v-4.9 h10.2v4.9H41.7z M48.5,42.1l-1.2-1.6h4.8l1.2,1.6H48.5z M44.1,40.5l1.2,1.6h-7.5l1.2-1.6H44.1z M49.2,44.6h5.5v4.9h-5.5V44.6z"/></g></svg>