SCSI 2019: Computational Music
Welcome to Computational Music, one of the courses at the 2019 Summer Computer Science Institute at Carleton College. This page contains all the course notes and exercises that you will need throughout the week.
Day 1
On this day we introduce the notion of a sound wave, and we see how the frequency of these waves accounts for the different pitches we hear. Using Pure Data and Arduino, we build our first instrument, which uses a potentiometer to control the emitted frequency and sounds like a slide whistle. We eventually abandon the physical description of sound in favor of MIDI, and we adapt our instrument to send messages to a MIDI controller.
If you finish early, consider completing these extra exercises:
Complete this homework for tomorrow:
- Read sections 3.1.1 through 3.1.4 of Digital Sound & Music.
- If you have time, work through Learning Synths.
Day 2
On this day we build up a piano-like instrument using push buttons. We introduce two major computational ideas: conditional logic and abstractions. Conditional logic allows us to program choices into our instruments. Abstractions have two significant advantages: they hide complexity, and they are reusable.
- Monodrone, Part I
- Monodrone, Part II
- Monodrone, Part III
- Abstractions
- Pentatouch, Part I
- Pentatouch, Part II
If you finish early, consider completing these extra exercises:
Complete this homework for tomorrow:
- Read Chord Building 101.
- If you have time, work through Learning Music.
Day 3
On this day we build an instrument that can play multiple notes simultaneously—as chords. We introduce two major computational ideas: iteration and arrays. To produce pleasing sounds, we’ll investigate scales and common chord structures.
If you finish early, consider completing these extra exercises:
Complete this homework for tomorrow:
- Read Arpeggios.
- Experiment with this arpeggiator. Press the play button in the center and then tinker.
Day 4
On this day we build an instrument that can play multiple notes in quick succession—as arpeggios. We continue our discussion of conditional logic, iteration, abstraction, and arrays. We extend arrays from one-dimensional sequences to two-dimensional tables. We also introduce some low-level bit manipulation.
If you finish early, consider completing these extra exercises:
Complete this homework for tomorrow:
- Work through How Generative Music Works.
Day 5
On this day we build an instrument that allows the player to walk through a 2D space. One axis alters a melody, and the other harmony. We’ll use a joystick for input. We continue our discussion of conditional logic, iteration, abstraction, and arrays. We also introduce the modulus operator.
- Music Mouse, Part I
- Music Mouse, Part II
- Music Mouse, Part III
- Music Mouse, Part IV
- Music Mouse, Part V
- Music Mouse, Part VI
If you finish early, consider completing these extra exercises: