This article is about the phenomenon of listening noise, sounds, notes or melodies associated to events or information. For example, you can listen the music in a photograph, listen the amount of water running on a tube or realized the melody produced by people proximity.
Those kind of experiments allows people to:
a) Create new melodies, music or sound effects based on real events
b) Understand the behavior of a phenomenon by listening associated sounds to its variables
Create sounds for a real event can be as complex as the information available. To explain the technique, I going to elaborate a very simple example with just one linear variable.
Let’s check out the final results of 4×100 men in the Olympics 2016:
There’s only one variable to listen, let’s do some associations first:
- Let’s listen the bests ranks sharp and lower rank as bass sound
- I choose 3 octaves from C4 to B6, it means 36 halftones including C4
- Between the high and low rank results there’s 1.14 seconds, 38.41”-37.27”=1.14
- So let’s create a linear map function to convert values between 0 to 1.14” difffence to values between 0 to 35
- I going to associate one specific note to each country, note=B6-map(x), note=95-map(x) where 0<=map(x)<=35, x=recorded time
- The map function needs to return the lowest midi note (C4) for the lower rank and B6 for the higher rank
- We need to build an instrument, a source of sound
Here is my instrument coded in Super Collider
// Sawtooth oscillator in percusive form with a subs synthesis made by LFNoise
spacesound = RLPF.ar( LFSaw.ar( freq, mul: EnvGen.kr( Env.perc, levelScale: 0.3, doneAction: 2 ) ), LFNoise1.kr(2,34,95).midicps,0.2 );
// very small room reverb, it will add stero effect as well
spacesound = GVerb.ar(spacesound, 2, 0.05, 0.05, maxroomsize:2);
Check out how it sounds with a single C4, midi 60, 261.62hz
I going to provide the competition results in an array like this:
raceResults:[“Jamaica”,37.27, “Japan”,37.60, “Canada”,37.64, “China”,37.90, “Great Britain”,37.98,”Brazil”,38.41]
For each odd position in the array I going to apply the map function to obtain and save the respective note for each country and entering those notes into a tones array:
// get the current result time
currentTime = raceResults[index];
// calculate the mido note number and add it to the arraylist
Finally, bind the instrument with the notes using the Pbind function in SuperCollider.
Pbind(\instrument, “Space”, \freq, Pseq( tones.midicps,repeat)…
To make the melody more dramatic let’s decrease the note duration on each repetition until certain point, making the melody moves from slow to fast. The repeat variable is the amount of melody repetitions; an adjustment is required to make sure the note duration is going to have a minimum value after X repetitions.
Calling the sound function with the competition results array, 20 repetitions, initial note duration of 0.44 seconds and final note duration of 0.13 seconds; the melody will sound like this:
That’s it, simple and funny; we have a melody or sound effect, resulting from the association of a time ranking matched to proportional notes over 3 octaves. This a simple way to listen an event!!!
Full source code is here: