Skip to content

gtzan/synthesizers_cs_perspective

Repository files navigation

Synthesizers: a computer science perspective

George Tzanetakis

  1. Is this course for you ?
  2. Course Outline January 2022
  3. Uvic course outline January 2022
  4. Discord server for discussions, January 2022
  5. Project Ideas
  6. Resources

A repository containing information and resources used in the teaching of the course Synthesizers: a computer science perspective. This course is developed by George Tzanetakis and was first taught in January 2023 as 4th year computer science and graduate topics course. Synthesizers are musical instruments that generate sound using electrical signals. They generate sound waveform using a variety of synthesis methods and modify the resulting waveforms using various types of audio effects. The various sound generating and transforming modules are connected in various topologies and controlled using a variety of hardware controls such as sliders and rotary knobs and typically a keyboard for playing notes similar in layout to piano and organ keyboards. The course explores synthesizers using a computer science pespective with a focus on software implementation.

This is not a course about hardware design, or about how to write music using synthesizers, or about how to design sounds although these topics will be touched upon. It is more a course exploring how one can better understand how synthesizers work by implementing various synthesis methods and audio effects and looking at existing software frameworks and implementations. A pluralistic approach will be followed in which the same concepts will be implemented in a variety of programming languages and software frameworks with students working on multiple group projects. We will be focusing on the digital synthesizers of the 1980s as they are simpler to understand and implement but will also discuss both earlier approaches as well as more modern devices and concepts. There are many software emulators of older synthesizers and we will be looking at how they work and how one would go about implementing one. By the end of the courses students will have learned how to create software emulators of hardware synthesizers as well as pure software synthesizers using a variety of programming lagnuages and software frameworks.

The course is structured in learning modules covering different concepts related to synthesizers. Each module contains the following components:

  1. Signal processing description: a conceptual overview of the concepts using digital signal processing notation and concepts
  2. Software implementations: software implementations of the concept that focus on understanding and readability
  3. Historical Dive: historical information related to the concept
  4. Software Anatomy: exploring and understand existing implementations of the concept
  5. Music/Videos: fun but releveant things to listen to and view
  6. Guest speakers/conversations: discussion of the concepts covered with experts

The following topics will be covered:

  1. Oscillators
  2. Filters
  3. Spectral analysis
  4. Additive and subtractive synthesis
  5. FM synthesis, LFOs, modulation
  6. Protocols (MIDI, Open Sound Control)
  7. Samplers, drum machines, arpeggiators
  8. Sampling and wavetables
  9. Modal Synthesis
  10. Wavescanning
  11. Phasevocoding
  12. Vocal synthesis
  13. Physical Modeling
  14. Virtual analog synthesis
  15. New interfaces for musical expression

The following resources are relevant to this course: Resources

The assignments for the course can be found here:

  1. Assignment 1
  2. Assignment 2
  3. Assignment 3
  4. Assignment 4

There are several devices that can be used by the students for their projects and just simply playing around: Devices

About

Synthesizers: a computer science perspective

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages