// title: "The Scientist" - Coldplay [MUSC 115: Modulations] // author: tsonker // description: // Remixed Coldplay's "The Scientist" mainly through amplitude modulation and frequency modulation for a sound design class assignment. // // SoundCloud: https://soundcloud.com/tanya-sonker/the-scientist-coldplay // // Original: https://www.youtube.com/watch?v=RB-RcX5DS5A // code: /* Idea: - Remixed Coldplay's "The Scientist" - Used an AM for intro - Used FMs as bass complements & to increase/decrease tempo of composition - Modified same FM to produce different bass sounds */ ///////////////// /// SYNTHDEFS /// ///////////////// ( //plugin: MdaPiano SynthDef("chords", { |out=0, freq=440, gate=1, amp=0.5, att=0.1, rel=0.01| var son = MdaPiano.ar(freq, gate, release: 0, stereo: 0.3, sustain: 0, mul: amp); DetectSilence.ar(son, 0.01, doneAction:2); Out.ar(out, son * 0.1); }).add; SynthDef("am1", {arg freq = 440, modfreq = 2, amp = 0.2, att = 0.01, rel = 3; var carrier, modulator, env; env = Env.perc( attackTime: att, releaseTime: rel, level: amp ).kr(2); modulator = SinOsc.ar(modfreq).range(0, 1); carrier = SinOsc.ar(freq: freq, mul: env * modulator); Out.ar(0, carrier ! 2); }).add; SynthDef("fm2", {arg freq = 440, modindex = 10, amp = 0.1, pos = 0, gate = 1, att = 0.01, rel = 0.3; var carrier, modulator, freqdev, env, modfreq; // i = d/m, so d = m*i modindex = Line.kr(modindex, 1, att); modfreq = freq / 2; freqdev = modfreq * modindex; modulator = SinOsc.ar(freq: modfreq, mul: freqdev); carrier = LFTri.ar(freq: freq + modulator); //changed to LFTri env = Env.asr( attackTime: att, sustainLevel: amp, releaseTime: rel ).kr(doneAction: 2, gate: gate); carrier = Pan2.ar(in: carrier, pos: pos, level: env); Out.ar(0, carrier * 0.5 ! 2); }).add; SynthDef("hihat", {arg out = 0, amp = 0.5, att = 0.01, rel = 0.2, ffreq = 6000, pan = 0; var env, snd; env = Env.perc(att, rel, amp).kr(doneAction: 2); snd = WhiteNoise.ar; snd = HPF.ar(in: snd, freq: ffreq, mul: env); Out.ar(out, Pan2.ar(snd, pan)); }).add; ) ///////////////// /// PBINDS /// ///////////////// ( ~intro = Pbind( \instrument, "am1", \midinote, Pseq([ Pn([38, 53, 57], 4), Pn([34, 53, 58], 3), [34, 53, 58, 60], 60, Pn([41, 53, 57], 4), Pn([36, 53, 55], 4) ], 2), \dur, Pseq([Pn(1/2,4), Pn(1/2,3), 0.25, 0.25, Pn(1/2,4), Pn(1/2,4)], 2) * 1.5, //slowed down compared to chords \ctranspose, 12, \modindex, Pseq([1, 5, 6, 7, 10], inf), \att, 0.01, \rel, 0.1, \amp, 0.5, \pos, 0 ); ~hihat = Pbind( \instrument, "hihat", \dur, Pn(1,1), \att, 0.01, \rel, 5, \ffreq, 11000, \pan, 0, \amp, 0.3 ); ~chords = Pbind( \instrument, "chords", \midinote, Pseq([ Pn([38, 53, 57], 4), Pn([34, 53, 58], 3), [34, 53, 58, 60], 60, Pn([41, 53, 57], 4), Pn([36, 53, 55], 4) ], 2), \dur, Pseq([Pn(1,4), Pn(1,3), 0.5, 0.5, Pn(1,4), Pn(1,4)], 2), \ctranspose, 12, \att, 0.01, \rel, 0.1, \amp, 0.8, ); ~bass1 = Pbind( \instrument, "fm2", \midinote, Pseq([ Pn([38, 53, 57], 4), Pn([34, 53, 58], 3), [34, 53, 58, 60], 60, Pn([41, 53, 57], 4), Pn([36, 53, 55], 4) ], 2), \dur, Pseq([Pn(1,4), Pn(1,3), 0.5, 0.5, Pn(1,4), Pn(1,4)], 2), \ctranspose, 12, \att, 0.01, \rel, 0.1, \amp, 0.05 ); ~middle = Pbind( \instrument, "chords", \midinote, Pseq([ [38, 53, 57], 62, Pn([36, 43, 45, 57], 3), [36, 43, 45, 57], [36, 43, 45, 55], [36, 43, 45, 53], [36, 40, 43, 52], Pn([36, 40, 43, 58], 6), [36, 40, 43, 58], [38, 57], [38, 53] ], 1), \dur, Pseq([ 2, 1, Pn(1/3, 3), 1/2, 1/2, 1/2, 4, Pn(1/2, 6), 1/2, 1/2, 0.75 ], 1), \ctranspose, 12, \att, 0.01, \rel, 0.1, \amp, 0.8, ); ~bass2 = Pbind( \instrument, "fm2", \midinote, Pseq([ Pn([38, 53, 57], 4), Pn([34, 53, 58], 3), [34, 53, 58, 60], 60, Pn([41, 53, 57], 4), Pn([36, 53, 55], 4) ], 3), \dur, Pseq([Pn(1,4), Pn(1,3), 0.5, 0.5, Pn(1,4), Pn(1,4)], 3) * 1/2, \ctranspose, 12, \att, 0.1, \rel, 0.05, \amp, 0.05 ); ( ~end = Pbind( \instrument, "chords", \midinote, Pseq([ Pn([38, 53, 57], 4), Pn([34, 53, 58], 3), [34, 53, 58, 60], 60, Pn([41, 53, 57], 4), Pn([36, 53, 55], 4) ], 1), \dur, Pseq([Pn(1,4), Pn(1,3), 0.5, 0.5, Pn(1,4), Pn(1,4)], 1), \ctranspose, 12, \att, 0.01, \rel, 0.1, \amp, 0.8, ) ); ~bass3 = Pbind( \instrument, "fm2", \midinote, Pseq([ Pn([38, 53, 57], 4), Pn([34, 53, 58], 3), [34, 53, 58, 60], 60, Pn([41, 53, 57], 1), ], 1), \dur, Pseq([Pn(1,4), Pn(1,3), 0.5, 0.5, Pn(1,1)], 1) * 2, \ctranspose, 12, \att, 0.1, \rel, 0.05, \amp, 0.05 ); ) ///////////////// /// SEQUENCE /// ///////////////// ( t = TempoClock(76/60); { ~clock.play(t); 18.wait(t); ~hihat.play(t); 2.wait(t); ~chords1.play(t); ~bass1.play(t); 12.wait(t); ~bass2.play(t); 13.wait(t); ~middle.play(t); 11.wait(t); ~end.play(t); 1.wait(t); ~bass3.play(t); }.fork; )