Strudelify
(If There Was) Any Other Way cover art

1990 · Unison

(If There Was) Any Other Way

Celine Dion

KeyF majorTempo124 bpm
0:00/0:00
// (If There Was) Any Other Way — Celine Dion
// 124 bpm, 4/4, key F 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 139 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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.

// other · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~ A@2 B C D@2 B E F@2 G@4 H I J@5 K@2 I L@4 M@2 B N O@2 B P Q@2 R S T@2 B E U@2 V@4 W X Y@5 Z@2 I AA@4 M@2 B AB T@2 B
  P M@2 B N AC@2 B AD AE@2 ~@13 AF AG@2 R N T@2 B AH M@2 B AI O@2 B P M@2 B N D@2 B AJ M@2 B S D@2 B P D@2 B N A@2 B AK
  ~@2
>`.pickRestart({
  A: "[[bb4,bb5]@4 [a4,a5]@4 [g4,g5]@4 [f4,f5]@2 [d4,d5]@7 ~ [c5,c6]@9 ~]/2", // Bb A G F D C
  B: "[bb4,bb5]@2 [a4,a5]@2 [g4,g5]@2 [f4,f5] [d4,d5]", C: "[c4,c5]@5 ~ [g4,g5] [a4,a5]",
  D: "[[bb4,bb5]@4 [a4,a5]@4 [g4,g5]@3 ~ [f4,f5]@2 [d4,d5]@7 ~ [c5,c6]@10]/2", E: "[c4,c5]@15 ~",
  F: "[[bb3,eb4] bb3, g4@5 ~@3, c4@13 ~@3 d4@12 ~@4]/2", // Eb5
  G: "[[a3,f4]@15 ~ [g3,bb3]@16 [bb3,c4]@15 ~ bb3@16, c4@5 ~@3 g4@6 ~@2, ~@4 eb4@6 ~@2 d4@3 ~]/4", H: "[a3,f4]@7 ~, c4",
  I: "[g3,bb3,c4,eb4]", // Cm7
  J: "[eb4@15 ~ d4@16 a3@15 ~ bb3@28 ~@4, g3@9 ~, bb3@11 ~@5 c4@18 ~@6, c4@13 ~@3 f4@28 ~@4 eb4@20 ~@12]/5",
  K: "[d4 [a3,c4], f4@7 ~]/2", // Am
  L: "[[a3,d4,f4,a5,c6]@7 ~ [bb3,g4,d6]@8 [a3,c4,f4]@7 [d5,d6,gb6]@8 ~, f6@32 c6@11 ~@3 [d4,gb4]@13 ~@5, c4@6 ~@2 [d4,bb5]@7 ~ [a4,a5]@10 ~@6]/4", // Dm7 Gm F D Gm A
  M: "[[bb4,bb5]@4 [a4,a5]@4 [g4,g5]@4 [f4,f5]@2 [d4,d5]@7 ~ [c5,c6]@10]/2", N: "[c4,c5]@6 [g4,g5] [a4,a5]",
  O: "[[bb4,bb5]@4 [a4,a5]@3 ~ [g4,g5]@4 [f4,f5]@2 [d4,d5]@7 ~ [c5,c6]@9 ~]/2", P: "[c4,c5]@11 ~ [g4,g5]@2 [a4,a5]@2",
  Q: "[[bb4,bb5]@4 [a4,a5]@4 [g4,g5]@3 ~ [f4,f5]@2 [d4,d5]@7 ~ c6@10, ~@22 c5@7 ~@3]/2", // Bb A G F D
  R: "[bb4,bb5]@3 ~ [a4,a5]@4 [g4,g5]@4 [f4,f5]@2 [d4,d5]@2", S: "c5@6 [g4,g5] [a4,a5], c4@5 ~@3",
  T: "[[bb4,bb5]@4 [a4,a5]@3 ~ [g4,g5]@4 [f4,f5]@2 [d4,d5]@7 ~ [c5,c6]@10]/2", // Bb A G F D C
  U: "[[bb3,c4,eb4] [bb3,d4], g4@11 ~@5]/2", // Cm7 Bb
  V: "[[a3,f4]@16 [g3,bb3]@16 [bb3,c4]@15 ~ [bb3,d4]@16, c4@19 ~@13 g4@21 ~@11, ~@8 eb4@11 ~@13]/4", // Dm Gm Bbsus2 Bb
  W: "[a3,f4]@11 ~@5, c4", X: "[g3,bb3,eb4], c4@3 ~",
  Y: "[[c4,eb4]@16 d4@13 ~@3 a3@16 bb3@32, g3@77 ~@3, bb3@11 ~@5 c4@18 ~@6, ~@16 f4@26 ~@6 eb4@21 ~@11]/5", // Cm
  Z: "[d4@15 ~ [a3,c4]@16, f4@13 ~@3]/2", // Am
  AA: "[[a3,c4,d4,a5,c6]@13 ~@3 [d4,bb5,d6]@14 ~@2 [a3,c4,f4]@14 [d5,d6,gb6]@16 ~@2, f6@35 ~@11 d4@9 ~@9, f4@11 ~@5 [bb3,g4]@16 a5@22 ~@10, ~@8 a4@5 ~@3, ~@16 c6@6 ~ gb4@7 ~@2]/4", // D7 Gm F D Eb
  AB: "[c4,c5]@9 ~@3 [g4,g5]@2 [a4,a5]@2", // C G A
  AC: "[[bb4,bb5]@4 [a4,a5]@4 [g4,g5]@3 ~ [f4,f5]@2 [d4,d5]@7 ~ [c5,c6]@9 ~]/2", AD: "c5@7 ~, c4@9 ~@7",
  AE: "[g3,a4,bb4,d5,f5,a5]/2", AF: "~@6 [g4,g5] [a4,a5]",
  AG: "[[bb4,bb5]@4 [a4,a5]@4 [g4,g5]@4 [f4,f5]@2 [d4,d5]@7 ~ c6@10, ~@22 c5@7 ~@3]/2", AH: "c4@13 ~@3, c5@11 ~@5",
  AI: "c5@6 [g4,g5] [a4,a5], c4@9 ~@7", AJ: "c4@13 ~@3, c5@9 ~@7", AK: "c5@7 ~, c4@11 ~@5",
})).s("gm_synth_strings_1").gain(0.31).pan(0.6)

// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~ A B C D A E F G H I J K H L M N O I P Q H I R S T U V@2 W B F X Y B F Z AA B F AB W AC AD AE H I J AF H L M N O I P
  Q H I R S T U V@2 W B F X Y B F Z AA B F AB W AC AD AG AH@2 AI@4 ~@2 W B F X Y B F Z AA B F AB W AC AD AG W B F X Y B
  F Z AA B F AB W AC AD AG W B F X Y B F Z AA B F AB W AC AD AJ ~@2
>`.pickRestart({
  A: "g1 ~@2 f1 g1 c2 d2 c2", B: "f1 ~ f1@2 ~@12", C: "eb2@2 ~@4 d2@2 eb2@2 g1@2 d2@2 db2 ~",
  D: "c2@2 ~@4 bb1@2 c2 ~ c2@2 f1@2 gb1@2", E: "f1!2 ~@4 eb2@2", F: "eb2 ~@2 d2 eb2 g1 d2 db2",
  G: "c2@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~", H: "c2@2 ~@4 bb1@2 c2 ~ c2 ~ bb1@3 ~", I: "g1@3 ~@3 f1@2 g1 ~ g1@2 bb1@3 ~",
  J: "f1@3 ~@3 f1@2 f2 ~ f2 ~ g2@3 ~", K: "c2@3 ~@3 c2@2 c2@2 c2@2 bb1@2 g1@2", L: "g1@3 ~@3 f1@2 g1 ~ g1@2 bb1@4",
  M: "a1@6 eb2@5 ~ g2@2 g2@2", N: "bb2@3 ab2@3 g2@2", O: "c2@2 ~@4 bb1@2 c2 ~ c2@2 bb1@3 ~",
  P: "f1@2 ~@4 f1@2 f2 ~ f2 ~ g2@3 ~", Q: "c2@3 ~@3 c2@3 ~ c2@2 bb1 ~ g1@2", R: "a1@6 eb2@6 g2 ~ g2@2",
  S: "bb2@5 ~ ab2@6 g2@3 ~", T: "d2@2 ~@4 a1 ~ d2 ~ d2@3 ~@3", U: "eb2@2 ~@4 bb1 ~ eb2 ~ eb2 ~ g2@4",
  V: "[f2@3 ~@3 c2 ~ f2 ~ f2@3 ~ e2@7 ~ c2@7 ~@3]/2", W: "g1@2 ~@4 f1@2 g1 ~ c2@2 d2@2 c2@2", X: "c2 ~@4 eb1 f1 gb1",
  Y: "g1@3 ~@3 f1@2 g1@2 c2@2 d2@2 c2@2", Z: "c2@3 ~@7 eb1@2 f1@2 gb1@2", AA: "g1@2 ~@4 f1@2 g1@2 c2@2 d2 ~ c2@2",
  AB: "c2@3 ~@3 bb1@2 c2 ~ c2@2 bb1@2 a1@2", AC: "f1 ~ f1@2 ~@8 eb2@3 ~", AD: "eb2@2 ~@4 d2@2 eb2@2 g1 ~ d2@2 db2@2",
  AE: "c2@2 ~@4 bb1!2 c2@2 ~@2 bb1@3 ~", AF: "c2@3 ~@3 c2@3 ~ c2@2 bb1@2 g1@2", AG: "c2 ~@2 bb1 c2@2 bb1@2",
  AH: "[g1@21 ~@11]/2", AI: "[g1@11 ~@5]/2", AJ: "c2@7 ~@9",
})).s("gm_synth_bass_2").gain(0.45)

// other · piano · "A.PIANO 2"
const piano = note(`<
  ~ A@2 B C D@2 B E ~@20 F@2 B G H@2 I G J@2 B G K@2 I E ~@20 F@2 B G K@2 B L M@2 N O D@2 B E ~@8 A@2 B G H@2 B G M@2 B
  G P@2 B E Q@2 R G H@2 R C M@2 B G K@2 B E S@2 B G P@2 B L T@2 B C K@2 B E ~@2
>`.pickRestart({
  A: "[[bb3,bb5]@2 [a3,a5]@2 [g3,g5]@2 [f3,f5] ~@4 [c4,c6]@5, ~@7 [d3,d5]@9]/2", // Bb A G F C D
  B: "[bb3,bb5]@2 [a3,a5]@2 [g3,g5]@2 [f3,f5] [d3,d5]", C: "[c3,c5]@11 ~ [g3,g5]@2 [a3,a5]@2",
  D: "[[bb3,bb5]@4 [a3,a5]@3 ~ [g3,g5]@4 [f3,f5]@2 ~@8 [c4,c6]@9 ~, ~@7 [d3,d5]@9]/2", E: "[c3,c5]",
  F: "[[bb3,bb5]@2 [a3,a5]@2 [g3,g5]@2 [f3,f5] ~@4 [c4,c6]@5, ~@7 [d3,d5]@8 ~]/2", G: "[c3,c5]@6 [g3,g5] [a3,a5]",
  H: "[[bb3,bb5]@4 [a3,a5]@3 ~ [g3,g5]@4 [f3,f5]@2 ~@8 [c4,c6]@10, ~@14 [d3,d5]@17 ~]/2", // Bb A G F C D
  I: "[bb3,bb5]@4 [a3,a5]@3 ~ [g3,g5]@4 [f3,f5]@2 [d3,d5]@2", // Bb A G F D
  J: "[[bb3,bb5]@3 ~ [a3,a5]@4 [g3,g5]@4 [f3,f5]@2 ~@8 [c4,c6]@10, ~@7 [d3,d5]@8 ~]/2", // Bb A G F C D
  K: "[[bb3,bb5]@4 [a3,a5]@3 ~ [g3,g5]@4 [f3,f5]@2 ~@8 [c4,c6]@10, ~@7 [d3,d5]@8 ~]/2", // Bb A G F C D
  L: "~@6 [g3,g5] [a3,a5], [c3,c5]", // G A C
  M: "[[bb3,bb5]@3 ~ [a3,a5]@3 ~ [g3,g5]@3 ~ [f3,f5]@2 ~@8 [c4,c6]@10, ~@7 [d3,d5]@8 ~]/2", // Bb A G F C D
  N: "[bb3,bb5]@2 [a3,a5]@2 [g3,g5]@2 f5 [d3,d5], ~@3 f3", O: "[c3,c5]@6 g5 [a3,a5], ~@12 g3 ~@3",
  P: "[[bb3,bb5]@4 [a3,a5]@3 ~ [g3,g5]@4 [f3,f5]@2 ~@8 [c4,c6]@9 ~, ~@14 [d3,d5]@17 ~]/2", // Bb A G F C D
  Q: "[[bb3,bb5]@2 [a3,a5]@2 [g3,g5]@2 [f3,f5] ~@4 [c4,c6]@5, ~@14 [d3,d5]@15 ~@3]/2", // Bb A G F C D
  R: "[bb3,bb5]@4 [a3,a5]@4 [g3,g5]@3 ~ [f3,f5]@2 [d3,d5]@2", // Bb A G F D
  S: "[[bb3,bb5]@2 [a3,a5]@2 [g3,g5]@2 [f3,f5] ~@4 [c4,c6]@5, ~@14 [d3,d5]@17 ~]/2", // Bb A G F C D
  T: "[[bb3,bb5]@3 ~ [a3,a5]@3 ~ [g3,g5]@3 ~ [f3,f5]@2 ~@8 [c4,c6]@10, ~@7 [d3,d5]@9]/2", // Bb A G F C D
})).s("gm_piano").gain(0.45).pan(0.4)

// other · celesta
const celesta = note(`<
  ~ A@2 B C D E F G ~@7 H I ~@7 J K ~@2 A@2 B C D E F L A@2 B C D E F G ~@7 M N ~@7 J K ~@2 A@2 B C D E F L A@2 B C D E
  F G ~@8 A@2 B C D E F L A@2 B C D E F G A@2 B C D E F L A@2 B C D E F G A@2 B C D E F L A@2 B C D E F G ~@2
>`.pickRestart({
  A: "[[bb6,bb7]@3 ~ [a6,a7]@3 ~ [g6,g7]@2 ~@2 [f6,f7] ~ [d6,d7]@4 ~@4 [c7,c8]@5 ~@5]/2", // Bb A G F D C
  B: "[bb6,bb7]@3 ~ [a6,a7]@3 ~ [g6,g7]@3 ~ f6@2 d7@2, ~@12 f7 ~ d6 ~", C: "[c6,c7]@4 ~@8 [g6,g7] ~ [a6,a7] ~",
  D: "[bb6,bb7]@3 ~ [a6,a7]@3 ~ [g6,g7]@3 ~ [f6,f7]@2 [d6,d7]@2", E: "~@3 [c7,c8]@3 ~@2",
  F: "[bb6,bb7]@3 ~ [a6,a7]@4 [g6,g7]@3 ~ [f6,f7]@2 d7@2, ~@14 d6 ~", G: "[c6,c7]@5 ~@11",
  H: "~@6 [eb5,g5]@2 [d5,f5]@2 [c5,eb5] ~ [bb4,d5] ~ [g4,c5,eb5] ~", I: "~@2 [eb4,g4,c5] ~@13", J: "~@14 [d5,f5] ~",
  K: "~@2 [d5,f5] ~@3 [c5,eb5] ~ [d5,f5] ~@7", L: "[c6,c7]@5 ~@7 [g6,g7]@2 a7@2, ~@14 a6 ~",
  M: "~@6 [eb5,g5]@2 [d5,f5]@2 [c5,eb5]@2 [bb4,d5] ~ [c5,eb5]@2", N: "~@2 [g4,c5] ~@13",
})).s("gm_celesta").gain(0.31).pan(0.3)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@89 A B C@2 D@2 E@4 ~@40>".pickRestart({
  A: "c5@12 d5@2 d5 bb4", B: "g4@4 bb4 ~@5 d5@2 f5@2 d5@2",
  C: "[g5@2 d5@2 a5@2 d5@2 bb5@2 d5@2 c6@2 ab5@9 ~@3 g5@2 f5@2 g5 ~]/2",
  D: "[bb5 g5 f5@2 g5@2 f5@3 ~ g5 ~ g5 f5 d5@4 bb5@2 a5@2 c6 ~ bb5@3 ~ bb5@2 bb5@2]/2",
  E: "[~@2 g5@4 a5@4 bb5@3 ~ c6@4 d6@4 f6@6 g6@23 ~@13]/4",
})).s("gm_lead_2_sawtooth").gain(0.55)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A@4 B@5 ~@2 C D ~@6 E@2 ~@7 F@3 G@2 H I J@3 K L@4 M@2 ~@2 N O ~@6 P Q ~@7 R@4 S@4 T@7 U@2 V@2 W@2 ~@3 X@8 Y@4 Z@4
  AA@4 AB@8 AC@8 AD@8 AE@4 ~@2
>`.pickRestart({
  A: "[~@2 g3 ~@3 g3 ~ bb3 ~@3 a3@2 g3@5 ~@3 bb3 ~ c4 ~@3 d4@2 g3@5 ~@3 g3 ~ bb3 ~@3 a3@2 g3@5 ~@5 c4@2 b3 [g3,bb3] c4@2 bb3@2]/4", // Gm
  B: "[g3@6 ~@2 bb3 ~@3 a3@2 g3@4 g3 ~@3 a3 ~ c4 ~@3 d4@2 g3@4 ~@4 g3 ~ bb3 ~@3 a3@2 g3@4 ~@4 g3 ~ f3@2 g3 ~ f3@2 g3@8 ~@10]/5",
  C: "~@4 bb3@8 ab3 f3 d3@2", D: "gb3@11 ~@5", E: "[~ g3 bb3 f4 c4 d4 bb3 c4@4 ~@5]/2",
  F: "[~@6 g3 ~ bb3 ~@3 a3@2 g3@4 g3 ~@3 bb3 ~ c4 ~@3 d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3@2 g3@2]/3",
  G: "[~@2 g3 ~@3 c4 d4 c4@2 g3 ~ g3 ~ g3@4 g3 ~@5 bb3 ~@2 d3 a3@2 g3@2]/2", H: "~@2 g3 ~@3 bb3 ~ c4 ~@3 d4@2 g3@2",
  I: "~@2 g3 ~@3 g3 ~ bb3 ~ ab3 ~ a3 ~ g3@2",
  J: "[~@2 eb4@2 d4@2 c4 ~ d4 ~@3 a3 ~ g3@4 g3 ~@5 bb3 ~@3 a3@2 g3@4 g3 ~@5 c4 ~@3 d4@2 g3@2]/3",
  K: "~@2 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@2",
  L: "[~@2 g3 ~@3 bb3@2 a3@2 g3 ~ f3 ~ g3@4 g3 ~@5 bb3 ~ d3 ~ a3 ~ g3@4 g3 ~@3 a3 ~ c4 ~@3 d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@2]/4",
  M: "[eb4@2 ~@2 d4@2 ~@2 c4 ~ bb3 ~ gb3@13 ~@7]/2", N: "~@2 g3@2 bb3@2 f4@2 c4@4 b3@3 ~", O: "bb3 c4@3 bb3@2 g3@10",
  P: "~@2 bb4@4 g4@2 f4@2 g4 ~ c4@2 b3@2", Q: "c4",
  R: "[~@2 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 bb3 ~ c4 ~@3 d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@5 c4@2 c4 [bb3,b3] g3@2 bb3 ~]/4", // Bmaj7
  S: "[~@2 g3 ~@3 g3 ~ bb3 ~@3 a3@2 g3@4 ~@2 d3 ~ bb3 ~ c4 ~@3 d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@5 c4@2 ~@2 c4@2 d4@2]/4",
  T: "[~@2 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 bb3 ~ c4 ~@3 d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@2 a3!2 ~ g3@4 g3 ~@3 g3 ~ c4 ~ g3 ~ bb3@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 bb3 ~ c4 ~@3 d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@2]/7",
  U: "[~@2 g3 ~@3 eb4@2 d4@3 ~ bb3@2 g3@7 ~@11]/2", V: "[~@6 [bb3,c4,f4]@5 ~ d4 ~ [bb3,f4]@14 ~@4, ~@14 c4@11 ~@7]/2",
  W: "[~@6 [c4,f4,a4]@5 ~ bb4 ~ [d4,g4,bb4]@5 ~@13]/2", // F Gm
  X: "[~@2 g3 ~@3 g3 ~ bb3 ~ d3 ~ a3@2 g3@4 g3 ~@3 bb3 ~ c4 ~@3 d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~ d3 ~ a3@2 g3@4 g3 ~@3 g3 ~ c4 ~@3 bb3 ~ g3@4 g3 ~@3 g3 ~ bb3 ~ d3 ~ a3@2 g3@4 g3 ~@3 bb3 ~ c4 ~@3 d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 a3 ~ c4 ~@3 c4@2 d4 ~]/8",
  Y: "[g3@4 ~@2 g3 ~@5 a4@2 g3@4 g3 ~@3 bb3 ~ c4 ~ bb3 ~ d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 ab3 ~ g3@4 g3 ~@3 a3 ~ c4 ~ bb3 ~ c4@2 d4 ~]/4",
  Z: "[~@6 g3 ~ bb3 ~@3 a3@2 g3@4 g3 ~@5 c4 ~ a3 ~ d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@5 g3@4 g3 ~@5 c4 ~ bb3 ~ c4@2 d4 ~]/4",
  AA: "[g3 ~@3 g3 ~@5 bb3 ~ a3 ~ g3@4 g3 ~@3 a3 ~ c4 ~ bb3 ~ d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 a3 ~ c4 ~ a3 ~ d4@2 ~@2]/4",
  AB: "[g3@4 ~@2 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 bb3 ~ c4 ~ bb3 ~ d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@5 g3@4 g3 ~@5 c4@2 bb3 ~ d4 ~ g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 bb3 ~ c4 ~ bb3 ~ d4@2 g3@4 g3 ~@3 g3 ~@5 g3@2 g3@4 g3 ~@5 c4 ~ bb3 ~ c4@2 d4 ~]/8",
  AC: "[~@2 g3 ~@3 g3 ~ bb3 ~ d3 ~ a3 ~ g3@4 g3 ~@3 bb3 ~ c4 ~ bb3 ~ d4@2 g3@4 g3 ~@3 g3 ~@5 bb3@2 g3@4 g3 ~@5 c4 ~ a3 ~ d4 ~ g3@4 g3 ~@3 g3 ~@3 bb3 ~ a3@2 g3@4 g3 ~@3 a3 ~ c4 ~ bb3 ~ d4@2 g3@4 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 a3 ~ c4@2 bb3 ~ d4 ~ g3@2]/8",
  AD: "[~@2 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 g3 ~ bb3 ~ bb3 ~ d4@2 g3@4 g3 ~@5 bb3 ~@3 a3 ~ g3@4 g3 ~@3 a3 ~ c4@2 bb3 ~ d4 ~ g3@5 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 bb3 ~ c4 ~ a3 ~ d4@2 g3@4 g3 ~@3 g3 ~@3 bb3@2 a3@2 g3@4 g3 ~@3 a3 ~ c4@2 bb3 ~ d4 ~ g3@2]/8",
  AE: "[~@2 g3 ~@3 g3 ~ bb3 ~@3 a3 ~ g3@4 g3 ~@3 a3 ~ c4 ~@3 d4@2 g3@4 g3 ~@3 g3 ~@3 bb3 ~ a3 ~ g3@4 g3 ~@3 a3 ~@9]/4",
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.2)

// chords · banjo
const banjo = note(`<
  ~@9 A B C D E F G H I J G K L F M ~ N O P Q ~@16 A B C D E F G H I J G K L F M ~ N O P Q ~@74
>`.pickRestart({
  A: "[eb4,g4] ~ eb4 ~@5 [eb4,g4] ~ [eb4,g4] ~@5", B: "[d4,g4] ~ [d4,g4] ~@5 d4 ~ [d4,g4] ~@5",
  C: "[c4,f4] ~ [c4,f4] ~@5 c4 ~ [c4,f4] ~@5", D: "~@2 [c4,eb4] ~@5 [c4,eb4] ~ [c4,eb4] ~@5",
  E: "c4 ~ [c4,eb4] ~@5 [c4,eb4] ~ [c4,eb4] ~@5", F: "d4 ~ [d4,g4] ~@5 [d4,g4] ~ [d4,g4] ~@5",
  G: "[c4,f4] ~ [c4,f4] ~@5 [c4,f4] ~ [c4,f4] ~@5", H: "c4 ~ [c4,eb4] ~@5 c4 ~ [c4,eb4] ~@5",
  I: "~@2 [c4,eb4] ~@5 c4 ~ [c4,eb4] ~@5", J: "[d4,g4] ~ [d4,g4] ~@5 [d4,g4] ~ [d4,g4] ~@5",
  K: "[c4,eb4] ~ [c4,eb4] ~@5 [c4,eb4] ~ [c4,eb4] ~@5", L: "[c4,eb4] ~ [c4,eb4] ~@7 [c4,eb4] ~@5",
  M: "~@2 [c4,f4] ~@5 [c4,f4] ~ [c4,f4] ~@5", N: "[d4,f4] ~ [d4,f4] ~@3 d4 ~ [d4,f4] ~ [d4,f4] ~@5",
  O: "[d4,g4] ~ [d4,g4] ~@3 [d4,g4] ~ [d4,g4] ~ [d4,g4] ~@5", P: "[c4,f4] ~ [c4,f4] ~@3 c4 ~ [c4,f4] ~ [c4,f4] ~@5",
  Q: "[d4,gb4] ~ [d4,gb4] ~@3 d4 ~ [d4,gb4] ~ [d4,gb4] ~@5", // D
})).s("gm_banjo").gain(0.18).pan(0.2)

// chords · banjo · soft notes
const banjo_soft = note(`<
  ~@9 A B C D E F ~ G H ~@3 I F J ~ K ~ K L ~@16 A B C D E F ~ G H ~@3 I F J ~ K ~ K L ~@74
>`.pickRestart({
  A: "~@2 g4 ~@13", B: "~@8 g4 ~@7", C: "~@8 f4 ~@7", D: "[c4,eb4] ~@15", E: "eb4 ~@15", F: "g4 ~@15",
  G: "eb4 ~@7 eb4 ~@7", H: "[c4,eb4] ~@7 eb4 ~@7", I: "~@8 [c4,eb4] ~@7", J: "[c4,f4] ~@15", K: "~@6 f4 ~@9",
  L: "~@6 gb4 ~@9",
})).s("gm_banjo").gain(0.09).pan(0.2)

// other · taiko drum · "TAIKO" · E
const taiko_drum = note("<~@87 [[e3,e4]@13 ~@3, e2@11 ~@5] ~@51>").s("gm_taiko_drum").gain(0.55)

// drums · kick
const kick = s("bd").struct("<~ A@8 B@19 C A@16 B@19 C A@16 D E D E D E ~@2 A@47 C ~@2>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x ~@3 x", C: "x ~@2 x ~@4", D: "x ~@2 x!2 ~@2 x", E: "~@3 x!2 ~@3",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@81 [~ x ~ x]!6 ~@52>").gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  A B@7 C B@27 D B@7 C B@27 D B@8 ~@3 A ~@3 A B@15 C B@7 D B@7 D B@7 C B@7 E ~@2
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@5 x!3 ~@3", D: "~@2 x ~@2 x!2 ~", E: "~ x ~@2",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~@9 [~ x ~ x]!20 ~@16 [~ x ~ x]!20 ~@16 [~ x ~ x]!6 ~@52>").gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@28 [~@5 x ~@2] ~@35 [~@5 x ~@2] ~@31 [~@6 x!2] ~@42>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B A B A B A C A@3 B A@3 B A@3 B A@3 B A B@2 D A B A B A B A B A B A B A@3 E A@3 B A@3 B A@3 B A@3 B A@3 F A B A B
  A B A B A B A B A B A G A B A B A B ~@2 A B A B A B A F B@2 A B A B A H A B A B A B A F A B A B A B A I A B A B A B A
  J A B A B A B A K ~@2
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x ~ x ~ x!3 ~", D: "~@3 x", E: "x!3 ~", F: "x", G: "x ~@4 x ~@2", H: "x!2", I: "x!4",
  J: "x ~@2 x", K: "x!4 ~@4",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@5 x ~@2] ~@27 [~ x] ~@35 [~ x] ~@31 [~@3 x ~ x ~@2] ~@42>").gain(0.4)
// … 51 more lines

More by Celine Dion