Lab 1: Sounds with Wavesynth

Exploring wavesynth

For this part of the lab, work through as many steps as you have time for. We don't expect you to get all the way to the end!

To explore more of the possibilities of the wavesynth library we can make a simple melody. Below is one possibility. You and your partner have creative freedom in this task. The goal is to learn how to arrange notes and beats; their precise pitches/volumes/durations are up to you.


When working with wavesynth, our quick-reference page provides a description of the key concepts and an overview of the functions available. You don't need to read through it all now, but you can refer back to it when you have questions about how something works.

Step 0: Start a new file and imports

For this task, create a new file named (make sure to save it in your lab01 folder where is, or else importing wavesynth will not work).

As we did in the previous part, we'll need to import wavesynth to use music commands. At the top of your new file, start with a comment indicating your names and the purpose of the file, and then add code to import those libraries, like this:

# Authors: Peter and Sohie
# Purpose: CS 111 lab 1 musical tune

from wavesynth import *

Step 1: Add some notes

Use the addNote function a few times to add a few notes to your song. Use climbUp and/or climbDown in between to control the pitch of each note. You can use setPitch beforehand to pick a starting pitch.

For example, here's a melody with four 1/4 second notes, which go up one step, up one more step, and then back down to the starting pitch (C4):

To get your song to play (and save it), you'll also need to add these lines of code to the end of your file:


Step 2: Add some beats

To make our melody sound nicer, we can add some drum beats in time with the notes. First, use rewind to back up to the beginning of the song, and then use addBeat and/or addRest to add some beats that happen at the same time as some of the notes. You may want to use quieter to make the beats a bit quieter than the notes.

Here's the same tune with beats on the first and third notes:

Step 3: Add a chord

For a finishing touch, we can add a chord to compliment the melody. A chord is when multiple notes are played at once, and these often last longer than individual notes of a melody. You can try different things, but we've added a chord of three 1-second notes that play together, at the same time as the four melody notes play in sequence. To do this, we rewound to the beginning, then added one note of the chord, then rewound again, added the second note, and finally rewound a third time and added the last note.

To create a nice-sounding chord, you can start by picking a pitch that's one octave below your first note. In this case, we used C4 for the first note of the melody, we use setPitch(C3) to set the base pitch of the chord one octave below that. For a "major" chord (which sounds "bright" or "cheerful") we can set the pitches using half-steps: four half steps between the first two notes, and three between the second and third notes. The halfStepUp function lets us change pitch in half-step increments.

Here's what the result sounds like (feel free to ask for help figuring out how to get this working with code).

Step 4: Continue

If you've gotten this far and there's still time left, you've figured out all of the basics of wavesynth, but feel free to experiment further, and if you want, make your tune longer. Just remember to keep track of how far to rewind if you start adding notes to the melody. You may want to use setTime instead in some cases, which jumps to a particular point in time.

Table of Contents