Strudelify

I'm So Glad That I'm a Woman

Love Unlimited Orchestra

KeyB♭ minorTempo118 bpm
0:00/0:00
// I'm So Glad That I'm a Woman — Love Unlimited Orchestra
// 118 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 6 "MT TRUMPET" named as a brass, played on trumpet (its electric guitar muted patch is not one)
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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 · "HONKY TONK"
const piano = note(`<
  A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 F G H@2 I J@2 K F G L@2 M N O P Q R S T U V W@2 X Y Z@2 AA@2 AB@2 A@2 B@2 C@2 E@2 F G
  H@2 AC AD@2 AE F AF L@2 M N O AG AH AI S AJ U V AK AL AH AI S AM U V AK AN AH AI S AO U V AK AP AQ R S AR U V AK AL AH
  AI S AJ U V AK AL AH AI S AS ~
>`.pickRestart({
  A: "[[bb1,bb2,bb3,db4,f4,ab4]@23 ~ [bb1,bb2,bb3,db4,f4,ab4]@3 [bb1,bb2,bb3,db4,f4,ab4]@2 ~ [bb1,bb2,bb3,db4,ab4]@2, ~@29 f4@2 ~]/2", // Bbm7
  B: "[[bb1,bb2,bb3,db4,eb4,gb4]@20 ~@2 [bb1,bb2,bb3,db4,eb4,gb4]!2 [bb1,bb2,bb3,db4,eb4,gb4]@3 [bb1,bb2,bb3,db4,eb4,gb4]@2 ~ [bb1,bb2,bb3,db4,eb4,gb4]@2]/2", // Ebm7
  C: "[[bb1,bb2,ab3,bb3,db4,f4]@23 ~ [bb1,bb2,ab3,c4,db4,f4]@7 ~]/2", D: "[[bb1,bb2,ab3,bb3,db4,f4]@31 ~]/2",
  E: "[[ab3,bb3,db4,f4]@16 [bb3,f4]@3 ~ [bb3,eb4]@3 ~ [bb3,db4]@4 [f3,eb4]@4, [bb1,bb2]@31 ~]/2", // Bbm7 Bb5 Eb5 Bbm F7 Bb
  F: "gb2 ~@5 eb4 f4, [ab3,bb3,db4]@15 ~, f4@3 ~, ~@3 gb2@12 ~", // Bbm7
  G: "f2@6 ~@4 [f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4]@3, [f3,ab3,c4,eb4]@5 ~@3, ~@7 f2@8 ~", // Fm7
  H: "[gb2@2 ~@10 f4@2 gb4 f3@3 ~@8 [f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4]@3, [ab3,bb3,db4]@14 ~ [ab3,c4,eb4]@11 ~@6, f4@6 ~@4 f3@3 ~@3, ~@3 gb2@12 f2@2 ~ f2@4 ~ f2@9]/2", // Fm7 Bbm7 Ab
  I: "bb3@2 bb3 ~ gb2@2 ~@2 [ab3,bb3,db4,f4]@4 [ab3,bb3,db4,f4]@4, [gb2,ab3,db4,f4]@3 bb3@5 ~@8, ~ [ab3,db4,f4] ~@2, ~@6 gb2@9 ~", // Bbm7 Db
  J: "[[f2,f3,ab3,c4,eb4]@2 f3 ~ [f2,ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@3 ~ [f3,ab3,c4,eb4]@2 ~@3 e2 [a2,g3,a3,db4,e4]@3 [g3,a3,db4,e4]@2 ~ [g3,a3,db4,e4]@4 [a2,g3,a3,db4,e4]@2 [g3,a3,db4,e4] ~ [g3,a3,db4,e4]@2, ~@3 f3@2 ~ f2@4 ~@2 [f2,f3,ab3,c4,eb4]@4 ~@3 a2@6 ~@3 a2@4, ~@14 a1@17 ~]/2", // Fm7 A7 Fm7
  K: "[ab3,eb4]@2 [gb3,ab3,c4,eb4] ~@3 [ab1,ab2] ab2 [ab3,ab4]@2 [ab1,ab2]@2 [ab3,ab4]@2 [ab1,ab2]@2, [ab1,ab2]@6 ~ ab1@2 ~@7, [gb3,c4] ~@2 [gb3,ab3,c4,eb4]@5 ~@8", // Ab5 Ab7 Ab Gbdim Ab7
  L: "[[gb2,ab3,bb3,db4,f4]@2 bb3 [ab3,bb3,db4,f4]@3 [ab3,bb3,db4,f4]@4 [ab3,bb3,db4,f4]@2 [ab3,bb3,db4,f4]@2 gb4 f3@3 ~@8 [f3,ab3,c4,eb4] ~ [f3,ab3,c4] ~ [f3,ab3,c4,eb4]@2, ~@3 gb2@12 [ab3,c4,eb4]@11 ~@2 eb4@2 ~@2, ~@15 f2@2 ~ f2@4 ~ f2@9, ~@10 f3@3 ~@3]/2", // Gbmaj7 Bbm7 Fm7 Fm Fm7 Ab
  M: "[gb2,ab3,bb3,db4,f4]@2 bb3 ~ gb2@2 [ab3,bb3,db4,f4]@4 [bb3,db4,eb4]@2 [bb3,db4,eb4]@2 [ab3,bb3,db4,f4]@2, ~@3 [ab3,bb3,db4,f4]@2 ~ gb2@9 ~, ~@10 ab3 ~ ab3 ~@3", // Gbmaj7 Bbm7 Eb7 Bbm7
  N: "[f2,f3,ab3,c4,eb4]@2 f3!2 [f2,f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@3 ~ [f3,ab3,c4,eb4]@2 ~@2 f1@2, ~@3 f2@2 ~ [f2,f3,ab3,c4,eb4]@2", // Fm7
  O: "[a2,g3,a3,db4,e4]@3 [g3,a3,db4,e4]@2 ~ [g3,a3,db4,e4]@4 [a2,g3,a3,db4,e4]@2 [g3,a3,db4,e4] ~ [g3,a3,db4,e4]@2, a1@5 ~ a1@10, ~@3 a2@6 ~@3 a2@4", // A7
  P: "[ab3,eb4]@2 [gb3,ab3,c4,eb4] [gb3,ab3,c4,eb4]@3 [ab1,ab2,ab3,ab4]!2 [ab3,ab4]@2 [ab2,ab3,ab4] ~ [ab1,ab2]@2 [ab2,ab3,ab4]@2, [ab1,ab2]@6 ~@2 [ab1,ab2] ~ ab1@2 ~@2 ab1 ~, [gb3,c4] ~@11 [ab3,ab4] ~@3", // Ab5 Ab7 Ab Gbdim Ab
  Q: "f2@2 ~@8 [f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4]@3, [f3,ab3,c4,eb4]@5 ~@3, ~@3 f2@12 ~", // Fm7
  R: "[f3,ab3,bb3,db4]@3 [f3,ab3,bb3,db4]@2 ~@5 f3@2 db4@2 f3@2, bb2@6 [ab3,bb3]@9 ~, ~@6 db4@5 ~@5, ~@6 f3@3 ~@7, ~@7 bb2@8 ~", // Bbm7 Absus2
  S: "[eb2,eb3,gb3,bb3,db4]@2 ~ [eb3,gb3,bb3,db4]@2 ~ [eb3,gb3,bb3,db4]@4 [eb3,gb3,bb3,db4]@3 [eb3,gb3,bb3,db4]@2 ~, ~@3 eb2@12 ~", // Ebm7
  T: "[ab2,gb3,bb3,db4,gb4]@2 ab2 ~ ab2@4 [ab2,gb3,c4] ~ [ab2,gb3,c4,eb4] ~ [gb3,bb3,c4,eb4] ~ [gb2,bb3,db4]@2, ~@3 [gb3,bb3,db4,f4]@4 ~ [bb3,eb4]@2 bb3@2 ab2@2 gb3 ~", // Gb Ab7 Cm7b5 Gb Gbmaj7 Eb5
  U: "[f2,f3,ab3,c4,eb4]@2 ab3 ~ f2@2 [f3,ab3,c4,eb4]@4 [ab3,c4,eb4]@2 [ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@2, ~@3 [f3,ab3,c4,eb4]@2 ~ f2@9 ~, ~@10 f3 ~ f3 ~@3", // Fm7 Ab Fm7
  V: "[bb2,f3,ab3,bb3,db4]@2 f3!2 [bb2,f3,ab3,bb3,db4]@2 ~@8 f4@2, ~@3 [bb2,ab3,bb3,db4,f4]@3 [bb2,db4]@2, ~@5 f3@3", // Bbm7 Bbm
  W: "[[eb2,eb3,gb3,bb3,db4]@3 [eb3,gb3,bb3,db4]@2 ~ [eb3,gb3,bb3,db4]@4 [eb2,eb3,gb3,bb3,db4]@2 [eb3,gb3,bb3,db4] ~ [f2,a3,c4,eb4,f4]@17 ~, ~@3 eb2@6 ~@3 eb2@4 ~@16]/2", // Ebm7 F7
  X: "[bb1,bb2,bb3,db4,f4,ab4]", // Bbm7
  Y: "[bb1,bb2,bb3,db4,f4,ab4]@2 ~ [bb1,bb2,bb3,db4,f4,ab4]@2 ~ [bb1,bb2,bb3,db4,f4,ab4]@2 [bb1,bb2,bb3,db4,f4,ab4]@3 [bb1,bb2,bb3,db4,f4,ab4]@2 ~ [bb1,bb2,bb3,db4,ab4]@2, ~@13 f4@2 ~", // Bbm7
  Z: "[[bb1,bb2,bb3,db4,eb4,gb4]@18 [bb1,bb2,bb3,db4,eb4,gb4]!2 [bb1,bb2,bb3,db4,eb4,gb4]@4 [bb1,bb2,bb3,db4,eb4,gb4]!2 [bb1,bb2,bb3,db4,eb4,gb4]@3 ~ [bb1,bb2,bb3,db4,eb4,gb4]@2]/2", // Ebm7
  AA: "[[bb2,ab3,bb3,db4,f4]@15 ~ [bb2,f3,bb3,db4,f4]@4 [bb2,f3,bb3,eb4]@4 [bb2,f3,bb3,db4]@4 [bb2,f3,bb3,eb4]@4, bb1@31 ~]/2", // Bbm7 Bbm Bbsus4 Bbm Bbsus4
  AB: "[[ab3,bb3,db4,f4]@15 ~, [bb1,bb2]]/2", // Bbm7 Bb
  AC: "bb3@2 bb3!2 gb2@2 ~@2 [ab3,bb3,db4,f4]@4 [ab3,bb3,db4,f4]@4, [gb2,ab3,db4,f4] [ab3,bb3,db4,f4] ~@2, ~@6 gb2@9 ~", // Bbm7 Db Bbm7
  AD: "[[f2,f3,ab3,c4,eb4]@2 f3!2 [f2,f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@3 ~ [f3,ab3,c4,eb4]@2 ~@3 e2 [a2,g3,a3,db4,e4]@3 [g3,a3,db4,e4]@2 ~ [g3,a3,db4,e4]@4 [a2,g3,a3,db4,e4]@2 [g3,a3,db4,e4] ~ [g3,a3,db4,e4]@2, ~@6 f2@4 ~@2 [f2,f3,ab3,c4,eb4]@4 ~@3 a2@6 ~@3 a2@4, ~@14 a1@17 ~]/2", // Fm7 A7 Fm7
  AE: "[ab3,eb4]@2 [gb3,ab3,c4,eb4] ~@3 [ab1,ab2] ab2 [ab3,ab4]@2 [ab1,ab2,ab3,ab4]@2 [ab3,ab4]@2 [ab1,ab2]@2, [ab1,ab2]@6 ~ ab1@2 ~@7, [gb3,c4] ~@2 [gb3,ab3,c4,eb4]@5 ~@8", // Ab5 Ab7 Ab Gbdim Ab7
  AF: "f2@6 ~@4 [c4,eb4,f4,ab4]@3 [ab3,c4,eb4,f4]@3, [f3,ab3,c4,eb4]@5 ~@3, ~@7 f2@8 ~", // Fm7
  AG: "[ab1,ab2]@2 [ab1,ab2]@2 [ab1,ab2,ab4]@2 [ab1,ab3,ab4]@2 [ab4,ab5]@2 [ab2,ab4,ab5] ~ [ab1,ab2]@2 [ab2,ab5,ab6]@2, [gb3,ab3,c4,eb4]@4 ab3 ~ ab2 ~ [ab1,ab2] ~ ab1@2 [ab5,ab6] ~ ab1 ~", // Ab Ab7 Ab
  AH: "[f2,f3,ab3,c4,eb4]@2 ab3 [f3,ab3,c4,eb4]@2 ~ [f3,ab3,c4,eb4]@4 [ab3,c4,eb4]@2 [ab3,c4,eb4]@2 [f3,ab3,c4,eb4]@2, ~@3 f2@12 ~, ~@10 f3 ~ f3 ~@3", // Fm7 Ab Fm7
  AI: "[f3,ab3,bb3,db4]@3 [f3,ab3,bb3,db4]@2 ~@7 db4@2 f4@2, bb2@6 [ab3,bb3]@9 ~, ~@6 db4@5 ~@5, ~@6 f3@3 ~ f3@5 ~, ~@7 bb2@8 ~", // Bbm7 Absus2
  AJ: "[ab2,gb3,bb3,db4,gb4]@2 ab2 ~ ab2@3 ab2 ab1 [ab2,ab3,ab4]!2 ~ [ab2,ab3,ab4] ~ [gb2,gb3,gb4]@2, ~@3 [gb3,bb3,db4,f4]@4 [ab3,ab4]@2 ~@7", // Gb Ab Gb Gbmaj7 Ab
  AK: "[eb2,eb3,gb3,bb3,db4]@3 [eb3,gb3,bb3,db4]@2 ~ [eb3,gb3,bb3,db4]@4 [eb2,eb3,gb3,bb3,db4]@2 [eb3,gb3,bb3,db4] ~ [eb3,gb3,bb3,db4]@2, ~@3 eb2@6 ~@3 eb2@4", // Ebm7
  AL: "[ab2,gb3,bb3,db4,eb4]@2 ab2 ~@3 c4@2 [ab2,ab3] ~ [ab2,ab3,eb4] ~ [ab2,ab3] ~ [ab2,ab3,db4]@2, ~@3 [gb3,bb3,db4,eb4]@4 ~ eb4@2 ~@2 eb4@2 ~@2, ~ ab2 ~@2", // Ebm7 Ab Ab5 Ab Db5 Ebm7
  AM: "[ab2,gb3,bb3,db4,gb4]@2 ab2 ~ ab2@2 ~ ab2@2 ~ [ab2,c4]@2 [ab2,c4]@2 [ab2,gb3,db4]@2, ~@3 [gb3,bb3,db4,f4]@3 [gb3,c4,eb4]@4 [gb3,eb4] ~ [gb3,eb4] ~@3", // Gb Ab Dbsus4 Gbmaj7 Cdim Ebm
  AN: "ab2@2 ab2 ~ [ab2,ab3,ab4]@4 [ab4,ab5]@2 ab2 ~ [ab4,ab5]@2 ab2@2, [ab3,ab4]@4 ~@4 ab2 ~@3 ab2 ~@3", // Ab
  AO: "ab2@2 ab2 ~ [ab2,ab3,ab4]@3 ab2 ab1 ab2!2 ~ [ab3,ab4]@2 gb2@2, [gb3,bb3,db4,eb4]@4 ~@4 [ab4,ab5]@4 ab2 ~@3", // Ab Ebm7 Ab
  AP: "[ab2,gb3,bb3,db4,eb4]@2 [ab3,ab4]@2 ~ [ab3,ab4]@2 ~ [ab3,ab4]@2 ab2 ~ ab2 ~ [ab2,ab3,ab4]@2, ~@2 ab2 ~ ab2@4 ab2 ~@2 [ab3,ab4]@2 ~@3", // Ebm7 Ab
  AQ: "[f2,f3,ab3,c4,eb4]@3 [f3,ab3] [c4,eb4]@2 [f3,ab3,c4,eb4]@3 ~ [f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4]@3, ~@3 f2@12 ~", // Fm7 Fm Cm Fm7
  AR: "[ab2,gb3,bb3,db4,eb4]@2 ab2 ~ ab2@4 [ab2,gb3,db4] ~ [ab2,gb3,c4,eb4] ~ [gb3,bb3,c4,eb4] ~ [gb2,bb3,db4]@2, ~@3 [gb3,bb3,db4,eb4]@4 ~ [bb3,eb4]@2 bb3@2 ab2@2 gb3 ~", // Ebm7 Dbsus4 Ab7 Cm7b5 Gb Ebm7 Eb5
  AS: "ab2@2 ab2 ~ [ab2,ab3,ab4]@3 ~@9, [gb3,bb3,db4,eb4] ~@3", // Ab Ebm7
})).s("gm_piano").gain(0.32)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A@16 B C B C B C D E B C B C B C F G H I J K H I L@2 A@16 B C B C B C D E B C B C B C M N H I J O H I J O H I J P H I
  J O H I J P H I J P Q R J S T U J P V W J P H I J X Y W J P ~
>`.pickRestart({
  A: "bb1@2 ~@2 bb1@2 ~@3 db2 db2@2 bb1 ~ f1@2", B: "gb2@2 ~@2 gb2@2 ~@3 db3!2 ~ bb2 ~ gb2@2",
  C: "f2@2 ~@2 f2@2 ~@3 c3!2 ~ ab2 ~ f2@2", D: "a2@2 ~@2 a2@2 ~@3 e3!2 ~ db3 ~ a2@2",
  E: "ab2@2 ~@2 ab2@2 ~@3 eb3!2 ~ c3 ~ ab2@2", F: "a2@3 ~ e2@3 ~ db2@3 ~ a1@3 ~", G: "eb2@3 ~ eb2@3 ~ ab2@3 ~ gb2@3 ~",
  H: "f2@3 ~ ab2@3 ~ c3@3 ~ eb3@3 ~", I: "db3@3 ~ c3@3 ~ bb2@3 ~ f2@3 ~", J: "eb2@3 ~ gb2@3 ~ bb2@3 ~ eb3 f3@3",
  K: "~@2 [ab2,bb2] ~ gb2@3 ~ ab2@2 ab2@2 ab2@2 gb2@2", L: "[eb2@3 ~ gb2@3 ~ bb2@3 ~ gb2@2 f2@17 ~]/2",
  M: "a1@3 ~ db2@3 ~ e2@3 ~ a2@3 ~", N: "ab2@3 ~ eb2@3 ~ ab1@3 ~ gb1@3 ~",
  O: "~@2 [ab2,bb2] ~ gb2@3 ~@2 ab2!2 ~ ab2@2 gb2@2", P: "ab2@2 eb2 ~ bb2@2 ab2@3 ab2!2 ~ ab2@2 gb2@2, ~@4 ab2 ~@11",
  Q: "f2@3 ~ ab2@3 ~ c3@3 ~ eb3@2 eb3@2", R: "db3!2 c3!2 bb2!2 f2 eb2", S: "~@2 bb1@2 gb1@3 ~@2 ab1!2 ~ ab1@2 gb1@2",
  T: "f1@3 ~ ab1@3 ~ c2@3 ~ f2@3 ~", U: "db2@3 ~ c2@3 ~ bb1@3 ~ bb1 db2!2 ~", V: "f2@3 ~ c2@3 ~ ab1@3 ~ eb2@3 ~",
  W: "db2@3 ~ c2@3 ~ bb1@3 ~ f2@3 ~", X: "ab2@3 ~ eb2@3 ~ ab2@3 ~ gb2@3 ~", Y: "f2 c2!2 ~ ab1@3 ~ c2@3 ~ eb2@3 ~",
})).s("gm_electric_bass_finger").gain(0.57)

// other · string ensemble 1 · "+ORCHESTRA"
const string_ensemble_1 = note(`<
  A@2 B@2 C@2 D E F@2 G@2 H I J K L@2 M@2 N O@2 P L@2 M@2 N O@2 P Q R S T U V W@2 A@2 B@2 C@2 D E X Y Z AA AB AC AD AE
  AF AG AH AG AI AG AJ@2 AF AG AH AG AI AG AJ@2 AK AL AM@2 AK AL AN@2 Q R S T U V AO T Q R S T U V AO T Q R S T U V AO T
  Q R S T U V AO T Q R S T ~
>`.pickRestart({
  A: "[[ab3,ab4]@18 [bb3,bb4]@2 [f4,f5]@4 [bb3,bb4]@2 [f4,f5]@5 ~]/2", // Ab Bb F Bb F
  B: "[[gb3,gb4]@9 [bb3,bb4] [f4,f5]@2 [bb3,bb4] [f4,f5]@3]/2", // Gb Bb F Bb F
  C: "[[f3,f4]@9 [bb3,bb4] [f4,f5]@2 [bb3,bb4] [f4,f5]@3]/2", D: "[f3,f4]", E: "[bb3,bb4] [c4,c5] [f3,f4]@2",
  F: "[[ab3,ab4]@3 [f4,f5]@3 [bb3,bb4]@2]/2", G: "[[gb3,gb4]@3 [f4,f5]@3 [bb3,bb4]@2]/2",
  H: "[bb3,bb4]@11 ~ f5@4, ~@11 f4@4 ~", I: "[f4,f5] [bb3,bb4]", J: "[bb3,bb4]@15 ~",
  K: "[f4,bb4] [eb4,c5] [db4,db5] [eb4,eb5]", L: "[[f4,db5,f5]@15 ~ eb5@16, ~@15 [eb4,c5]@16 ~]/2",
  M: "[~@15 c5@17, [f4,db5,f5] ~, ~@7 [eb4,eb5]@9]/2", N: "[f4,db5,f5]",
  O: "[[eb4,c5,eb5]@15 ~ [db4,e4]@16, ~@15 e3@17]/2", P: "[eb3,c4,eb4]", Q: "[ab4,c5,ab5]@3 [eb5,ab5,eb6]",
  R: "[db5,f5,db6]", S: "[gb4,gb5]@7 [db4,db5]@9", T: "[gb4,gb5] [f4,f5] [eb4,eb5] [db4,db5]",
  U: "[ab4,c5,ab5]@13 ~ [ab4,ab5] [bb4,bb5]", V: "[ab4,db5,ab5]@6 [db4,db5] [eb4,eb5]",
  W: "[[gb4,gb5]@4 [db4,db5]@3 [a3,c4,eb4,eb5]@9]/2", X: "f5@3 [bb3,bb4], f4 ~",
  Y: "[eb4,eb5]@2 [db4,db5]@2 [c4,c5]@3 [db4,db5]", Z: "[bb3,bb4]@11 ~ bb3@4, ~@11 bb4@4 ~",
  AA: "[f4,f5]@3 ~ eb5@2 [db4,db5]@2 [c4,c5]@6 [db4,ab4]@2, ~@3 eb4@2 ~@11", AB: "[bb3,bb4]@3 f4",
  AC: "ab4 bb4 db5 bb4", AD: "ab4 f4 eb4 db4", AE: "bb3 db4 eb4 f4", AF: "~@2 ab5 [db4,f4,db5,f5], ab4@3 ~",
  AG: "[c4,eb4,c5,eb5]", AH: "~ [db4,f4,db5,f5]", AI: "~ bb3 [db4,f5] [db4,f4,f5,ab5]",
  AJ: "[[db4,e4,db5,e5]@14 [eb4,gb4,eb5,gb5] [c4,eb4,c5,eb5]@17]/2", AK: "eb4", AL: "f4", AM: "[db4@14 eb4 db4]/2",
  AN: "[db4@12 c4@2 eb4 db4]/2", AO: "[gb4,gb5] [db4,db5]",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · trumpet
const trumpet = note("<A B C D E ~@3 A F C F E ~@27 A B C D E ~@3 A F C F E ~@64>".pickRestart({
  A: "~@12 bb4@3 eb5", B: "f5@2 ~ eb5@3 db5@2 c5@4 db5@4, e5 ~@15", C: "bb4@10 ~@2 bb4@3 eb5",
  D: "f5@2 ~ eb5@3 db5@2 c5@6 db5@2, e5 ~@15", E: "bb4@5 ~@3", F: "f5@2 ~ eb5@3 db5@2 c5@6 ab4@2, e5 ~@15",
})).s("gm_trumpet").gain(0.39).pan(0.4)

// chords · trumpet · soft notes
const trumpet_soft = note("<A B C B D ~@3 A B E B F ~@27 A B C B D ~@3 A B E B F ~@64>".pickRestart({
  A: "~@15 d5", B: "~@3 e5 ~@2 d5 ~@9", C: "b4 ~@14 d5", D: "b4 ~@15", E: "a4 ~@14 d5", F: "a4 ~@15",
})).s("gm_trumpet").gain(0.22).pan(0.4)

// other · trumpet · "MT TRUMPET"
const trumpet_2 = note(`<
  A@16 B@6 C D B@6 C E B@3 F B@3 ~ A@16 B@6 C D B@6 C E B@3 F B@3 F B@3 F B@3 F B@3 F B@3 F B@3 F B@3 F B@3 F B@3 F B@3
  F ~
>`.pickRestart({
  A: "~@2 ab3 ~ ab3 bb3 ~@10", B: "~@2 bb3 ~ ab3 bb3 ~@10", C: "~@2 a3 ~ ab3 a3 ~@10", D: "~@2 b3 ~ b3 c4 ~@10",
  E: "~@2 c4 ~ b3 c4 ~@10", F: "~@2 ab3 ~ gb3 ab3 ~@10",
})).s("gm_trumpet").gain(0.2).pan(0.8)

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

// drums · snare
const snare = s("sd").struct("<A@23 B A@15 C A@15 B A@7 D A@7 E A@7 D A@15 F A@7 E A@7 G A@4 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x!7", C: "~@3 x", D: "~@4 x ~@2 x!9", E: "~@2 x ~ x!4", F: "x ~@3 x ~ x!3 ~@3 x!4",
  G: "~@4 x ~@7 x!4",
})).gain(0.56)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@7 A ~@7 A ~@6 A ~@8 B ~@15 A ~@6 A ~ A@2 ~@13 C ~@3 A ~@7 A ~@3 B ~@3 A ~@7 A ~@3 C ~@3 A ~@7 A ~
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~ x", C: "~@3 x ~@4",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@16 A ~@7 A ~@7 A ~@5 B ~ A ~@15 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.48)

stack(piano, bass, string_ensemble_1, trumpet, trumpet_soft, trumpet_2, kick, snare, hihat, open_hat, crash)

More by Love Unlimited Orchestra