Strudelify

Julia Says

Wet Wet Wet

KeyB♭ majorTempo75 bpm
0:00/0:00
// Julia Says — Wet Wet Wet
// 75 bpm, 4/4, key A# major. 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: Full arrangement: all 76 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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 · "FRETLESS"
const bass = note(`<
  ~ A ~ B C D E F G H I J K L M N O P@2 Q R S T Q R U V J K L M N O P@2 Q R S T Q R S T Q R W X Y Z Y Z Y AA Y AB AC AD
  AE Q R S Y Q R S Y AA Y AA Y AA Y AA AF@3
>`.pickRestart({
  A: "bb3 a3", B: "bb1@16 ~@2 bb1@3 ~@3 bb1@23 ~", C: "a1@16 ~@2 a1@3 ~@3 d2@24",
  D: "c2@16 ~@2 c2@3 ~@3 bb1@17 ~ bb1 ~@2 g1 ~@2", E: "a1@17 ~ a1@5 ~ d1@18 gb1@6", F: "g1@17 ~ g1@3 ~@3 gb1@23 ~",
  G: "f1@18 f1@3 ~@3 e1@20 ~@4", H: "eb1@16 ~@2 eb1@3 ~@3 eb1@17 ~ eb1@3 ~@3",
  I: "eb1@17 ~ eb1@3 ~@3 eb1@17 ~ eb1@3 ~@3", J: "bb1@14 ~@4 bb1@2 ~@4 bb1@16 ~@2 bb1@2 ~ g1@2 ~",
  K: "a1@14 ~@4 a1@3 ~@3 d2@15 ~@3 d2@3 ~@3", L: "c2@15 ~@3 c2@2 ~@4 bb1@14 ~@4 bb1@2 ~@4",
  M: "a1@14 ~@4 a1@3 ~@3 d2@12 d2 ~@2 d1 ~@2 d1@6", N: "g1@16 ~@2 g1@3 ~@3 gb1@16 ~@2 gb1@3 ~@3",
  O: "f1@16 ~@2 f1@3 ~@3 e1@16 ~@2 e1@3 ~@3", P: "eb1@16 ~@2 eb1@3 ~@3 eb1@16 ~@2 eb1@3 ~@3",
  Q: "bb1@15 ~@3 bb1@2 ~@4 bb1@15 f1@3 bb1@3 a1@3", R: "ab1@15 ~@3 ab1@2 ~@4 ab1@23 ~", S: "g1@15 ~@3 g1@2 ~@4 g1@23 ~",
  T: "gb1@15 ~@3 gb1@2 ~@4 gb1@11 ~ ab1@12", U: "g1@15 ~@3 g1@2 ~ d2@3 g2@23 ~", V: "gb2 f2",
  W: "g1@15 ~@3 g1@2 ~@4 g1@11 ~ g1@3 bb1@3 g1@3 f1@3", X: "eb1", Y: "gb1 ab1",
  Z: "bb1@20 ~ bb1@2 ~ bb1@11 ~ bb1@6 ab1@6", AA: "bb1@20 ~ bb1@2 ~ bb1@11 ~ bb1@3 a1@3 ab1@3 g1@3",
  AB: "bb1@17 ~ bb1@5 ~ bb1@23 ~", AC: "ab1@17 ~ ab1@5 ~ ab1@23 ~", AD: "g1@17 ~ g1@5 ~ g1@11 ~ bb1@3 a1@3 ab1@3 g1@3",
  AE: "gb1@35 ~ ab1@12", AF: "[gb1@27 ab1@30 bb1@62 ~@25]/3",
})).s("gm_fretless_bass").gain(0.4)

// bass · fretless bass · "FRETLESS" · soft notes · Dmaj7 Bbmaj7 Gmaj7 Emaj7 Cmaj7
const bass_soft = note("<[~@47 a3] ~ [eb3@36 ~ [db3,d3] c3 b2 [a2,bb2] ab2 [gb2,g2] f2 [eb2,e2] d2 db2 [b1,c2]] ~@73>")
  .s("gm_fretless_bass").gain(0.13)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A B ~@5 C D E F G H I J K L M@8 N ~ O P Q J K L R@8 S@4 T U V U V U W X Y Z AA AB AC@8 W U W U W U W AD@3
>`.pickRestart({
  A: "bb4 a4", B: "g4@3 ~", C: "~ [e3,bb3,d4]",
  D: "[eb4,g4]@3 ~@3 eb3@2 ~@4 [eb4,g4]@3 ~@3 eb3@2 ~@4 [f4,a4]@2 ~@4 eb3@2 ~@4 [f4,a4]@3 ~@3 eb3@2 ~@4", // Eb F
  E: "[g4,bb4]@2 ~@4 eb3@2 ~@4 [g4,bb4]@3 ~@3 eb3@2 ~@4 [f4,a4]@3 ~@3 eb3@3 ~@3 a4@4 ~@2 eb3@3 ~@3, ~@3 f4", // Gm F
  F: "f4@3 d4", G: "d4@3 eb4 d4@4", H: "eb4@3 g4@2 f4@3", I: "eb4@3 d4",
  J: "g3@12 ~@3 [bb4,d5]@2 ~@4 [bb4,d5]@2 ~, ~ gb3", // Bb
  K: "~@3 [bb4,d5]@2 ~@4 [bb4,d5]@2 ~@4 [bb4,d5]@2 ~@4 [bb4,d5]@2 ~, f3@24 e3@23 ~", // Bb
  L: "[bb3,eb4,g4]@3 ~@3 eb3@2 ~@4 [bb3,eb4,g4]@3 ~@3 eb3@2 ~@4 [c4,f4,a4]@3 ~@3 eb3@2 ~@4 [c4,f4,a4]@3 ~@3 eb3@2 ~@4", // Eb F
  M: "[[bb3,g4,bb4]@3 ~@3 eb3@2 ~@4 [bb3,g4,bb4]@3 ~@3 eb3@2 ~@4 [c4,f4,a4]@3 ~@3 eb3@3 ~@3 [c4,f4,a4]@4 ~@2 eb3@3 ~@8 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@8 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@8 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@8 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@8 [gb3,bb3,eb4]@4 ~@8 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@8 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@8 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@3, ~@47 [f3,bb3,d4]@4 ~@44 [f3,ab3,d4]@4 ~@44 [g3,bb3,d4]@4 ~@44 [gb3,bb3,eb4]@4 ~@32 [gb3,bb3,eb4]@4 ~@8 [f3,bb3,d4]@4 ~@44 [f3,ab3,d4]@4 ~@44 [g3,bb3,d4]@4 ~@45, ~@4 bb2@4 ab2@4 g2@4 gb2@3 ab2 bb2@4 ab2@4 g2@4]/8", // Eb F Bb Ddim Gm Ebm Bb Ddim …
  N: "gb2@24 f2@23 ~, eb4@19 ~@29", O: "~@4 [gb5,a5] [d5,gb5] [a4,d5] [gb4,a4]",
  P: "[c3,g4,c5]@11 ~@7 [eb5,g5]@6 [eb5,g5]@5 ~ [d5,f5]@6 [d5,f5]@5 ~ [c5,eb5]@6", Q: "[a4,eb5]@13 ~@35",
  R: "[[bb3,g4,bb4]@3 ~@3 eb3@2 ~@4 [bb3,g4,bb4]@3 ~@3 eb3@2 ~@4 [c4,f4,a4]@3 ~@3 eb3@3 ~@3 [c4,f4,a4]@4 ~@2 eb3@3 ~@8 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@8 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@8 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@8 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@8 [gb3,bb3,eb4]@4 ~@8 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@8 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@8 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [gb3,bb3,eb4], ~@47 [f3,bb3,d4]@4 ~@44 [f3,ab3,d4]@4 ~@44 [g3,bb3,d4]@4 ~@44 [gb3,bb3,eb4]@4 ~@32 [gb3,bb3,eb4]@4 ~@8 [f3,bb3,d4]@4 ~@44 [f3,ab3,d4]@4 ~@44 [g3,bb3,d4]@4 ~@45, ~@4 bb2@4 ab2@4 g2@4 gb2@3 ab2 bb2@4 ab2@4 g2@4]/8", // Eb F Bb Ddim Gm Ebm Bb Ddim …
  S: "[~@5 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@2 [gb3,bb3,eb4]@4 ~@8 [gb3,bb3,eb4]@4 ~@8 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 ~@8 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@4 ~@8 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@4 ~@3 g3@3 bb3@3 g3@3 f3@3, gb2@35 [gb3,bb3,eb4]@4 ~@8 [f3,bb3,d4]@4 ~@44 [f3,ab3,d4]@4 ~@44 [g3,bb3,d4]@4 ~@45, ~@3 ab2 bb2@4 ab2@4 g2@3 ~]/4", // Ebm Bb Ddim Gm Ebm Bb Ddim Gm
  T: "[eb3,g4]", U: "bb4", V: "bb3@16 ~@4 d4@2 ~@2 d4@6 f4@3 ~@3 f4@3 g4@3 bb4@3 c5@3", W: "bb3@8 d4@4 d4 db4 c4 b3",
  X: "[bb3,db5] eb5", Y: "~@24 f3@3 g3@3 bb3@3 ~@3 g3@3 f3@3 db3@4 ~@2, f5@23 ~",
  Z: "d3@5 ~ eb3@5 ~ f3@5 ~ g3@5 ~ f3@2 ~ g3@2 ~ bb3@3 g3@2 ~ bb3@4 ~@2 c4@5 ~, ab3",
  AA: "[g3,bb3]@12 bb3 a3 ab3 g3, ~@7 bb4", AB: "db5@18 ~@6 f4@3 g4@3 bb4@2 ~@4 g4@3 f4@3 db4@3 ~@3, gb3@3 ab3",
  AC: "[~@5 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@8 [ab3,d4]@4 ~@2 [ab3,d4]@4 ~@2 [ab3,d4]@4 ~@2 [ab3,d4]@4 ~@2 [ab3,d4]@4 ~@2 [ab3,d4]@4 ~@2 [ab3,d4]@4 ~@8 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@2 [bb3,d4]@4 ~@3 bb4@48, bb2@47 [ab3,d4]@4 ~@44 [bb3,d4]@4 ~@44 [bb3,eb4]@4 ~@45, ~ ab2 g2 ~]/4", // Bb Abdim Bb Abdim Bb Eb5
  AD: "[db5@6 ~ gb4@6 bb4@7 db5@7 eb5@7 ab4@7 ~ c5@15 [bb3,bb4]@63 ~@24, gb3@9 ab3@10 ~@29]/3", // Bb
})).s("gm_string_ensemble_1").gain(0.28).pan(0.4)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@12 A B C ~@4 D@2 E@2 D@2 F G ~@2 B C ~@4 D@2 E@2 D@2 E@2 H@3 ~@10 I J K@2 L@2 M@2 L@2 N@7 O@3
>`.pickRestart({
  A: "[a3,c4] [gb3,d4]", B: "c4 bb3, g3", C: "[g3,a3]@3 [gb3,d4]", D: "[~@4 eb5 d5 bb4 f4@9]/2",
  E: "[~@4 eb5 d5 bb4@10]/2", F: "~@4 eb5 d5 bb4@2", G: "c5@3 ~", H: "[~@4 eb5 d5 bb4 f4@3 d4 eb4 f4 bb4@4 ~@7]/3",
  I: "~@12 d4 db4 c4 b3", J: "~@24 f4@3 g4@3 bb4@2 ~@4 g4@3 f4@3 db4@3 ~@3, bb3@3 c4",
  K: "[d4@4 eb5 d5 bb4 f4@9, bb4@3 ~@5]/2", L: "[~@4 eb5 d5 bb4@6 c5@4]/2", M: "[~@4 eb5 d5 bb4 f4@9, d5@5 ~@11]/2",
  N: "[d5@3 bb4 d5 f5 ~@2 bb4@4 c5@4 d5@3 bb4 d5 f5 ~@2 bb4@4 c5@4 d5@3 bb4 d5 f5 ~@2 bb4@4 c5@4 d5@3 bb4 d5 f5 bb5@2, ~@12 bb5@25 ~@7 bb5@25 ~@7 bb5@25 ~@11]/7",
  O: "[db5@6 ~ gb4@6 bb4@7 db5@7 eb5@7 ab4@7 ~ c5@15 [f3,f4]@63 ~@24]/3", // F
})).s("gm_string_ensemble_2").gain(0.33).pan(0.7)

// other · oboe
const oboe = note(`<
  ~ A B ~@3 C D ~@6 E F G H@2 I ~ I ~ I ~ J K L ~@2 E F G H@2 I ~ I ~ I ~ I ~ I ~ M@2 ~@11 I ~ I ~ I ~ I ~@11
>`.pickRestart({
  A: "~ bb4 c5 d5 c5 bb4 c5 d5", B: "f5@19 ~@5", C: "~ d5 a4 bb4", D: "d5 ~",
  E: "~@4 c5 d5 c5 d5 c5@2 bb4@2 a4@2 bb4@2", F: "~@6 bb4@4 ~@8 bb4@5 ~@7 bb4@5 ~@7 bb4@5 ~",
  G: "~@6 bb4@5 ~@7 bb4@4 ~@8 bb4@5 ~@7 bb4@5 ~", H: "eb5", I: "eb6 d6 bb5 f5 eb5 d5 bb4 f4",
  J: "eb6 d6 bb5 f5 eb5 d5 bb4@2", K: "c5@3 d5 c5 bb4 c5 d5", L: "bb4@37 ~@11", M: "g5/2",
})).s("gm_oboe").gain(0.28).pan(0.2)

// other · clarinet
const clarinet = note("<~ A B ~@3 C D ~@6 E F G ~@9 H I ~@2 E F G ~@43>".pickRestart({
  A: "~ g4 a4 bb4 a4 g4 a4 bb4", B: "d5@19 ~@5", C: "~ bb4 gb4 g4", D: "g4@7 ~@9",
  E: "~@4 a4 bb4 a4 bb4 a4@2 g4@2 gb4@2 g4@2", F: "~@6 d5@4 ~@8 d5@5 ~@7 d5@5 ~@7 d5@5 ~",
  G: "~@6 d5@5 ~@7 d5@4 ~@8 d5@5 ~@7 d5@5 ~", H: "eb4@3 f4 eb4 d4 eb4 f4", I: "g4@2 ~",
})).s("gm_clarinet").gain(0.28).pan(0.8)

// other · brass section · "BRASS 1"
const brass_section = note("<~@48 A ~ A B C ~@20 D@3>".pickRestart({
  A: "~@21 f4 ~@2 bb4 ~@2 c5 ~@2 d5@3 ~@3 d5 ~@2 eb5 ~@2 f5@5 ~", B: "gb6 ab6", C: "bb6",
  D: "[bb5@9 ab5@10 [bb5,d6]@21 ~@8]/3", // Bb
})).s("gm_brass_section").gain(0.42).pan(0.4)

// chords · piano · "A.PIANO 1"
const piano = note("<~@28 A B C D E ~@15 F ~ G ~@17 H ~ I ~ J ~@3>".pickRestart({
  A: "[c5,d5]@9 ~@3 [c5,d5]@8 ~@22 a4@4 ~@2, ~@21 a4@8 gb5@11 ~@8, ~@22 d5@8 ~@5 d5@11 ~@2, ~@23 a5@18 ~@7", // Csus2
  B: "[g4,c5]@10 ~@2 [g4,c5]@8 ~@4 [g4,bb4]@9 ~@3 [g4,bb4]@8 ~@4", // C5 Gm
  C: "[g4,a4]@10 ~@2 [g4,a4]@9 ~@3 d5@4 gb5@5 d5@4 a4@5 gb4@6", // Gsus2
  D: "[d4,g4]@11 ~ [d4,g4]@12 [d4,gb4]@9 ~@3 [d4,gb4]@10 ~@2, g2@17 ~@7 gb2@18 ~@6", // G5 D
  E: "[d4,f4]@5 ~ [d4,f4]@3 f2@3 [e4,g4,e5]@5 ~ [e4,g4,e5]@5 ~, f2 ~ e2 ~", // Dm Em
  F: "[bb4,d5]@4 [f4,c5]@4 [d4,bb4]@4 [bb3,f4]@10 ~@2 [f4,bb4]@11 ~ [bb4,d5]@9 ~@3", // Bb F5 Gm Bb5 Bb
  G: "~@21 [bb4,d5] ~@2 [bb4,d5]@8 ~ [d5,f5] ~@2 [d5,f5]@10 ~@2", // Bb Dm
  H: "~@22 [bb4,d5] ~ [bb4,d5]@7 ~@3 [f5,bb5] ~ f5@10 ~@2, ~@35 bb5@10 ~@3", // Bb Bb5
  I: "~@22 [bb4,d5] ~ [bb4,d5]@7 ~@3 [d5,f5] ~ [d5,f5]@10 ~@2", // Bb Dm
  J: "~@22 [bb4,d5] ~ [bb4,d5]@6 ~@4 bb5 f5 [f5,bb5]@11 ~", // Bb Bb5
})).s("gm_piano").gain(0.42).pan(0.4)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@46 A B C B C B D E F ~@5 G H I@3 J K L@2 M@4 N@3>".pickRestart({
  A: "~@3 bb4 ~@2 bb4 ~@2 bb4@3 bb4@3 bb4@3 bb4@2 bb4@3 ~ bb4@17 ~@7", B: "[gb2,db3,gb3] [ab2,eb3,ab3]",
  C: "[bb2,f3,bb3]@33 [bb2,f3,bb3] ~@2 [bb2,f3,bb3]@6 [ab2,eb3,ab3]@6", // Bb5 Ab5
  D: "[bb2,f3,bb3]@33 [bb2,f3,bb3] ~@2 d3@3 db3@3 c3@3 b2@3, ~@6 [bb2,f3,bb3] [ab2,eb3,ab3]", // Bb5 Ab5
  E: "[gb2,bb2,db3,gb3] [ab2,eb3,ab3]", F: "[bb2,f3,bb3]", G: "~@21 db5 bb4 ab4",
  H: "bb4 ab4 f4 ab4 f4 eb4 f4 eb4 db4 eb4 db4 bb3 db4 bb3 ab3 bb3 ab3 f3 ab3 f3 eb3 f3 eb3 db3, [gb2,db3,gb3] ab2, ~@3 eb3@2 ~, ~@6 ab3 ~@5", // Gb5
  I: "[bb2@12 ~@18 c4@3 ~@3 d4@3 bb3@22 ~@5 c4@5 d4@3 bb3@6 ~ f4@9 f4@3 f4@6 f4@3 f4@5 ~ f4@9 f4@9 f4@3 d4@5 ~ f4@6 d4@3, f3 ~@2]/3",
  J: "a4 bb4@8 ~ a4 bb4@7 a4 ~@8 eb4@3 f4@2 eb4@2 db4@2 eb4@3 bb3@3 db4@3 eb4@3, [gb2,db3,gb3] [ab2,eb3,ab3], ~@19 bb4@8 ~@21", // Gb5 Ab5
  K: "[bb2,f3,bb3]@33 [bb2,f3,bb3,f4] ~@2 [d3,bb4]@3 [db3,a4]@3 [c3,ab4]@3 [b2,g4]@3, bb4@13 ~@5 [bb2,f3,bb3]@3 [ab2,eb3,ab3]@3", // Bb5 Gm Gbm Fm Em Bb5 Ab5
  L: "[gb4@6 db4@6 bb3@5 bb3@3 ~ db4@3 eb4@3 f4@3 ab4@2 ~ bb4@4 db5@5 ~@12 c5 db5@5 bb4@11 c5 db5 f5@4 ~@4 [bb2,f3,bb3] ~@2 d3@3 [db3,db5]@3 ~@3 b2@3, [gb2,db3,gb3]@8 [ab2,eb3,ab3]@8 [bb2,f3,bb3]@11 ~ [bb2,f3,bb3]@2 [ab2,eb3,ab3]@2, ~@42 bb4@12 ~@23 bb4@10 ~@3 c3@3 ~@3, ~@91 eb5@5]/2", // Bb5 Db Gb5 Ab5 Bb5 Ab5
  M: "[f5@5 eb5@3 f5@4 ab5@4 ~ f5@3 ~@7 bb5@5 bb5@4 bb5@4 a5 bb5@4 a5 ~@6 a5 bb5@8 ab5 bb5 ~ ab5@2 f5 ~ eb5 f5 ~ db5@2 eb5@2 db5 ~ eb5 db5@2 bb4 [bb2,f3,bb3] db5 eb5 ~ db5 bb4 ~ ab4 bb4 c3@3 ~@7 eb4@2 db4@2 eb4@6 ~ eb4@3 db4@2 eb4@3 ~@3 ab4@3 ~ bb4@6 bb4@3 db5@3 bb4@5 ~@7 bb4@9 a4 bb4@5 a4 bb4@8 a4 ~@2 [bb2,f3,bb3] ~@2 d3@3 db3@3 c3@3 b2@3, [gb2,db3,gb3]@24 [ab2,eb3,ab3]@24 [bb2,f3,bb3]@33 ~@3 [bb2,f3,bb3]@6 [ab2,eb3,ab3,ab4]@4 f4@5 ~@20 f4@3 ~@4 a4 ~@16 db5@6 ~@26 bb4@8 bb4@8 ~, ~@20 ab5@7 ~@19 bb5@6 ~@32 d3@3 db3@3 ~@3 b2@3 [gb2,db3,gb3]@24 [ab2,eb3,ab3]@24 [bb2,f3,bb3]@33 ~@3 [bb2,f3,bb3]@6 [ab2,eb3,ab3]@6]/4", // Bb5 Gb5 Ab5 Bb5 Ab5 Gb5 Ab5 Bb5 …
  N: "[[gb2,db3,gb3]@9 [ab2,eb3,ab3]@10 [bb2,f3,bb3]@21 ~@8]/3", // Gb5 Ab5 Bb5
})).s("gm_overdriven_guitar").gain(0.33).pan(0.7)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note("<~@46 A B C D E F G B C ~@6 D ~@3 D E ~@9>".pickRestart({
  A: "[eb4,g4,bb4]", B: "[db4,gb4] [eb4,ab4]", C: "[f4,bb4]", D: "[gb4,bb4] [ab4,c5]", E: "[bb4,d5]",
  F: "[db5,gb5] [eb5,ab5]", G: "[f5,bb5]",
})).s("gm_pad_poly").gain(0.37).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@19 A B@3 A C@3 ~@8 A B@3 A B@3 A D@2 E ~@7 F G H I A J@4 K@4 L@6 ~@3
>`.pickRestart({
  A: "~@7 bb3, bb2@9 bb3@8 ~@7, ~@6 f3@14 ~@4 bb2@21 ~@3, ~@12 d4@23 ~ d4@12, ~@5 f3@3",
  B: "[~@23 bb3, ab2@18 bb3@12 f3@19 ~@5 g3@17 ~@7 g3@17 ~@7 gb3@18 ~@6 gb3@15 ~@3, ~@6 f3@17 ~ ab2@23 ~ g2@21 ~@3 g2@22 ~@2 gb2@20 ~@4 gb2@20 ~@4, ~@12 d4@21 ~@3 d4@19 ~@5 d4@19 ~@5 d4@15 ~@9 eb4@20 ~@4 eb4@12, ~@42 bb3@13 ~@11 bb3@14 ~@10 bb3@18 ~@6 bb3@14 ~@16]/3",
  C: "[~@90 bb3@5 ~@2 eb4@22 ~@2 eb4@23, ab2@18 bb3@12 f3@19 ~@5 g3@17 ~@7 g3@17 db3@23 ~ c3@23 ~@2, ~@6 f3@17 ~ ab2@23 ~ g2@21 ~@3 g2@19 ~@53, ~@12 d4@21 ~@3 d4@19 ~@5 d4@19 ~@5 d4@12 ~@48, ~@42 bb3@13 ~@11 bb3@14 ~@16 [gb3,bb3]@23 ~ [f3,a3]@23 ~]/3", // Gb F
  D: "[~@15 bb3, ab2@18 bb3@12 f3@19 ~@5 g3@17 ~@7 g3@17 ~, ~@6 f3@17 ~ ab2@23 ~ g2@21 ~@3 g2@22 ~@2, ~@12 d4@21 ~@3 d4@19 ~@5 d4@19 ~@5 d4@12, ~@42 bb3@13 ~@11 bb3@14 ~@16]/2",
  E: "~@7 eb4, bb2@6 eb4@4 bb3@5 ~, ~@3 bb3@9 bb2@10 ~@2, ~@3 g4@5 ~ g4@3", F: "~@8 f4 g4 bb4@2 g4 f4 db4@2",
  G: "bb3@2 c4@2 bb3@4 c4@2 bb3@4 c4 bb3", H: "db4!4 c4@2 bb3 g3 bb3@5 ~ eb4 db4", I: "e4!4 eb4@2 db4@4 ~@6",
  J: "[~@31 bb3, ab2@18 bb3@12 f3@19 ~@5 g3@17 ~@7 g3@17 ~@7 gb3@17 ~@7 ab3@17 ~@7 f3@14 ~@10 f3@18, ~@6 f3@17 ~ ab2@23 ~ g2@21 ~@3 g2@22 ~@2 gb2@22 ~@2 ab2@22 ~@2 bb2@20 ~@4 bb2@21 ~@3, ~@12 d4@21 ~@3 d4@19 ~@5 d4@19 ~@5 d4@15 ~@9 db4@15 ~@9 eb4@15 ~@9 d4@23 ~ d4@12, ~@42 bb3@13 ~@11 bb3@14 ~@10 bb3@18 ~@6 bb3@18 ~@6 c4@15 ~@9 bb3@16 ~@14]/4",
  K: "[~@60 bb2 a2 ab2 g2, ab2@18 bb3@12 f3@19 ~@5 g3@17 ~@7 g3@17 ~@7 gb3@17 ~@7 ab3@17 ~@7 f3@16 ~@8 f3@13 ~@5, ~@6 f3@17 ~ ab2@23 ~ g2@21 ~@3 g2@22 ~@2 gb2@22 ~@2 ab2@22 ~@2 bb2@19 ~@5 bb2@10 ~@14, ~@12 d4@21 ~@3 d4@19 ~@5 d4@19 ~@5 d4@15 ~@9 db4@15 ~@9 eb4@15 ~@9 d4@15 ~@21, ~@42 bb3@13 ~@11 bb3@14 ~@10 bb3@18 ~@6 bb3@18 ~@6 c4@15 ~@9 bb3@10 ~@20]/4",
  L: "[~@28 bb2 a2 ab2 g2, gb2@22 ~@2 ab2@22 ~@2 bb2@19 ~@5 bb2@10 ~@14, ~@6 gb3@17 ~@7 ab3@17 ~@7 f3@16 ~@8 f3@13 ~@5, ~@4 db4@5 ~@3 eb4@5 ~@3 d4@5 ~@7, ~@18 bb3@18 ~@6 c4@15 ~@9 bb3@10 ~@20]/2",
})).s("gm_electric_guitar_clean").gain(0.21).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G@2 H@2 I D E F G@2 H@2 J K L M J K L N I D E F G@2 H@2 O K L M O K L M O K L P ~@7 Q R S@2 T U V W T U
  V W X W X W X W X ~@3
>`.pickRestart({
  A: "~@4 a3 g3 a3 bb3, g2@23 [f2,f3]@24 ~, ~ d3@3 ~@4, ~ g3 ~@2, ~@6 bb3@3 ~@7", // F
  B: "~ [g3,bb3]@3, eb2@13 ~@11, ~ bb2@12 ~@3, ~@6 eb3@41 ~, ~@9 d3@38 ~", // Gm
  C: "~@6 f4 d4, bb2@3 d4@3 ~@2, ~ bb3@3 bb2@4, ~@12 g4@17 ~ bb3@18",
  D: "~@2 d4 c4 ~@3 c4, a2@21 ~@3 d3@22 ~@2, ~@6 g3@18 ~@6 gb3@17 ~, ~@18 d4@5 ~",
  E: "~@3 c3 ~@3 c4, c3@16 ~@8 bb2@23 ~, ~@6 g3@19 ~@5 g3@18, ~@12 eb4@17 ~@7 eb4@12",
  F: "~@2 d4 ~@3 d4 c4, a2@18 c4@11 ~ gb3@17 ~, ~@6 g3@13 ~@5 d3@23 ~",
  G: "[~@14 d4 bb3, g2@22 ~@2 gb2@21 ~@3 f2@21 ~@3 e2@23 ~, ~@6 g3@18 ~@6 gb3@15 ~@9 f3@17 ~@7 e3@17 ~, ~@4 d4@5 ~@3 d4@5 ~@3 d4@5 ~@7, ~@18 bb3@10 ~@14 bb3@11 ~@13 bb3@10 ~@20]/2",
  H: "[bb3,eb4,g4]!2 [c4,f4,a4]!2", I: "~@6 f4 d4, bb2@3 bb3@3 ~@2, ~ f3@3 bb2@4, ~@12 d4@17 ~ f3@18",
  J: "~@6 [f2,bb2]@6 ~@12 [f2,bb2]@6 [f2,bb2]@6 ~ [d4,f4]@11, d3@12 ~ [d4,f4]@24 ~@11, bb2@6 ~@6 [f2,bb2,d3]@12 d3@12 [f2,bb2,d3,bb3]@11 ~, ~ bb3@11 bb3@24 ~@12", // Bb5 Dm Bb
  K: "~@6 [f2,bb2]@6 ~@12 [f2,bb2]@6 [f2,bb2]@6 ~ [d4,f4]@11, d3@12 ~ [d4,f4]@24 ~@11, bb2@6 ~@6 [f2,bb2,d3]@12 d3@12 [f2,bb2,d3,ab3]@11 ~, ~ ab3@11 ab3@24 ~@12", // Bb5 Dm Bb Bb7
  L: "~@6 [g2,bb2]@6 ~@12 [g2,bb2]@6 [g2,bb2]@6 ~ [d4,g4]@11, d3@12 ~ [d4,g4]@24 ~@11, bb2@6 ~@6 [g2,bb2,d3]@12 d3@12 [g2,bb2,d3,bb3]@11 ~, ~ bb3@11 bb3@24 ~@12", // Gm G5 Gm
  M: "[bb2,eb3]@6 ~ bb3@5 ~@11 bb2@6 ~ eb3@5 ~@2 gb4@10 ~, ~ [bb2,eb3] [bb3,eb4]@4 ~@2, ~@12 eb3@18 ~@6 [eb3,bb3,eb4]@11 ~, ~@12 bb2@11 ~@6 bb2@6 bb2@11 ~@2, ~@13 gb4@24 ~@11", // Eb5
  N: "[gb3,bb3,eb4,gb4]@24 [f3,a3,eb4,f4]@23 ~", // Ebm F7
  O: "~@6 [f2,bb2]@5 ~@13 [f2,bb2]@6 [f2,bb2]@6 ~ [d4,f4]@11, d3@12 ~ [d4,f4]@24 ~@11, bb2@5 ~@7 [f2,bb2,d3]@12 d3@12 [f2,bb2,d3,bb3]@11 ~, ~ bb3@11 bb3@24 ~@12", // Bb5 Dm Bb
  P: "~ [g3,eb4]@42 ~@5, [bb2,eb3]@7 ~", // Cm Eb5
  Q: "~@3 bb3 ~@2 d4 bb3, bb2@19 ~@5 bb2@20 ~@4, ~@6 f3@13 ~@11 f3@14 ~@4, ~@12 d4@13 ~@23",
  R: "~@7 bb3, ab2@18 bb3@11 ~ f3@13 ~@5, ~@6 f3@13 ~@5 ab2@19 ~@5, ~ d4 ~ d4",
  S: "[~@12 d4@6 ~@18 d4@6 bb3@5 ~@2 gb4@34 ~@2 c4@11, g2@18 bb3@12 f3@17 [db3,gb3]@36 [ab2,eb3]@12 ~, ~@6 f3@17 ~ g2@21 ~@3 bb3@35 ~ ab3@11 ~]/2", // Gb5 Ab5
  T: "~ bb3@11 ~@12 d3@12 ~ [d4,f4]@11, d3 bb3@2 ~, ~@12 d3@12 ~@12 [d3,bb3]@11 ~, ~@13 [d4,f4]@24 ~@11", // Dm Gm Dm
  U: "~ ab3@11 ~@12 d3@12 ~ [d4,f4]@11, d3 ab3@2 ~, ~@12 d3@12 ~@12 [d3,ab3]@11 ~, ~@13 [d4,f4]@24 ~@11", // Dm Ddim Dm
  V: "~ bb3@11 ~@12 d3@12 ~ [d4,g4]@11, d3 bb3@2 ~, ~@12 d3@12 ~@12 [d3,bb3]@11 ~, ~@13 [d4,g4]@24 ~@11", // G5 Gm G5
  W: "[db3,bb3]@12 ~@12 eb3@12 ~ [eb4,ab4]@11, ~@12 [db3,bb3]@12 ~@12 [eb3,c4]@11 ~, ~@13 [db4,gb4]@24 ~@11", // Gb Ab5 Gb Cm Gb5
  X: "[bb2,bb3]@12 ~@12 bb2@12 ~ [d4,f4]@11, ~@12 [bb2,bb3]@12 ~@12 [bb2,bb3]@11 ~, ~@13 [d4,f4]@24 ~@11", // Bb Dm Bb Dm
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(0.3)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note("<~@11 A B C@2 ~@12 A B C@2 ~@45>".pickRestart({
  A: "[f3,bb3]@5 ~ [f3,bb3]@5 ~@12 [f3,bb3]@6 ~ bb3@5 ~ [bb3,d4,f4]@11 ~, ~@11 [f3,bb3]@12 ~@6 f3@6 f3@12 ~, ~ [d4,f4]@2 ~", // Bb5 Bb Bb5 Dm
  B: "g3@5 ~ g3@6 g3@12 a3@5 ~ a3@6 [a3,c4,gb4]@11 ~, ~@5 eb3@18 ~ d3@24, ~ c4@2 ~, ~@3 g4@2 ~@7", // Gbdim
  C: "[~@5 g3@6 ~ eb4@17 ~ bb3@5 ~ [bb3,c4,g4]@11 ~ g3@5 ~ c4@6 ~ g4@7 ~@4 [d3,a3]@6 [d3,a3]@6 [d3,a3,c4,gb4]@11 ~, ~@11 g3@18 eb3@6 eb3@12 eb3@24 ~@25, ~@2 g4@4 ~@3 g3@3 ~@4, ~@5 c4 ~@2]/2", // C7 D5 D7
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(0.8)

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

// drums · rim
const rim = s("rim").struct("<~@3 [~@3 x]!6 [~ x ~ x] ~@66>").gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@10 A B@14 C ~ B@7 D B@7 C B@3 E B F B F B F A B@3 A B@7 G B@4 H B I J ~@2
>`.pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~@4 x ~@2 x!2 ~@7", D: "~@3 x!2 ~@11", E: "~@4 x ~@6 x!2 ~@3", F: "~@2 x ~@3 x!2",
  G: "x ~@3 x ~@3 x ~@2 x!2 ~@3", H: "~@4 x ~@4 x ~@2 x ~@3", I: "~@4 x ~ x ~@2 x ~@2 x ~@3", J: "~@6 x!2 ~@26 x ~@13",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
// … 45 more lines

More by Wet Wet Wet