Strudelify

Immortality

Celine Dion

KeyD majorTempo91 bpm
0:00/0:00
// Immortality — Celine Dion
// 91 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 33, 4/4 at bar 33, 2/4 at bar 66, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 9 "Strings" synth strings 1 (copy of ch 6 "Melody 2" piano); ch 11 "Strings" synth strings 1 (copy of ch 6 "Melody 2" piano)
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(91/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.

// bass · fretless bass · "Bass"
const bass = note(`<
  A B A C A D E F G H I J K L M E G N K O P Q R G A S T U V W X Y Z AA AB AC@2 AD@2 AE@8 AF@4 AG AH AI AJ@3 AG AK AL
  AM@3 AN AO AP AQ AR AS G H AT AU E I R G AV AW AX B C A ~
>`.pickRestart({
  A: "c2@15 ~", B: "c2", C: "c2@5 ~ c2@2 b1@4 a1@4", D: "c2@5 ~ c2@2 g1@7 ~", E: "a1@7 a1", F: "a1@3 a1", G: "d2",
  H: "d1@3 d2", I: "d2@7 d2", J: "d1@8 c2@5 ~ c2@2", K: "g1 f1", L: "e1@8 f2@5 ~ f2@2", M: "c2@5 ~ c2@2 d2@4 a1@4",
  N: "d2@8 c2@5 ~ c2@2", O: "e2@5 ~ e2@2 f2@8", P: "c2@5 ~ c2@2 d1@8", Q: "a1@12 a1@2 a1 ~", R: "d2@15 ~",
  S: "g1@12 g1@2 g1 ~", T: "a1@15 ~", U: "d2@12 d2@2 d2 ~", V: "d2@12 f2@2 e2 ~", W: "d2@7 ~ c2@5 ~ c2@2",
  X: "d2@7 ~ e2@7 ~", Y: "d2@7 ~ c2@7 ~", Z: "d1 e2", AA: "d2@8 c2@7 ~", AB: "d2 e1", AC: "[d2@7 ~ d2@14 d1 ~ d2@8]/2",
  AD: "[b1@4 a1@4 c2@12 c2@2 c2 ~ c2@8]/2",
  AE: "[g1@8 a1@14 a1@2 a1@12 a1@4 d2@13 ~ d2 ~ d2@12 d2@2 d2 ~ f2@13 ~ f2 ~ f2@16 c2@12 c2@2 c2 ~ g1@8]/8",
  AF: "[~@4 c2@2 b1 ~ a1@15 ~ d2@13 ~ d2 ~ d2@14 d2@2 d1@8]/4", AG: "c2 g1", AH: "f2@7 ~ e2@5 ~ e2@2",
  AI: "f2@5 ~ f2@2 c2@8", AJ: "[d2@4 a1@4 a1@15 ~ d2@14 d2@2 d2@7 ~]/3", AK: "f2@7 ~ e2@7 ~", AL: "f1@8 c2@5 ~ c2@2",
  AM: "[d2@8 a1@14 a1@2 d2@13 ~ d2 ~ d1@8]/3", AN: "c2 d2", AO: "e2 d2", AP: "c2@8 d2@5 ~ d2@2",
  AQ: "e2@7 ~ d2@5 ~ d2@2", AR: "c2@5 ~ c2@2 d2@5 ~ d2@2", AS: "e2@8 d2@5 ~ d2@2", AT: "c2@7 c2", AU: "g1@7 g1",
  AV: "d2@14 d1 ~", AW: "c2@12 c2@2 c2 ~", AX: "c2@13 ~ c2 ~",
})).s("gm_fretless_bass").gain(0.31)

// chords · epiano1 · "Piano"
const epiano1 = note(`<
  A@2 B C D E F@2 G@2 H I J@2 K L M N O P Q R S@2 D T R U H V W X Y Z AA AB@2 AC@2 AD@2 AE@8 AF@2 AG AH AI@4 AJ AK AL
  AM@5 AN AO AP AQ AR@2 AS@2 R U AT@2 AU@2 AV@2 AW AX ~
>`.pickRestart({
  A: "[g3@5 ~@9 g4@2, g4@7 ~, e4@3 e4, ~@5 g3@6 g3@5, ~@7 c5@9]/2", B: "~@3 c4, [g3,e4,g4]",
  C: "g3@3 ~@3 e4@2 [d3,b3]@4 ~@2 f4@2, [c4,g4] ~, ~ g3 ~ a3", D: "g3@5 ~ g3@2, [c4,e4,g4]",
  E: "~@4 c4@2 d3@5 ~@3 b3@2, [g3,e4,g4]@3 [g3,d4]@5, ~@3 d3", // C G5
  F: "[e3@17 ~@13 e4@2, e4@27 ~@5, [a3,c4]@10 ~ a3@5, ~@9 e3@7]/2", // Am
  G: "[f3@5 ~@3 a4@8, a3, f4@7 f4@9, d4@3 d4@5, ~@5 f3@11]/2", H: "f3@5 ~ f3@2, [a3,d4,f4]",
  I: "[f3,d4]@8 g3@3 ~@3 e4@2, ~ [c4,g4], ~@3 g3", // Dm C5
  J: "[[d3,b3]@6 ~@6 c4@2 g3@5 ~@3 e4@2 [a3,f4]@8, ~@3 [a3,f4,a4]@4 [b3,g4]@5 ~@4, ~@5 g3 ~@2]/2", // G Dm Em
  K: "[g3,e4]@2 [f3,d4] [e3,c4]", L: "e3@5 ~ e3@2, [a3,c4,e4]", M: "~@3 a3, [f3,d4,f4]",
  N: "[f3,d4]@2 ~ c4, ~ [g3,e4,g4]", O: "~ g3 [a3,f4]@2, [d3,b3,d4] ~", P: "[g3,e4] [a3,f4]",
  Q: "~ c4 ~ a3, [g3,e4,g4] [f3,d4,f4]", R: "[a3,c4]@5 ~@2 c4, e4, e3@9 ~ e3@6, ~@3 a3",
  S: "[f3@5 ~@9 f4@2, f4@7 ~, d4@3 d4, ~@5 f3@6 f3@5, ~@7 a4@9]/2", T: "d3@5 ~ d3@2, [g3,b3,d4]",
  U: "f#3@5 ~ f#3@2, [a3,d4,f#4]", V: "~ a3 [g3,e4]@2, [f3,d4,f4] ~", W: "[f3,d4]@8 g3@3 ~@3 e4@2, ~ [b3,g4], ~@3 g3",
  X: "f3@3 ~ f3@2 g3@5 ~@3 e4@2, [a3,f4]@3 [c4,g4]@5, ~@3 g3", Y: "~@4 a3@4 g3@3 ~@3 e4@2, [f3,d4,f4] [b3,g4], ~@3 g3",
  Z: "~@2 a3 ~@3 c4@2, [f3,d4,f4]@3 [g3,e4,g4]@5", AA: "~@2 a3 [g3,e4]@5, [f3,d4,f4]@3 ~@5",
  AB: "[[f3,d4]@8 [a3,d4]@10 ~@2 a3@2 f3@5 ~@3 d4@2, ~@4 f4@7 ~@3 f3@2, ~@8 f3@9 ~ f3@4 [a3,f4]@10]/2", // Dm D5 Dm
  AC: "[[d3,b3]@4 ~@2 f4@2 [c4,e4]@10 ~@2 c4@2 e4 ~@5 c4@4, ~@2 a3@2 g4@7 ~@5, ~@8 g3@9 ~ g3@4 [g3,g4]@10]/2", // G C G
  AD: "[[d3,b3]@8 e3@17 ~@5 a3@2, ~ e4@3, ~@2 [a3,c4]@5 ~, ~@13 e3@3]/2", // G Am
  AE: "[~@3 e4 [f3,a3,d4]@16 a3@9 ~@5 a4@2 g3@5 ~ g3@2 ~@6 g3@2 ~@6 a3@2 [f#3,a3,d4,f#4]@4, ~@10 a4@7 ~@15, ~@20 f4@13 f4@3 ~@28, ~@20 c4@11 c4@5 [c4,e4,g4]@8 ~@20, ~@29 a3@7 ~@8 [d3,b3,d4]@8 [e3,c4,e4]@8 ~@4]/8", // Dm D C G C
  AF: "[~@3 d4 f3@5 ~ f3@2 [f3,d4]@4, ~ f#3@3 ~@12, ~ a3 [a3,d4,f4]@4 ~@2]/2", AG: "~ c4 ~ g3, [g3,e4,g4] [d3,b3,d4]",
  AH: "~ c4 [g3,e4]@2, [a3,f4,a4] ~", // C Dm
  AI: "[[a3,f4]@4 ~@2 c4 [f3,d4]@3 ~ c4 ~@6 a3@2 ~@6 a3@2 ~@2 a3@2, ~@4 [g3,e4,g4]@3 ~@3 e3@2 [e3,c4,e4]@8 [f3,d4,f4]@8 [f3,d4,f4]@4]/4", // Dm C Dm
  AJ: "[g3,e4]@2 ~ g3, ~ [d3,b3,d4]", AK: "[a3,f4] [g3,e4]", AL: "a3@3 ~@3 f4@2 ~@4 c4@4, [c4,a4] ~, ~ a3 [g3,e4,g4]@2",
  AM: "[[f3,d4]@8 e3@10 ~@2 e3@4 ~@12 a3@4 ~@4 a3@2 g3@5 ~@3 e4@2 ~@4 a3@2 ~@6 b3@4 [f3,d4]@8, ~@4 [a3,c4,e4]@8 [f3,d4,f4]@8 [f3,d4,f4]@3 [c4,g4]@5 ~@12, ~@26 g3@2 [f3,d4,f4]@3 [g3,e4,g4]@5 ~@4]/5", // Dm Am Dm C5 Dm C
  AN: "[g3,e4]@8 f3@3 ~@3 d4@2, ~ [a3,f4], ~@3 f3", AO: "g3@3 ~@3 e4@2 f3@3 ~@3 d4@2, [b3,g4] [a3,f4], ~ g3 ~ f3",
  AP: "~ c4 [f3,d4]@2, [g3,e4,g4] ~", AQ: "~ b3 [f3,d4]@2, [g3,e4,g4] ~",
  AR: "[f3@9 ~@5 f4@2, f4@7 ~, d4@13 d4@3, a3@11 a3@5, ~@9 f3@7]/2",
  AS: "[[c4,e4]@5 ~ c4 ~@7 g3@2, g4@7 ~@9, g3@9 ~ g3@4 [d3,b3,d4]@18]/2", // C G
  AT: "[f3@17 ~@13 f4@2, f4@27 ~@5, [a3,d4]@10 ~ a3@5, ~@9 f3@7]/2", // D5
  AU: "[~@6 a3 g3@6 ~ g3@2, [f3,d4,f4]@7 [c4,e4,g4]@9]/2", AV: "[g3@5 ~@3 c5@8, c4, g4@7 g4@9, e4@3 e4@5, ~@5 g3@11]/2",
  AW: "[g3,e4]@4 [d3,b3]@2 ~ f4, ~@3 a3", AX: "[c4,e4]@11 ~@5, g4, g3@9 ~@7",
})).s("gm_epiano1").gain(0.18).pan(0.3)

// chords · epiano1 · "Piano" · soft notes
const epiano1_soft = note(`<
  ~@2 A B ~ C D@2 ~@3 E F ~@3 G ~@13 E H E ~@3 I ~@2 J@3 ~@4 K@3 ~@5 L@3 ~@2 M ~ N@2 ~@2 O P ~@4 Q@2 ~@2 R@2 G ~@6
>`.pickRestart({
  A: "c4@11 ~@5", B: "e4 ~@15", C: "~@6 b3@3 ~@7", D: "[~@13 c4@3, a2]/2", E: "~@8 e4 ~@7", F: "~@7 e4", G: "a3@11 ~@5",
  H: "d4 ~@5 e4@3 ~@7", I: "~@6 d4 ~@9", J: "[~@17 c4@3 ~@4, ~ a2@4 ~]/3", K: "[~@8 g3@11 ~@5 a3@11 ~@13]/3",
  L: "[~@8 a3@11 ~@5 a3@11 ~@13]/3", M: "f4 ~@15", N: "[~@8 a3@11 ~@11 e4@2]/2", O: "~@8 d4 ~@7", P: "e4 ~@7 d4 ~@7",
  Q: "[~@14 g3@13 ~@5]/2", R: "[~@13 d4@3, d2]/2",
})).s("gm_epiano1").gain(0.11).pan(0.3)

// chords · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note(`<
  A@2 B C D E@3 F@2 G H I J K L M@2 N O P Q R@2 S T Q U G V W X Y H Z AA@2 AB@2 AC@5 AD@4 AE@3 AF AG AH AI@3 AJ@3 AK@3
  AL AM AN AM AO AP AQ@2 AR T L U R@2 AS B AT@2 AU AV ~
>`.pickRestart({
  A: "[g3 ~ [g3,c4] c4@2 ~ g3!2 ~@2 g3 ~@3 e3@2, e3@2 ~@2 e3@2 e3 ~, ~@2 e4@3 [c4,e4]@5 [c4,e4]@3 ~@3, ~@11 g3@2 [g3,c4,e4]@3]/2", // C5 C
  B: "g3 ~ [g3,c4] c4@2 ~ g3!2, e3 ~, ~@2 e4@3 [c4,e4]@3", // C5 C
  C: "[e3,g3]@4 [e3,g3]@2 g3@2 [b2,g3]@3 ~ [f3,c4]@3 ~, ~ [c4,e4] ~@2", // Em F5 C
  D: "g3@3 ~ c4@6 ~@4 [e3,e4]@2, e3@5 c4@3, ~@3 g3@9 g3@4, ~@2 e4@5 ~, ~@5 e3@2 ~", // E
  E: "[[e3,g3]@2 [e3,g3] g3 ~ [g3,b3]@2 [e3,a3]@3 [e3,a3] e3 ~ e3!2 ~@3 [e3,a3] e3!4 a3, ~@2 [c4,e4]@2 d3@3 a2@9 a2@8, ~@7 c3@5 c3@2 ~ [e3,a3]@3 ~@2 c3@2 c3@2, ~@11 a3@2 a3@2 ~@4 a3@2 a3@2 ~]/3", // Em G A5 C A5
  F: "[f3 ~ [f3,a3] a3@2 ~ f3!2 ~@2 f3 ~@3 d3@2, d3@2 ~@2 d3@2 d3 ~, ~@2 d4@3 [a3,d4]@5 [a3,d4]@3 ~@3, ~@11 f3@2 [f3,a3,d4]@3]/2", // F D5 Dm
  G: "f3 ~ [f3,a3] a3@2 ~ f3!2, d3 ~, ~@2 d4@3 [a3,d4]@3", // F D5
  H: "[f3,a3,d4]@2 [d3,f3,a3,d4]@2 ~@3 [e3,g3], ~@4 g3@3 ~, ~@5 [c4,e4]@3", // Dm Em C
  I: "~ [g3,b3]@2 ~@4 [f3,a3], d3@3 a3@4 ~, ~@5 [c4,f4]@3", // G F F5
  J: "[e3,g3]@2 [e3,g3] ~ [f3,a3]@2 [f3,a3] a3, ~ [b3,e4] ~ [c4,f4], ~@3 g3@5", // Em F E5 F5
  K: "[g3,c4,e4]@2 [e3,g3,c4,e4] [d3,a3]@2 ~ [e3,a3,c4]@2, ~@6 c3 ~", L: "a3@2 ~@2 a3 a3@3, e3!2, c3@3 c3@5, ~ a3 ~@2",
  M: "[f3@3 ~ a3@6 ~@2 f3@2 [f3,a3,d4]@6 [d3,f3,a3,d4]@4 [g3,c4,e4]@4 [e3,g3,c4,e4]@4, d3@5 [d3,a3]@2 ~@9, ~@3 f3@9 ~@20, ~@2 d4@5 ~@9]/2", // Dm C D5
  N: "[b2,d3]@2 [b2,d3] d3 [a3,c4,f4]@2 [c4,f4]@2, ~@2 [g3,b3]@2 f3 ~ [f3,a3] ~", // Bm F F5 G F
  O: "[g3,b3,e4]@2 [b3,e4]@2 ~@3 [f3,a3], e3 ~ [e3,g3] ~ a3@3 ~, ~@5 [c4,f4]@3", // Em E5 F Em F5
  P: "~@3 [e3,g3] [f3,a3,d4]@2 [d3,f3,a3,d4]@2, g3@3 ~@5, ~ [c4,e4]@3 ~@4", // Em Dm C
  Q: "[e3,a3,c4]@2 [e3,a3,c4] e3!5, c3@4 c3@3 ~, ~@3 [a3,c4]@3 [a3,c4]@2", // Am
  R: "[[d3,f3,a3,d4]@2 [d3,f3] d3 [f3,a3,d4] [d3,f3,a3,d4]@2 f3@2 f3 [a3,d4]@2 [d3,f3,a3,d4] [d3,f3]!2 [f3,a3], ~@2 [a3,d4]@2 ~@3 [a3,d4]@3 f3 ~@2 d4@3, ~@13 a3@2 ~]/2", // Dm D5 Dm F D5
  S: "[g3,c4,e4]@2 [g3,c4,e4] g3!5, e3@4 e3@3 ~, ~@3 [c4,e4]@3 [c4,e4]@2", // C
  T: "[b2,d3,g3,b3]@2 [g3,b3]@2 [d3,g3,b3] [b2,d3]@2 d3, ~@2 [b2,d3] ~@2 [g3,b3]@3", // G Bm G
  U: "f#3@3 ~ a3@6 ~@4 [d3,d4]@2, d3@5 a3@3, ~@3 f#3@9 f#3@4, ~@2 d4@5 ~, ~@5 d3@2 ~", // D
  V: "~@3 [d3,f3] [g3,c4,e4]@2 [c4,e4]@2, f3@3 ~ e3 ~ [e3,g3] ~, ~ [a3,d4]@3 ~@4", // Dm C Em D5
  W: "~@3 [d3,f3] [e3,g3]@2 [e3,g3] g3, f3@3 ~@5, ~ [a3,d4]@3 ~@2 [b3,e4]@2", // Dm Em D5 E5
  X: "~@3 a3 [e3,g3]@2 [e3,g3] g3, a3@3 ~@3 [c4,e4]@2, ~ [d3,f3] ~@2", // Em C Dm
  Y: "[f3,a3,d4] [d3,f3,a3,d4] [g3,b3,e4] [b3,e4], ~@4 e3 ~ [e3,g3] ~", // Dm Em E5 Em
  Z: "[f3,a3,d4]@2 [d3,f3,a3,d4] [g3,b3,e4]@3 [b3,e4]@2, ~@3 e3@2 ~ [e3,g3] ~", // Dm Em E5 Em
  AA: "[[f3,a3,d4]@2 [d3,f3,a3,d4]@2 f3 ~ [f3,a3] a3@2 ~ f3!2 [f3,a3,d4]@2 [d3,f3,a3,d4]@2, ~ d3 ~@2, ~@6 d4@3 [a3,d4]@3 ~@4]/2", // Dm F Dm D5
  AB: "[[b2,g3]@3 ~ [f3,c4]@2 g3@5 ~ c4@6 ~@4 [e3,e4]@2 [g3,c4,e4]@4 [e3,g3,c4,e4]@4, ~@3 e3@6 c4@3 ~@4, ~@11 g3@9 g3@4 ~@8, ~@6 e4@5 ~@5, ~@9 e3@2 ~@5]/2", // Em F5 E C
  AC: "[[d3,g3,b3]@2 [g3,b3]@2 e3 ~ [e3,a3] a3@2 ~ e3!2 ~@2 e3 ~@3 c3@2 [f3,a3,d4]@2 [f3,a3,d4] f3 f3!8 f3!2 [f3,a3,d4]@2 a3 ~ [a3,c4] c4, b2 ~ [b2,d3] ~ c3@4 ~@4 c3@4 c3@2 ~@2 d3@4 d3@3 ~@9 f3@4, ~@6 c4@3 [a3,c4]@5 [a3,c4]@3 ~@6 [a3,d4]@3 [a3,d4]@2 d4@3 ~@7 f4@2, ~@15 e3@2 [e3,a3,c4]@3 ~@8 a3@2 ~ [a3,d4]@3 ~@6]/5", // G A5 Dm Am Bm Am D5 Am …
  AD: "[~@2 a3!2 ~@2 a3 ~@3 f3@2 c4@2 ~@2 c4 c4@2 [d3,g3,b3]@3 [d3,g3,b3] d3 d3!4 [c3,e3,a3,c4]@2 [a3,c4]@2, ~ [c4,f4]@5 [c4,f4]@3 ~@5 c4@2 ~@16, ~@4 f3@4 f3@2 ~@2 g3@4 g3@3 ~@4 [g3,b3]@3 [g3,b3]@2 ~@4, ~@7 a3@2 [a3,c4,f4]@3 e3@3 e3@4 b2@5 b2@3 ~@3 [c3,e3] ~]/4", // G Am F5 G F C
  AE: "[[e3,a3,c4] [c3,e3,a3,c4]@2 f#3@2 ~ [f#3,a3] a3@2 ~ f#3!2 [f3,a3,d4]@2 [f3,a3,d4] f3 f3!4 [f3,a3,d4]@2 [d3,f3,a3,d4]@2, ~@3 d3@5 ~@4 d3@4 d3@3 ~@5, ~@6 d4@3 [a3,d4]@3 ~@3 [a3,d4]@3 [a3,d4]@2 ~@4]/3", // Am F#m Dm D5
  AF: "~@3 [e3,g3] [d3,g3,b3]@2 [g3,b3]@2, g3@3 ~ b2 ~ [b2,d3] ~, ~ [c4,e4]@3 ~@4", // Em G Bm C
  AG: "[f3,a3]@2 [f3,a3] ~ [e3,g3]@2 [e3,g3] g3, ~ [c4,f4] ~ [b3,e4], ~@3 a3@5", // F Em F5 E5
  AH: "[a3,c4,f4] [f3,a3,c4,f4] [g3,c4,e4] [e3,g3,c4,e4]", // F C
  AI: "[[d3,a3]@3 ~ [c3,a3]@3 ~ [e3,a3,c4]@4 [e3,a3,c4]@2 e3@2 e3@2 e3@2 e3@2 e3@2 f3@2 ~@2 [f3,a3]@2 a3@4 ~@2 f3@2 f3@2 [f3,a3,d4]@4 [d3,f3,a3,d4]@4, ~@4 c3@4 c3@3 ~ d3@4 ~@8, ~@7 [a3,c4]@3 [a3,c4]@2 ~@2 d4@3 [a3,d4]@3 ~@4]/3", // D5 F Am F Dm Am D5
  AJ: "[[e3,g3]@2 [e3,g3] ~ [b2,d3]@2 [b2,d3,g3,b3] [a3,c4,f4]@3 [f3,a3,c4,f4] [e3,g3]@3 [e3,g3] ~ [f3,a3]@2 [f3,a3] a3 [g3,c4,e4]@2 [e3,g3,c4,e4]@2, ~ [c4,e4] ~@5 [b3,e4] ~ [c4,f4] ~@2, ~@3 g3@3 ~@9 g3@5 ~@4]/3", // Em Bm G F Em F C E5 …
  AK: "[[d3,f3]@2 [d3,f3] f3 e3 ~ [e3,a3] a3@2 ~ e3!2 a3@2 ~@2 a3 a3@3 [f3,a3,d4]@2 [a3,d4]@2, ~@2 [a3,d4]@2 c3@4 ~@4 d3@3 d3@5 d3 ~ [d3,f3] ~, ~@6 c4@3 [a3,c4]@3 f3@4 f3@4 ~@4, ~@7 a3 ~@4]/3", // Dm A5 Dm D5 Dm Am
  AL: "[g3,c4,e4] [e3,g3,c4,e4] [f3,a3,d4] [a3,d4], ~@4 d3 ~ [d3,f3] ~", // C Dm D5 Dm
  AM: "[g3,b3,e4]@2 [e3,g3,b3,e4]@2 [d3,f3]@2 [d3,f3] f3, ~@3 [a3,d4]", // Em Dm D5
  AN: "[g3,c4,e4] [c4,e4] [f3,a3,d4] [a3,d4], e3 ~ [e3,g3] ~ d3 ~ [d3,f3] ~", // C Dm D5 Em Dm
  AO: "[g3,c4,e4]@2 [e3,g3,c4,e4] ~@4 a3, e3 ~@2 a3@4 ~, ~@3 [d3,f3]", // C Dm
  AP: "[e3,g3]@2 [e3,g3] g3 [f3,a3,d4]@2 [d3,f3,a3,d4]@2, ~ [b3,e4] ~@2", // Em Dm E5
  AQ: "[[f3,a3]@2 [f3,a3] f3 ~ f3!2 ~@3 [f3,a3] f3!4 a3, d2 d2, d3@4 d3@2 ~ [f3,a3]@3 ~@2 d3@2 d3@2, ~@3 a3@2 a3@2 ~@4 a3@2 a3@2 ~]/2", // F
  AR: "c4@2 ~@2 c4 c4@3, g3!2, e3@3 e3@5, ~ c4 ~@2",
  AS: "[d3,f3,a3,d4]@2 [a3,d4]@2 [f3,a3,d4] [d3,f3]@2 f3, ~@2 [d3,f3] ~@2 [a3,d4]@3", // Dm D5 Dm D5
  AT: "[[e3,g3,c4,e4]@2 [e3,g3] e3 [g3,c4,e4] [e3,g3,c4,e4]@2 g3@2 g3 [c4,e4]@2 [e3,g3,c4,e4] [e3,g3]!2 [g3,c4], ~@2 [c4,e4]@2 ~@3 [c4,e4]@3 g3 ~@2 e4@3, ~@13 c4@2 ~]/2", // C Em C Em C5 C
  AU: "[g3,c4,e4] [c4,e4] [d3,g3,b3] [a3,c4,f4], e3 ~ [e3,g3] ~ b2 ~ f3 ~", AV: "[g3,c4,e4]!2, e3",
})).s("gm_electric_guitar_jazz").gain(0.15).pan(0.6)

// chords · electric guitar jazz · "Guitar" · soft notes
const electric_guitar_jazz_2 = note(`<
  A B A C ~ D E@2 F G F H I J K ~@3 L M N K O@2 P Q K ~ F R S P T H T U@2 ~@2 V@2 ~ W X@2 ~@2 Y Z@2 AA AB AC ~@2 AD@2 AE
  AF@2 AG@2 AH@2 AI AJ AI AK C AL@2 ~ Q ~@2 O@2 AM A AN@2 AO ~@2
>`.pickRestart({
  A: "~ e3, ~@3 g3@3 ~@2", B: "g3!2 ~@6", C: "~@3 e3 ~@4", D: "~@3 e3 b2@3 ~", E: "[~@4 e3 ~ c3@6 ~@3 e3]/2",
  F: "~ d3, ~@3 f3@3 ~@2", G: "f3!2 ~@6", H: "~@4 e3@3 ~", I: "b2@3 f3@4 ~", J: "~@7 f3, ~@3 e3@5", K: "~@7 c3",
  L: "~@3 b2 ~ f3 ~ [f3,a3]", M: "~ e3 ~ [e3,g3] f3@3 ~", N: "e3@3 ~@5",
  O: "[~@7 f3 d3@2 ~@4 d3@6 d3@2 [d3,f3]@2 ~@6 d3@2]/2", P: "~@7 e3", Q: "~@7 d3 b2@2 ~@4 b2@2, ~@3 b2 ~@4",
  R: "d3@3 ~@2 e3 ~ [e3,g3]", S: "d3@3 ~@4 e3", T: "~@5 e3 ~ [e3,g3]", U: "[~@2 d3 ~, ~@7 f3@3 ~@6]/2",
  V: "[~ b2 ~ [b2,d3] ~@4 c3@4 e3!2 ~@2, ~@7 e3@3 ~@6]/2", W: "~@6 a3 ~, ~@3 d3@5",
  X: "[d3@2 d3@2 ~@4 f3@4 a3!2 ~@2, ~@7 a3@3 ~@6]/2", Y: "~@6 b2@2 ~@7 e3, ~@7 c3",
  Z: "[c3 ~@7 d3@4 ~@4, ~@7 f#3@3 ~@6]/2", AA: "~@3 d3 ~@4", AB: "e3@3 ~@2 b2 ~ [b2,d3]", AC: "~@7 e3, ~@3 f3@5",
  AD: "[~@3 c3 ~@4 d3@4 ~@4, ~@7 f3@3 ~@6]/2", AE: "~@3 e3@4 ~", AF: "[~@11 f3 ~@4, ~@7 e3@5 ~@4]/2",
  AG: "[~@3 d3 ~@4 c3@4 ~@4, ~@7 e3@3 ~@6]/2", AH: "~@5 d3 ~ [d3,f3]", AI: "~@7 d3",
  AJ: "~ e3 ~ [e3,g3] ~ d3 ~ [d3,f3]", AK: "~ e3 ~@6", AL: "[~@4 f3 ~ d3@6 ~@3 f3]/2",
  AM: "~@7 f3 d3@2 ~@4 d3@2, ~@3 d3 ~@4", AN: "[~@7 g3 e3@2 ~@4 e3@6 e3@2 [e3,g3]@2 ~@6 e3@2]/2",
  AO: "~ e3 ~ [e3,g3] ~ b2 ~ f3", // Em
})).s("gm_electric_guitar_jazz").gain(0.07).pan(0.6)

// bass · electric bass finger · "Bass"
const bass_2 = note(`<
  A@3 B C D E@2 F@4 G H I E J@2 G H I K L@2 M N O P Q R S R S R S T U V@2 W@2 X T Y Z AA AB AC AD T AE AF AG AH AI@3 AF
  AG AH AJ@3 AK AL AK AL AK AL AM@2 M N O P AN@2 ~ A@3 AO A ~
>`.pickRestart({
  A: "c2", B: "c2@2 b2 a2", C: "c3", D: "c3 g2", E: "a2", F: "[d2@7 c2]/4", G: "g2 f2", H: "e2 f2", I: "c2 d2",
  J: "[d2@3 c2]/2", K: "a1", L: "d2/2", M: "c2@7 c2", N: "g2", O: "a2@7 a2", P: "d2", Q: "d2@7 d2", R: "d2@4 c2@3 c2",
  S: "d2@4 e2@3 e2", T: "d2@4 d2@3 d2", U: "d2@4 d2@3 b2", V: "[b2@2 a2@2 c2@3 c2@3 c2!2 c2@3 c2]/2",
  W: "[g2@2 g2!2 a2@3 a2@2 a2 e2 g2 a2@3 a2]/2", X: "a2@2 a2@2 d2@3 d2", Y: "d2@4 f2@3 f2", Z: "f2@4 f2 f2@2 f2",
  AA: "f2@4 c2@3 c2", AB: "c2@4 g2@3 g2", AC: "g2@4 a2@3 a2", AD: "a2@4 d2@3 d2", AE: "d2!2", AF: "c2 g2", AG: "f2 e2",
  AH: "f2 c2", AI: "[d2 a2@2 d2@3]/3", AJ: "[d2 a1@2 d2@3]/3", AK: "c2@3 c2 d2@4", AL: "e2@3 e2 d2@4",
  AM: "d2@3 d2 d2@4", AN: "[d2@3 d2 d2@12]/2", AO: "c2@3 b2 b2@2 a2@2",
})).s("gm_electric_bass_finger").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  A@3 B A@5 B A B A@3 B A B A B A@7 B A@3 C A@17 C A@3 C A@5 C A C A C A@3 C A C A@5 C A C A@3 C D ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@2 x!3 ~ x", C: "x!2 ~ x!2 ~@2 x", D: "x ~@2 x!2 ~@3",
})).gain(0.27).pan(0.4)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!31 [~@3 x] [~ x ~ x]!33 [~@3 x] [~ x ~ x]!16 [~ x ~@2] ~>").gain(0.36).pan(0.4)

// drums · snare
const snare = s("sd").struct("<~@31 [~@2 x!2 ~@4] ~@33 [~@2 x ~ x!2 ~@10] ~@18>").gain(0.36).pan(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  A@3 B A@5 C A B A@3 B A B A@13 D A@6 E A@10 C A@2 B A@6 C A C A C A D A@3 C A@5 C A C A@3 C F ~
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", D: "x!3 ~ x!4",
  E: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~", F: "x!5 ~@3",
})).gain(0.27).pan(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@9 A ~@9 B ~@7 A ~@3 C ~@5 D A ~@14 D ~@11 C ~@18>".pickRestart({
  A: "~@15 x", B: "~@7 x ~@7 x", C: "~@3 x ~@4", D: "~@7 x ~@8",
})).gain(0.27).pan(0.4)

// drums · crash
const crash = s("cr").struct("<x ~@30 [~ x] ~@33 [~ x] ~@18>").gain(0.31).pan(0.4)

stack(
  bass, epiano1, epiano1_soft, electric_guitar_jazz, electric_guitar_jazz_2, bass_2, kick, rim, snare, hihat, open_hat,
  crash
)

More by Celine Dion