teaching machines

SCSI 2019: Computational Music

July 15, 2019 by . Filed under electronics, music, public.

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.

  1. Oscillating
  2. Seeing Waveforms
  3. Tiangle, Part I
  4. Tiangle, Part II
  5. Midiometer
  6. Hot vs. Cold Inlets

If you finish early, consider completing these extra exercises:

Complete this homework for tomorrow:

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.

  1. Monodrone, Part I
  2. Monodrone, Part II
  3. Monodrone, Part III
  4. Abstractions
  5. Pentatouch, Part I
  6. Pentatouch, Part II

If you finish early, consider completing these extra exercises:

Complete this homework for tomorrow:

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.

  1. Chords
  2. Chorder, Part I
  3. Chorder, Part II
  4. Chorder, Part III

If you finish early, consider completing these extra exercises:

Complete this homework for tomorrow:

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.

  1. Arpeggiator, Part I
  2. Arpeggiator, Part II
  3. Arpeggiator, Part III

If you finish early, consider completing these extra exercises:

Complete this homework for tomorrow:

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.

  1. Music Mouse, Part I
  2. Music Mouse, Part II
  3. Music Mouse, Part III
  4. Music Mouse, Part IV
  5. Music Mouse, Part V
  6. Music Mouse, Part VI

If you finish early, consider completing these extra exercises:

Extra