Strudelify

Reflection

Christina Aguilera

KeyA majorTempo96 bpm
0:00/0:00
// Reflection — Christina Aguilera
// 96 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 63 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · string ensemble 1 · "Stings Intro"
const string_ensemble_1 = note("<A@5 ~@2 B C D@2 E@8 F@3 G H@3 I@8 J@8 K@2 L@5 ~@5 M@8 ~>".pickRestart({
  A: "[~@47 [a#4,f5,a#5]@95 ~@50 c4@46 ~@2, ~@142 [g#4,d#5,g#5]@47 [f4,c5,f5]@48 ~@3, ~@146 d#4@47 ~@47]/5", // A#5 G#5 F5
  B: "~ g#4@15", C: "~ [d#4,g4,d#5]@3", D: "[~@2 [c#4,f4,a#4]@35 ~@9 [c4,d#4,c5]@2]/2",
  E: "[~@20 c4@6 ~@103 c#4@12 c#4@22 ~@10 f#3@7 d#3@19 ~@22 f#4@7 d#4@42 c#4@6 ~@37 f4@48 ~@22 c#4, g3@7 g4@12 c5@12 c#4@76 ~@169 [b3,d#4]@26 ~@82, ~@3 d#5@18 ~@6 a#3@61 ~@182 g#3@30 f#4@14 ~@70, ~@5 d#4@15 d#4@11 a#4@44 [f#1,f#2]@147 ~@79 c#4@65 ~@18, ~@9 a#3@17 g3@6 a#2@44 c#3@155 ~@46 c#3@72 ~@35]/8", // B F#
  F: "[~@36 c#4@35 ~@6 f#4@7 d#4@33 ~@8 g#3@7 b3@12]/3", G: "~@11 c#4@37",
  H: "[~@36 c#4@43 ~@6 b3@36 ~@10 c#3@7 d3@5 e3, ~@82 [e3,g#3]@47 ~@15]/3", // E
  I: "[~@24 b3@11 a3@6 b3@6 c#4@30 e3@7 f#3@46 ~ f3@47 [a2,c#3]@96 ~@2 b5@35 a5@12 [e5,e6]@45 ~@3 g#5@13]/8", // A E
  J: "[~ a5@10 f#5@24 e5@25 d5@20 ~@3 c#5@12 e5@24 a5@12 f#5@44 ~@17 d5@35 ~@20 f#5@3 ~@9 f#5@3 ~@3 a5@4 ~@2 f#6@5 e6@70 ~@38, ~@179 g5@48 e5@18 e5@12 e5@122 ~@5, ~@228 g#5@22 g#5@12 g#5@7 b5@4 ~@111]/8",
  K: "[~@47 a2@12 d3@6 c#3@6 b2@7 e3@6 a2@12]/2",
  L: "[~ g#2@11 f#2@11 e2@12 ~ d2@45 ~ d2@26 f#2@12 e2@12 d#2@59 [f#4,a4]@26 ~@23]/5", // F#m
  M: "[~@42 a1@163 ~@179, ~@5 [e2,c#3]@59]/8", // C#m
})).s("gm_string_ensemble_1").gain(0.32).pan(0.3)

// chords · string ensemble 1 · "Stings Intro" · soft notes
const string_ensemble_1_soft = note("<~ A@2 ~ B@3 C@6 ~ D@2 ~@38 E@8 ~>".pickRestart({
  A: "f4/2", B: "[~@5 g#4@4, ~@47 [a#3,a#4]@47 ~@50, ~@47 d#5@32 [c5,d#5]@65, ~@25 f3@20 ~@3, ~@20 f4@15 ~]/3",
  C: "[~@5 c5@52 ~@3 [c4,c5]@43 ~@40 a#1@119 ~@26, ~@4 [c4,f4]@52 ~@87 a#2@81 ~@64]/6", D: "[~@29 g#3@7 a#3@16 ~@44]/2",
  E: "[~@31 a2@353]/8",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.3)

// chords · acoustic guitar nylon · "Session Nylon"
const acoustic_guitar_nylon = note("<~@2 A@4 ~@57>".pickRestart({
  A: "[~@64 d#5@11 ~@21, ~@44 a#3@69 a#4@7 c5@31 ~@41, ~@52 c#4@53 g#4@48 ~@39, ~@61 d#4@91 ~@40, ~@68 f4@10 g#4@20 f4@55 ~@39]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.64).pan(0.3)

// other · shamisen · "Session Nylon"
const shamisen = note("<~@21 A ~@8 B@3 ~@30>".pickRestart({
  A: "~@4 c#3 b2 g#2 f#3 c#4 b3 g#3 f#4 c#5 b4 g#4 f#5",
  B: "[g#5@3 ~@2 g#5@3 f#5@3 ~ g#5@5 e5@4 ~@3 c#5@6 b4@5 c#5@19 b4@6 c#5@6 e5@4 ~@2 e5@34 ~@38, ~@3 a5@4 ~@137]/3",
})).s("gm_shamisen").gain(0.36).pan(0)

// other · vibraphone · "Strange Bells"
const vibraphone = note("<~@5 A B ~@14 C D ~@7 E@3 F ~@18 G@8 ~@3>".pickRestart({
  A: "~@9 c5 ~ g5, ~@5 f5", B: "g#5@2 ~@2 a#5@2 ~@8 c#6@6 d#6@7 f6@17 ~@4, ~@3 c6@8 ~@5", C: "~@13 [b4,c#5] g#4 f#5",
  D: "d#5 ~",
  E: "[g#5@3 ~@2 g#5@3 f#5@3 ~ g#5@5 e5@4 ~@3 c#5@6 b4@5 c#5@19 b4@6 c#5@6 e5@4 ~@2 e5@34 ~@38, ~@3 a5@4 ~@137]/3",
  F: "~@12 e5@5 f#5@6 ~ a5@6 b5@6 ~@12", G: "[~@12 c#5@3 d5@3 e5@34 ~@3 c#5@3 d5@3 e5@17 ~@7 e5@9 a5@266 ~@24]/8",
})).s("gm_vibraphone").gain(0.3).pan(0.2)

// chords · piano
const piano = note("<~@13 A@2 B@7 C@7 D@5 E F G@6 H@2 I@3 ~@2 J@2 K L M N@4 ~@5>".pickRestart({
  A: "[~@49 f#5@6 c#5@22 ~@7 a#4@6 c#5@6, ~@37 f#4@41 ~@18, ~@14 c#4@11 ~@7]/2",
  B: "[~@7 f#5@23 a#4 ~@6 b4@5 a#4@7 ~@4 f#5@7 ~ b5@19 ~@30 f#4@58 ~@36 a#3@21 ~@15 [g#3,a#3]@21 ~@27 b3@30 ~@6 [d#3,b3]@6 g#2@6, ~ f#4@30 ~@5 a#4@2 ~@11 g#4@24 ~@18 b3@76 ~@19 c#3@39 ~@8 d#3@27 ~@22 d#3@38 ~@16, ~@37 f#4@38 ~@10 [b2,d#3,f#3]@83 ~@12 f#2@45 ~@3 d#2@34 ~@14 g#2@43 ~@17, ~@60 g#5@2 ~@36 c#4@70 ~@24 f#3@33 ~@111, ~@104 d#4@63 ~@31 g#3@27 ~@62 a#3@25 ~@24]/7", // G#sus2 G#m B
  C: "[[d#3,b3]@6 ~@18 [f3,c#4]@12 ~@12 f#3@29 f#2@6 ~@12 a#3@33 ~@15 b2@24 b2@11 ~@2 c#3@3 ~@3 d3@6 e3@8 [a2,c#3,e3,a3]@20 ~@31 e4@15 ~@3 c#4@3 ~@25 c#5@3 d5@11 ~ f#5@10 ~ f5@13, ~@6 g#2@12 g#2@18 f#2@41 ~@6 d#2@44 ~@4 e2@44 ~@64 c#4@30 ~@6 c#4@7 c#4@11 [c#4,b4]@7 ~@36, ~@12 f3@12 ~@18 c#3@38 ~@9 c#3@38 ~@10 g#2@38 ~@8 [a2,c#3,a3]@14 ~@36 b3@38 ~@5 d4@24 d4@16 ~@20, ~@13 c#4@11 ~@70 f#3@33 ~@16 [f#3,g#3]@32 ~@8 e3@9 ~@34 a3@45 ~@5 [b2,d3,f#3]@18 [b2,d3,f#3]@20 ~@22, ~@245 a4@22 ~@21 b3@29 ~@19]/7", // G#m C# A C#7 A F#sus2 Bm
  D: "[~@12 e5@12 ~@54 e5@4 ~@3 a4@19 ~@4 [a4,e5]@20 ~@11 c#4@6 e4@5 c#4@6 ~@6 c#4@6 e4@11 ~@42 c#3@7 b5@6 d5@6, ~@24 d5@24 c#4@80 ~@5 a2@46 f#2@36 f#2@14 ~@11, ~@36 a3@24 a4@6 b4@6 c#5@11 ~ e5@20 ~@94 c#4@18 ~@12 a5@3 ~@9, ~@36 c#5@18 e4@74 ~@64 g#3@17 g#3@13 ~@18, ~@42 b3@86 ~@4 a3@14 ~@10 a3@23 ~@7 a3@18 a3@12 ~@24]/5", // A5
  E: "a5@2 ~ g#5@2 d5@3 a5@2 d5@2 f#5@2 d5@2",
  F: "a5@6 d5@6 ~@6 e5@7 d5@4 ~ c#5@5 ~ [a3,c#4]@12, ~@12 f5@20 ~@3 a4@9 ~@4", // A
  G: "[[g#3,b3,g#4]@12 [f#3,a3,f#4]@12 [e3,g#3,e4]@12 [d3,f#3,d4]@36 ~@60 b3@35 ~@12 a4@8 b4@6 c#5@5 a4@5 e5@7 a4@7 b4@5 a4@5 ~@7 a4@8 ~@5 f#4@5 a4@6 ~@12 a4@6 [c#5,e5]@12, ~@84 a3@72 ~@23 c#4@20 ~@28 f#4@19 ~@12 f#4@12 ~@18, ~@228 c#4@32 ~@5 c#4@11 ~@12]/6", // G#m F#m E D C#m
  H: "[~@12 [d5,f#5]@23 e5@19 f#5@6 d5@16 ~@8 a3@12]/2", // D
  I: "[g#3@12 f#3@12 ~@14 a3@32 ~@14 [d3,f3,a3]@39 ~@21, ~@2 e3@3 ~@7, ~@37 d3@42 ~@65, ~@37 f#3@31 ~@76]/3", // Dm
  J: "[~@2 c#5@2 [b3,g#4,c#5]@2 [f#4,c#5] ~@6 c#4 d4@2, ~ [c#4,a4]@2 a3@4 ~, ~@4 e5@3 ~, ~@5 b2@3, ~@3 b3]/2", // C#7 F#5 F#m
  K: "~@2 [f4,g#4,a4,b4,c#5,d5]@4 [e5,c#6] ~", L: "~@19 e4@27 ~@2, [d5,b5] ~, ~@13 a3@34 ~, ~@13 c#4@11 ~@24",
  M: "~@23 c#4@7 d4@8 e4@6 ~@4, ~@16 a3@29 ~@3", N: "[~@33 c#6@149 ~@10, ~@22 e5@35 ~@135, ~@31 a5@149 ~@12]/4",
})).s("gm_piano").gain(0.35).pan(0.4)

// chords · piano · soft notes
const piano_soft = note("<~@13 A B ~@8 C ~@2 D ~@5 E@2 F ~@6 G ~@8 H I@2 J@2 ~@8>".pickRestart({
  A: "~@30 f#4 ~@17", B: "~@10 f#5@19 ~@19", C: "~@2 a#3@29 ~@17, ~ g#3@30 ~@17", D: "~@33 a3 ~@14",
  E: "[~@12 c#3@12 ~@4 d5 a5 ~@2]/2", F: "~ d5@3 ~@12", G: "~@2 e5@5 ~@41", H: "~@3 f#3@5",
  I: "[~@8 d4 ~@3, ~@7 [e5,a5]@5 ~@4]/2", J: "[~@52 b4@11 c#5@7 ~@26, ~@45 a4@14 ~@37]/2",
})).s("gm_piano").gain(0.2).pan(0.4)

// other · string ensemble 2 · "High Stings"
const string_ensemble_2 = note("<~@10 A@4 ~@11 B@3 ~@7 C@2 D@4 ~@2 E F@3 G@2 ~@5 H@8 ~>".pickRestart({
  A: "[~@43 d#4@12 g4@17 ~@7 c#4@98 ~@15]/4", B: "[~@5 c#5@6 b4@6 f#5@6 e5@7 b5@7 e6@105 ~@2]/3",
  C: "[a3@12 ~@6 c#4@6 b3@5 a3@7 ~@30 a3@16 c#4@14, ~@12 d4@12 ~@12 e3@35 ~@25]/2",
  D: "[d4@11 ~@32 b2@4 ~@8 a3@5 b3@5 a3@7 ~@4 a3@6 ~@8 b2@5 e3@6 f#3@6 g#3@6 f#3@5 e3@6 b2@7 e3@52 ~@9, ~@47 d3@12 ~@31 a2@2 ~@100]/4",
  E: "~@19 c#5@5", F: "[e5@13 a5@11 c#6@12 e6@24 d6@23 ~ f6@42 ~@18]/3",
  G: "[~ a3@4 b3@7 ~@11 c#6@6 e6@7 a6@32 ~@28, ~@3 c#4@14 ~@7]/2", H: "[~@5 e6@59]/8",
})).s("gm_string_ensemble_2").gain(0.35).pan(0.2)

// other · string ensemble 2 · "High Stings" · soft notes
const string_ensemble_2_soft = note("<~@7 A@4 B ~@26 C ~@8 D@2 ~@5 E@8 ~>".pickRestart({
  A: "[~@58 d#5@49 c#5@75 ~@10, ~@13 f5@49 ~@130]/4", B: "~@23 d#4@9 ~@16", C: "~@24 f#3@5 ~@19",
  D: "[~@35 f#6@33 ~@28]/2", E: "[~@29 c#6@355]/8",
})).s("gm_string_ensemble_2").gain(0.15).pan(0.2)

// other · oboe
const oboe = note("<~@23 A@3 ~@2 B@2 ~@11 C@3 D@4 ~@15>".pickRestart({
  A: "[~@8 b4@3 c#5@6 f#5@6 c#5@6 f#5@42 c#5@12 b4@44 ~@17, ~@3 a#4@2 ~@67]/3",
  B: "[~@6 b4@3 c#5@3 d5@11 f#5@12 f5@24 e5@14 d5@11 ~@12]/2",
  C: "[~@36 e5@24 f#5@23 ~ e5@23 f5@19 ~@7 c#5@11, ~@35 g#5@25 d5@54 ~@30]/3",
  D: "[~ b4@12 a4@10 g#4@13 ~ f#4@47 ~@22 a4@14 b4@13 c#5@53 ~@6, ~@84 f4@49 ~@59]/4",
})).s("gm_oboe").gain(0.24).pan(0.6)

// other · music box · "b"
const music_box = note("<~@19 A@2 ~@8 B@2 C ~@8 D E ~@8 F@2 G H@3 ~@7>".pickRestart({
  A: "~@3 f#5 ~@2 c#5 ~@17", B: "[~@6 c#6@6 b5@6 [a4,e5]@23 ~@7]/2", C: "~@6 f#5@7 a5@6 b5@7 c#6@12 ~@10, e5 ~@3",
  D: "~@36 b5@3 ~@3 a5@4 ~@2", E: "e6@4 ~@2 a5@4 ~@3 b5@3 ~@2 a5@5 ~ e5@3 ~@21",
  F: "[~@12 c#6@12 d6@11 ~ b5@19 ~@29 c#6@12]/2", G: "~ b5@10 a5@27 ~@10", H: "[~@7 e5@8 a5@39 ~@24 e6@60 ~@6]/3",
})).s("gm_music_box").gain(0.36)

// bass · acoustic bass · "Bass"
const bass = note("<~@18 A@4 B@6 C@8 D@8 E@3 ~@2 F G@3 ~@10>".pickRestart({
  A: "[~@3 f#2@4 d#2@3 ~ g#1@4 b1]/4", B: "[~ c#2@2 f#2@4 d#2@4 e2@3 ~ a1@3 c#2 f#1@3 ~ b1, ~@7 e2@2 ~@3]/6",
  C: "[~@4 f#2@2 f2@7 ~ a1@7 ~@7 e2@2 ~@6 c#2@2 ~@6 c#2@2 d2@6 a2@2 ~@4 a2@2 ~@2 a2@2, ~@22 a1@7 ~ a1@7 ~ f#1@7 ~@9 d2@8 ~@2]/8",
  D: "[g#2@12 f#2@6 ~@6 e2@6 ~@42 f#2@6 d2@6 b1@42 ~@6 e2@42 ~@7 a1@32 ~@3 c#2@11 ~@2 f#1@34 f#1@6 a1@6 d2@36 ~@2 a2@10 d3@35 ~@14 a2@12, ~@6 d2@7 ~@51]/8",
  E: "[g#2 f#2 e2 d2@3 a2 d2@3 ~@2]/3", F: "~ a2 g#2 f#2", G: "[~@6 b1@21 c#3@3 d3@22 ~@20]/3",
})).s("gm_acoustic_bass").gain(0.36)

// other · rock organ · "Effects"
const rock_organ = note("<[~ c4 ~@22] ~@62>").s("gm_rock_organ").gain(0).pan(0)

// drums · china
const china = s("cr").struct("<~@30 [~ x ~ x] [~@11 x ~@25 x ~@10] ~@7 [~@3 x] ~@8 [~ x ~@2] ~@14>").gain(0.36)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct(`<
  ~@30
  [~@13 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@11]
  ~@11
  [~@11 x ~@2 x ~@3 x ~@2 x ~@2 x ~@12 x ~@2 x ~ x ~@2 x ~@2]
  [x ~@11 x ~@2 x ~@3 x ~ x ~@2 x ~@23]
  ~@19
>`).gain(0.52)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~@30 A B ~@5 C D E ~ F G E ~@19>".pickRestart({
  A: "~@12 x ~@3 x ~@2 x ~@5 x ~@2 x ~ x ~@3 x ~ x ~@3 x ~ x ~@2 x ~@2", B: "x ~@2 x ~@2 x ~@3 x ~@2 x ~@34",
  C: "~@36 x ~@10 x", D: "~@23 x ~@12 x ~@11", E: "x!3 ~", F: "~@35 x ~@11 x", G: "~ x!3",
})).gain(1.83)

// drums · lt
const lt = s("lt").struct("<~@38 [~@37 x ~@10] ~@24>").gain(0.26)

stack(
  string_ensemble_1, string_ensemble_1_soft, acoustic_guitar_nylon, shamisen, vibraphone, piano, piano_soft,
  string_ensemble_2, string_ensemble_2_soft, oboe, music_box, bass, rock_organ, china, woodblocks, bell_tree, lt
)

More by Christina Aguilera