Adding sound to real world events!

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 = freq, mul: Env.perc, levelScale: 0.3, doneAction: 2 ) ),,34,95).midicps,0.2 );

// very small room reverb, it will add stero effect as well
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.

\dur, Pseq([Pgeom(maxNoteDur,1-((minNoteDur/maxNoteDur)/repeat),repeat*tones.size)])

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:


Rodrigo Nuñez

Rodrigo has served as Professor of the School of Computer Sciences at the InstitutoTecnológico de Costa Rica since 2000 and in various positions in private companies since 1999. Rodrigo\'s 6+ methodology identify the best of best recently graduated professionals from the university to recruit them for Akurey or to recommend to partner companies.\r\n\r\nSpecialties: Business Development, Design Thinking, Systems Integration, Solutions Designer, Big Data, Internet of Things, Distributed Applications, Databases, Performance, Quality Assurance, Recruiting 6+, Fast Data Access, High Volume Processing, Embedded Systems, Sound Synthesis, Software Development, Innovation Management, Cloud Technologies, Augmented Reality, Recruiting, Writer, Music Techno-Artist