music 176 syllabus – winter 2020

music 176 – custom programming for music – winter 2020

instructor – tom erbe –

thursday: 2 – 5


this quarter we will be learning music DSP programming on bare metal embedded processors with the STM32F processor. to do this we will cover 4 topics.

  1. c/c++ programming
  2. the STM32Fn development environment and SDK
  3. computer music algorithms


as the class is 3 hours long, we will be spending time in each class making sure everyone can recreate the examples on their hardware. bring your laptop, STM development board, earbuds and MIDI keyboard to class.

  1. basics (basics and compilers – setting up a dev environment)
  2. stm 1 – writing embedded code and c rehash
  3. stm 2 – adding sound (first assignment)
  4. dsp code 1 – amplifiers delay and oscillators
  5. dsp code 2 – filters, waveshaping and fm (second assignment)
  6. stm 3 – integrating DSP code into synth framework. MIDI parsing
  7. stm 4 – incorporating files and filesystems (final project assignment)
  8. dsp code 3 – reverb, fft
  9. workshop
  10. class presentation

••••texts – software

these books are very helpful… recommended as reference.

  • C Primer Plus by Stephen Prata
  • Computer Music by Charles Dodge
  • DAFX by Udo Zolzer

•••••my office hours

1-3 tuesday and 10-2 thursday

pm or email me for other hours

•••••class requirements

3 projects of increasing complexity…. one is a final project. grad students will be required to use their final project in a piece or for research.

****class notes & assignments

class notes and many examples are on assignments will be posted on the week assigned.

****example code

additive sawtooth with polyphony – f4disco-midi-saw

same as above with ADSR, 2 oscillator, multiple waveforms, LFO – f4disco-doublesaw

same as above with addition of filters and wave shaping polynomial –f4disco-oscfilt

an example showing sample playback, simple echo and auto-panning – f4disco-sample-echo

7th week example with sample playback and reverb – f4disco-sample-verb

8th week example using compression, timers, ADC – f4disco-sample-timer-mic

9th week example using the LEAF library – f4disco-leaf