Strudelify
Exhale (Shoop Shoop) cover art

Exhale (Shoop Shoop)

Whitney Houston

KeyD♭ majorTempo69 bpm
0:00/0:00
// Exhale (Shoop Shoop) — Whitney Houston
// 69 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 58 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(69/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 · piano · "A.Piano"
const piano = note("<~@33 A B C D E F G H I J K L I J K M I J N M I J O P@2>".pickRestart({
  A: "[f2,bb3,c4,f4]@15 ~", B: "a3@35 ~ a3@5 ~ c4@6, [a2,f4]@47 ~, c4@5 ~", C: "[bb2,bb3,db4,f4]@15 ~",
  D: "[ab2,bb3,db4,f4]@15 ~", E: "[eb2,gb3,bb3,db4,gb4]@15 ~", F: "[f2,f3,ab3,db4,eb4,f4]@23 ~",
  G: "[gb2,gb3,ab3,bb3,db4,gb4]@15 ~", H: "[ab2,gb3,bb3,db4,f4]@23 ~",
  I: "[ab3,db4]@23 ~ [gb3,bb3,db4]@10 ~@2 [bb3,eb4,gb4]@11 ~, gb2@15 ~, f4@17 ~@7", // Db5 Gb Ebm
  J: "db4@5 ~@2 f4, [f2,ab3]@47 ~, f4@5 ~, ~@15 db4@8 ~, ~@18 eb4@5 ~", // Fm
  K: "[gb3,bb3,db4,eb4]@30 [bb3,db4]@5 ~ db4@5 ~ eb4@5 ~, eb2@15 ~, ~@15 gb3@8 ~, ~@36 bb3@11 ~", // Ebm7 Bbm
  L: "db4@16 ~@8 ab3@21 ~@3, [db2,f3]@15 ~, ab3@11 ~@13, ~@6 db4@9 ~", M: "[db2,f3,ab3,db4]@23 ~",
  N: "[bb3,db4,eb4,gb4]@30 [bb3,db4]@5 ~ db4@5 ~ eb4@5 ~, eb2@15 ~, ~@15 gb3@8 ~, ~@36 bb3@11 ~", // Ebm7 Bbm
  O: "bb3@11 ~ [bb3,f4]@17 ~ [bb3,db4]@5 ~ db4@5 ~ eb4@5 ~, eb2@15 ~, [gb3,db4,eb4]@15 gb3@8 ~, ~@36 bb3@11 ~", // Bb5 Bbm Ebm7
  P: "[[db2,f3,ab3,db4]@95 ~]/2", // Db
})).s("gm_piano").gain(0.22)

// bass · synth bass 1 · "#TB303 Ba"
const bass = note(`<
  ~ A B C D A B C E A B C F A B C G A B C E A B C E A B C E A B C H I J K L M N O P A B C D A B C F A B C F A B C Q@2
>`.pickRestart({
  A: "gb1@17 ~ db2@23 ~ gb1@5 ~", B: "f1@17 ~ db2@23 ~ f1@5 ~", C: "eb1@17 ~ db2@23 ~ eb1@5 ~",
  D: "db1@17 ~ db2@23 ~ f1@5 ~", E: "db1@17 ~ db2@29 ~", F: "db1@17 ~ db2@11 ~ db1@5 ~ eb1@5 ~ f1@5 ~",
  G: "db1@17 ~ db2@28 ~@2", H: "db1@17 ~ db2@23 ~ db1@5 ~", I: "f1@17 ~ f2@23 ~ c2@5 ~", J: "a1@17 ~ f2@23 ~ a1@5 ~",
  K: "bb1@17 ~ bb2@11 ~ bb1@10 ~@2 bb1@5 ~", L: "ab1@17 ~ bb2@11 ~ ab1@10 ~@2 ab1@5 ~", M: "eb1@17 ~ eb2@23 ~ eb1@5 ~",
  N: "f1@17 ~ f2@23 ~ f1@5 ~", O: "gb1@17 ~ gb2@11 ~ gb1@10 ~@2 gb1@5 ~", P: "ab1@23 ~ ab2@23 ~", Q: "db1/2",
})).s("gm_synth_bass_1").gain(0.48)

// chords · string ensemble 1 · "#Vlo.Strn"
const string_ensemble_1 = note(`<
  ~@9 A B C@2 D B E@2 F G H@2 F G I@2 A B C@2 D B J@3 K@7 ~@4 F G L@2 M N O@3 P@4
>`.pickRestart({
  A: "~@6 [f3,ab4]@5 ~ bb3@6 ~@12 [f3,ab4]@5 ~ bb3@6 ~@6, ~@5 db4@6 f4@4 ~@14 db4@6 f4@4 ~@9, ~@4 db5 ~@7 db5 ~@3", // Fm
  B: "~@6 [f3,ab4]@5 ~ ab3@6 ~@12 [f3,ab4]@5 ~ ab3@6 ~@6, ~@5 eb4@6 f4@4 ~@14 eb4@6 f4@4 ~@9, ~@4 db5 ~@7 db5 ~@3", // Fm
  C: "[~@6 [f3,ab4]@5 ~ db5@5 ~ ab3@5 ~ [gb4,ab4]@7 ~@5 [bb3,db4,eb4,gb4]@10 ~@2 [db3,f4]@11 ~ [db4,f4]@11 ~ [f4,ab4,db5]@11 ~ [db4,eb4,c5,db5]@11 ~, ~@5 db4@6 [eb3,bb3,gb4]@6 [db3,eb4,ab4]@6 [ab3,db4]@8 ~@16 [db4,ab4]@11 ~ [f3,ab4]@11 ~ ab3@9 ~@3 ab4@12 ~]/2", // Fm Gbsus2 Ebm7 Db Cm Ebm Dbsus2 Db5 …
  D: "~@6 [gb3,ab4]@5 ~ bb3@6 ~@12 [gb3,ab4]@5 ~ bb3@6 ~@6, ~@5 db4@6 f4@4 ~@14 db4@6 f4@4 ~@9, ~@4 db5 ~@7 db5 ~@3", // Gbsus2
  E: "[~@6 [f3,ab4]@5 ~ db5@5 ~ ab3@5 ~ [gb4,ab4]@7 ~@5 [bb3,db4,eb4,gb4]@10 ~@2 [db3,f4]@44 ~@4, ~@5 db4@6 [eb3,bb3,gb4]@6 [db3,eb4,ab4]@6 [ab3,db4]@8 ~@16 [db4,ab4]@44 ~@5]/2", // Fm Gbsus2 Ebm7 Db Ebm Dbsus2 Db5
  F: "~@18 bb5@5 [ab4,ab5]@12 ~ db5@12, ~@17 bb4@6 ~@12 db4@12 ~", // Ab
  G: "~@18 eb5@5 [db4,db5]@12 ~ ab4@12, ~@17 eb4@6 ~@12 ab3@12 ~", // Db
  H: "[~@18 bb5@5 [ab4,ab5]@12 ~ db5@11 [f4,f5]@12 ~@6 [eb3,c4,eb4]@6 [f3,db4,f4]@23 ~@2, ~@17 bb4@6 ~@12 db4@12 ~@12 ab4@36 ~, ~@60 ab5@35 ~]/2", // Ab F Cm Db
  I: "[~@18 [gb3,gb5]@5 [f3,ab4,f5]@12 ~ [eb3,bb3]@11 [db3,ab3,f4]@43 ~@6, ~@17 db4@19 db5@55 ~@5, ~@17 bb4@6 ~@12 gb4@12 ~@49]/2", // Gb Fm Eb5 Db
  J: "[~@6 [f3,ab4]@5 ~ db5@5 ~ ab3@5 ~ [gb4,ab4]@7 ~@5 [bb3,db4,eb4,gb4]@10 ~@38 [db4,db5]@5 ~ eb5@2 [db4,db5]@3 ~ [f3,bb4]@29 ~ c4@6 [gb3,db4,bb4]@5 ~ [eb4,eb5]@5 [a3,a4], ~@5 db4@6 [eb3,bb3,gb4]@6 [db3,eb4,ab4]@6 [ab3,db4]@8 ~@16 [db4,ab4]@36 ~@6 eb4@3 ~@3 c5@44 ~@5, ~@48 [db3,f4]@44 ~@3 c4@29 ~ [f3,ab4]@7 ~@5 [ab3,ab4]@6 ~]/3", // Fm Gbsus2 Ebm7 Db Bb5 Gb Eb A …
  K: "[[f4,c5]@29 ~ [g3,g4]@5 ~ [a3,a4]@5 [c4,c5,eb5]@6 ~@31 c4@5 ~@7 eb4@5 bb3@3 ab3@9 ~@31 eb4@2 f4@3 ~ gb4@6 f4@6 ~@18 bb4@5 ~ eb3@5 ~@3 gb4@3 ~ f5@29 ~ db5@6 [ab3,ab5]@5 [db4,db6]@6 ~ db4@11 eb4@12 ~@7 [f5,ab5]@5 ~ [gb5,bb5]@5 ~ bb5@5 ~ [eb4,ab5]@7 ~@41, ~@29 [c4,bb4]@6 eb4@12 bb3@47 ~ db5@24 [db5,ab5]@12 ab5@12 ~ db4@46 ~ f3@36 ~@12 [gb3,db5]@31 ~@5 eb4@11 ~ ab3@10 ~@39, ~@35 c5@5 ~@7 db4@31 ~@5 db4@6 ~@6 f4@37 db6@12 ~@12 gb4@29 [f4,bb5]@6 f4@48 gb4@25 ~@5 ab3@7 bb3@12 ~@48, ~@47 db5@25 bb5@12 ab5@12 ~@11 db4@36 [eb3,gb5]@36 ~@7 [eb3,gb5]@6 ~@29 db4@7 ab4@12 bb5@31 ~@10 db6@6 eb6@6 ~@43, ~@48 bb4@72 ab4@23 bb4@30 ~@6 [bb4,gb5]@6 ~@6 [db4,ab4,ab5]@32 ~@40 f4@13 ~@60]/7", // F5 G A Cm Ab Db Fm Gb …
  L: "[~@18 [gb3,gb5]@5 [f3,ab4,f5]@12 ~ [eb3,bb3]@11 [db3,ab3,f4]@27 ~@22, ~@17 db4@19 db5@36 ~@24, ~@17 bb4@6 ~@12 gb4@12 ~@49]/2", // Gb Fm Eb5 Db
  M: "~@6 [f3,ab4,ab5]@5 ~ [bb3,eb5]@6 ~@12 [f3,ab4,ab5]@5 ~ [bb3,eb5]@6 ~@6, ~@5 db4@6 f4@4 ~@14 db4@6 f4@4 ~@9, ~@4 db5 ~@7 db5 ~@3", // Fm Eb5 Fm Eb5
  N: "~@6 [f3,ab4,eb5]@5 ~ ab3@6 ~@12 [f3,ab4,eb5]@5 ~ ab3@6 ~@6, ~@5 eb4@6 [f4,f5]@5 ~@13 eb4@6 [f4,f5]@6 ~@7, ~@4 db5 ~@7 db5 ~@3", // Fm7 F
  O: "[~@6 [f3,ab4,ab5]@5 ~ db5@5 ~ ab3@5 ~ [gb4,ab4]@7 ~@5 [eb4,gb4,eb5]@11 ~ [db3,f4]@11 ~ [db4,f4,db5]@11 ~ [f4,ab4,db5]@11 ~ [db4,eb4,c5,db5]@11 db6@6 ~ [f3,ab4]@5 ~ bb3@6 ~@12 [f3,ab4,bb5]@5 ~ [bb3,ab5]@6 ~@6, ~@5 db4@6 [eb3,bb3,gb4,eb5]@6 [db3,eb4,ab4,db5]@6 [ab3,db4]@8 ~@5 [bb3,db4]@8 ~@3 [db4,ab4]@11 ~ [f3,ab4]@11 ~ [ab3,f5]@11 ~ [ab4,ab5]@12 ~@6 [db4,bb5]@6 f4@4 ~@14 db4@6 f4@4 ~@9, ~@24 ab5@12 ~@71 ab5@7 ~@30, ~@36 db5 ~@7 db5 ~@3]/3", // Fm Gbsus2 Ebm Db Cm Fm Bb7 Ebm …
  P: "[~@6 [f3,ab4,eb5]@5 ~ ab3@6 ~@12 [f3,ab4,eb5]@5 ~ ab3@6 ~@3 bb5@2 ab5@6 ~ [f3,ab4,ab5]@5 ~ db5@5 ~ ab3@5 ~ [db4,gb4]@23 ~ [db3,db4]@18 [eb3,gb3,bb3,eb4]@5 ~ [db3,db4]@18 [eb3,gb3,bb3,eb4]@5 ~ [db3,db4]@47 ~, ~@5 eb4@6 [f4,f5]@5 ~@13 eb4@6 [f4,f5]@6 ~@12 db4@6 [eb3,bb3,gb4,eb5]@7 ~@5 [eb3,bb3]@23 ~ [ab3,f4]@19 ~@5 [ab3,f4]@19 ~@5 [ab3,f4]@47 ~@2, ~@12 db5@3 ~@21 db5@3 ~@26 [db3,eb4,ab4,db5]@6 ~@121]/4", // Fm7 Fm Gb5 Db Ebm Db Ebm Db …
})).s("gm_string_ensemble_1").gain(0.13)

// chords · pad warm · "#Thick Pa"
const pad_warm = note("<A@8 B@7 C@7 D@2 B@7 E F@8 A@8 G@3 H@7>".pickRestart({
  A: "[~@47 [gb3,bb3,db4]@48 [f3,db4]@48 [eb3,gb3,bb3,db4]@47 ~ [f3,db4]@48 [gb3,bb3,db4]@48 [f3,db4]@48 [eb3,gb3,bb3,db4]@47 ~ [f3,db4], ~@47 ab3@96 ~@47 ab3@49 ab3@96 ~@47 ab3@2]/8", // Gb Db Ebm7 Db Gb Db Ebm7 Db
  B: "[~@47 [db4,bb4]@48 [db4,ab4]@48 [db4,bb4]@46 ~@2 [db4,ab4]@48 [db4,bb4]@48 [db4,ab4]@48 [db4,bb4], ~@47 db5@191 ~ db5@97, ~@190 f4@49 ~@97]/7", // Gb Db5 Gb Db5 Gb Db5 Gb
  C: "[~@47 [db4,ab4]@48 [gb3,bb3,db4]@48 [f3,db4]@48 [eb3,gb3,bb3,db4]@47 ~ [f3,db4]@48 [gb3,ab3,bb3,db4]@48 [f3,db4], ~@46 f4@49 ab3@96 ~@47 ab3@49 ~@49]/7", // Db5 Gb Db Ebm7 Db Gb Db
  D: "[~@47 [eb3,gb3,bb3,db4]@47 ~ [f3,db4], ~@47 ab3]/2", E: "~@47 [db4,ab4], ~@23 f4",
  F: "[~@23 c4@12 ab3@11 ~ [bb3,c4,f4,bb4]@48 [a3,c4,f4,a4]@48 bb4@36 ab4@12 bb4@36 ab4@12 bb4@42 ~@6 [ab3,db4]@48 ~@12 eb4@35 ~ [bb3,eb4,ab4], ~@143 [bb3,db4,f4]@47 ~ [bb3,db4,f4]@48 [db4,eb4,gb4]@47 f4@48 ~ [bb3,db4,gb4,bb4]@48 ~, ~@282 ab4@53 ~@47 db4@2]/8", // Bbsus2 F Db5 Ebsus4 Bbm Ebm7 Gb
  G: "[~@47 [db4,bb4]@48 [db4,ab4]@48 [db4,bb4], ~@47 db5@97]/3", // Gb Db5 Gb
  H: "[~@47 [db4,ab4]@48 [db4,bb4]@48 [db4,ab4]@48 [db4,bb4]@46 ~@2 [db4,ab4]@96 ~, ~@46 f4@49 db5@239 ~@2, ~@119 f4@48 ~]/7", // Db5 Gb Db5 Gb Db5
})).s("gm_pad_warm").gain(0.16)

// other · pad new age · "#Fantasia"
const pad_new_age = note("<~@9 A@2 B@2 A@2 B@2 ~@8 A@2 B@2 A@2 B@2 ~@8 C@2 D@2 C@2 E@2 F@2 G@2 F@2 H@3>".pickRestart({
  A: "[db5@15 bb4]/2", B: "[ab4@36 eb4@11 db4@48 ~]/2", C: "[~@12 f4@11 db4@12 bb3@12 ab3@48 ~]/2",
  D: "[~@11 f4@12 ~ db4@11 bb3@12 db4@47 ~@2]/2", E: "[~@11 f4@12 ~ db4@11 bb3@12 db4@24 eb4@13 f4@12]/2",
  F: "[~@11 f4@12 ~ db4@12 bb3@12 ~@11 f4@12 ~ db4@12 ~@6 bb4@6, db5@15 ~, ~@7 ab3]/2",
  G: "[~@11 eb4@12 ~ db4@12 [bb3,eb4]@11 ab3@12 eb4@13 f4@12 ab4@11 ~, ab4@36 ~@11 db4@48 ~]/2", // Eb5
  H: "[~@11 eb4@12 ~ db4@12 [c4,eb4]@11 [db4,db5]@96 ~, ab4 ~@3]/3", // Cm Db
})).s("gm_pad_new_age").gain(0.32).pan(0.8)

// other · lead 8 bass lead · "#Shmoog"
const lead_8_bass_lead = note("<~@32 A@5 B@3 C ~ D E F ~ G@2 H I@3 J@3 K L@2>".pickRestart({
  A: "[~@47 bb4@30 ab4@7 bb4@5 ab4@6 a4@48 bb4@84 ab4@12 ~]/5",
  B: "[bb4@12 eb5@12 db5@12 bb4@5 ab4@6 db5@13 eb5@12 db5@23 gb5@13 f5@12 eb5@12 db5@12]/3", C: "f5@11 ~@13",
  D: "~@24 db5@5 ~ db5@6 c5@11 ab4", E: "bb4@2 ab4 gb4", F: "f4@47 ~",
  G: "[~@12 ab4@12 db5@12 c5@11 ~ bb4@24 ab4@12 eb4@12, ~@47 ab4@2 ~@47]/2", H: "db4@4 bb4 ab4@3",
  I: "[bb4@12 ab4@12 bb4@5 ab4@16 bb4@2 ab4@48 gb4@19 bb4@6 ab4@12 gb4@12]/3", J: "[f4@36 ab4@24 bb4@35 ab4@49]/3",
  K: "gb4@23 db4 eb4@24", L: "[f4@31 ~]/2",
})).s("gm_lead_8_bass_lead").gain(0.32).pan(0.4)

// chords · lead 7 fifths · "#Big Five"
const lead_7_fifths = note("<~@40 A@2 ~@16>".pickRestart({
  A: "[~@11 ab6 ~@12 ab4 ~@23, ~@12 gb7 eb7 bb6 gb6 eb6 bb5 gb5 f6 db6 ab5 f5 db5 ~@24, ~@25 f7@2 db7@2 ab6@2 f6@2 db6@2 ab5@2 gb6@2 eb6@2 bb5@2 gb5@2 eb5@2 bb4@2 ~@47]/2",
})).s("gm_lead_7_fifths").gain(0.1).pan(0.8)

// other · electric guitar clean · "#Clean Gt"
const electric_guitar_clean = note("<~@41 A B@3 A C@3 ~ D@3 E F@3 G>".pickRestart({
  A: "~@24 eb4@3 db4@3 bb3@5 ~ eb4@12",
  B: "[~@24 eb4@3 db4@3 bb3@5 ~ eb4@4 ~ f4@6 db4 eb4@24 ~@6 bb3@5 ~ db4@5 db4 [bb3,eb4]@5 ~ f4@25 ~@23, ~@41 e4 ~@5 bb3@24 ~@24 [ab3,db4]@26 ~@23]/3", // Eb5 Db5
  C: "[~@24 eb4@3 db4@3 bb3@5 ~ eb4@4 ~ f4@6 db4 eb4@24 ~@6 bb3@5 ~ db4@5 db4 [bb3,eb4]@5 ~ f4@11 ~ eb4@4 c4 eb4@4 c4@2 eb4@12 ~@13, ~@41 e4 ~@5 bb3@24 ~@24 [ab3,db4]@11 ~@38]/3", // Eb5 Db5
  D: "[eb4@3 db4@3 bb3@5 ~ db4@18 db4@6 eb4@9 bb3@2 db4 eb4@24 ~@6 bb3@5 ~ db4@5 db4 [bb3,eb4]@5 ~ f4@25 ~@23, ~@47 bb3@24 ~@24 [ab3,db4]@26 ~@23]/3", // Eb5 Db5
  E: "eb4@3 db4@3 bb3@5 ~ db4@12 ~@24",
  F: "[eb4@3 db4@3 bb3@5 ~ db4@12 ~@7 eb4@4 ~ eb4@8 ~ db4@2 [bb3,eb4]@24 ~@12 eb5@4 ~@6 eb4@2 ~ f4@36 eb4@12, ~@30 db4@2 ~@63 [ab3,db4]@36 ~@13]/3", // Eb5 Db5
  G: "db4@17 ~@7",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.3)

// other · glockenspiel · "Glockensp"
const glockenspiel = note("<~ [~@6 b7 ~@5 d8 ~@11]!55 ~@2>").s("gm_glockenspiel").gain(0.48)

// other · violin · "#Violin"
const violin = note(`<
  ~@9 A B C@2 A B D@2 E F G@2 E F H@2 A B C@2 A B I@3 J@5 K@2 ~@4 E F L@2 M N O@3 P@4
>`.pickRestart({
  A: "~@2 ab4@2 db5 ~@5 ab4@2 db5 ~@3", B: "~@2 [eb4,ab4]@2 db5 ~@5 [eb4,ab4]@2 db5 ~@3",
  C: "[~@6 ab4@6 db5@5 ab4@5 ~@2 ab4@7 ~@5 gb4@10 ~ ab4@11 ~ ab4@11 ~@2 db5@11 ~ db5@11 ~, ~@83 ab4@12 ~]/2",
  D: "[~@6 ab4@6 db5@5 ab4@5 ~@2 ab4@7 ~@5 gb4@10 ~ ab4@44 ~@5]/2", E: "~@18 bb5@5 ab5@13 db5@12",
  F: "~@18 eb5@5 db5@13 ab4@12", G: "[~@18 bb5@5 ab5@13 db5@11 f5@12 ~ ab5@35 ~]/2",
  H: "[~@18 gb5@5 f5@13 db5@55 ~@5]/2",
  I: "[~@6 ab4@6 db5@5 ab4@5 ~@2 ab4@7 ~@5 gb4@10 ~ ab4@37 db5@6 eb5@2 db5@3 c5@43 eb5@6]/3",
  J: "[c5@29 bb4@6 c5@5 ~ eb5@6 db5@25 bb5@12 ab5@11 db5@24 [db5,ab5]@12 ~ db6@11 bb4@30 ~ bb4@5 [bb4,gb5]@6 ~ gb5@5 ~ f5@30 db5@6 ab5@5 db6@6 ~, ~@131 ab5@12 gb5@36 ~@6 bb5@6 ab5@32 ~@17]/5", // Db5 Ebm
  K: "[bb5@30 ab5@6 bb5@5 db6@6 eb6@6 ~@43]/2", L: "[~@18 gb5@5 f5@13 db5@36 ~@24]/2",
  M: "~ [ab4,ab5] eb5 ~@2 [ab4,ab5] eb5 ~, ~@4 db5 ~@7 db5 ~@3", // Ab
  N: "~ [eb4,ab4,eb5] f5 ~@2 [eb4,ab4,eb5] f5 ~, ~@4 db5 ~@7 db5 ~@3", // Ab5
  O: "[~@6 ab4@6 [db5,eb5]@5 [ab4,db5]@6 ~ ab5@11 ~ gb4@10 ~ ab4@11 ~ [ab4,db5]@12 ~ db5@11 ~ [db5,ab5]@11 db6@6 ~ [ab4,bb5]@5 ~ db5@3 ~@15 [ab4,bb5]@6 ab5@6 ~@6, ~@5 ab5@6 ~@13 ab4@7 ~@4 eb5@11 ~@25 f5@12 ab4@12 ~@12 ab5@6 ~@19 db5@3 ~@9]/3", // Dbsus2 Db5 Absus2
  P: "[~@6 [eb4,ab4]@5 ~ db5@3 ~@15 [eb4,ab4,eb5]@6 f5@6 ~@3 bb5@2 ab5@6 ~ [ab4,ab5]@5 ~ db5@5 [ab4,db5]@6 ~ gb4@23 f4@19 eb4@5 f4@19 eb4@5 f4@47 ~@2, ~@5 eb5@6 f5@5 ~@20 db5@3 ~@20 eb5@6 ~@127]/4", // Ab5 Ab Db5
})).s("gm_violin").gain(0.13).pan(0.2)

// other · viola · "#Viola"
const viola = note("<~@9 A B C@2 A B D@2 ~@3 E ~@2 F@2 A B C@2 A B G@3 H@3 I@3 J ~@6 K@2 A B C@2 A B L@3>".pickRestart({
  A: "~@6 gb3@5 ~ bb3@6 ~@12 gb3@5 ~ bb3@6 ~@6", B: "~@6 f3@5 ~ ab3@6 ~@12 f3@5 ~ ab3@6 ~@6",
  C: "[~@5 db4@6 bb3@6 ~ ab3@5 db4@6 ~@7 db4@7 ~@4 db4@11 ~@2 db4@12 f4@11 ~ eb4@11 ~]/2",
  D: "[~@5 db4@6 bb3@6 ~ ab3@5 db4@6 ~@7 db4@7 ~@4 db4@44 ~@5]/2", E: "~@17 [c4,eb4]@6 [db4,f4]@23 ~@2",
  F: "[~@17 db4@19 bb3@11 ab3@43 ~@6]/2",
  G: "[~@5 db4@6 bb3@6 ~ ab3@5 db4@6 ~@7 db4@7 ~@4 db4@36 ~ db4@5 eb4@3 db4@3 c4@29 ~@2 c4@6 db4@6 eb4@6]/3",
  H: "[f4@29 c4@6 eb4@12 db4@31 c4@5 db4@6 ~ eb4@5 f4@43 eb4@2 f4@3 ~]/3",
  I: "[gb4@6 f4@6 gb4@31 ~@4 db4@29 ~ db4@6 ab4@12 ~ db4@11 eb4@12 f4@12 eb4@11 ~@2, db4@46 ~ f4@48 gb4@25 ~@24]/3",
  J: "eb4@7 ~@41", K: "[~@17 db4@19 bb3@11 ab3@27 ~@22]/2",
  L: "[~@5 db4@6 bb3@6 ~ ab3@5 bb3@23 ~ ab3@18 ~ gb3@5 ab3@18 ~ gb3@5 ab3@47 ~@2]/3",
})).s("gm_viola").gain(0.13).pan(0.7)

// other · cello · "#Cello"
const cello = note("<~@11 A B ~@2 A C ~@3 D ~@2 E@2 ~@2 A B ~@2 A C F@8 ~@6 G@2 ~@2 A B ~@2 H I J>".pickRestart({
  A: "~@6 f3@5 eb3@6 db3@5 ~ ab3@8 ~@5 bb3@8 ~@4", B: "db3@8 ~@3 f3@8 ~@4 ab3@9 ~@4 db4@10 ~@2", C: "db3@11 ~",
  D: "~@17 eb3@6 f3@23 ~@2", E: "[~@18 gb3@5 f3@13 eb3@11 db3@43 ~@6]/2",
  F: "[f3@29 f3@6 ~ gb3@5 ab3@6 a3@30 ~ g3@6 a3@5 c4@6 bb3@47 ~ bb3@3 ab3@9 db4@36 eb3@35 ~@2 eb3@5 ~ eb3@5 f3@36 ~ ab3@5 db4@6 gb3@30 ab3@7 bb3@11 ab3@10 ~@39]/8",
  G: "[~@18 gb3@5 f3@13 eb3@11 db3@26 ~@23]/2", H: "~@6 f3@5 eb3@6 db3@5 ~ eb3@23 ~@2", I: "db3@3 eb3 db3@3 eb3",
  J: "db3@47 ~",
})).s("gm_cello").gain(0.16).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x ~@6 x]!55 x ~>").gain(0.56)

// drums · rim
const rim = s("rim").struct("<~ [~@5 x ~@10]!55 ~@2>").gain(0.24)

// drums · snare
const snare = s("sd").struct("<~ [~@9 x ~@2 x ~@19 x!5 ~@11]!55 ~@2>").gain(0.32)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ [~@30 x!2 ~@16]!55 ~@2>").gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<~ [x!2 ~ x!3 ~ x]!55 x ~>").gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~@3 x ~@2 x ~@9]!55 ~@2>").gain(0.4)

// drums · shaker
const shaker = s("sh").struct("<~ [~@3 x ~ x ~@5 x ~ x ~ x]!55 ~@2>").gain(0.4)

// drums · triangle
const triangle = s("triangles:35").struct("<~ [x!2 ~@2 x ~@3 x ~ x ~ x ~@3]!55 [x!2 ~@14] ~>").gain(3.48)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~ [~ x]!55 ~@2>").gain(1.38)

stack(
  piano, bass, string_ensemble_1, pad_warm, pad_new_age, lead_8_bass_lead, lead_7_fifths, electric_guitar_clean,
  glockenspiel, violin, viola, cello, kick, rim, snare, snare_soft, hihat, tambourine, shaker, triangle, jingle_bells
)

More by Whitney Houston