FYI, image alt text is required



A. Extracting Data from the Image

Image Source: Lake.jpg

1) Extracting the Main Envelope
Matlab Code: getEnv.m Extracted Data: Env.txt


2) Extracting the RGB Parameters (later used to control the Chorus effect)
Matlab Code: getRGBPara.m Extracted Data: ParaR.txt ParaG.txt ParaB.txt


3) Extracting the Envelope of the Mountain (later used to control the Reverb effect)
Matlab Code: getMountEnv.m Extracted Data: MountEnv.txt


Note that the main envelope & mountain envelope both start from 0 but end at a nonzero value.
In practice, to avoid any discontinuity in envelopes, a reversed version of the envelope are appended at the end of itself.

B. Using Data to Control the Sonification

1) A Naive Implementation of Sonification
ChucK Code: Sonification_Naive.ck
Signal Chain: Squarewave Oscillator -> Reverb Effect -> Fader (Main Envelope) -> DAC
In this implementation, I just simply filled a unit-amplitude squarewave into the main envelope so that most of the graphic features of the envelope is preserved.
I set the chord progression to: Am -> G -> F -> G to create a scenario for the later composition.
Its output waveform is shown below:

However, it turns out that this waveform does not sound good.


2) Final Implementation of Sonification
ChucK Code: Sonification.ck
Signal Chain: Banded Waveguide Model -> Chorus Effect (RGB Parameters) -> Reverb Effect (Mountain Envelope) -> Fader (Main Envelope) -> DAC
To make the output audio sound better, I sacrificed some waveform similarity in the final implementation.
Its output waveform is shown below:

This is the sonification result after the trade-off:

Based on this audio track, I played some guitar & piano to concoct the final 4-channel soundtrack (already decoded to binaural) on the top of this page.


Now, go back to the top and enjoy!