SRI THENDAYUTHAPANI TEMPLE (2021)
Built in 1859, the Sri Thendayuthapani Temple is one of the oldest Hindu temples in Singapore. This composition is made from a field recording taken during a ceremony conducted at the temple on 6 August 2020. Using hundreds of splices of this field recording, I create a montage of mosaics. This piece demonstrates the way in which random seeds and repetition can be used to created perceptible entities. The random seed defines the sample selection and the repetition causes that sample selection to recur, shedding its unpredictable nature.
SCORE
# Note that this score is best viewed on a tablet, laptop, or desktop.
# The line breaks on a mobile device may likely make reading the score confusing at times.
# Comments are in black. Code and, sometimes, references to code elements within the comments are
# given in blue.
# If you've read my Introduction to Coding in Sonic Pi, then the code below should be fairly straight
# forward to read. In addition to a few code explanations below, I put in timings of some sections as
# an aid as you listen to the recording.
temple = "/FieldRecordings/Temple2/"
temple2 = "/FieldRecordings/Temple4/"
set_recording_bit_depth! 24
use_random_seed 65
50.times do
cur_samp = rrand_i(0,12)
cur_speed = rrand(1.0,3.1)
print cur_samp
# Note the release on the sample playback and a wait time that is slightly shorter than sample length.
# This allows for an small overlap/crossfade between samples.
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
# Section from 0:03-1:31. Note the gradual transformation in sample selection range. This is scan of
# slices over approximately the first 1/3 of the original field recording.
use_random_seed 100
base = 0
25.times do
cur_seed = rrand_i(0,500)
use_random_seed cur_seed
25.times do
cur_samp = rrand_i(base,base+40)
print cur_samp
sample temple, cur_samp, release: 0.03
wait (sample_duration temple, cur_samp) * 0.95
end
base += 3
end
# 1:31-1:34: a variation of the first event in the piece.
use_random_seed 165
# Create an array that is 50 values long evenly increasing in value from 1.0 to 3.0,
# then randomly permute.
speeds = line(1.0, 3.0, steps: 50, inclusive: true).shuffle
50.times do
cur_samp = rrand_i(0,12)
cur_speed = speeds.tick(:r)
print cur_speed
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
3.times do
use_random_seed 60
20.times do
cur_samp = rrand_i(40,80)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
end
2.times do
use_random_seed 40
30.times do
cur_samp = rrand_i(13,50)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
end
2.times do
use_random_seed 140
30.times do
cur_samp = rrand_i(95,120)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
end
# 1:51-2:13
use_random_seed 55
cur_seed = [50,60,90,95].shuffle
4.times do
use_random_seed cur_seed.tick(:s)
[1,2,3].choose.times do
30.times do
cur_samp = rrand_i(120,180)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
end
end
# 2:14
2.times do
use_random_seed 55
30.times do
cur_samp = rrand_i(180,220)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
end
2.times do
use_random_seed 55
30.times do
cur_samp = rrand_i(220,225)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
end
use_random_seed 2
20.times do
cur_samp = rrand_i(0,12)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
4.times do
use_random_seed 375
10.times do
cur_samp = rrand_i(0,23)
sample temple2, cur_samp
wait (sample_duration temple2, cur_samp) * 0.95
end
end
3.times do
use_random_seed 315
10.times do
cur_samp = rrand_i(0,23)
sample temple2, cur_samp
wait (sample_duration temple2, cur_samp) * 0.95
end
end
use_random_seed 185
30.times do
cur_samp = rrand_i(226,280)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
2.times do
use_random_seed 185
30.times do
cur_samp = rrand_i(280,310)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
end
3.times do
use_random_seed 12
10.times do
cur_samp = rrand_i(310,325)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
end
3.times do
use_random_seed 12
10.times do
cur_samp = rrand_i(326,346)
cur_speed = rrand(1.0,3.1)
print cur_samp
sample temple, cur_samp, rate: cur_speed, release: 0.03
wait ((sample_duration temple, cur_samp) / cur_speed) * 0.95
end
end
# Completed 5 January 2021