Strudelify

Move Over

Janis Joplin

KeyD minorTempo135 bpm
0:00/0:00
// Move Over — Janis Joplin
// 135 bpm, 4/4, key D minor. 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 127 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 · distortion guitar · "G #2"
const distortion_guitar = note(`<
  ~@33 A B C D E F G@2 H I J K L ~@23 M N O P Q R S T M N O P Q R S U ~@42
>`.pickRestart({
  A: "~@4 b4!4", B: "~ a4 b4 a4 b4 a4@3", C: "~@3 b4 b4@2 g4 d4", D: "e4 g4 ~@6", E: "~@6 e5@4 d5 ~ b4 ~ b4@2",
  F: "~@2 a4@2 b4@2 a4@3 ~ bb4 ~ bb4@3 ~", G: "[~@6 b4 ~ b4@3 ~ g4@2 d4@4 g4@2 ~@12]/2", H: "~@6 g4@4 g4 a4@5",
  I: "bb4@5 ~ g4@2 e4@2 g4@6", J: "~@2 a4!2", K: "c5 ~ c5@3 ~ b4@9 ~", L: "bb4 ~ bb4@3 ~ a4@6 ~@4",
  M: "~@4 c5@2 a4 c5@3 a4@2 c5@2 a4@2", N: "f5 c5@8 ~@7", O: "~@2 c5 a4 c5 a4 c5@5 ~ d5 c5 g4@2", P: "~ g4@3 ~@12",
  Q: "~ d5 d5@2 d5@2 d5@2", R: "f5@3 d5@4 ~@9", S: "~@2 c5@2 c5@4 g4@3 ~ f4@2 f4!2", T: "f4 d4!3 ~@4", U: "d5 ~",
})).s("gm_distortion_guitar").gain(0.46).pan(0.4)

// chords · acoustic guitar steel · "G #3"
const acoustic_guitar_steel = note(`<
  ~@10 A ~ A ~@5 A ~ A ~@5 A ~ A ~@3 B C@2 D@2 C@2 D@2 E@2 F G H ~ A ~ A ~@5 A ~ A ~@5 A ~ A ~@3 I@22 ~@4 J K L@2 M N@2
  O P@2 Q R@2 S T@2 U V@2 W X@2 Y Z@2 AA AB@2 AC AD@2 M
>`.pickRestart({
  A: "~@4 [c4,f4,a4] ~ [d4,g4,b4] ~", B: "~@8 [d4,f4,a4]@3 ~ [eb4,g4,bb4]@3 ~",
  C: "[e4,ab4,b4] ~@3 [e4,ab4,b4] ~@3 [e4,ab4,b4] ~@3 [e4,ab4,b4] ~@3", // E
  D: "[d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3", // G
  E: "[db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3 [db4,e4,a4] ~@3", // A
  F: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", G: "[e4,g4,c5] ~ [e4,g4,c5] ~@3 [eb4,gb4,b4]@5 ~@5",
  H: "[d4,f4,bb4] ~ [d4,f4,bb4] ~@3 [db4,e4,a4]@4 ~@6", // Bb A
  I: "[d4,f4,a4] ~@3 [d4,f4,a4] ~@3 [d4,f4,a4] ~@3 [d4,f4,a4] ~@3", J: "~@8 d4@3 f4@3 a4@2",
  K: "~ d5@3 a4@3 f4@3 d4@3 g4@3", L: "[bb4@3 d5@3 bb4@3 g4@3 d4@3 f4@3 a4@3 d5@3 a4@3 f4@3 db4@2]/2",
  M: "~ e4@3 a4@3 db5@3 a4@3 e4@3", N: "[d4@3 f4@3 a4@3 d5@3 a4@3 f4@3 e4@3 g4@3 c5@3 e5@3 c5@2]/2",
  O: "~ g4@3 d4@3 f4@3 bb4@3 d5@3", P: "[bb4@3 f4@3 db4@3 e4@3 a4@3 db5@3 a4@3 e4@3 db4@3 e4@3 a4@2]/2",
  Q: "~ db5@3 a4@3 e4@3 db4@3 e4@3", R: "[a4@3 db5@3 a4@3 e4@3 d4@3 f4@3 a4@3 d5@3 a4@3 f4@3 d4@2]/2",
  S: "~ g4@3 bb4@3 d5@3 bb4@3 g4@3", T: "[d4@3 f4@3 a4@3 d5@3 a4@3 f4@3 db4@3 e4@3 a4@3 db5@3 a4@2]/2",
  U: "~ e4@3 d4@3 f4@3 a4@3 d5@3", V: "[a4@3 f4@3 e4@3 g4@3 c5@3 e5@3 c5@3 g4@3 d4@3 f4@3 bb4@2]/2",
  W: "~ d5@3 bb4@3 f4@3 db4@3 e4@3", X: "[a4@3 db5@3 a4@3 e4@3 a3@3 db4@3 e4@3 a4@3 e4@3 db4@3 a3@2]/2",
  Y: "~ db4@3 e4@3 a4@3 e4@3 db4@3", Z: "[d4@3 f4@3 a4@3 d5@3 a4@3 f4@3 d4@3 g4@3 bb4@3 d5@3 bb4@2]/2",
  AA: "~ g4@3 d4@3 f4@3 a4@3 d5@3", AB: "[a4@3 f4@3 db4@3 e4@3 a4@3 db5@3 a4@3 e4@3 d4@3 f4@3 a4@2]/2",
  AC: "~ d5@3 a4@3 f4@3 e4@3 g4@3", AD: "[c5@3 e5@3 c5@3 g4@3 d4@3 f4@3 bb4@3 d5@3 bb4@3 f4@3 db4@2]/2",
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.1)

// other · epiano2 · "G #4"
const epiano2 = note("<~@7 A@2 ~@6 B@2 ~@6 A@2 ~@6 C@2 ~@7 D ~@3 E F ~@6 A@2 ~@6 B@2 ~@6 G@22 H ~@36>".pickRestart({
  A: "[~@8 a3@2 c4@2 f4@2 d4@6 c4 d4 f4@2 ab4 g4 f4@2 ab4 g4 f4@2]/2",
  B: "[~@8 a3@2 c4@2 f4@2 d4@6 c4 d4 f4@2 a4 c5 ~ a4 g4 f4 ~ d4]/2", C: "[~@8 a3@2 d4@2 f4@2 d4@5 ~@13]/2",
  D: "~@10 d5 d5@3 d5@2", E: "c5 ~ c5@4 b4@6 ~@4", F: "bb4 ~ bb4@4 a4@8 ~@2", G: "[~@8 a3@2 c4@2 f4@2 d4@7 ~@11]/2",
  H: "~@4 a3 c4 f4 d4",
})).s("gm_epiano2").gain(0.41).pan(0.7)

// bass · slap bass 1 · "G #6"
const bass = note(`<
  ~@9 A@2 B@2 C@4 D E D F G H I J D E D F G H D K L@2 M N L@2 N@2 O@2 P Q R D E D F G H I J D E D F G H G H D E D F G H
  G H G H G H I J G H G H G H I J G H G H G H I ~@36
>`.pickRestart({
  A: "[d2@22 ~@2 f2@3 ~ g2 ~@3]/2", B: "[d2@21 ~@3 f2@2 ~@2 g2 ~@3]/2", C: "[d2@23 ~ f2@4 d2@2 ~@2]/2",
  D: "d2@4 ~@2 d2@3 ~ d2@3 ~ a1 ~", E: "d2@3 ~ d2@2 ~@2 f2@2 ~@2 g2 ~@3", F: "d2@2 ~@2 d2@2 ~@2 f2@3 ~ g2@2 ~@2",
  G: "d2@4 ~@2 d2@3 ~ d2@2 ~@2 a1@2", H: "d2 ~ d2 ~ f2@2 d2 ~", I: "d2@2 ~ d2 ~ d2 ~ a1",
  J: "d2@2 ~@2 d2@2 ~@2 f2@3 ~ d2 ~@3", K: "d2@3 ~ d2@2 ~@2 d2@2 ~@2 eb2 ~@3", L: "e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3",
  M: "g2@2 ~@2 g2 ~@3 g2 ~@3 g2 ~@3", N: "g2 ~@3 g2 ~@3 g2 ~@3 g2 ~@3", O: "a2 ~@3 a2 ~@3 a2 ~@3 a2 ~@3",
  P: "c3 ~@3 c3 ~@3 c3 ~@3 c3 ~@3", Q: "c3 ~ c3 ~@3 b2@6 ~@4", R: "bb2 ~ bb2@2 ~@2 a2@5 ~@5",
})).s("gm_slap_bass_1").gain(0.36)

// other · electric guitar clean · "G #7"
const electric_guitar_clean = note(`<
  ~@7 A@2 ~@6 A@2 ~@6 A@2 ~@6 B@2 ~@7 C ~@11 A@2 ~@6 A@2 ~@6 D@22 E ~@36
>`.pickRestart({
  A: "[~@4 a2 c3 f3 d3@3 ~@6]/2", B: "[~@8 a2@2 d3@2 f3@2 d3@5 ~@13]/2", C: "~@10 g4 g4@3 g4@2",
  D: "[~@8 a2@2 c3@2 f3@2 d3@7 ~@11]/2", E: "~@4 a2 c3 f3 d3",
})).s("gm_electric_guitar_clean").gain(0.41).pan(0.7)

// chords · piano · "G #8"
const piano = note(`<
  ~@32 A B@2 C@2 B@2 C@2 D@2 E F G ~@23 H@22 ~@4 I J K L M N O P Q R M S T U N R V W X Y Z R M N AA AB AC AD AE AF AG M
>`.pickRestart({
  A: "~@8 [d4,f4,a4]@3 ~ [eb4,g4,bb4]@3 ~", // Dm Eb
  B: "[e4,ab4,b4] ~ [e4,ab4,b4] ~ [e4,ab4,b4] ~ [e4,ab4,b4] ~ [e4,ab4,b4] ~ [e4,ab4,b4] ~ [e4,ab4,b4] ~ [e4,ab4,b4] ~", // E
  C: "[d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~", // G
  D: "[e4,a4,db5] ~ [e4,a4,db5] ~ [e4,a4,db5] ~ [e4,a4,db5] ~ [e4,a4,db5] ~ [e4,a4,db5] ~ [e4,a4,db5] ~ [e4,a4,db5] ~", // A
  E: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~", // C
  F: "[e4,g4,c5] ~ [e4,g4,c5] ~@3 [eb4,gb4,b4] ~@9", G: "[d4,f4,bb4] ~ [d4,f4,bb4] ~@3 [db4,e4,a4] ~@9",
  H: "a4 ~ [d5,f5] ~ [d5,f5] ~ a4 ~ a4 [d5,f5] ~ [d5,f5] a4@2 [d5,f5] ~", // Dm
  I: "~@8 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~", // Dm
  J: "~ [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2", // Dm Gm
  K: "[d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4]", // Gm Dm
  L: "~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [db4,e4,a4] ~", // Dm A
  M: "~ [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2", // A
  N: "[d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4]", // Dm
  O: "~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~", // C
  P: "~ [c4,e4,g4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2", // C Bb
  Q: "[d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4]", // Bb A
  R: "~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~", // A
  S: "[db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4]", // A Dm
  T: "~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,g4,bb4] ~", // Dm Gm
  U: "~ [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2", // Gm
  V: "~ [db4,e4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2", // A Dm
  W: "[d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4]", // Dm C
  X: "~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~", // C Bb
  Y: "~ [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2", // Bb A
  Z: "[db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4]", // A
  AA: "~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~", // Gm
  AB: "~ [d4,g4,bb4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2", // Gm Dm
  AC: "[d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [db4,e4,a4]", // Dm A
  AD: "~@2 [db4,e4,a4] ~@2 [db4,e4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~", // A Dm
  AE: "~ [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2", // Dm C
  AF: "[c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4]", // C Bb
  AG: "~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [db4,e4,a4] ~", // Bb A
})).s("gm_piano").gain(0.26).pan(0.9)

// chords · percussive organ · "G #9"
const percussive_organ = note("<~@33 A@2 B@2 C@2 B@2 D@2 E F G ~@45 H@2 I@7 J K L@7 M N O@7 ~ P Q@5 ~@2>".pickRestart({
  A: "[[ab4,b4,e5]@29 ~@3]/2", B: "[[g4,b4,d5]@7 ~]/2", C: "[[ab4,b4,e5]@15 ~]/2", D: "[[a4,db5,e5]@29 ~@3]/2",
  E: "[g4,c5,e5]@7 ~", F: "[g4,c5,e5]@3 ~@3 [gb4,b4,eb5]@6 ~@4", G: "[f4,bb4,d5]@3 ~@3 [e4,a4,db5]@6 ~@4",
  H: "[[a4,d5,f5]@31 ~]/2", // Dm
  I: "[~@4 [a4,db5,e5]@35 ~ [a4,d5,f5]@18 [g4,bb4,d5]@14 ~@4 [a4,d5,f5]@16 ~@2 [a4,db5,e5]@14 ~@4]/7", // A Dm Gm Dm A
  J: "[a4,d5,f5]@15 ~", K: "~@2 [g4,c5,e5]@13 ~",
  L: "[~@4 [bb4,d5,f5]@14 ~@4 [a4,db5,e5]@53 ~ [f4,a4,d5]@14 ~@4 [g4,bb4,d5]@14 ~@4]/7", M: "[a4,d5,f5]",
  N: "~ [a4,db5,e5]@7", // A
  O: "[~@4 [a4,d5,f5]@15 ~@3 [g4,c5,e5]@13 ~@5 [bb4,d5,f5]@14 ~@4 [a4,db5,e5]@17 ~ [a4,db5,e5]@35 ~]/7", // Dm C Bb A
  P: "~ [g4,bb4,d5]@7", Q: "[~@4 [a4,d5,f5]@16 ~@2 [a4,db5,e5]@14 ~@4 [a4,d5,f5]@15 ~@3 [g4,c5,e5]@13 ~@9]/5",
})).s("gm_percussive_organ").gain(0.2).pan(0.3)

// chords · percussive organ · "G #9" · soft notes
const percussive_organ_soft = note("<~@124 A@3>".pickRestart({
  A: "[~@6 [bb4,d5,f5]@7 ~@2 [a4,db5,e5]@9]/3", // Bb A
})).s("gm_percussive_organ").gain(0.1).pan(0.3)

// bass · electric bass finger · "G #10"
const bass_2 = note("<~@91 A B C D@6 E@2 F G@2 H@4 I J@2 K@6 L@2 M N@3 ~@3>".pickRestart({
  A: "d2@14 ~ d2", B: "~ d2@6 ~", C: "~ a1@3",
  D: "[~@3 a1 ~@2 a1@9 e2@8 ~ d2@12 ~@3 d2@3 g2@13 ~@2 g2@2 ~ d2@13 ~@2 d2 ~@2 a1@9 e2@8 ~]/6",
  E: "[d2@13 ~@2 d2@3 c2@12 ~@2]/2", F: "~ c2@3 f2@12", G: "[~@3 f2@3 e2@15 ~@3 e2@8]/2",
  H: "[~ a1@9 db2@9 ~@6 a1@3 d2@12 ~@3 d2@3 g2@13 ~@2 g2@2 ~, ~@19 e2@8 ~@37]/4", I: "d2@13 ~@2 d2",
  J: "[~@2 a1@9 e2@8 ~ d2@12]/2",
  K: "[~@3 d2@3 c2@12 ~@3 c2@3 f2@13 ~@2 f2@3 e2@9 a1@9 a1@13 ~@2 a1 ~@2 a1@9 e2@8 ~]/6",
  L: "[d2@12 ~@3 d2@3 g2@13 ~]/2", M: "~ g2@2 ~ d2@12", N: "[~@3 d2 ~@2 a1@9 e2@8 ~ d2@13 ~@11]/3",
})).s("gm_electric_bass_finger").gain(0.31)

// bass · electric bass finger · "G #10" · soft notes
const bass_soft = note("<~@123 A@4>".pickRestart({
  A: "[~@7 d2@3 c2@12 ~@3 c2@3 f2@13 ~@2 f2@3 e2@15 ~@3]/4",
})).s("gm_electric_bass_finger").gain(0.15)

// other · electric guitar jazz · "G #12"
const electric_guitar_jazz = note("<~@93 A B@2 C D@2 E F@2 G@4 ~ H I ~@2 J K@2 L M@2 ~ N@3 ~@6>".pickRestart({
  A: "~@4 a3@3 b3@3 db4@3 d4@3", B: "[e4@3 f4@3 g4@3 a4@3 bb4@3 b4@3 c5@3 db5@3 d5@3 db5@3 d5@2]/2",
  C: "~ a4@9 d5@3 db5@3", D: "[d5@3 bb4@9 d5@3 db5@3 d5@3 a4@3 a4@3 f4@3 f4@2]/2", E: "~ a4@3 g4@3 e4@3 g4@3 f4@3",
  F: "[a4@8 ~ a4@2 ~ g4@3 f4@3 g4@7 ~@2 g4@3 f4@2]/2", G: "[~ e4@2 ~ f4@9 a4@9 g4@9 f4@6 e4@2 ~ d4@17 ~@7]/4",
  H: "~@5 a4 bb4 ~@2 g4@2 f4@3 ~@2, ~@4 a4 ~@3", I: "~@7 bb4 c5@2 bb4 a4@2 g4@2 ~", J: "~@4 d4@3 f4 ~@2 a4 ~@2 d5@3",
  K: "[a4@2 ~ f4 ~@2 c4@3 e4 ~@2 g4 ~@2 c5@3 g4@2 ~ e4 ~@2 bb3@2 ~ d4@2 ~ f4 ~]/2",
  L: "~ bb4@2 ~ f4@2 ~ d4 ~@2 a3@3 b3@3", M: "[db4@2 ~ d4@3 e4@3 f4@3 g4@3 a4@3 bb4@2 ~ b4@3 c5@3 db5@3 ~@2]/2",
  N: "[~@9 a4 bb4 ~@2 g4@2 f4@3 ~@9 bb4 c5@2 bb4 a4@2 g4@2 ~@13, ~@6 a4 ~@17]/3",
})).s("gm_electric_guitar_jazz").gain(0.41).pan(0.6)

// other · electric guitar jazz · "G #12" · soft notes
const electric_guitar_jazz_2 = note("<~@122 A B C@2 D>".pickRestart({
  A: "~@8 d4@3 f4 ~@2 a4 ~", B: "~ d5@3 a4@2 ~ f4 ~@2 c4@3 e4 ~@2",
  C: "[g4 ~@2 c5@3 g4@2 ~ e4 ~@2 bb3@2 ~ d4@2 ~ f4 ~@2 bb4@2 ~ f4@2 ~ d4 ~@2 a3@2]/2",
  D: "~ b3@3 db4@2 ~ d4@3 e4@3 f4@3",
})).s("gm_electric_guitar_jazz").gain(0.15).pan(0.6)

// other · overdriven guitar · "G"
const overdriven_guitar = note("<~@104 A B C@2 D E@2 F G@2 H@3 I J@3 K@2 ~@4>".pickRestart({
  A: "~@8 a3@2 ~ b3@2 ~ db4@2", B: "~ d4@2 ~ e4@2 ~ f4@2 ~ g4@2 ~ a4@2 ~",
  C: "[bb4@2 ~ b4@2 ~ c5@2 ~ db5@2 ~ d5@3 db5@3 d5@3 a4@9 d5@2]/2", D: "~ db5@3 d5@3 bb4@9",
  E: "[d5@3 db5@3 d5@3 a4@3 a4@3 f4@3 f4@3 a4@3 g4@3 e4@3 g4@2]/2", F: "~ f4@3 a4@8 ~ a4@2 ~",
  G: "[g4@3 f4@3 g4@8 ~ g4@3 f4@3 e4@2 ~ f4@8]/2", H: "[~ a4@9 g4@8 ~ f4@6 e4@3 a4@8 ~@4 e4@2 ~ f4@2 ~ g4@2]/3",
  I: "~ a4@2 ~ bb4@2 ~ b4@2 ~ c5@2 ~ db5@2 ~", J: "[d5 db5 d5 a4@3 d5 db5 d5 bb4@3 d5 db5 d5 a4]/3",
  K: "[a4@3 f4@3 f4@3 a4@3 g4@3 e4@3 g4@3 ~@11]/2",
})).s("gm_overdriven_guitar").gain(0.41).pan(0.4)

// other · overdriven guitar · "G" · soft notes
const overdriven_guitar_soft = note("<~@122 A B@4>".pickRestart({
  A: "~@5 f4@3 a4@8", B: "[~ a4@2 ~ g4@3 f4@3 g4@8 ~ g4@3 f4@3 e4@2 ~ f4@8 ~ a4@9 g4@8 ~ f4@6 e4@3]/4",
})).s("gm_overdriven_guitar").gain(0.15).pan(0.4)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@17 A B C B C A@4 B C B C A@3 C A C A C A C A C A C D E A B C B C A@4 B C B C A@4 B C B C A@2 C A C A C A C A C A C A
  C A C A C A C A C A ~@36
// … 39 more lines

More by Janis Joplin