Teaching Sound Synthesis in C-C++ On The Raspberry Pi Presentation
Teaching Sound Synthesis in C-C++ On The Raspberry Pi Presentation
18.05.2017
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Course outline
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Alternatives
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
API
JACK[18]
JACK clients widely used in research (WONDER[16], SSR[13])
simple, free, modular, de-facto standard
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Hardware
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
OS
1
https://www2.ak.tu-berlin.de/~drunge/klangsynthese
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Libraries
jack2[18]
jackcpp[29]
sndfile[19]
rtmidi[33]
liblo[23]
yaml[21]
fftw[22]
boost[5]
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
JACK settings
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Starting projects
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Examples: DSP
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Terminal, SSH (with X-forward) with examples for Linux, MacOSX and
Windows
Systemd: (Auto-)starting of JACK and projects
Networking DHCP-based and creating hotspot
Using ALSA tools to identify and setup devices
GCC to compile programs (with rudimentary build scripts)
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Vector Synthesizer[25]
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Analysis: Matlab script to extract CQT spectra and store in a plaintext file
One table per octave from example instruments
Synthesis: Reading above tables and generating (interpolated) tables for
every MIDI note hit
Polyphonic, but high number of sines being processed, only a few notes
could be played simultaneously
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
RoMaSynthi[15]
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
AKTpi[27]
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
OS
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
IDE
vim (2)
Sublime (2)
Visual Studio
Atom
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Debugging
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
(Auto-)Starting JACK
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Audio interfaces
Renkforce
ESI Dr. DAC nano
EC Technology USB Sound Card
Focusrite Scarlett 2i2
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Problems
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Terminal/Visual
terminal visual
100 0
80 20
90 10
90 10
95 5
100 0
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Environment/Project
environment project
50 50
20 80
30 70
10 90
60 40
30 70
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Improvements
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Hardware
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Preparation
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Contact
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Bela homepage.
https://bela.io.
FAUST - Homepage.
http://faust.grame.fr/.
Linux Audio Conference 2015 - Workshop: Arch Linux as a lightweight audio platform - Slides.
http://lac.linuxaudio.org/2015/download/lac2015_arch_slides.pdf.
Pacman homepage.
https://www.archlinux.org/pacman/.
Raspberry PI Homepage.
https://www.raspberrypi.org/products/raspberry-pi-3-model-b/.
systemd homepage.
https://www.freedesktop.org/wiki/Software/systemd/.
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
Cycling 74.
Cycling 74.
https://cycling74.com/.
Marije AJ Baalman.
Updates of the wonder software interface for using wave field synthesis.
LAC2005 Proceedings, page 69, 2005.
Paul Davies.
JACK API.
http://www.jackaudio.org/.
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
John W. Eaton.
GNU Octave.
https://www.gnu.org/software/octave/.
Clark C. Evans.
YAML: YAML Aint Markup Language.
http://yaml.org/.
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi
Outline Setup Course Projects Feedback Conclusions
MathWorks.
Matlab.
https://www.mathworks.com/products/matlab.html.
Alex Norman.
JackCpp.
http://www.x37v.info/projects/jackcpp/.
Miller Puckette.
PureData.
https://puredata.info.
David Runge.
uenv homepage.
https://git.sleepmap.de/software/uenv.git/about/.
Gary P. Scavone.
RtMidi.
http://www.music.mcgill.ca/~gary/rtmidi/.
Jules Storer.
JUCE.
https://www.juce.com/.
Henrik von Coler, David Runge Technical University of Berlin - Audio Communication Group
Teaching Sound Synthesis in C/C + + on the Raspberry Pi