music 176 – custom programming for music – winter 2020
instructor – tom erbe – tre@music.ucsd.edu
thursday: 2 – 5
•••••focus
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.
- c/c++ programming
- the STM32Fn development environment and SDK
- computer music algorithms
••••schedule
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.
- basics (basics and compilers – setting up a dev environment)
- stm 1 – writing embedded code and c rehash
- stm 2 – adding sound (first assignment)
- dsp code 1 – amplifiers delay and oscillators
- dsp code 2 – filters, waveshaping and fm (second assignment)
- stm 3 – integrating DSP code into synth framework. MIDI parsing
- stm 4 – incorporating files and filesystems (final project assignment)
- dsp code 3 – reverb, fft
- workshop
- 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 http://synthnotes.ucsd.edu. 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