makepad/libs/score_live/examples/ambient.splash

58 lines
1.8 KiB
Text

// Tidal Glass: an ambient piece at 72. Long pads, a bell motif drawn once
// and repeated with small changes, a sub drone and a big hall.
use mod.score.*
let clock = Clock{bpm: 72 sig: [4 4] seed: 11}
let pad = Synth{preset: @warm_pad cutoff: 1600 attack: 2.5 release: 4}
let glass = Synth{preset: @glass_pad}
let bell = Synth{preset: @bell}
let sub = Synth{preset: @sub}
/// Four chords, a bar each twice over: Am9, Fmaj7, Cadd9, G6 (G, B, D, E).
let chords = Loop{play: pad beats: 32 amp: 0.45
code: fn(i) {
let roots = [@a2 @f2 @c3 @g2]
let kinds = [@m9 @maj7 @add9 @maj6]
for c in 0..4 {
play(chord(roots[c], kinds[c]), {dur: 7.6})
sleep(8)
}
}
}
/// The same eight bell notes every cycle; each cycle one note may move.
let motif = Loop{play: bell beats: 16 amp: 0.32 pan: 0.3
code: fn(i) {
let notes = [@e5 @c5 @a4 @g4 @e5 @d5 @c5 @a4]
for n in 0..8 {
if one_in(5) == false { play(tick(notes), {dur: 1.5}) }
sleep(choose([1.5 2 2.5]))
}
}
}
let shimmer = Loop{play: glass beats: 16 amp: 0.22 pan: -0.3
code: fn(i) {
sleep(4)
play(choose([@a4 @e5 @c5]), {dur: 8})
sleep(12)
}
}
let drone = Loop{play: sub beats: 16 amp: 0.4
code: fn(i) {
play(@a1, {dur: 15.5})
sleep(16)
}
}
let lift = Highpass{in: [chords shimmer] cutoff: 180}
let echo = Delay{in: [motif] time: 1.5 feedback: 0.55 mix: 0.35 spread: 1}
let hall = Reverb{in: [lift echo] room: 0.92 mix: 0.5 damp: 5000}
let rise = Section{bars: 8 loops: [chords drone]}
let bloom = Section{bars: 16 loops: [chords drone motif shimmer]}
let fade = Section{bars: 8 loops: [chords shimmer]}
Score{label: "Tidal Glass" clock pad glass bell sub chords motif shimmer drone lift echo hall rise bloom fade arrange: [rise bloom fade]}