data sonification: hw4

Due 11:59pm on Wednesday, November 3 in the Homework Factory


Create a binaural sound file which sonifies a time series you've chosen to listen to.

Your data source can be anything, and here are some good places to look:


Here are three example data files:

Here are chuck files to get you started:

Chuck can be run without miniAudicle. In a terminal, launch chuck by providing the chuck code file and the data filename as an argument to it. Arguments are preceded with a colon. For instance:


reads in and sonify the night temperature data file, while


reads in and sonify the dry white wine sales data file.

Alternatively, we can shred two chuck files, where the first chuck file is, and the second chuck file specifies the data file(s) to be used. In the following example, the second chuck file (hw4-SinOsc-wineThenPort) uses two data files and plays them in sequence:


In this case, no argument is needed to because the data filenames are coded in the content of the second file. Since no arguments are passed to, handles only the reading in files part, while all data-to-sound mappings are defined in Also note the syntax: we shred multiple chuck files in the terminal by separating them with a space.

Important: you may need to modify the dataDir variable (line 2 in and line 5 in to have the paths point to where you've downloaded the data files on your computer.


For developing your own versions of the homework, you'll want to use the miniAudicle. (Once done developing, you can run them using the terminal, as described above.) Always first define the public class called “DataReader” by opening and shredding Investigate both and, see how they map incoming data to musical parameters, and create your own versions.

The first ( is over-simplified and sounds basic, but the second of these ( already demonstrates a more musically interesting approach. The left and right channels play the two series in sync and by ear you hear the extent of the correlations.

Questions for the reader: (1) why are the values for gain squared, and (2)why use MIDI keynums for the freq values? What happens if they're mapped linearly, instead? And (3) what happens if the 100 ms update rate is increased or decreased significantly? (Provide your response to these questions in the hw4.html submission.)

  1. l.gain(Math.pow(w, 2.0));
  2. l.freq(Std.mtof(80.0 + w*20.0));
  3. 100::ms => now;

Turn in

Use your imagination to devise some music in which the performer is data. Sound production can be anything available in chuck. Please use all 4 channels and begin to experiment with piping the sound through reverb and/or effects, as in the example above. Submit the finished study in binaural format. The one requirement is to have a “solo” section in it somewhere which contrasts with a polyphonic (multi-voiced) section. In this case, solo means one time series performing one voice and “poly” means two or more series and voices at a time. But don't do only that – develop some music that you like and just provide the required parts somewhere inside it.

Submit to the homework factory hw4.html file that includes the following: