2. Brief
The aim of the sonification was to create a musical representation for
the movie – Kung Fu Panda.
The most direct way was to map each pixel with a sound and let the composition tell the
story. To overcome the monotony, brightness of the pixel was explored and played around
with using volume gain. Based on how high the value of RGB is, the sound was assigned
accordingly.
The Asian context of the movie influenced the choice of music used.
For recording, the sound was created by striking a half-filled, full filled and empty metal
container. These sounds were mapped to value of Green color.
To add texture to the composition, the total of 160 measures were sub-divided based on
the scenes in the movies and leading cast in that scene. Beat compositions were taken and
assigned to each character of the movie. Based on its appearance, would the composition
play.
3. Computational Choices
• To achieve the musical composition, the data structure used was 2
dimensional lists to store the RGB values of the pixel. 1-D arrays was
also used to store audio files
• An extensive use of “for loops” and “conditionals” was made.
Nested for loops was used to place an appropriately mapped audio
onto the track. Conditionals were used to compare the values of RGB
and place the media file accordingly.
• Fitmedia, MakeBeat, SetEffect were used in abundance to place audio
onto track, create beats or set volume gain or pan effect.
5. EXPLORE
Various ideas were explored and various computational methods were tried. Finally
the idea to sonify a movie barcode was chosen and elaborated upon.
6. The movie Kung Fu panda was chosen because it was one of my most
favorite movies and I am always excited to work around it in any form.
Also, I was well acquainted with the storyline and characters of the
movie.
9. CONVERT
The 1280X480 pixel barcode was scaled down to 160X60 pixels. From the new image the
pixel values for the middle row “image[x][30]” was extracted and saved in an array.
The array was 2 dimensional which has 160 elements with 3 sub-elements each. The array
was obtained using the PIL (Python Image Library) Library of Python.
12. Mapping Audio
• Step 1:
Find maximum and minimum values for R, G, B color values
• Step 2:
Segment into 3 sets based on their range (R, G,B each)
• Step 3:
Map 9 audio files 3 each for R, G, B based on the sets
The selection of audio files was such that the 3 chosen audio files for each
color belonged to the same family of sounds.
Red: Gong
Green: Metal Strike (Recordings)
Blue: Drums
13. Mapping Volume Level
• Step 1:
Find maximum and minimum values for R, G, B color values
• Step 2:
Scale min and max values of each color to -10 and 12
• Step 3:
Using Linear equation to find respective value of volume gain for each
color
15. Adding Texture
For this, an 8X4 matrix was made and scenes were mapped to the lead
cast in the scene. Each character was allotted a beat composition which
was played according to the characters appearance in the scene.
16. MEASURE PO FURIOUS FIVE TAI LUNG SHIFU/OOGWAY
BEGIN 1-20
TOURNAMENT 21-40
OOGWAY’S WISDOM 41-60
ENTERS TAI LUNG 61-80
TRAINING 81-100
BRIDGE 101-120
FIGHT 121-140
END 141-160
*
* : Ideally should be mapped with repetition of bright pixels vs dark pixels
20. Insights/Learnings/Problems
• The expression of ideas to music is difficult
• I could work my way through the code but the piece didn’t sound as
pleasing as expected.
• Its hard to adhere to naming conventions and comments while
“engrossed” in writing the code but it is the ABSOLUTE necessity to
save yourself from wasting time (and frustration!!) later.
• Its fun to be able to morph colors into numbers and numbers into
sounds.
• Indentation: The flexibility of the language can sometime make you
pull your hair and bang into the screen.