Strudelify

D'amour ou d'amitie

Celine Dion

KeyE♭ minorTempo100 bpm
0:00/0:00
// D'amour ou d'amitie — Celine Dion
// 100 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 11 epiano1 (copy of ch 1 epiano2); ch 14 acoustic guitar nylon (copy of ch 8 acoustic guitar steel)
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · epiano2
const epiano2 = note(`<
  ~@2 A B@2 C D E C F G H I J K L E C D E C F G H I M K N O P Q R S T U V W@2 X T Y P Q R S T Z V AA W X AB@2 AC AD E C
  D E C F G H I M K AE AF P Q R S T U V W@2 X T Y P Q R S T Z V AA W X AB@2 A AD A AD A AD AG@2
>`.pickRestart({
  A: "[eb5,gb5,bb5]!3 [db5,eb5,f5,gb5,ab5,bb5]!2 [db5,f5,ab5]!2 [b4,db5,eb5,f5,gb5,ab5]", // Ebm Ebm7 Db Db7
  B: "[[b4,eb5,gb5]!3 [ab4,b4,db5,eb5,f5,gb5] [ab4,db5,f5]!2 ab4!2 [eb3,eb4,gb4,bb4]!3 [eb3,db4,eb4,f4,gb4,ab4,bb4] [db4,f4,ab4]!3 [b3,eb4,gb4], ~@6 [db5,f5]@5 ~@5]/2", // B Abm7 Db Ebm Ebm7 Db B Db
  C: "[b3,eb4,gb4]!3 [ab3,db4,f4]!4 [b3,eb4,gb4]", D: "[b3,eb4,gb4]!3 ~ [ab3,db4,f4]!4",
  E: "[eb3,eb4,gb4,bb4]!3 [eb3,db4,eb4,f4,gb4,ab4,bb4] [db4,f4,ab4]!3 [b3,eb4,gb4]", // Ebm Ebm7 Db B
  F: "[b3,eb4,gb4]!3 ~ [eb3,ab3,db4,f4]!4", G: "[ab2,b3,eb4,gb4,b4]!4 [gb2,bb3,db4,gb4,bb4]!4",
  H: "[f2,ab3,db4,f4,ab4]!4 [g2,g3,bb3,eb4]!4", I: "[ab2,ab3,b3,eb4,ab4]!4 [gb2,gb3,bb3,db4]!4",
  J: "[f2,ab3,db4,f4]!4 [eb2,gb3,b3,eb4]!4", K: "[db2,ab3,db4,f4]!4 ~@4",
  L: "[bb2,ab3,eb4,f4]!4 [bb2,ab3,d4,eb4] [bb2,ab3,d4]!3", M: "[f2,ab3,db4,f4]!4 [ab2,ab3,b3,eb4]!4",
  N: "[bb2,bb3,eb4,f4]!4 ~@4", O: "[d5,f5,bb5]!6 [db3,db4,f4,ab4]@2, ~@4 [b2,b3,eb4,gb4]@2 [d5,f5,bb5] ~",
  P: "[eb3,eb4,gb4,bb4]", Q: "[b2,bb3,db4,eb4,gb4]", R: "[ab2,ab3,b3,eb4]", S: "[db3,ab3,db4,f4,ab4]",
  T: "[bb2,bb3,db4,f4]", U: "[eb3,gb3,bb3,db4,f4]@7 ~", V: "[eb3,gb3,bb3,db4]", W: "[b2,b3,eb4,gb4]",
  X: "[b2,db4,f4,ab4]", Y: "[bb2,ab3,d4,f4]@7 ~ [ab2,b3,eb4,gb4]@4 [bb2,db4,f4,ab4]@4", Z: "[eb3,gb3,bb3,db4,f4]",
  AA: "[b2,gb3,b3,eb4]", AB: "[[bb2,db4]@2 [bb2,ab3,db4,eb4] [bb2,ab3,d4,f4], [bb3,f4]@3 ~]/2",
  AC: "[eb5,gb5,bb5]!3 [db5,eb5,f5,gb5,ab5,bb5]!3 [db5,f5,ab5] [b4,db5,eb5,f5,gb5,ab5]", // Ebm Ebm7 Db Db7
  AD: "[b4,eb5,gb5]!3 [ab4,b4,db5,eb5,f5,gb5] [ab4,db5,f5] [ab4,db5,f5]@2 [ab4,db5,f5]", AE: "[bb2,ab3,eb4,f4]!4 ~@4",
  AF: "[d5,f5,bb5]!4 [b2,b3,eb4,gb4]@2 [db3,db4,f4,ab4]@2", AG: "[~ [eb2,eb3,bb3,eb4,gb4]@20 ~@11]/2",
})).s("gm_epiano2").gain(0.2).pan(0)

// chords · epiano2 · soft notes
const epiano2_soft = note(`<
  ~@2 A@2 B@3 C@3 D@2 E F G@5 C@3 D@2 E H I@4 ~@23 J@5 C@3 D@2 E H K@4 ~@23 A@6 ~@2
>`.pickRestart({
  A: "[~@5 [eb5,gb5,bb5] [eb5,gb5] ~ [db5,f5,ab5] [db5,f5]@2 ~ [b4,eb5,gb5] [b4,eb5,gb5]@3, ~@6 bb5@3 ab5@4 ~@3]/2", // Ebm Db B
  B: "[ab4!3 ~ [eb3,eb4,gb4,bb4]!2 [eb4,gb4] [db4,f4,ab4] [db4,f4,ab4] [db4,f4,ab4]@2 [b3,eb4,gb4]!2 [b3,eb4,gb4]@2 [ab3,db4,f4] [ab3,db4,f4] ~@2 [b3,eb4,gb4]!2 [b3,eb4,gb4]@3, ~ eb3@3, ~@6 bb4@5 ~@6 [ab3,db4,f4]@3 ~@4]/3", // Ebm Db B Db B Db
  C: "[[ab3,db4,f4]!2 [db4,f4] ~ [eb3,eb4,gb4,bb4]!2 [eb4,gb4] [db4,f4,ab4] [db4,f4,ab4] [db4,f4,ab4]@2 [b3,eb4,gb4]!2 [b3,eb4,gb4]@2 [ab3,db4,f4] [ab3,db4,f4] ~@2 [b3,eb4,gb4]!2 [b3,eb4,gb4]@3, ~ ab3 ~ eb3@7 ~@2, ~@6 bb4@5 ~@6 [ab3,db4,f4]@3 ~@4]/3", // Db Ebm Db B Db B Db
  D: "[[eb3,ab3,db4,f4]!2 [ab3,db4,f4]@2 [ab2,b3,eb4,b4]!2 [b3,eb4,b4]@2 [gb2,bb3,gb4,bb4]!2 [gb2,bb3,gb4,bb4]@2 [f2,ab3,db4,f4,ab4]!2 [f2,ab3,db4,f4,ab4]@2, ~ eb3@3 ~@4, ~@3 ab2@3 ~@2]/2", // Db Abm B Gb Db
  E: "[g2,g3,bb3]!2 [g2,g3,bb3]@2 [ab2,ab3,b3,eb4,ab4]!2 [ab2,ab3,b3,eb4,ab4]@2", // Gm Abm
  F: "[gb2,gb3,bb3]!2 [gb3,bb3]@2 [f2,ab3,db4,f4]!2 [f2,ab3,db4,f4]@2, ~ gb2@3", // Gb Db
  G: "[[eb2,gb3,b3,eb4]!2 [gb3,b3] ~ [db2,ab3,db4,f4]!2 [db2,db4]@6 f4 [eb4,f4] eb4!2 [bb2,ab3,d4]!2 ~@2 [eb3,eb4,gb4,bb4]!2 [eb4,gb4] [db4,f4,ab4] [db4,f4,ab4] [db4,f4,ab4]@2 [b3,eb4,gb4]!2 [b3,eb4,gb4]@2 [ab3,db4,f4] [ab3,db4,f4] ~@2 [b3,eb4,gb4]!2 [b3,eb4,gb4]@3, ~@2 [eb2,eb4]@6 ~@10 [bb2,ab3,d4]@5 ~@10 [ab3,db4,f4]@3 ~@4, ~@6 [ab3,f4]@2 ~@6 f4@5 ~@3 eb3@18, ~@22 bb4@5 ~@13]/5", // B B5 Db Ebsus2 Bb7 Ebm Db B …
  H: "[gb2,gb3,bb3]!2 [gb3,bb3]@2 [f2,db4,f4]!2 [f2,db4,f4]@2, ~ gb2@3", // Gb Db
  I: "[[ab2,b3,eb4]!2 b3 ~ [db2,ab3,db4,f4]!2 [db2,db4]@5 ~ [bb2,bb3,eb4,f4]!2 [bb3,f4]@8 ~ [d5,f5,bb5] [d5,f5,bb5]!2 ~@6, ~@2 [ab2,eb4]@5 ~@7 bb2@11 ~@7, ~@3 ab3@3 ~@10, ~@3 f4 ~@3 eb4@3 ~@6]/4", // Abm Db Bbsus4 Bb5 Bb Ab5
  J: "[~@6 [eb5,gb5] ~ [db5,f5,ab5] [db5,f5]@2 ~ [b4,eb5,gb5] eb5 eb5@5 ~ [eb3,eb4,gb4,bb4]!2 [eb4,gb4] [db4,f4,ab4] [db4,f4,ab4] [db4,f4,ab4]@2 [b3,eb4,gb4]!2 [b3,eb4,gb4]@2 [ab3,db4,f4] [ab3,db4,f4] ~@2 [b3,eb4,gb4]!2 [b3,eb4,gb4]@3, ~@6 bb5@3 ab5@4 [b4,gb5]@3 ~@6 eb3@18, ~@22 bb4@5 ~@6 [ab3,db4,f4]@3 ~@4]/5", // Ebm Db B Ebm Db B Db B …
  K: "[[ab2,b3,eb4]!2 b3 ~ [db2,ab3,db4,f4]!2 [db2,db4]@5 ~ [bb2,ab3,eb4,f4]!2 [ab3,f4]@8 ~@10, ~@2 [ab2,eb4]@5 ~@7 bb2@11 ~@7, ~@3 [ab3,f4] ~@3 eb4@3 ~@6]/4", // Abm Db Bbsus4 Db Ab5 Db
})).s("gm_epiano2").gain(0.08).pan(0)

// bass · electric bass finger
const bass = note(`<
  ~@2 A@5 B@3 C D E F G H I J I@2 J K E D E L M N O P Q R S T U V W X@2 T Y P Q R Z T AA@2 W X AB T AC@3 I J I@2 J K E D
  E L M N O P Q R S T U V W X@2 T Y P Q R Z T AA@2 W X AB T AD AE AF AE AG AF AG AH@2
>`.pickRestart({
  A: "[eb1@13 ~ bb1@22 ~@3 bb1]/5", B: "[eb1@22 ~ eb1]/3", C: "ab1@4 gb1@3 ~", D: "f1 g1", E: "ab1 gb1", F: "f1 eb1",
  G: "db2@7 ab1", H: "bb1@3 ~ bb2@3 ~", I: "eb2@6 ~ bb1", J: "eb2", K: "eb2@6 ~ eb1", L: "f1 ab1",
  M: "db2@3 db2 db2@3 b1", N: "bb1@6 ~ bb1", O: "bb1 ~ b1 db2", P: "eb2@2 ~ eb2 eb2@2 ~ db2", Q: "b1@2 ~ b1 b1@3 bb1",
  R: "ab1@2 ~ ab1 ab1@2 ~ ab1", S: "db2@2 ~ db2 db2@3 b1", T: "bb1@2 ~ bb1 bb1@2 ~ bb1", U: "eb1@2 ~ eb1 eb1@2 ~ bb1",
  V: "eb2@2 ~ eb2 eb2@2 eb1@2", W: "b1@2 ~ b1 b1@2 ~ gb1", X: "b1@2 ~ b1 b1@2 ~ b1", Y: "bb1@2 ~ bb1 ab1@2 bb1@2",
  Z: "db2@2 ~ db2 db2@2 ~ b1", AA: "eb1@2 ~ eb1 eb1@2 ~ eb1", AB: "b1@2 ~ b1 b1@3 b1",
  AC: "[bb1@3 bb1 bb1@2 bb1@15 ~@2 bb1]/3", AD: "bb1@3 bb1 bb1@2 bb1@2", AE: "eb2@2 ~ eb2 eb2@3 bb1",
  AF: "eb2@2 ~ eb2 eb2@3 ~", AG: "eb2@2 ~ eb2 eb2@2 ~ bb1", AH: "[~ eb2@20 ~@11]/2",
})).s("gm_electric_bass_finger").gain(0.52)

// other · pad new age
const pad_new_age = note(`<
  ~@30 A B ~@2 C D ~@2 E F G ~ A B ~@2 C D ~@2 E F G ~@16 A B ~@2 C D ~@2 E F G ~ A B ~@2 C D ~@2 E F G ~@8
>`.pickRestart({
  A: "~@5 [bb4,bb5] [gb5,gb6] [eb5,eb6]", B: "[eb5,eb6] ~@3", C: "~@5 [ab4,ab5] [f5,f6] [db5,db6]", D: "[db5,db6] ~@7",
  E: "~ [ab4,ab5] [bb4,bb5] [b4,b5]", F: "[db5,db6]@7 ~", G: "[bb4,bb5]@3 ~@5",
})).s("gm_pad_new_age").gain(0.29).pan(0.1)

// other · pad poly
const pad_poly = note(`<
  ~@6 A@2 ~ B@2 ~@7 A@2 ~ B@2 ~@5 C D E F@2 G H I@2 J K L@2 D E F@2 G H I@2 J K M@2 ~@4 A@2 ~ B@2 ~@5 C D E F@2 G H I@2
  J K L@2 D E F@2 G H I@2 J K M@2 ~ A@4 N O@2
>`.pickRestart({
  A: "[~@4 [eb4,gb4]@2 gb4@2 [f4,ab4] ~ ab4@2 [gb4,bb4]@2 [gb4,bb4]@10 ~@8, ~@6 eb4 ~@3 f4 ~@21]/2", // Ebm Fm Gb
  B: "[~@4 gb4@2 gb4@2 f4@2 [f4,ab4]@2 [gb4,bb4]@2 [ab4,b4]@11 ~@7, ~@4 eb4 ~ eb4 ~ ab4 ~@23]/2", C: "~@2 eb4 f4",
  D: "gb4@2 gb4 ~ gb4@2 gb4@3 ~@3 gb4@2 gb4 ~", E: "gb4@2 gb4 ~ gb4 ~ gb4@5 ~@5",
  F: "[~@2 ab4@2 f4@2 eb4 f4@3 ~@4 db4 eb4]/2", G: "f4 ~ f4 ~ f4 ~ f4@4 ~@2 f4@2 f4@2", H: "f4 ~ f4 ~ f4 ~ f4@6 ~@4",
  I: "[~@2 gb4@2 eb4@2 db4 eb4@4 ~@3 b3 db4]/2", J: "eb4 ~ eb4 ~ eb4 ~ eb4@3 ~ eb4 ~ eb4@2 eb4@2",
  K: "~@2 f4 ~ f4@4 ~@4 db4@2 eb4@2", L: "[f4 ~ f4 ~ f4 ~ f4@4 bb4@2 f4@2 f4@10 eb4@4 f4@4]/2",
  M: "[f4 ~ f4 ~ f4 ~ f4@4 bb4@2 f4@2 f4@10 ~@8]/2",
  N: "~@4 [eb4,gb4]@2 gb4@2 [f4,ab4] ~ ab4@2 [gb4,bb4]@4, ~@6 eb4 ~@3 f4 ~@5", O: "[~ [gb4,bb4]@20 ~@11]/2",
})).s("gm_pad_poly").gain(0.58)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@16 A@6 B C B D E@2 F G@7 H@2 I J@2 K@7 H@2 L@2 M N@2 O@3 P@3 Q C B R I S@2 T@3 U@4 V W X Y Z AA@4 AB@3 AC@2 X AD@2
  AE@2 AF@2 AG@4
>`.pickRestart({
  A: "[[eb4,gb4,bb4]@3 [db4,f4,ab4]@4 [b3,eb4,gb4]@4 [ab3,db4,f4]@4 [gb3,b3,eb4]@5 [ab3,db4,f4]@4]/3", // Ebm Db B Db B Db
  B: "[ab3,b3,eb4] [gb3,bb3,db4]", C: "[f3,ab3,db4] [g3,bb3,eb4]", D: "[f3,ab3,db4] [gb3,b3,eb4]",
  E: "[~ [bb3,eb4,f4], [f3,ab3,db4]]/2", F: "[ab3,d4]@3 ~ [b2,b3,eb4]@2 [db3,db4,f4]@2",
  G: "[[gb3,bb3]@8 b3@4 ~@4 bb3@11 ~, eb4@12 [db4,f4]@15 ~, ~@2 ab3@2 ~@3]/7", H: "[gb3,b3,eb4]/2", I: "[ab3,db4,f4]",
  J: "[bb3@16 [bb3,d4]@7 ~ [ab3,b3,eb4]@3 ~ [bb3,db4,f4]@4, [db4,f4]@23 ~@9]/2", // Bb Abm Bbm Db
  K: "[eb4@8 ~@8 b3@8 ~@8 bb3@23 ~, bb3@2 ab3@2 ~@3, gb3@15 ~@41, ~@8 eb4@16 [db4,f4]@31 ~]/7", // Db
  L: "[ab3 bb3, [db4,f4]]/2", M: "eb4@4 d4@3 ~, ab3",
  N: "[[eb4,gb4,bb4]@3 [db4,f4]@3 ~ [b3,eb4,gb4]@4 [ab3,db4,f4]@5, ~@3 ab4@4 ~@9]/2", // Ebm Db B Db
  O: "[[eb4,gb4,bb4]@3 [db4,f4,ab4]@4 [b3,eb4,gb4]@4 [ab3,db4,f4]@4 [b3,eb4,gb4]@5 [db4,f4,ab4]@4]/3", // Ebm Db B Db B Db
  P: "[[eb4,gb4,bb4]@6 [db4,f4,ab4]@8 [b3,eb4,gb4]@8 [ab3,db4,f4]@8 [b3,eb4,gb4]@10 [db4,f4,ab4]@7 ~]/3", // Ebm Db B Db B Db
  Q: "[ab3,b3,eb4]@8 [gb3,bb3,db4]@7 ~", R: "[ab3,db4,f4] [ab3,b3,eb4]",
  S: "[[eb4,f4]@8 [d4,f4]@4 [b3,eb4] ~ [db4,f4,ab4] ~, ab3@6 gb4 ~]/2", T: "[bb3@2 b3, [eb4,gb4]@11 ~]/3",
  U: "[ab3@7 ~ bb3@23 ~, [db4,f4]@31 ~]/4", V: "[gb3,b3,eb4]", W: "[b3,eb4]", X: "[db4,f4,ab4]", Y: "[db4,f4], bb3@7 ~",
  Z: "[ab3,d4]@7 ~ [b3,eb4,gb4]@4 [bb3,db4,f4]@4", AA: "[bb3@16 b3@7 ~ [db4,f4]@8, eb4@3 ~, gb3@15 ~ ab3@16]/4",
  AB: "[[bb3,db4,f4]@11 ~]/3", AC: "[b3,eb4,gb4]/2", AD: "[f4@2 eb4 d4, db4@3 ~, bb3@7 ~ ab3@8]/2",
  AE: "[[eb4,gb4,bb4]@5 ~ [db4,f4,ab4]@8 [b3,eb4,gb4]@8 [db4,f4,ab4]@10]/2", // Ebm Db B Db
  AF: "[[eb4,gb4,bb4]@3 [db4,f4,ab4]@4 [b3,eb4,gb4]@4 [db4,f4,ab4]@5]/2", // Ebm Db B Db
  AG: "[[eb4,gb4,bb4]@6 [db4,f4,ab4]@8 [b3,eb4,gb4]@10 [db4,f4,ab4]@9 [eb4,gb4,bb4]@20 ~@11]/4", // Ebm Db B Db Ebm
})).s("gm_string_ensemble_2").gain(0.29).pan(0.2)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@2 A@2 ~@12 B@3 C@3 D E D F G H@2 I J K L M N@2 O@3 P@2 I J K L M N@2 O@3 M@2 A@2 B@3 C@3 D E D F G H@2 I J K L M N@2
  O@3 P@2 I J K L M N@2 O@3 M@2 Q@8
>`.pickRestart({
  A: "[eb2@15 ~]/2", B: "[eb2@23 ~]/3", C: "eb2/3", D: "ab2 gb2", E: "f2 g2", F: "f2 ab2", G: "db3",
  H: "[bb2@11 ~ b2@2 db3@2]/2", I: "eb2", J: "b2", K: "ab2", L: "db3@7 b2", M: "bb2", N: "eb2/2", O: "b2/3",
  P: "[bb2@6 ab2 bb2]/2", Q: "[eb2@117 ~@11]/8",
})).s("gm_string_ensemble_1").gain(0.29).pan(0.8)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@29 A B@2 C D@3 B@2 C D E A B@2 C D@3 B@2 C D F ~@15 A B@2 C D@3 B@2 C D E A B@2 C D@3 B@2 C D F A@6 G@2
>`.pickRestart({
  A: "[bb3,eb4,gb4]!8", B: "[b3,eb4,gb4]!8", C: "[ab3,db4,f4]!8", D: "[bb3,db4,f4]!8",
  E: "[ab3,d4,f4]!4 [ab3,b3,eb4]!2 [bb3,db4,f4]!2", F: "[ab3,eb4]!4 [ab3,d4]!4", G: "[~ [bb3,eb4,gb4]@20 ~@11]/2",
})).s("gm_acoustic_guitar_steel").gain(0.26).pan(0)

// chords · electric guitar clean · Absus2 Gbsus2 Gbmaj7 Ebm Ebsus2
const electric_guitar_clean = note(`<
  ~@2
  [bb4!6 [ab4,bb4]!2 ab4!2 ab4@2 ab4!2 [gb4,ab4]!2]
  [[gb4,ab4] gb4 ~@2 gb4!2 [f4,gb4]!3 f4 [f4,gb4] gb4 [f4,gb4]!2 [eb4,f4,gb4] [eb4,f4]]
  [eb4!2 ~@14]
  ~@95
>`).s("gm_electric_guitar_clean").gain(0.2).pan(0.3)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@2 A B C@2 ~@94>".pickRestart({
  A: "~@8 bb4!2 ~ ab4 ~@4, ~@5 bb4 ~@2", B: "~ ab4 ~ gb4 ~@5 gb4 ~ f4 ~@3 gb4, ~ [gb4,ab4] ~@6",
  C: "[[f4,gb4] f4 ~ eb4 eb4@26 ~@2, ~ [eb4,f4] ~@14]/2", // Gbmaj7 Ebsus2
})).s("gm_electric_guitar_clean").gain(0.08).pan(0.3)

// chords · electric guitar clean · Absus2 Gbsus2 Gbmaj7 Ebm Ebsus2
const electric_guitar_clean_3 = note(`<
  ~@2
  [bb3!6 [ab3,bb3] ab3!4 ~@2 ab3 [gb3,ab3]!2]
  [[gb3,ab3] gb3!2 ~@2 gb3 [f3,gb3]!3 f3!2 gb3!2 [f3,gb3] [eb3,f3,gb3] [eb3,f3]]
  [[eb3,f3] eb3!2 ~@13]
  ~@95
>`).s("gm_electric_guitar_clean").gain(0.16).pan(0.7)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_4 = note("<~@2 A B C@2 ~@94>".pickRestart({
  A: "~@7 bb3!4 ab3!2 ~@3", B: "~ ab3!2 gb3!2 ~@4 gb3!2 f3!2 ~@2 gb3", C: "[gb3 f3!2 eb3 eb3@20 ~@8]/2",
})).s("gm_electric_guitar_clean").gain(0.08).pan(0.7)

// other · pad new age
const pad_new_age_2 = note(`<
  ~@30 A B ~@2 C D ~@2 E F G ~ A B ~@2 C D ~@2 E F G ~@16 A B ~@2 C D ~@2 E F G ~ A B ~@2 C D ~@2 E F G ~@8
>`.pickRestart({
  A: "~@5 [bb3,bb4] [gb4,gb5] [eb4,eb5]", B: "[eb4,eb5] ~@3", C: "~@5 [ab3,ab4] [f4,f5] [db4,db5]", D: "[db4,db5] ~@7",
  E: "~ [ab3,ab4] [bb3,bb4] [b3,b4]", F: "[db4,db5]@7 ~", G: "[bb3,bb4]@3 ~@5",
})).s("gm_pad_new_age").gain(0.39).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A ~ A ~ B A ~ B A@4 C A C A C@2 A C@7 D E@3 F E@7 G E@11 F A C@2 A C@2 A C@7 D E@3 F E@7 G E@18 H ~
>`.pickRestart({
  A: "x", B: "~@7 x", C: "x ~@6 x", D: "x ~ x!2", E: "x ~@2 x!2 ~@2 x", F: "x ~@2 x!2 ~@3", G: "x ~@2 x!2 ~ x ~",
  H: "~ x ~@14",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct("<A B ~@8 C@5 ~ C@12 ~@26 C@13 ~@33>".pickRestart({
  A: "x!2", B: "x!4", C: "~ x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@29 A@11 B A@11 C ~@15 A@11 B A@11 D A@6 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x!2 ~@11", C: "~ x ~@2", D: "~@4 x ~@6 x!2 ~@3",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@10 A@5 B A@12 C D@11 ~ D@7 E D@3 F ~@2 A@12 C D@11 ~ D@7 E D@3 G D@6 H ~
>`.pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "x", D: "x!8", E: "x!7 ~", F: "x!4 ~@4", G: "x!5 ~@3", H: "~ x ~@14",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@15 [~@3 x] ~@36 [~@7 x] ~@47>").gain(0.72)

// drums · mid tom
// … 17 more lines

More by Celine Dion