Strudelify
Green Green Grass of Home cover art

Green, Green Grass Of Home

Green Green Grass of Home

Tom Jones

KeyA♭ majorTempo96 bpm
0:00/0:00
// Green Green Grass of Home — Tom Jones
// 96 bpm, 4/4, key G# 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 72 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): MUTED GTR.
setcpm(96/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(`<
  ~@6 A B C D ~ E@4 F@2 G H I J K L F@2 G H I M N O P Q R S T U V W X@2 Y Z AA@2 AB ~ AC AD AE AF AG@2 AH ~@4 AI AJ AK
  AL AM AN AO AP AQ ~ AR@3 AS
>`.pickRestart({
  A: "[c4,eb4,ab4]", // Ab
  B: "[eb4,ab4,c5]@2 ~ [ab4,c5,eb5]@5 ~ [ab4,db5,f5]@3 b4 ~@8 eb4@3, ~@3 gb4 ~@8 ab4@11 ~, ~@13 [c5,eb5]@10 ~", // Ab Db Cm
  C: "e4 ~@23", D: "~@3 gb4@2 ~ [gb4,c5]@2 ab4@2 gb4 ~@2 eb4@11, ~@11 [ab4,c5]@5 ~@8",
  E: "[[db5,f5]@5 ~ [c5,eb5]@8 ~ [bb4,db5]@2 ~@2 [ab4,c5]@3 ~ bb4@6 ~ gb4 ~@2 bb4@3 bb4 b4 c5 bb4@4 ~@2 [c5,eb5]@5 ~ [db5,f5]@2 ~ [eb5,g5]@2 ~ [db5,f5]@2 f4 [db5,f5]@2 ~ [b4,eb5]@2 eb4 [b4,eb5]@2 ~ [a4,db5]@2 b4 eb4@3 ~@2 eb4 ~@5 ab4 [ab4,c5] ab4 [ab4,c5] c5@2 ~@7, ~@23 gb4 ~@6 g4@6 ~@9 b4 ~@10 [d5,gb5]@2 ~@4 [c5,e5]@2 ~@4 [bb4,d5]@2 ~ g4@2 ~@23, ~@72 [ab4,c5]@8 ~@7 ab4 ~@8]/4", // Db Cm Bbm Ab Cm Db Eb Db …
  F: "[~@21 [eb4,gb4] ~ c4@2 f4@14 ~@9, ~@20 [f4,ab4]@2 ~ e4 ~@24]/2", // Ebm Fm
  G: "[db4,f4,bb4]@5 ~ [db4,f4,ab4]@5 ~ [eb4,g4]@5 ~ [db4,f4]@4 ~@2, e4 ~@10 db4@6 ~@7", // Bbm Db Eb Db
  H: "~ c5@4 ~@2 [c5,eb5], ~ [eb4,ab4]@14 eb4@8 ~, ~@18 ab4@5 ~", // Cm Ab5
  I: "[db5,f5]@11 ~ [db5,f5]@4 ~@2 [c5,eb5]@2 [bb4,db5] ~@2 [g4,b4]", J: "~ c5@8 ~@6 e4 f4 ~ [f4,ab4,db5]@6",
  K: "[eb4,e4] f4 eb4@9 ~@13, c5 ~", L: "eb4@3 ~@2 eb4 ~@5 ab4 [ab4,c5] ab4 [ab4,c5] c5@2 ~@7, ~@15 ab4 ~@8",
  M: "~ c5@8 ~@6 eb4@3 ab4@3 c5@2 ~", N: "[eb5,g5]@9 [db5,f5]@3 [c5,eb5]@3 [b4,d5]@3 [bb4,db5]@3 [g4,b4]@2 ~",
  O: "c5@11 ~ c5!2 ~ c5 ~ c5@4 ~@3, ab4@3 ~@5", P: "~@6 gb5 ab5 gb5 eb5 ~@8 gb5 ab5 gb5 eb5@3, ~@6 c6@3 ~@9 c6@5 ~",
  Q: "f5@13 ~@5 [ab5,bb5] ~ ab5 ~@3, ~@9 db6 ~@2", R: "[c5,eb5]@11 ~@13",
  S: "~@9 c5 ~ c5 [c5,eb5] eb5 c5 eb5 c5 ~ c5@4 ~@2, ~@17 eb5@6 ~", // Cm
  T: "[db5,f5]@5 ~ [c5,eb5]@7 ~@2 [db5,bb5]@3 ~@2 [c5,ab5]@3 ~", // Db Cm Gb Fm
  U: "g5@11 ~@4 bb4@3 eb5@2 ~ gb5@2 ~, ~@18 g5 ~@2 d5 ~@2",
  V: "[db5,f5] ~@2 f5 [c5,e5] ~ [b4,eb5]@4 ~@2 c5@4 ~@5 bb4@2 ~, ~@3 db5@2 ~@7 eb5 ~@5 [c5,ab5]@5 ~", // Db C B Fm
  W: "[c5,eb5]@9 ~@12 c6@2 ~, c6@20 ~ eb5 ~@2", // Cm
  X: "[[f5,db6]@4 ~ [eb5,c6]@5 ~@2 [db5,bb5]@4 ~ ab5@4 ~@3 f5@2 ~ [ab4,ab5]@7 ab5 ab4 ~@12, ~@23 eb5@2 ~@2 d5 ~@20]/2", // Db Cm Gb Ab
  Y: "[bb4,bb5]@4 ~@2 [ab4,ab5]@5 ~ [g4,g5]@5 ~ [f4,f5]@4 ~@2", Z: "[ab4,c5]@19 ~@2 c5@2 ~, ~@21 ab4 ~@2",
  AA: "[db5@22 ~ [ab4,c5]@18 ~@7, g4@17 ~@31]/2", AB: "~@6 [ab3,c4]@5 ~ [bb3,db4]@5 ~ [b3,d4]@5 ~",
  AC: "~@15 c6 ~@5 [gb5,c6]@3", AD: "[ab5,db6]", AE: "~@18 ab5 ~@2 [db5,bb5]@2 ~", AF: "c6, eb5@7 ~@17",
  AG: "[db6@5 ~ c6@4 ~@5 [db5,bb5]@3 ~ [c5,ab5]@4 [eb5,g5]@9 ~@13 [f5,db6]@3, ~@5 eb5@6 ~@37]/2", // Gb Fm Eb Db
  AH: "db5 ~@2 eb5@2 [b4,d5] [bb4,db5]@7 ~@11, ~@3 c5 ~@20", AI: "~@18 [ab4,c5]@2 ~ [eb4,ab4]@2 ~",
  AJ: "[db4,g4]@19 ~@5", AK: "~@2 [c4,eb4] ab4 [db4,eb4] ab4 [db4,eb4] ab4",
  AL: "~@3 [bb3,db4] ~@3 eb2, [c4,eb4], ~@2 [eb1,bb3,db4]!2, ~@5 eb2@2 ~", AM: "[c5,eb5,ab5]@3 ~",
  AN: "[ab5,db6]@5 ~ [eb5,c6]@5 ~ [eb5,bb5]@5 ~ [eb5,ab5]@4 ~@2", AO: "[f5,ab5]@23 ~, [db5,eb5] ~@23",
  AP: "[f5,bb5]@5 ~ [f5,ab5]@5 ~ g5@5 ~ f5@6", AQ: "eb5 ~",
  AR: "[~@18 [db3,ab3,f4,ab4]@15 ~ [c3,ab3,eb4,ab4]@7 ~@3 [ab3,db4,ab4]@7 ~ gb4 ab4 gb4 ~ gb4 ~ c5@2 gb4 ab4 gb4@2 db4 ~ ab3@2 ~ c4@3, ~@18 e4 ~@24 bb2@8 ~@2 c5@2 ~@3 ab4 ~@10 b3 ~@2]/3", // Db Ab Db5
  AS: "~@9 ab2@8 ~@7, ~ ab3@23, ~ eb3@4 ~",
})).s("gm_piano").gain(0.3).pan(0.6)

// chords · piano · "HONKY TONK" · soft notes
const piano_soft = note(`<
  ~@7 A B ~@3 C ~ D ~ E ~@3 F ~ D ~ E ~@3 F ~ G ~ H I J ~ K L ~ M N ~@2 O ~ P@3 ~ Q R@2 ~@19 S
>`.pickRestart({
  A: "~@8 d5 ~@15", B: "~ f4@15 ~@8, db4@2 ~", C: "g4@5 ~@19", D: "~@4 eb4 ~ eb4 ~ [eb4,ab4] [ab4,c5] c5!2 ~@12",
  E: "~ db4@13 ~@10", F: "ab4@8 ~ ab4 c5!2 ab4 [ab4,c5] ~@10", G: "~@10 ab4 ~ ab4 ~ ab4 ~ ab4 ~ ab4@3 ~@3",
  H: "db5@13 ~@8 f5 ~@2", I: "~@10 c5@2 c5@2 c5@2 c5@2 c5!2 eb5 c5 eb5 c5",
  J: "[c5,eb5] eb5 c5 eb5 c5 [c5,eb5] eb5 c5 [c5,eb5] eb5 ~@14", K: "bb4@11 ~@8 ab5 ~@4",
  L: "~@10 b4 ~ b4 ~ eb5@2 ~@7 b4", M: "~@17 c5@5 ~@2", N: "~@13 ab4 ab4@5 ~@2 ab4 ~@2, ~@13 ab5@9 ~@2",
  O: "~@18 g4@2 g4 ~@3",
  P: "[~@52 gb5@2 ~ c6 gb5@2 gb5 ~@2 c6 gb5@2 ~ c6@4 ~@3, ~@23 [ab4,c5]@48 ~, ~@24 [eb5,ab5]@47 ~, ~@50 c6@4 gb5@2 c6@4 gb5@2 c6 ~ gb5@5 ~@3]/3", // Ab Ab5
  Q: "~@18 eb5 ~@5", R: "[~@7 eb5@16 f5@5 ~@20]/2", S: "~@18 ab2 ~ ab2 eb3 ab2 ~",
})).s("gm_piano").gain(0.17).pan(0.6)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A@2 B@2 C D E F G H I J K L M N O P Q R S T M N O P Q R U V E F G H I J K L M N O P Q R W X E F G H I J K L M N O P Q
  R W Y M N O P Z@6
>`.pickRestart({
  A: "ab2@8 ~ eb2@3 ab2@2 ~ ab2@6 eb2@3", B: "ab2@9 eb2@3 ab2@2 ~ ab2@6 eb2@3", C: "ab2@9 eb2@3 ab2@2 ~ ab2@6 eb2@2 ~",
  D: "eb2@5 ~ eb2@5 ~ eb2@2 ~ eb2@5 ~ eb2@3", E: "ab2@8 ~ eb2@3 ab2@2 ~ ab2@4 ~@2 ab2@2 ~",
  F: "ab2@9 eb2@2 ~ ab2 ~@2 ab2@2 ~ bb2@2 ~ c3@3", G: "db2@9 ab2@3 db2@2 ~ db2@5 ~ db2@3",
  H: "ab2@8 ~ eb2@3 ab2@2 ~ ab2@6 eb2@2 ~", I: "ab2@9 eb2@3 ab2@2 ~ ab2@5 ~ eb2@3",
  J: "ab2@9 eb2@3 ab2@2 ~ ab2@6 db2@3", K: "eb2@8 ~ bb2@3 eb2@2 ~ eb2@5 ~ eb2 ~@2",
  L: "eb2@8 ~ eb2@2 ~ eb2@6 f2@3 g2@3", M: "ab2@7 ~@2 ab2@11 ~ eb2@3", N: "ab2@7 ~@2 ab2@4 ~@2 ab2@3 bb2@3 c3@3",
  O: "db2@7 ~@2 db2@12 ab2@3", P: "db2@7 ~@2 db2@3 c2@3 c2@3 bb1@3 bb1@3", Q: "ab1@7 ~@2 eb2@3 ab1 ~@2 ab1@5 ~ ab1@3",
  R: "eb2@8 ~ eb2@3 eb2@3 eb2@5 ~ eb2@3", S: "ab1@7 ~@2 eb2@3 ab1@9 eb2@3", T: "ab1@2 ~ ab1@5 ~ ab1@2 ~ eb2@5 ~ eb2@6",
  U: "ab1@7 ~@2 eb2@3 ab1@8 ~ ab1@3", V: "eb2@8 ~ eb2@2 ~ eb2@2 ~ eb2@3 f2@3 g2@2 ~",
  W: "ab2@7 ~@2 ab2@3 eb2@8 ~ eb2@3", X: "ab2@2 eb2!2 f2@2 g2@2", Y: "ab2@2 ~ ab2@4 ~@2 ab2@3 eb2@5 ~ eb2@6",
  Z: "[ab1@7 ~@2 eb2@3 ab1@2 ~ ab1@5 ~@2 ab1@4 eb1@15 ~@12 eb2@13 db2@17 c2@8 bb1@9 ab1@37 ~@7, ~@7 eb1@4 ~@13]/6",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · acoustic guitar steel · "+12STR GTR"
const acoustic_guitar_steel = note(`<
  ~@4 A B A C D C@3 B@2 C@2 E F C B C@2 G C E F C B C B A C D C@3 B@2 C@2 E F C B C@2 A C D C@3 B@2 C@2 E F C B C@2 G C
  E F H@3 ~@3
>`.pickRestart({
  A: "[ab2,eb3,ab3,c4] [ab3,c4] [eb3,ab3,c4] [c4,eb4]@2 c4 [ab2,eb3,ab3,c4,eb4]@2, eb4@3 ~@5, ~@6 ab2 ~@2 [eb3,ab3]@3 ~@12", // Ab Cm Ab Ab5
  B: "[eb3,bb3,db4] [bb3,db4] [eb3,bb3,db4] [db4,eb4]@2 db4 [bb2,eb3,bb3,db4,eb4]@2, eb4@3 ~@5, ~@6 bb2 ~@2 [eb3,bb3]@3 ~@12", // Eb7 Bbm Eb7 Dbsus2 Eb7 Eb5
  C: "[ab2,eb3,ab3,c4] [ab3,c4] [eb3,ab3,c4] [c4,eb4]@2 [eb3,ab3,c4,eb4] [ab2,eb3,ab3,c4,eb4]@2, eb4@3 ~@5, ~@6 ab2 ~@2 [eb3,ab3]@3 ~@12", // Ab Cm Ab Ab5
  D: "[db3,f3,ab3,db4] [ab3,db4] [f3,ab3,db4] [db4,f4]@2 [f3,ab3,db4,f4] [db3,f3,ab3,db4,f4]@2, f4@3 ~@5, ~@6 db3 ~@2 [f3,ab3]@3 ~@12", // Db Db5 Db Fm
  E: "[db3,f3,ab3,db4]!2 [f3,ab3,db4] [f3,ab3]!2 [f3,ab3,db4,f4] [db3,f3,ab3,db4,f4]@2, f4@3 [db4,f4]@2 ~@3, ~@6 db3 ~@5 db3 ~@11", // Db Fm Db
  F: "[db3,f3,ab3,db4] [ab3,db4] [f3,ab3,db4] [f3,ab3,db4,f4] [db3,g3,c4] ~ [f3,bb3,db4]@2, f4@3 ~ eb4@2 ~@2, ~@6 db3 ~@11 db3@2 ~@4", // Db Db5 Db C Bbm
  G: "c4 [ab3,c4] [ab2,eb3,ab3,c4] [c4,eb4]@2 [eb3,ab3,c4,eb4] [ab2,eb3,ab3,c4,eb4]@2, eb4@3 [eb3,ab3] ~@4", // Ab Cm Ab Ab5
  H: "[[ab2,eb3,ab3,c4]@3 [ab3,c4]@3 [eb3,ab3,c4]@3 [c4,eb4]@6 [eb3,ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@7 [bb2,bb3,db4]@16 [bb2,bb3,db4,eb4]@25 ~@5, eb4 ~@7, ~@6 ab2 ~@2 [eb3,ab3]@3 ~@6 [ab2,eb3]@8 eb3@8 ~@8 eb3 ~@29]/3", // Ab Cm Ab Bbm Eb7 Ab5
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(1)

// chords · acoustic guitar steel · "+12STR GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@4 A B A C D C@3 B@2 C@2 ~ E C B C@4 ~ E C B C B A C D C@3 B@2 C@2 ~ E C B C@2 A C D C@3 B@2 C@2 ~ E C B C@4 ~ E C
  ~@5
>`.pickRestart({
  A: "~ [ab2,eb3] ~@2 [eb3,ab3] [eb3,ab3,eb4] ~@2, ~@12 ab2 ~@11", // Ab5
  B: "bb2 [bb2,eb3] ~@2 [eb3,bb3] [eb3,bb3,eb4] ~@2, ~@12 bb2 ~@11", C: "~ [ab2,eb3] ~@2 [eb3,ab3] ~@3, ~@12 ab2 ~@11",
  D: "~ [db3,f3] ~@2 [f3,ab3] ~@3, ~@12 db3 ~@11", E: "~ [db3,f3] ~@3 [db3,g3,c4] ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.06).pan(1)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@2 A@2 B@2 ~@24 C@5 D@4 E@6 F G@2 H@3 I@3 ~@7 J@6 K@3 ~@2>".pickRestart({
  A: "[[eb5,eb6]@38 [bb4,bb5]@9 ~]/2", B: "[eb4@2 ~, eb5@11 ~@13]/2",
  C: "[~@23 eb5@23 ~ [f4,db5,f5]@24 ~@19 ab5@3 bb5@2 [eb4,c5,eb5,c6]@24 [f4,ab4,db5], [eb4,c5]@47 ~@24 eb4@23 ~@26, ~@72 c5@23 ~@25, ~@87 eb5@8 ~@25]/5", // Db Cm Db Cm
  D: "[[f5,db6]@5 ~ [eb5,c6]@5 ~ [db5,bb5]@5 [ab4,c5,ab5]@6 ~@24 db4@8 ~@11 [eb5,ab5,c6]@5 [ab5,c6,eb6]@22 ~@2 [f5,ab5,db6], ~@5 eb4@50 ~@41, ~@5 ab4@11 ~@8 [g4,bb4]@32 ~@40, ~@5 c5@5 ~ bb4@7 ~@5 [eb5,g5]@33 ~@40, ~@15 bb5@13 ~@20]/4", // Db Cm Gb Ab Db Gm Eb
  E: "[~@5 [eb5,ab5,c6]@5 ~ [db5,f5,bb5]@5 ~ [c5,eb5,ab5]@5 ~ [db5,f5,ab5]@23 ~ [db5,f5,bb5]@5 ~ [db5,f5,ab5]@5 ~ [bb4,eb5,g5]@5 ~ [ab4,db5,f5]@5 ~ [ab4,c5,eb5]@11 ~@2 c5@11 ~ f4@10 ~ [db4,f4,ab4]@5 ~ [db4,eb4,g4]@5 ~ [c4,eb4,ab4]@25, ~@83 [eb4,ab4]@11 ~ [db4,bb4]@11 ~@38]/6", // Ab Bbm Ab Db Bbm Db Eb Db …
  F: "~ c4 [bb3,db4] [b3,d4], ~@5 [eb3,ab3]@6 ~@13", // Bbm Bm Ab5
  G: "[[c4,eb4]@20 [db4,f4]@3 ~ c4@17 [c4,eb4]@5 ~@2, ~@23 eb4@17 ~@8]/2", // Cm Db Cm
  H: "[[db4,f4]@5 ~ ab4@4 ~@2 [g3,bb3]@5 ~ [db4,f4]@5 [c4,eb4]@15 ~ [c4,eb4]@2 ~ [c4,ab4]@2 [db4,bb4]@2 ~ [eb4,c5]@5 ~ [eb4,c5]@5 ~ [eb4,c5]@5 ~@2 [eb4,c5]@5 ~, ~@5 f4@5 ~@62]/3", // Db Gm Db Cm Fm Gb Cm
  I: "[[f4,db5]@5 [eb4,c5]@5 ~@2 bb4@4 ~ [c4,ab4]@5 ~ [bb3,g4]@5 ~@2 [db4,bb4]@21 ~@21, ~@11 db4@4 ~@57]/3", // Db Cm Fm Eb Gb
  J: "[~@12 [c5,eb5,ab5]@4 ~@2 [eb5,ab5,c6]@5 [ab5,c6]@6 ~@18 [f5,db6]@6 [eb5,c6]@6 [db5,f5,bb5]@6 [c5,eb5,ab5]@6 [db5,f5,ab5]@24 [db5,f5,bb5]@6 [db5,f5,ab5]@6 [bb4,eb5,g5]@6 [ab4,db5,f5]@6 [c5,eb5]@12 ~ ab5@12, ~@23 eb6@24 ab5 ~@5 ab5 ~@65 ab4@6 ~@6 [c5,eb5]@13]/6", // Ab Db Cm Bbm Ab Db Bbm Db …
  K: "[~ [db5,f5,bb5]@8 ~ [db5,f5,bb5]@8 [db5,f5,ab5]@10 [eb5,g5]@14 [db5,f5,ab5]@16 [c5,eb5,ab5]@9 ~@5, ~@7 db5@3 ~@8]/3", // Bbm Db Eb Db Ab
})).s("gm_string_ensemble_2").gain(0.11).pan(0)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@30 A@5 ~@34 B@3>".pickRestart({
  A: "[ab4@46 ~@25 eb5@16 ~@8 ab4@23 ~@2, ~@47 ab4@47 ~@26]/5",
  B: "[~@19 [bb4,db5,f5,ab5]@9 [ab4,c5,eb5,ab5]@38 ~@6]/3", // Bbm7 Ab
})).s("gm_string_ensemble_2").gain(0.06).pan(0)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  A B A B A C D@2 E D@2 F@3 D@2 G@2 H I J@2 D@2 G@2 H I H K D@2 E D@2 F@3 D@2 G@2 H I H ~ D@2 E D@2 F@3 D@2 G@2 H I H ~
  D@2 G@2 L@3 ~@3
>`.pickRestart({
  A: "[ab4,c5,eb5,ab5]", B: "[ab4,db5,f5,bb5]", C: "[g4,bb4,db5,eb5]", D: "[eb5,ab5,c6]/2", E: "[f5,ab5,db6]",
  F: "[[f5,bb5,db6] [eb5,ab5,c6] [db5,g5,bb5] [c5,ab5] [g5,bb5]@8, ~@18 eb5@53 ~]/3", // Bbm Ab Gdim Fm Gm
  G: "[db5@4 db6@2 [eb5,g5,c6] [db5,f5,bb5], [f5,ab5]@3 ~]/2", H: "[c5,eb5,ab5]", I: "[db5,g5,bb5]",
  J: "[c5,eb5,ab5]/2", K: "eb5 db5, [bb4,g5]", L: "[[c5,eb5,ab5]@26 [db5,g5,bb5]@41 ~@5]/3",
})).s("gm_percussive_organ").gain(0.06).pan(0.6)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B@3 ~@4 C ~@3 D@2 ~@2 C E ~ D ~@2 F ~ C E ~ D ~ D ~@2 C ~@3 D@2 ~@2 C E ~ D ~ G ~@2 C ~@3 D@2 ~@2 C E ~ D ~ G F ~ C
  E ~@6
>`.pickRestart({
  A: "ab2 ~@8 eb3 ~@2 ab2 ~@2 ab2 ~@5 ab2 ~@2", B: "ab2 ~@8 eb3 ~@2 ab2 ~@2 ab2 ~@8", C: "~@9 eb2 ~@14",
  D: "~@6 g4 ~@11 g4 ~@5", E: "~@9 eb2 ~@8 ab4 ~@5", F: "ab2 ~@23", G: "~@6 [db4,g4] ~@2 bb2 ~@8 [db4,g4] ~@5",
})).s("gm_electric_guitar_muted").gain(0.31).pan(0.3)

// chords · vibraphone · Ab Db Ab Db Ab Eb
const vibraphone = note(`<
  [[ab3,c4,eb4]@23 ~]
  [[ab3,db4,f4]@23 ~]
  [[ab3,c4,eb4]@23 ~]
  [[ab3,db4,f4]@23 ~]
  [[ab3,c4,eb4]@23 ~]
  [[g3,bb3,eb4]@11 ~]
  ~@66
>`).s("gm_vibraphone").gain(0.32).pan(0.2)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@2 A ~@18 B ~@7 C ~@7 B ~@7 C ~@3 B ~@3 A ~ D ~@5 C ~ E ~@8>".pickRestart({
  A: "~@7 x", B: "~@17 x ~@6", C: "~@3 x!2 ~@3", D: "~@11 x", E: "~@15 x!2 ~@7",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct("<[~@6 x ~@11 x ~ x!2 ~ x]!2 [x!4]!64 [x ~@5 x ~@5 x ~@6 x ~@4] [~ x ~@10] ~@4>")
  .gain(0.71)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@2 A@2 B@42 C D C D C D C D C D C D C D C D C D C D C E ~@4>".pickRestart({
  A: "~ x ~ x ~ x ~@2", B: "~ x ~ x ~ x ~ x", C: "~@5 x ~@2", D: "~@3 x ~ x ~@2", E: "~@3 x",
})).gain(0.36)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@6 A ~@14 B A ~@7 A ~@7 A ~@6 C D@6 E F D@2 G H I J G F D@2 G H K L M N O ~
>`.pickRestart({
  A: "x", B: "~@2 x!2", C: "~@3 x!5", D: "x!4", E: "x!3 ~ x!4", F: "x!8", G: "x ~ x!3 ~ x ~", H: "x ~ x!6",
  I: "x ~ x ~ x ~ x!2", J: "x ~@5 x ~@5 x ~@4 x!2 ~@5", K: "x ~@5 x ~@5 x ~@6 x ~@2 x ~", L: "~ x ~@7 x ~@2",
  M: "~@3 x", N: "~@11 x ~@7 x ~@4", O: "~ x ~@4",
})).gain(0.5)

// drums · ride · soft notes
// … 13 more lines

More by Tom Jones