Strudelify

I'm Glad There Is You

Sinatra

KeyD♭ majorTempo69 bpm
0:00/0:00
// I'm Glad There Is You — Sinatra
// 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 53 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.

// other · piano · "A.PIANO 1"
const piano = note("<~@17 A@2 ~@2 B C ~@30>".pickRestart({
  A: "[~@5 eb4@4 f4@2 ~ gb4@2 ab4@2 bb4@2 ~ b4@2 db5@2 ~ d5@2 eb5@2 ~ f5@2 gb5@2 ab5@2 ~ bb5@8 ~ f5@2 gb5@19 ~@30, ~@22 eb5 ~@25]/2",
  B: "~@18 f5@2 gb5@2 ~@2 ab5@2 gb5@3 f5@2 ~ gb5@2 ~ a5@4 ~@3 gb5@3 ~@3", C: "f5 gb5 f5 e5@2 f5@13 ~@2 ab5@16 ~@12",
})).s("gm_piano").gain(0.3).pan(0.4)

// bass · pizzicato strings · "PIZZICATO"
const bass = note(`<
  ~@4 A B C D E F G H I J K L G M N O P Q R S T U V W X Y@2 Z AA AB AC ~@3 X Y@2 Z AA AB ~@4 AC ~@4
>`.pickRestart({
  A: "db2@6 ~@18 ab2@5 ~@19", B: "db2@4 ~@20 ab2@3 ~@21", C: "db2@2 ~@10 ab2 ~@11", D: "db2 ~@5 db2 ~@5",
  E: "eb2 ~@7 eb2 ~@7", F: "ab2@3 ~@21 ab2@2 ~@22", G: "db2 ~@11 ab2 ~@11", H: "eb2@2 ~@22 ab2 ~@23",
  I: "db2@2 ~@6 ab2 ~@7", J: "db2@4 ~@20 f2@3 ~@9 e2@2 ~@10", K: "eb2 ~@11 eb2 ~@11", L: "ab2@2 ~@22 ab2 ~@23",
  M: "b1 ~@3 bb1 ~@3", N: "eb2@3 ~@21 eb2@2 ~@22", O: "ab2@2 ~@22 db2@4 ~@8 f2@3 ~@9", P: "gb2 ~ bb2 ~ db3 ~ bb2 ~",
  Q: "gb2 ~ ab2 ~ a2 ~ gb2 ~", R: "ab2 ~ db2 ~ f2 ~ ab2 ~", S: "db2 ~@3 f2 ~@3", T: "bb2@3 ~ eb2@2 ~@2",
  U: "bb2@2 ~@2 eb2 ~@3", V: "ab2 ~@3 eb2 ~@3", W: "ab2 ~@3 ab2 ~ c2 ~", X: "db2@7 ~@17 ab2@6 ~@18",
  Y: "db2 ~@3 ab2 ~@3", Z: "db2 ~@3 db2 ~@3", AA: "eb2 ~@3 eb2 ~@3", AB: "ab1 ~@3 ab1 ~@3", AC: "db2 ~@7",
})).s("gm_pizzicato_strings").gain(0.32)

// other · orchestral harp · "HARP"
const orchestral_harp = note("<~@3 A B ~@3 C ~@2 D E ~@40>".pickRestart({
  A: "~@26 e3 ~@2 e4 ~ ab3 c4 ~ e4 ab4 c5 ~@11, ~@24 ab2@3 ~ c4@2 ~@18, ~@25 c3@2 ab3@2 ~@19",
  B: "f3@2 ab3@2 c4@2 f4@2 ab4@2 c5@2 f5 ~@35", C: "~@24 eb3@3 gb3@3 bb3@3 db4@2 ~ eb4@3 gb4@3 bb4@3 db5@2 ~",
  D: "~@30 eb4@2 f4@2 ab4@2 bb4@3 c5@2 ~ eb5@3 f5@3", E: "ab4@3 bb4@3 c5@2 eb5@2 f5 ~ ab5 ~@35",
})).s("gm_orchestral_harp").gain(0.16)

// other · flute
const flute = note(`<
  ~@6 A@2 B ~ C D E@2 F G H I@3 J K L@2 ~@4 M N O P Q R S ~@3 M T O P Q U V ~@3 S ~ W X ~
>`.pickRestart({
  A: "[~@12 ab5@7 bb5@23 ab5@5 gb6@13 e6@6 b5@18 ab5@12]/2", B: "gb5@47 ~", C: "~@6 c6@2 bb5@2 ab5@2 bb5@9 ab5@2 ~",
  D: "ab5@6 ~ gb5@5 db6@6 eb6@6 bb5@6 ab5@6 eb6@6 f6@6",
  E: "[~@35 c5@10 [bb5,b5]@2 c6@12 db6@12 ~ eb6@11 f6@12 ~, c6@11 ~@13]/2", F: "bb5@15 gb5@4 ab5@4 bb5@13 gb6@12",
  G: "f6 e6", H: "eb6@25 ~@7 d6@3 db6@3 ~ c6@2 bb5@2 ab5@2 ~ f5@2",
  I: "[~ eb5@22 d5@24 db5@24 bb4@6 c5@6 db5@6 f5@6 ab4@24 ~ gb5@11 f5@9 ~@4]/3", J: "f5@4 ~@8 db5@7 eb5@15 ~@9 bb4@5",
  K: "~ db5@6 ~@5 bb4@8 gb4@23 ~@5", L: "[c5@19 db5@5 eb5@8 db5@4 c5@8 ab4@28 ~@24]/2", M: "~@8 ab4 bb4 ab5 f5",
  N: "c5@35 eb5@3 f5@10", O: "e5@31 gb4@5 ab4@4 gb5@3 e5@5", P: "b4@40 eb5@3 d5@5",
  Q: "db5@27 ~@5 bb4@4 db5@4 ab5@4 gb5@4", R: "bb5@24 ~ c6@7 bb5@8 ~ a5@7", S: "ab5@47 ~", T: "c5@35 ~ f5@12",
  U: "bb5@18 ~@4 ab5 bb5", V: "ab5@13 ~@11", W: "~@12 bb5@13 g6@12 b5@6 db6@5", X: "~ ab6@47",
})).s("gm_flute").gain(0.25).pan(0.7)

// other · clarinet
const clarinet = note(`<
  A@2 B@2 C D E ~@6 F@2 G H I ~ J K L M@2 N O@2 P Q ~@3 R S T U V W X ~@9 T U Y ~@2
>`.pickRestart({
  A: "[ab4@11 bb4@6 c5@6 db5@7 ab5@11 ~ bb5@5 ab5@3 bb4@3 c5@3 db5@3 ~ eb5@8 ~ db5@3 f5@6 db6@12 e5@6]/2",
  B: "[eb5@3 ab4@2 bb4@3 ~ c5@3 eb5@5 c5@6 eb5@4 db5@5 bb5@9 ab5@6 gb5@4 db5@5 eb5@4 f5@3 c5@4 db5@5 e5@6 a4@12 ~@2 gb4@2 ab4@2]/2",
  C: "f4@25 ~@11 eb4@6 f4@6", D: "bb4@20 ab4@23 gb4@2 ~ f4@2", E: "e4",
  F: "[~@12 bb4@12 ab4@11 g4@12 gb4@16 eb4@4 f4@5 gb4@12 db5@12]/2", G: "bb4 a4",
  H: "ab4@24 ~@8 g4@4 gb4@3 f4@2 eb4@2 ~@2 c4@2 ~, ~@22 db4 ~", I: "b3@23 bb3@22 ~@3", J: "~@24 gb5@9 ~@3 f5@5 ~@7",
  K: "f5@5 ~@7 db5@8 eb5@24 bb4@4", L: "db5@7 ~@5 bb4@7 ~ gb4@28",
  M: "[ab4@20 bb4@4 c5@6 ~@2 bb4@4 ab4@8 f4@27 ~@25]/2", N: "~@4 db5@2 eb5@2 c5@2 db5@2 f5@11 ~",
  O: "[db5@6 eb5@6 c5@6 db5@6 f5@23 gb5@17 ~ f5@3 ~ eb5@3 bb4@17 ab4@4 gb4@3]/2",
  P: "bb3@6 c4@6 ab4@4 gb4@3 ~ f4@4 e4@6 ~ c5@13 a4@4", Q: "ab4@35 ~@13", R: "~@8 gb4 bb4 f5 eb5",
  S: "gb5@24 ab5@9 g5@7 gb5@8", T: "f5", U: "~@13 b4@11 ab5@12 gb5@6 e5@5 ~", V: "eb5",
  W: "ab4@8 ~@2 bb4 db5 ab4 c5 gb4 a4", X: "f4@23 ~", Y: "eb5 ~",
})).s("gm_clarinet").gain(0.25).pan(0.6)

// other · oboe
const oboe = note("<A B C@2 D ~ E@2 F ~ G H I ~@6 J K L M@2 N O P Q R ~@6 S T U ~@11 S T ~@2>".pickRestart({
  A: "ab4@12 bb4@5 c5@7 db5@6 ab5@12 bb5@6", B: "ab5@2 bb4@3 c5@3 ~@4 eb5@9 db5@2 ~ f5@6 db6@12 e5@5 ~",
  C: "[eb5@2 ab4@3 bb4@3 ~ c5@3 eb5@5 c5@6 eb5@4 ~ db5@3 bb5@10 ab5@6 gb5@4 db5@4 eb5@4 f5@4 c5@4 db5@5 e5@6 a4@14 gb4@2 ab4@2]/2",
  D: "f4@11 ~@13", E: "[~@13 ab4@5 bb4@24 ab4@5 gb5@13 e5@6 b4@18 ab4@12]/2", F: "gb4",
  G: "~@12 c5@4 bb4@4 ab4@4 bb4@17 ~ ab4@5 ~", H: "ab4 gb4 db5 eb5 bb4 ab4 eb5 f5", I: "c5", J: "~@2 eb5 d5",
  K: "db5@12 ~ a4@8 ~@27", L: "~ bb4@12 f4@7 eb4@20 ~@8",
  M: "[~ f4@14 ~@6 ab4@15 f4@8 ~@16 c5@12 bb4@12 a4@12, ~@44 eb4@27 ~@25]/2",
  N: "ab4@6 ~@6 bb5@3 c6@3 a5@3 bb5@4 db6@23", O: "~ bb5@5 c6@6 a5@6 bb5@6 db6@24",
  P: "eb6@18 db6@3 bb5@4 gb5@16 f5@3 ~ eb5@3", Q: "~@6 ab4@6 f5@5 eb5@3 db5@4 c5@6 a5@15 gb5@3", R: "~ f5@35 ~@12",
  S: "~@13 b4@11 ab5@12 gb5@6 e5@6", T: "~ eb5@47", U: "ab4@8 ~@2 db5 f5 c5 eb5 ~@2",
})).s("gm_oboe").gain(0.25).pan(0.3)

// other · oboe · soft notes
const oboe_soft = note("<~ A ~@18 B ~@6 C ~@9 D E ~@14>".pickRestart({
  A: "~@10 db5 ~@37", B: "~@10 bb4@11 ~@3", C: "gb4@7 ~@41", D: "~@14 a4 c5", E: "ab4@23 ~",
})).s("gm_oboe").gain(0.15).pan(0.3)

// chords · trumpet
const trumpet = note("<~@19 A B C D@2 ~@11 E F G ~@6 H I J@2 K E L M ~>".pickRestart({
  A: "~@23 b4@25", B: "bb4@5 ~@8 f4@7 gb4@22 ~@6", C: "~ f4@6 ~@5 db4@7 ~ a3@22 ~@6",
  D: "[eb4@15 ~@5 f4@3 ~ f4@5 ~@3 f4@4 eb4@8 c4@28 ~@24]/2", E: "[b3,e4]", F: "~ [bb3,eb4]@43 ~@4",
  G: "db4@47 ~, bb3@35 ~@13", H: "[f3,ab3] [gb3,bb3]", I: "g3@23 ~ ab3@17 ~@7, b3@7 ~",
  J: "[bb3 ab3 gb3 c4, db4@3 ~]/2", K: "~ db4@35 ~@12", L: "~ [bb3,eb4]@23 [a3,e4]@23 ~", M: "[ab3,f4]",
})).s("gm_trumpet").gain(0.33).pan(0.2)

// other · trombone
const trombone = note("<~@4 A B C ~@12 D E F G@2 H ~@10 I@2 J ~@6 K@2 L M ~ N@4>".pickRestart({
  A: "~@6 eb4 f4", B: "bb4@20 ab4@21 ~@3 gb4@2 f4@2", C: "e4@47 ~", D: "~@6 gb4@2 ~ f4 ~@2",
  E: "f4@4 ~@7 db4@8 ~ eb4@21 ~@7", F: "ab4@5 ~@7 ab4@8 db4@21 ~@7",
  G: "[c4@14 ~@6 db4@4 eb4@8 db4@4 c4@8 ~@16 c4@11 bb3@13 a3@12, ~@11 ab3@7 ~@6]/2", H: "ab3@25 ~@23",
  I: "[~ db2@90 ~@5]/2", J: "eb2 ab2", K: "[f3 gb3 g3 ab3, db3@15 ~]/2", L: "[gb3,bb3] [f3,ab3]", M: "[eb3,gb3] ab2",
  N: "[~ db2@144 ~@47]/4",
})).s("gm_trombone").gain(0.3)

// other · violin
const violin = note("<~@8 A@3 ~ B@2 C@2 D E@2 F ~@4 G H I J K ~@7 L M N ~@5 O P Q R ~@2 S T ~>".pickRestart({
  A: "[~@15 eb6@4 f6@5 ab6@19 gb6@4 f6@8 bb5@5 f6@23 eb6@41 ~@20]/3", B: "[~@35 c5@11 bb5@13 ~ db6@11 eb6@12 f6@13]/2",
  C: "[bb5@15 gb5@4 ab5@4 bb5@11 f6@2 gb6@11 f6@25 e6@23 ~]/2", D: "eb6@23 ~@9 d6@3 db6@3 c6@3 bb5@2 ab5@2 ~ f5@2",
  E: "[eb5@23 d5@24 db5@24 bb4@6 ~ c5@5 db5@6 ~ f5@6]/2", F: "ab4 ~", G: "~@2 db6 eb6 c6 db6 f6@4 ~@2",
  H: "db6@6 eb6@6 c6@5 db6@6 ~ f6@24", I: "gb6@17 ~ f6@3 eb6@3 bb5@17 ~ ab5@3 gb5@3",
  J: "bb4@6 c5@6 ab5@4 gb5@4 f5@4 e5@6 c6@15 a5@3", K: "ab5@3 ~", L: "~@2 bb5@2 g6@2 f6 eb6",
  M: "db6@6 gb6@6 bb5@18 ~@3 f6@4 c6@3 ~@2 a5@3 c6@3, ~@15 db6@3 ~@2 eb6@2 ~@2", N: "ab5",
  O: "ab5@6 bb5@6 db6@17 ab5@7 bb5@6 ab5@6", P: "db6@2 eb6@2 db6@2 eb6@2 ab6@6 eb6 db6",
  Q: "f6@14 eb6@4 db6@2 bb5@4 ab5@6 eb6@3 ~ db6@2 bb5@3 ab5@3 f5@3 eb5@3", R: "db5@25 ~@23",
  S: "~@13 bb5@11 g6@13 b5@6 db6@5", T: "~ ab6@47",
})).s("gm_violin").gain(0.3).pan(0.4)

// other · tremolo strings · "TREMOLOSTR"
const tremolo_strings = note(`<
  A B C D ~@4 E F@2 ~ G H@2 I J K@2 L ~@4 M@3 N O P Q R S T U ~ V W O X Q R S Y Z@2 AA AB ~@2 AC AD ~
>`.pickRestart({
  A: "~ ab3@22 bb3@12 c4@13", B: "db4", C: "c4@23 b3@25", D: "bb3@23 [gb3,e4]@25", E: "~@16 eb6@4 f6@4 ab6@19 gb6@5",
  F: "[f6@8 bb5@4 f6@23 eb6@37 ~@24]/2", G: "~@35 c5@9 bb5@2 b5@2",
  H: "[c6@12 db6@11 eb6@12 f6@12 bb5@16 gb5@4 ab5@4 bb5@13 gb6@12]/2", I: "f6 e6",
  J: "eb6@24 ~@8 d6@3 db6@3 c6@3 bb5@2 ab5@2 ~ f5@2", K: "[eb5@23 d5@24 db5@24 bb4@6 c5@6 db5@6 f5@7]/2", L: "ab4 ~",
  M: "[~@8 db6@4 eb6@4 c6@4 db6@4 f6@23 db6@6 eb6@6 c6@6 db6@7 f6@23 gb6@18 f6@4 eb6@4 bb5@16 ab5@3 gb5@4]/3",
  N: "bb4@6 c5@6 ab5@4 gb5@4 f5@4 e5@6 c6@15 a5@3", O: "~@8 ab3 bb3 ab4 f4, ~ ab5@37 ~@10", P: "c4@18 eb4 f4@5",
  Q: "e4@32 gb3@4 ab3@4 gb4@3 e4@5", R: "b3@39 eb4@4 d4@5", S: "db4@8 bb3 db4 ab4 gb4", T: "bb4@3 c4 bb3 a3",
  U: "ab3@47 ~", V: "~@12 bb5@11 g6@13 f6@6 eb6@6", W: "db6@6 gb6@7 bb5@17 db6@3 f6@3 c6@3 eb6@3 a5@3 c6@3",
  X: "c4@3 f4", Y: "bb4", Z: "[ab5@7 bb5@5 db6@18 ab5@6 bb5@6 ab5@5 db6@6 eb6@6 ~ db6@5 eb6@6 ab6@18 eb6@3 db6@4]/2",
  AA: "f6@14 eb6@4 db6@2 bb5@3 ab5@7 eb6@3 db6@3 bb5@3 ab5@3 f5@3 eb5@3", AB: "db5 ~",
  AC: "~@12 bb5@12 g6@13 b5@6 db6@5", AD: "~ ab6@47",
})).s("gm_tremolo_strings").gain(0.3).pan(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B@3 ~@4 C D@8 E@2 F ~@4 G@3 H I J K L M N O ~ P Q R J K L M S ~@4 T@3 U ~
>`.pickRestart({
  A: "[c4,f4]@22 ~ gb4@12 [eb4,ab4]@13, ~@11 db4@7 ~@6", // F5 Ab5
  B: "[bb4@23 ~@13 e4@11 eb4@36 d4@12 [db4,bb4]@24 [c4,a4]@24 ~, f4@37 ~@10 ab4@49 ~@48, ~@23 a4@25 ~@96]/3", // Gb F
  C: "~@16 [eb4,bb4]@4 [f4,db5]@4 [ab4,f5]@19 [gb4,eb5]@5", // Eb5 Db Ebm
  D: "[[f4,db5]@8 [bb3,gb4]@4 ~ c5@22 bb4@12 ~@24 db4@37 bb3@11 c4@49 ~@11 c4@10 ~ b4@2 c5@12 db5@11 ~ eb5@11 f5@12 bb4@16 gb4@5 ab4@4 ~@10 e5 ~@2 gb5@11 f5@24 e5@23 [f4,eb5]@25 ~@24, ~@12 f4@23 eb4@37 ~@107 f4@37 ~@48 [eb4,bb4]@12 gb4@59 ~@49, ~@47 ab4@121 ~@21 bb4@2 ~@24 eb4@12 db4@37 ~@9 eb5@2 f5@2 ~@107]/8", // Db Ebm F7 Eb5
  E: "[ab4@47 gb4@24 bb4@7 c5@5 ~ gb4@6 [bb4,f5]@6, f4@83 db5@6 ~@7]/2", F: "c4@23 b3@22 ~@3, ab4@47 ~",
  G: "[~@12 bb5@3 c6@3 a5@3 bb5@4 db6@22 bb5@6 c6@6 a5@6 bb5@6 db6@24 eb6@18 db6@4 ~@3 gb5@17 f5@3 ~ eb5@3, ~@117 bb5@5 ~@22]/3",
  H: "gb4@6 ab4@6 f5@5 eb5@4 db5@4 c5@5 a5@14 gb5@4", I: "~@31 ab3@5 bb3@4 ab4@4 f4@4, f5@35 ~@13", J: "c4@18 eb4 f4@5",
  K: "e4@8 gb3 ab3 gb4 e4", L: "~ b3@38 eb4@4 d4@5", M: "db4@28 ~@4 bb3@4 db4@4 ab4@4 gb4@3 ~",
  N: "bb4@25 c5@7 bb4@8 a4@8", O: "ab4", P: "~@12 g5@11 eb6@13 db6@6 c6@6",
  Q: "bb5@6 eb6@6 gb5@18 ~ bb5@2 db6@3 ab5@3 c6@3 gb5@3 a5@3", R: "~@31 ab3@5 bb3@4 ab4@4 f4@4, f5@47 ~", S: "bb4",
  T: "[f4@47 e4@49 ~@12 g5@12 e6@12 g5@6 a5@6, db5@143 ~, ab4@95 ~ [g4,bb4]@24 ~@24]/3", U: "[ab4,f5,f6]",
})).s("gm_string_ensemble_1").gain(0.19)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note("<A@4 B@8 C@3 D@4 E F@4 G@2 H@8 I@3 J@7 K@8 ~>".pickRestart({
  A: "[db2@23 eb2@13 f2@11 gb2@48 f2@24 e2@24 eb2@24 ab2@25]/4",
  B: "[c4@48 ~@43 gb4@2 f4@3 [b3,e4]@95 ~ [eb3,gb4]@47 ~@13 c4@33 ~@3 db3@47 ~ [eb3,gb4]@23 [ab3,c4,f4]@25, db3@191 ~@49 ab4@143 ~, ab3@181 ~@58 f4@46 ~@99, f4@91 ~@100 db4@49 gb3@48 ~@47 [bb3,db4]@25 ~@24, ~@48 bb3@49 ~@94 bb3@94 ~@2 [ab3,c4,f4]@50 ~@47]/8", // E5 Ebm Fm Bbm Fm
  C: "[~@35 f3@4 eb3@5 db3@4 c3@11 ~ bb2@11 ~ c4@11 ~@12 gb4@16 [gb3,eb4]@4 ~ f4@3 ~ gb4@12 db5@12, ~@35 ab4@24 bb4@12 ab4@12 g4@13 ~@23 bb3@25, ~@84 bb3@27 ~@4 ab3@5 ~@24]/3", // Ebm
  D: "[bb4@48 ab4@24 ~@8 [g4,d5]@3 ~ db5@2 ~ c5@2 ~@7 eb4@23 d4@25 db4@23 ~ [db4,gb4]@6 ab4@6 bb4@6 [gb4,db5]@6, c4@72 ~@11 gb4@3 f4@2 ~ eb4@2 db4@2 c4@2 b3@23 ~ bb3@49 ~@24, ~@45 bb4 ab4 f4 ~@39 eb4@6 ~@3]/4", // G5 Gb5
  E: "[gb3,eb4]@3 [f3,d4]", // Ebm Dm
  F: "[f4@24 eb4@24 f4@24 a3@24 ~@71 bb3@12 ~ a3@12, db4@8 ab3@7 ~, bb3@72 eb4@95 db4@23 ~@2, ~@96 c4@73 ~@23, ~@5 f3@3]/4",
  G: "[[bb2,ab3]@24 [eb2,g3]@23 ~ ab3@23 [eb2,g3]@25, f4, [bb3,db4]@91 ~@5, ~@47 bb2@25 ~@24]/2", // Bb7 Eb Bbm
  H: "[db4@48 ~@36 [a3,e4]@12 f4@95 ~ [b3,e4]@95 ~ [eb3,gb4]@47 ~@25 c5@8 [g3,bb3,bb4]@8 [gb3,a3,a4]@8, gb3@96 ab3@181 ~@10 bb3@61 c4@20 ~@16, [bb3,eb4]@85 ~@11 db3@191 ~@48 f4@46 ~@3, ~@50 c4@142 ~@95 db4@49 ab4@24 ~@24, ~@21 gb3@2 ~]/8", // A5 E5 Ebm Gm Gbm Eb5
  I: "[[c4,f4]@47 ~ [b3,e4]@48 [g3,bb3,eb4]@47 ~, db3, ab3@2 ~]/3", // F5 E5 Eb
  J: "[[eb2,db4]@24 ~@12 [a3,e4]@12 f4@95 ~ [b3,e4]@95 ~ [eb3,gb4]@47 ~@13 c4@36, gb3@47 ~ db3@191 ~@48 f4@48 ~, bb3@25 ab2@24 ~@239 [gb3,ab4]@48, ~@24 c4@121 ~@94 bb3@72 ~@25, ~@24 f4@12 ~@12 ab3@181 ~@10 db4@60 ~@37]/7", // Eb7 A5 E5 Ebm Gbsus2
  K: "[[f3,ab3]@24 [eb3,gb3,bb3]@24 [e3,g3]@24 [f3,ab3]@24 [gb2,gb3,bb3]@24 [f2,f3,ab3]@24 [gb3,bb3]@22 ~@2 [d4,f4,bb4]@12 a4@12 ~@48 [b3,e4]@48 [g3,bb3,eb4]@24 [a3,e4]@24 ~ ab3@47, [db3,db4]@167 ~ [ab2,gb3]@24 db3@192, db2@96 ~@48 eb2@18 ~@18 f4@59 ~@145, ~@2 b3@2 ~@3 c4@3 ~@6, ~@4 [ab3,ab4]@2 ~ [db2,c4,f4]]/8", // Fm Ebm Em Fm Gb Fm Gb Bb …
})).s("gm_string_ensemble_1").gain(0.1)

// drums · kick
const kick = s("bd").struct("<~@5 A@15 ~ A@3 ~@3 A ~ A@5 ~@5 A@5 ~@9>".pickRestart({
  A: "x",
})).gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@15 ~ A@4 ~@2 A@8 ~@4 A@6 ~@9>".pickRestart({
  A: "~ x",
})).gain(0.2)

// drums · ride
const ride = s("rd").struct("<~@4 A@15 B A@4 C ~ A@8 ~@4 A@6 ~@9>".pickRestart({
  A: "x!4", B: "x ~@2 x", C: "x",
})).gain(0.15)

stack(
  piano, bass, orchestral_harp, flute, clarinet, oboe, oboe_soft, trumpet, trombone, violin, tremolo_strings,
  string_ensemble_1, string_ensemble_1_2, kick, open_hat, ride
)

More by Sinatra