Strudelify

Space Cowboy

Steve Miller Band

KeyF minorTempo116 bpm
0:00/0:00
// Space Cowboy — Steve Miller Band
// 116 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 103 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/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 · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A B C B D@19 E F G H I F G H I D@18 E F G H I F G H I D J K L M J K L M D E D@16 F G H I F G H I D N O@2 ~@3 P@2
>`.pickRestart({
  A: "[f2,c3,eb3] ~ [f2,c3,eb3] ~@5", B: "[f2,c3,eb3]@3 ~@3 [f2,c3,eb3]@4 ~@14", C: "[f2,c3,eb3]@2 ~ [f2,c3,eb3]@2 ~@7",
  D: "f2!2 ab2 a2 bb2!2 d3 f3", E: "f2@3 f2@3 ab2@3 a2@3 bb2!2 ~ bb2@3 d3@3 f3@3", F: "f2!4", G: "ab2!4", H: "bb2!4",
  I: "db3!4", J: "[c3,f3]@5 ~ [c3,f3]@6 [c3,f3]@6 [c3,f3]@6", K: "[eb3,f3]!4", L: "[d3,f3]!4", M: "[db3,f3]!4",
  N: "f2@4 a2@4 c3@4 bb2@4 d3@4 f3@3 ~", O: "f2@4 a2@4 c3@3 ~ bb2@4 d3@4 f3@4", P: "[f2,eb3]/2",
})).s("gm_overdriven_guitar").gain(0.31).pan(0.2)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A@3 B C@20 D E F G H I J K C@19 L M F N O I J P C Q R S T U V J W C@18 X Y Z AA AB I J P C AC@3 ~@3 AD@2
>`.pickRestart({
  A: "f1@4 ~@2 f1@5 ~@13", B: "f1@4 ~@2 f1@6 ~@3 d1@3 eb1@2 ~ e1@3", C: "f1!2 ab1 a1 bb1!2 d2 f2",
  D: "f1@4 ~@2 f1@5 ~ f1@5 ~ f1@5 ~", E: "ab1@5 ~ ab1@5 ~ ab1@5 ~ ab1@5 ~", F: "bb1@5 ~ bb1@5 ~ bb1@5 ~ bb1@5 ~",
  G: "db2@5 ~ db2@5 ~ db2@5 ~ db2@2 ~ eb1@3", H: "f1@4 ~@2 f1@5 ~ f1@4 ~@2 f1@3 eb2@3",
  I: "ab2@5 ~ ab2@4 ~@2 ab2@5 ~ ab2@3 a2@3", J: "bb2@5 ~ bb2@5 ~ bb2@4 ~@2 bb2@3 c3@3",
  K: "db3@4 ~@2 db3@4 ~@2 db3@3 g2@3 ab2@3 ~@3", L: "f1@4 ~@2 f1@5 ~ f1@3 eb1@3 f1@5 ~",
  M: "ab1@5 ~ ab1@5 ~ ab1@3 f1@3 ab1@3 ab1@3", N: "db2@5 ~ db2@5 ~ db2@3 ab1@3 db2@2 ~ eb2@3",
  O: "f2@4 ~@2 f2@5 ~ f2@4 ~@2 f2@3 eb2@3", P: "db3@2 ~ db3@2 ~ db3@2 ~ db3@2 ~",
  Q: "f1@3 eb1@2 ~ f1@3 eb1@2 ~ f1@3 eb1@2 ~ f1@3 eb1@3", R: "ab1@3 ab1@3 ab1@3 ab1@2 ~ ab1@3 g1@2 ~ ab1@2 ~ g1@2 ~",
  S: "bb1@3 ab1@3 bb1@3 ab1@2 ~ bb1@3 ab1@3 bb1@3 ab1@2 ~", T: "db2@3 ab1@3 db2@3 ab1@2 ~ db2@3 ab1@3 db2@3 eb2@3",
  U: "f2@4 ~@2 f2@5 ~ f2@3 f2@3 eb2@3 f2@3", V: "ab2@4 ~@2 ab2@4 ~@2 ab2@4 ~@2 ab2@3 a2@3",
  W: "db3@4 ~@2 db3@4 ~@2 db3@4 ~@2 db3@3 ~@3", X: "f1 eb1 f1 eb1 f1 eb1 f1 eb1", Y: "ab1 g1 ab1 g1 ab1 g1 ab1 g1",
  Z: "bb1 g1 bb1 g1 bb1 g1 bb1 g1", AA: "db2@3 g1@3 db2@3 g1@3 db2@3 g1@3 db2@2 ~ eb2@3",
  AB: "f2@5 ~ f2@5 ~ f2@5 ~ bb2@3 a2@3", AC: "f1@3 ~ a1@3 ~ c2@3 ~ bb1@3 ~ d2@3 ~ f2@3 ~", AD: "f1/2",
})).s("gm_fretless_bass").gain(0.44)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@23 A@4 B@5 ~@18 C@8 D ~ E F G H I J K L ~@18 M@8 ~@7 N@2>".pickRestart({
  A: "[~@21 [c4,f4,ab4,c5]@22 ~@2 [c4,eb4,ab4,c5]@21 ~@3 [d4,f4,bb4]@22 ~@2 [db4,f4,ab4]@3]/4", // Fm Ab Bb Db
  B: "[~@21 [f4,ab4,c5,f5]@21 ~@3 [eb4,ab4,c5,eb5]@20 ~@4 [d4,f4,bb4,d5]@21 ~@3 [f4,ab4,db5]@26 ~]/5", // Fm Ab Bb Db
  C: "[~@21 [c4,f4,ab4,c5]@9 [f4,ab4,c5]@4 ~@2 [f4,ab4,c5]@4 ~@2 [f4,ab4,c5] ~@2 [c4,eb4,ab4,c5]@9 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5] ~@2 [d4,f4,bb4]@9 [d4,f4,bb4]@4 ~@2 [d4,f4,bb4]@5 ~ [d4,f4,bb4] ~@2 [f4,ab4,db5]@7 ~@2 [f4,ab4,db5]@5 ~ [f4,ab4,db5]@4 ~@2 [f4,ab4,db5] ~@2 [c4,f4,ab4,c5]@9 [f4,ab4,c5]@4 ~@2 [f4,ab4,c5]@4 ~@2 [f4,ab4,c5] ~@2 [c4,eb4,ab4,c5]@9 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5] ~@2 [d4,f4,bb4]@9 [d4,f4,bb4]@4 ~@2 [d4,f4,bb4]@5 ~ [d4,f4,bb4] ~@2 [f4,ab4,db5]@3]/8", // Fm Ab Bb Db Fm Ab Bb Db
  D: "~@6 [f4,ab4,db5]@5 ~ [f4,ab4,db5]@4 ~@2 [f4,ab4,db5]@4 ~@2", E: "[c4,f4,ab4,c5]@11 ~", F: "[c4,eb4,ab4,c5]@7 ~",
  G: "[d4,f4,bb4]@11 ~", H: "[db4,f4,ab4]@5 ~", I: "[f4,ab4,c5,f5]@7 ~", J: "[eb4,ab4,c5,eb5]@5 ~",
  K: "[d4,f4,bb4,d5]@7 ~", L: "[db4,f4,ab4,db5]",
  M: "[~@6 [f4,ab4,c5]@4 ~@2 [f4,ab4,c5]@4 ~@2 [f4,ab4,c5] ~@2 [c4,eb4,ab4,c5]@9 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5] ~@2 [d4,f4,bb4]@9 [d4,f4,bb4]@4 ~@2 [d4,f4,bb4]@5 ~ [d4,f4,bb4] ~@2 [f4,ab4,db5]@7 ~@2 [f4,ab4,db5]@5 ~ [f4,ab4,db5]@4 ~@2 [f4,ab4,db5] ~@2 [c4,f4,ab4,c5]@9 [f4,ab4,c5]@4 ~@2 [f4,ab4,c5]@4 ~@2 [f4,ab4,c5] ~@2 [c4,eb4,ab4,c5]@9 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5] ~@2 [d4,f4,bb4]@9 [d4,f4,bb4]@4 ~@2 [d4,f4,bb4]@5 ~ [d4,f4,bb4] ~@2 [f4,ab4,db5]@7 ~@2 [f4,ab4,db5]@5 ~ [f4,ab4,db5]@4 ~@2 [f4,ab4,db5]@4 ~@2]/8", // Fm Ab Bb Db Fm Ab Bb Db
  N: "[~ [eb4,ab4]@46 ~, a3@23 ~]/2", // Ab5
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.7)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@7 A B C@4 D@2 E@2 F G@3 H I@8 J@2 K ~ L@2 M@3 N@2 O@3 P Q@5 R@7 J@2 K ~@9 S T@2 U@2 V@5 W X@2 Y@6 Z@4 J@2 K ~@8
>`.pickRestart({
  A: "~@7 [c3,c4]", B: "[ab3,ab4]!2 [ab3,ab4]@2 [g3,g4] [f3,f4]!2 [eb3,eb4]",
  C: "[[f3,f4]@3 [f3,f4]@3 [d3,d4]@3 [ab3,ab4]@6 [d3,d4]@3 [f3,f4]@3 [ab3,ab4]@6 [ab3,ab4]@3 [g3,g4]@3 [ab3,ab4]@3 [g3,g4]@3 [f3,f4]@3 [d3,d4]@3 [ab3,ab4]@11 ~@13 [ab3,ab4]@6 [ab3,ab4]@3 [ab3,ab4]@3 [ab3,ab4]@3 [g3,g4]@3 [f3,f4]@3 [f3,f4]@3 [eb3,eb4]@3]/4", // F D Ab D F Ab G Ab …
  D: "[[f3,f4] [d3,d4] [f3,f4] [ab3,ab4]@2 [d3,d4] [f3,f4] [ab3,ab4]@2 [a3,a4] [ab3,ab4] [a3,a4] [g3,g4] [f3,f4] [f3,f4]@2]/2", // F D F Ab D F Ab A …
  E: "[[g3,g4]@2 [f3,f4]@3 [d3,d4] [f3,f4] [a3,a4]@2 [a3,a4]@2 [g3,g4]@2 [f3,f4]!2 [d3,d4]]/2", // G F D F A G F D
  F: "[f3,f4]!2 [d3,d4] [a3,a4]@2 [d3,d4] [f3,f4] [d3,d4]", // F D A D F D
  G: "[[ab3,ab4]!3 [g3,g4]@2 [d3,d4] [f3,f4] [a3,a4]@4 ~@2 [d3,d4] [f3,f4] [ab3,ab4]@2 [ab3,ab4]!2 [g3,g4]@2 [f3,f4]!2 [d3,d4]]/3", // Ab G D F A D F Ab …
  H: "[f3,f4] [d3,d4] [f3,f4] [g3,g4]@2 [d3,d4] [f3,f4] [d3,d4]", // F D F G D F D
  I: "[[ab3,ab4]@3 [ab3,ab4]@6 [f3,f4]@3 [g3,g4]@3 [f3,f4]@3 [d3,d4]@3 [g3,g4]@6 [f3,f4]@10 ~@2 [eb3,c4]@3 [f3,c4]@3 [f3,c4]@24 [eb3,ab3,c4,eb4]@6 [eb3,ab3,c4,eb4]@18 [d3,ab3,bb3,f4]@6 [d3,ab3,c4,f4]@3 [d3,ab3,c4,f4]@6 [d3,ab3,bb3,f4]@3 [d3,ab3,f4]@3 [d3,f3,ab3,f4]@3 [db3,ab3,bb3,f4]@9 ~@9 [eb3,c4]@3 [f3,c4]@3 [f3,c4]@24 [eb3,ab3,c4,eb4]@6 [eb3,ab3,c4,eb4]@18 [eb3,f3,ab3,c4]@3]/8", // Ab F G F D G F Cm …
  J: "[[d3,ab3,c4,f4]@3 [d3,ab3,c4,ab4] [d3,bb3,c4,f4] [d3,ab3,c4,f4] [d3,f3,c4,ab4] [db3,ab3,bb3,f4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4]@2 [db3,bb3]]/2", // Dm7b5 Bb Dm7b5 Bbm7 Fm Gb
  K: "[c3,ab3] ~", L: "[~@5 [a3,d4] [a3,f4] [c4,a4]@2 [c4,a4]!2 [bb3,g4]@2 [a3,f4]!2 [a3,d4]]/2",
  M: "[[a3,f4] [a3,d4] [a3,f4] [c4,g4]@2 [a3,d4] [a3,f4] [c4,a4]@2 [c4,a4]!2 [bb3,g4]@2 [a3,f4] [f3,d4] [c4,a4]@3 ~@3 [a3,d4] [a3,f4]!2]/3", // Dm D5 Dm C5 D5 Dm F Eb …
  N: "[[c4,ab4]!3 [bb3,g4]@2 [a3,f4]@2 [a3,f4]@2 [a3,f4]!2 [a3,f4]@2 [a3,d4] [a3,f4]!2]/2", // Fm Eb Dm D5 Dm
  O: "[[c4,ab4] [c4,a4] [c4,ab4] [c4,a4] [bb3,g4] [a3,f4] [f3,d4] [bb3,g4]@2 [a3,f4]@4 [a3,d4] [a3,f4] [c4,a4]@2 [c4,a4]!2 [bb3,g4]@2 [a3,f4] [a3,f4]@2]/3", // Fm F Fm F Eb Dm Eb Dm …
  P: "[a3,f4]!3 [c4,g4]@2 [a3,d4] [a3,f4]!2", // Dm C5 D5 Dm
  Q: "[[c4,ab4] [c4,a4] [c4,ab4]!2 [bb3,g4] [a3,f4] [f3,d4] [c4,a4]@4 ~@2 [a3,d4] [a3,f4] [c4,a4]@2 [c4,a4] [c4,ab4] g4 f4 [a3,f4] [a3,d4] [a3,f4]@2 [a3,f4]!2 [c4,g4]@2 [a3,d4] [a3,f4] [c4,a4]@2 [c4,a4]!3 [bb3,g4] [a3,f4] [f3,d4] [bb3,g4], ~@19 bb3@2 ~@19]/5", // Fm F Fm Eb Dm F D5 Dm …
  R: "[~@3 [a3,f4]@10 ~@2 [eb3,c4]@3 [f3,c4]@3 [f3,c4]@24 [eb3,ab3,c4,eb4]@6 [eb3,ab3,c4,eb4]@18 [d3,ab3,bb3,f4]@6 [d3,ab3,c4,f4]@3 [d3,ab3,c4,f4]@6 [d3,ab3,bb3,f4]@3 [d3,ab3,f4]@3 [d3,f3,ab3,f4]@3 [db3,ab3,bb3,f4]@9 ~@9 [eb3,c4]@3 [f3,c4]@3 [f3,c4]@24 [eb3,ab3,c4,eb4]@6 [eb3,ab3,c4,eb4]@18 [eb3,f3,ab3,c4]@3]/7", // Dm Cm F5 Ab Bb7 Dm7b5 Bb7 Ddim …
  S: "~@5 [eb3,a3,c4,eb4] [f3,a3,c4,f4] [eb3,a3,c4,eb4]", // Adim F Adim
  T: "[[ab3,c4,eb4,ab4] [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4] [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]!4]/2", // Ab
  U: "[[ab3,c4,eb4,ab4]@6 [g3,bb3,eb4,g4]@3 [f3,a3,c4,f4]@3 [bb3,d4] [f3,bb3,d4,f4] ~ [f3,bb3,d4,f4]@3 [d3,a3,c4,d4]@3 [ab3,c4,eb4,ab4]@9 ~@9 [eb3,a3,c4,eb4]@3 [f3,a3,c4,f4]@3 [eb3,a3,c4,eb4]@3, ~@6 [g3,g4] ~@17]/2", // Ab Eb F Bb D7 Ab Adim F …
  V: "[[ab3,c4,eb4,ab4]!3 [ab3,c4,eb4,ab4]@2 [f3,a3,c4,f4] [d3,a3,c4,d4] [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]!2 [ab3,c4,eb4,ab4]@2 [f3,a3,c4,f4] [d3,a3,c4,d4] [ab3,c4,eb4,ab4]@2 [g3,c4,eb4,g4] [f3,a3,c4,f4] [g3,bb3,d4,g4]@2 [f3,a3,c4,f4] [d3,a3,c4,d4] [g3,bb3,d4,g4]@2 [f3,a3,c4,f4]@4 [d3,a3,c4,d4] [f3,a3,c4,f4] [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]]/5", // Ab F D7 Ab F D7 Ab Cm …
  W: "[ab3,c4,eb4,ab4] [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]!3", // Ab
  X: "[[ab3,c4,eb4,ab4]!3 [g3,bb3,d4,g4]@2 [f3,a3,c4,f4] [d3,a3,c4,d4] [ab3,c4,eb4,ab4]@5 ~ [eb3,a3,c4,eb4] [f3,a3,c4,f4] [eb3,a3,c4,eb4]]/2", // Ab Gm F D7 Ab Adim F Adim
  Y: "[[ab3,c4,eb4,ab4]@3 [ab3,c4,eb4,ab4]@6 [ab3,c4,eb4,ab4]@3 [ab3,c4,eb4,ab4]@3 [f3,bb3,d4,f4]@3 [d3,a3,c4,d4]@3 [ab3,c4,eb4,ab4]@6 [ab3,c4,eb4,ab4]@6 [ab3,c4,eb4,ab4]@6 [f3,bb3,d4,f4]@3 [d3,a3,c4,d4]@3 [ab3,c4,eb4,ab4]@6 [ab3,c4,eb4,ab4]@3 [g3,bb3,d4,g4]@3 [f3,a3,c4,f4]@3 [g3,bb3,d4,g4]@3 [f3,a3,c4,f4]@3 [d3,a3,d4]@3 [g3,bb3,d4,g4]@6 [f3,a3,c4,f4]@10 ~@2 [eb3,c4]@3 [f3,c4]@3 [f3,c4]@24 [eb3,ab3,c4,eb4]@6 [eb3,ab3,c4,eb4]@18 [d3,ab3,bb3,f4]@3]/6", // Ab Bb D7 Ab Bb D7 Ab Gm …
  Z: "[~ [d3,ab3,c4,f4] [d3,ab3,c4,f4]@2 [d3,ab3,bb3,f4] [d3,ab3,f4] [d3,f3,ab3,f4] [db3,ab3,bb3,f4]@3 ~@3 [eb3,c4] [f3,c4] [f3,c4]@8 [eb3,ab3,c4,eb4]@2 [eb3,ab3,c4,eb4]@6 [eb3,f3,ab3,c4]]/4", // Dm7b5 Bb7 Ddim Bbm7 Cm F5 Ab Fm7
})).s("gm_epiano1").gain(0.22).pan(0.4)

// other · lead 5 charang · "CHARANG"
const lead_5_charang = note(`<
  A@3 B C@20 D E F G D E F H C@19 D E F G D E F H I J K L M N@2 O@2 P@2 Q C@15 R E F G D E F H C S T U V ~@2 W@2
>`.pickRestart({
  A: "[~@9 c4@4 eb4@2 bb3@2 ~ a3@2 ~ f3@11 ~ f4@4 ~ bb3@4 a3@9 ~@6 c4@4 eb4@2 bb3 ~@2 a3@2 ~ f3@2 ~]/3",
  B: "b3@2 ~ c4 ~@2 b3 bb3 a3 f3@2 ~ bb3@2 ~ a3 ~@2 f3 eb3 ~ f3@3", C: "f2!2 ab2 a2 bb2!2 d3 f3", D: "[f2,c3,f3]",
  E: "[ab2,eb3,f3]", F: "[bb2,d3,f3]", G: "[db3,f3]@23 ~", H: "[db3,f3]", I: "~@12 bb4@5 ~ bb4@4 ~@2",
  J: "bb4@3 ab4@9 f4@11 ~", K: "f4@2 f4@2 ~@2 ab4@5 f4@8 ~@2 f4@3", L: "ab4@5 ab4@6 f4@3 ~ f4@3 ab4@2 ~ bb4@2 ~",
  M: "bb4@6 bb4@5 ~ bb4@3 ab4@2 ~ bb4@3 ab4@3", N: "[f4@18 f5@12 ab4@5 ~ f4@6 ~@3 f4@3]/2",
  O: "[eb5@3 f5@3 bb4@4 ab4 ~ bb4@3 f4@3 ab4@2 ~ bb4@6 db5@2 bb4@4 ab4@3 bb4@3 f4@2 ~ ab4@2 ~ ab4@3]/2",
  P: "[~ f4@5 f4@14 ~ f4@5 ~ f4@3 ab4@3 a4@3 bb4@3 bb4@3 eb5@6]/2", Q: "~ f2 ab2 a2 bb2!2 d3 f3", R: "[f2,c3,f3]@23 ~",
  S: "f2 a2 c3 bb2 d3 f3", T: "eb5@3 f5@3 b4@3 ab4@3 bb4@4 f4@4 ab4@3 ~", U: "bb4@6 ab4@3 bb4@3 f4@3 ~ ab4@4 ~ c5@3",
  V: "~ c5@3 ~@4", W: "[[f2,c3]@47 ~]/2",
})).s("gm_lead_5_charang").gain(0.33).pan(0.9)

// chords · reed organ
const reed_organ = note(`<
  ~@4 A@4 ~@15 B C D E F G H I J K@3 ~@15 B C D E F G H I J L M D E N M D O N ~@18 M D E F G H P J ~@9
>`.pickRestart({
  A: "[[eb3,a3]@13 [d3,bb3]@11 [eb3,a3]@12 [d3,bb3]@12 [eb3,a3]@12 [d3,bb3]@12 [eb3,a3]@12 [d3,bb3]@12, f4@95 ~]/4", // Ebdim Gm Ebdim Gm Ebdim Gm Ebdim Gm
  B: "~@7 [f4,ab4,c5]", // Fm
  C: "~@2 [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~@4 [eb4,ab4,c5]@3", // Fm Ab
  D: "~@2 [eb4,ab4,c5] ~ [eb4,ab4,c5] ~ [eb4,ab4,c5] ~ [eb4,ab4,c5] ~ [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@8 [d4,f4,bb4]@3", // Ab Bb
  E: "~@2 [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4] ~@2 [db4,f4,ab4]@3, ~@9 bb4 ~@2", // Bb Dm Db
  F: "~@2 [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~@8 [ab4,c5,f5]@3", // Db Fm
  G: "~@2 [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~@4 [ab4,c5,eb5]@3", // Fm Ab
  H: "~@2 [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~@8 [f4,bb4,d5]@3", // Ab Bb
  I: "~@2 [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 ~ [f4,ab4,db5]@3", // Bb Db
  J: "~@2 [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~@11", // Db
  K: "[eb3,a3] [d3,bb3]", L: "[eb3,a3]@12 [d3,bb3]@11 ~",
  M: "[f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,ab4,c5] ~@4 [eb4,ab4,c5]@3", // Fm Ab
  N: "~@2 [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~@11", // Db
  O: "~@2 [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4]@2 ~ [db4,f4,ab4]@3", // Bb Db
  P: "~@2 [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,d5] ~@2 [f4,ab4,db5]@3, ~@9 bb4 ~@2", // Bb Dm Db
})).s("gm_reed_organ").gain(0.2).pan(0.3)

// chords · reed organ · soft notes
const reed_organ_soft = note(`<
  ~@24 A B ~ C D E ~ F ~@19 A B ~ C D E ~ F ~ A B ~ C A B ~ C ~@18 A B ~ C D E ~ F ~@9
>`.pickRestart({
  A: "~@18 [f4,ab4,c5] ~@5", B: "~@14 [eb4,ab4,c5] ~ [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@5",
  C: "~@14 [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~@5", D: "~@18 [ab4,c5,f5] ~@5",
  E: "~@14 [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~@5", F: "~@14 [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~@5",
})).s("gm_reed_organ").gain(0.12).pan(0.3)

// chords · electric guitar muted · "MUTED GTR" · Am Bb Am Bb Am Bb Am Bb
const electric_guitar_muted = note(`<
  [f2@2 ~ a2@3 f2@3 bb2@3 f2@3 a2@3 f2@2 ~ bb2@3]
  [f2@2 ~ [a2,c3]@3 f2@3 [bb2,d3]@3 f2@3 [a2,c3]@3 f2@3 [bb2,d3]@3]
  [f2 [a2,c3] f2 [bb2,d3] f2 [a2,c3] f2 [bb2,d3]]!2
  ~@99
>`).s("gm_electric_guitar_muted").gain(0.15)

// drums · kick
const kick = s("bd").struct("<~@4 A@20 B@8 A@19 B@17 A@18 B@9 C@3 D ~@2 E F>".pickRestart({
  A: "x!2 ~@2 x!2 ~@2", B: "x!8", C: "x!6", D: "x ~@3 x ~@2 x ~@4 x ~@2 x ~@8", E: "x", F: "~@11 x",
})).gain(0.38)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@4 A@2 B C D@10 E D@2 F D G ~@8 H D@5 G C D@10 G ~@7 B I ~@3 J ~@4 B K A@2 B A@3 B A@3 B L A@3 ~@4 M ~@3 B I ~@3 N
  ~@4
>`.pickRestart({
  A: "~@10 x ~@2 x ~@10", B: "~@5 x ~@6", C: "~@10 x ~@2 x ~@8 x ~", D: "~ x ~@8 x ~@2 x ~@8 x ~",
  E: "~ x ~@8 x ~@11 x ~", F: "~ x ~@8 x ~@2 x ~@7 x ~@2", G: "~ x ~@8 x ~@2 x ~@5 x ~@4", H: "~@11 x",
  I: "~@10 x ~@8 x ~@4", J: "~@12 x!2 ~@10", K: "~@19 x ~@4", L: "~ x ~@6", M: "~@13 x ~@5 x ~@4",
  N: "~ x ~@7 x ~@3 x ~@2 x ~@7",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct(`<
  [x!2 ~@2]!4
  ~@77
  [~@16 x ~ x!2 ~ x!2 ~]
  ~@17
  [~@10 x ~@2 x ~ x ~@8]
  [~@3 x!9 ~@12]
  ~@2
>`).gain(0.27)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@99 [~@16 x ~ x!6] [x!3 ~@21] ~@2>").gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<A@3 B ~@54 C ~@22 D ~@11 C ~@4 E F ~@3>".pickRestart({
  A: "x!2 ~@2", B: "x ~@5 x ~@5 x ~@3 x ~@4 x ~@2", C: "~@19 x ~ x!2 ~", D: "~@9 x ~@3 x ~ x ~@8",
  E: "~@12 x ~@2 x ~@3 x ~ x ~@2", F: "~ x ~@2 x ~ x ~@2 x ~@14",
})).gain(0.38)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@3 [~@13 x ~@4 x ~@5] ~@77 [~@5 x!2 ~@5] ~@21>").gain(0.22)

// drums · open hat
const open_hat = s("oh").struct(`<
  [~@5 x ~@5 x ~@5 x ~@5 x]
  [~@5 x ~@4 x ~@5 x ~@5 x ~]
  [~@5 x ~@5 x ~@5 x ~@5 x]
  [~@5 x ~@4 x ~@13]
  ~@97
  [~ x!23]
  x
>`).gain(0.33)

// drums · high tom
const high_tom = s("ht").struct("<~@98 [~@4 x ~@2 x ~@16] x ~@3>").gain(0.38)

// drums · crash
const crash = s("cr").struct("<~@60 A ~@3 A@2 ~@20 A@3 B A@5 ~@3 A ~@2 A ~>".pickRestart({
  A: "x", B: "x ~@2 x ~@4",
// … 22 more lines

More by Steve Miller Band