teaching machines

Digital Musical Instrument Design

Welcome to Digital Musical Instrument Design, one of the courses at the 2018 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. Tiangle, Part III
  6. Midiometer
  7. Hot vs. Cold Inlets

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

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

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

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

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *