Strudelify

What's Your Name

Lynyrd Skynyrd

KeyD majorTempo136 bpm
0:00/0:00
// What's Your Name — Lynyrd Skynyrd
// 136 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 acoustic bass (copy of ch 9 electric guitar clean)
// note: Full arrangement: all 141 bars on a 16-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): guitar program 27, guitar program 27, guitar program 27.
setcpm(136/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · electric guitar clean
const electric_guitar_clean = note(`<
  ~@3 A ~@2 B ~@4 C@2 ~@3 D ~@18 C@2 ~@17 B ~@4 E@2 ~@3 D ~@2 F@2 ~@14 G@7 H@8 I@3 ~@9 B ~@4 E@2 ~@3 D ~@2 F@2 ~@16
>`.pickRestart({
  A: "~ d3 g2!2 d3 [g2,e3]@2 ~", B: "~@5 [a2,f#3] ~@2", C: "[~@7 b2@2 b2 c#3 e2 ~ c#3 ~@2]/2", D: "~@3 [g2,d3,g3]@4 ~",
  E: "[~@4 [e2,b2] ~@2 b2@2 b2 c#3 e2 ~ c#3 ~@2]/2", // E5
  F: "[~ [e3,a3] f#3@2 [a2,a3] f#3 ~ e3@2 [e3,a3] f#3 e3 [e3,a3] ~@3]/2", // A5 A A5
  G: "[~@2 g3 e3 g2 [d3,g3] e3 [f3,b3]@2 [g2,f3,b3]@3 d3 g2 [c3,f3] e3@2 [e3,a3] f#3 e3 [e3,a3] f#3 ~ a3@2 ~ f#3 e3 [e3,a3] f#3 ~ [g2,d3,g3]@2 [d3,g3] e3 d3 [g2,d3,g3] e3 ~ [a2,e3,a3]@2 [e3,a3] f#3 e3 [a2,a3] c3 c#3 [e3,a3]@2 [e3,a3] f#3 e3 [e3,a3] f#3 ~ e3]/7", // G5 Fdim G7 F5 A5 G5 A5 A …
  H: "[~ [e3,a3] ~ e3 [e3,a3] f#3 ~ [g2,d3,g3]@2 [e3,a3] f#3 e3 [a2,e3,a3] c3 c#3 [e3,a3]@2 e3 f#3 e3 [a2,a3] c3 c#3 [e3,a3]@2 [e3,a3] f#3 e3 [e3,a3] f#3 ~ a3@2 a3 ~ e3 [e3,a3] f#3 ~ [g2,d3,g3]@2 [d3,g3] ~ d3 [g2,d3,g3] e3 ~ [f#2,c#3,f#3]@2 [f#2,c#3,f#3] ~ [g2,d3,g3]@2 [g2,d3,g3] ~ [a2,e3,a3]@2 [e3,a3] f#3 e3 [e3,a3] f#3 ~ e3]/8", // A5 G5 A5 A A5 G5 F#5 G5 …
  I: "[~ [e3,a3] ~ e3 [e3,a3] f#3 ~ [c3,g3,c4]@2 [c3,g3,c4] ~ [g2,d3,g3]@2 [g2,g3] ~ [a2,a3]@2 [e3,a3] f#3 e3 [e3,a3] ~@3]/3", // A5 C5 G5 G A A5
})).s("gm_electric_guitar_clean").gain(0.8).pan(0)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A@4 B@8 C@8 D@4 E@4 F@8 G@5 H@7 I@4 J@8 K@7 L@5 M@8 N@3 ~ O P@2 Q R S@2 T U V@2 W X Y@7 E@4 Z@8 K@7 L@5 M@8 AA@4 AB
>`.pickRestart({
  A: "[~@4 [g3,c4] e3 [g#2,c#3,g#3,c#4] [a2,d3,a3,d4]@2 [d3,a3] [d3,b3] [d3,a3] ~ [c4,f4] [b3,e4] [a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]@2 g3 e3 d3 g3 d3 e3 [d4,g4]]/4", // C5 C#5 D5 G D5 F5 E5 D5 …
  B: "[~@2 [e3,a3]@2 [g3,c4]@2 [f#3,b3]@2 [e3,a3]@2 c3@2 [c#3,f#3]@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 ~@2 e3@2 [d3,g3]@4 [d3,g3]@2 e3@2 g2@2 [g2,d3]@2 [g2,e3]@2 c3@2 [c#3,e3]@4 a3@2 f#3@2 e3@2 a3@2 c3@2 c#3@2 [e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 [a2,f#3]@2 [e3,a3]@4 e3@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [e2,b2,e3]@4 e3@2 c#3@2 e2@2 [b2,e3]@2 c#3@2 [d3,g3] ~ [c4,e4]@2]/8", // A5 C5 B5 A5 F#5 A5 D A5 …
  C: "[~@2 [a3,f#4]@2 [d3,g3,b3,e4] ~ [a#3,g4]@2 [d3,g3,b3,e4] ~ [b3,g#4]@2 [b3,e4]@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 f#3 e3 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [d3,g3]@4 [d3,g3]@2 e3@2 g2@2 [g2,d3]@2 [g2,e3]@2 ~@2 [d3,a3,d4]@4 [d3,a3,d4]@4 ~@2 [d3,g3]@2 e3@2 [g2,d3,g3]@2 [e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3,a3]@2 f#3@2 ~@2 [e2,b2,e3]@4 [b2,e3]@2 c#3@4 [e2,b2]@2 [e2,c#3]@2 ~@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3,a3]@2 f#3@2 ~@2 [a2,e3,a3]@2]/8", // D Em7 D# Em7 E E5 A5 D …
  D: "[~ [e3,a3] f#3 e3 [e3,a3] [c3,g3] [c#3,g#3] [d3,a3,d4]@2 [d3,a3,d4] [d3,b3] [d3,a3] ~ [f3,c4,f4] [e3,b3,e4] [d3,a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]@2 g3 e3 g2 [d3,g3]!2 e3 b3]/4", // A5 C5 C#5 D5 G D5 F5 E5 …
  E: "[[d4,g4]!2 e4 [d4,g4]!2 [c3,g3] [c#3,g#3] [d3,a3,d4]@2 [d3,a3,d4] [d3,b3] [d3,a3] ~ [f3,c4,f4] [e3,b3,e4] [d3,a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]@2 [g2,d3,g3] [g2,e3] g2 [g2,d3] [g2,e3]@2 [g3,d4,g4]]/4", // G5 C5 C#5 D5 G D5 F5 E5 …
  F: "[~@2 [e3,a3]@2 [g3,c4]@2 [f#3,b3]@2 [e3,a3]@2 c3@2 [c#3,f#3]@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [d3,g3]@4 [d3,g3]@2 e3@2 g2@2 [g2,d3]@2 [g2,e3]@2 ~@2 [c#3,e3]@4 a3@2 f#3@2 e3@2 a3@2 c3@2 c#3@2 [e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 [a2,f#3]@2 [e3,a3]@4 e3@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [e2,b2,e3]@4 e3@2 c#3@2 e2@2 [b2,e3]@2 c#3@2 [d3,g3] ~ [c4,e4]@2]/8", // A5 C5 B5 A5 F#5 A5 D A5 …
  G: "[~@2 [a3,f#4]@2 [d3,g3,b3,e4] ~ [a#3,g4]@2 [d3,g3,b3,e4] ~ [b3,g#4]@2 [b3,e4]@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [d3,g3]@4 [d3,g3]@2 e3@2 g2@2 [g2,d3]@2 [g2,e3]@2 ~@2 [d3,a3,d4]@4 [d3,a3,d4]@4 [g2,d3,g3]@8 [e3,a3]@2]/5", // D Em7 D# Em7 E E5 A5 D …
  H: "[~ [e3,a3] f#3 a2 [a2,e3,a3] f#3 ~ [e2,b2,e3]@2 [b2,e3] c#3@2 [e2,b2] [e2,c#3] ~ [a2,e3,a3]@2 [e3,a3] f#3@2 [e3,a3] f#3 ~ [a2,e3,a3]@2 [e3,a3] f#3 e3 [e3,a3] [c3,g3] [c#3,g#3] [d3,a3,d4]@2 [d3,a3,d4] [d3,b3] [d3,a3] ~ [f3,c4,f4] [e3,b3,e4] [d3,a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]@2 g3 e3 g2 [d3,g3]!2 e3 b3]/7", // A5 E5 C#m A5 C5 C#5 D5 G …
  I: "[[d4,g4]!2 e4 [d4,g4]!2 [c3,g3] [c#3,g#3] [d3,a3,d4]@2 [d3,a3,d4] [d3,b3] [d3,a3] ~ [f3,c4,f4] [e3,b3,e4] [d3,a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]@2 [g2,d3,g3] [g2,e3] g2 [g2,d3,g3] [g2,e3]@2 [g3,d4,g4]]/4", // G5 C5 C#5 D5 G D5 F5 E5 …
  J: "[~@2 [e3,a3]@2 [g3,c4]@2 [f#3,b3]@2 [e3,a3]@2 [c3,g3]@2 [c#3,g#3]@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 ~@2 e3@2 [d3,g3]@4 [d3,g3]@2 e3@2 g2@2 [g2,d3]@2 [g2,e3]@2 c3@2 [c#3,e3]@4 a3@2 f#3@2 e3@2 a3@2 c3@2 c#3@2 [e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 [a2,f#3]@2 [e3,a3]@4 e3@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [e2,b2,e3]@4 e3@2 c#3@2 [b2,e3]@4 c#3@2 [d3,g3] ~ [c4,e4]@2]/8", // A5 C5 B5 A5 C5 C#5 A5 D …
  K: "[~@2 [a3,f#4]@2 [d3,g3,b3,e4] ~ [a#3,g4]@2 [d3,g3,b3,e4] ~ [b3,g#4]@2 [b3,e4]@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 f#3 e3 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [d3,g3]@4 [d3,g3]@2 e3@2 g2@2 [g2,d3]@2 [g2,e3]@2 ~@2 [d3,a3,d4]@4 [d3,a3,d4]@4 ~@2 [d3,g3]@2 e3@2 [g2,d3,g3]@2 [e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3,a3]@2 f#3@2 ~@2 [e2,b2,e3]@4 [b2,e3]@2 c#3@4 [e2,b2]@2 [e2,c#3]@2 ~@2 [a2,e3,a3]@2]/7", // D Em7 D# Em7 E E5 A5 D …
  L: "[~@2 [a3,a4] [g3,g4] [e3,e4] [c3,g3] [c#3,g#3] [a2,a3]@6 [c3,g3] [c#3,g#3] [d3,a3,d4]@2 [d3,a3,d4] [d3,b3] [d3,a3] ~ [f3,c4,f4] [e3,b3,e4] [d3,a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]@2 g3 e3 g2 [d3,g3]!2 e3 b3]/5", // A G E C5 C#5 A C5 C#5 …
  M: "[[d4,g4]!2 e4 [d4,g4]!2 [c3,g3] [c#3,g#3] [d3,a3,d4]@2 [d3,a3,d4] [d3,b3] [d3,a3] ~ [f3,c4,f4] [e3,b3,e4] [d3,a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]@3 g3 e3 g2 [d3,g3] e3 [f3,b3]@2 d3 e3 g3@2 [c3,g3] [c#3,g#3] [d3,a3,d4]@2 [d3,a3,d4] [d3,b3] a3 ~ [f3,c4,f4] [e3,b3,e4] [d3,a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]@3 g3 e3 g2 [d3,g3] e3 [f3,b3]]/8", // G5 C5 C#5 D5 G D5 F5 E5 …
  N: "[[d4,g4]!2 e4 [d4,g4]!2 [c3,g3] [c#3,g#3] [d3,a3,d4]@2 [d3,a3,d4] [d3,b3] [d3,a3] ~ [f3,c4,f4] [e3,b3,e4] [d3,a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]]/3", // G5 C5 C#5 D5 G D5 F5 E5 …
  O: "~@3 a3 c#4 e4 f#4 a4",
  P: "[[b4,e5]@4 [b4,e5]@8 ~@2 [b4,e5]@4 [e5,a5]@2 b4 [b4,e5]@2 [e5,a5] b4 [b4,e5]@2 [e5,a5] b4 a4 f#4@2]/2", // E5 A5 E5 A5 E5 A5
  Q: "a4 b4@3 b4@3 b4 [e4,a4] f#4 a4!2 b4 a4 f#4@2", R: "a4@4 a4@3 a4 e4 f#4 a4!2 b4 a4 f#4@2",
  S: "[a4@4 b4 b4@3 ~@2 e4@2 f#4@2 a4@6 f#4@4 ~@2 [e4,a4]@2 f#4@2 a4@2]/2", T: "f#4 e4@3 e4@3 a4 b3@2 a3@2 b3 a3 f#3@2",
  U: "a3@2 a3!2 a3@3 a2 e3 f#3 a3@2 b3 a3 f#3@2", V: "[a3@2 a3@2 ~ a3 c#4 e4@2 e4 f#4 a4@2 e4 f#4 a4]/2",
  W: "e4 f#4@2 a4 [e4,a4] f#4@2 a4 [e4,a4] f#4@2 a4 [e4,a4] f#4@2 a4", // A5
  X: "[e4,a4] f#4@2 a4 [e4,a4] f#4@2 a4 [e4,a4] f#4@2 a4 b4 a4@2 f#4", // A5
  Y: "[a4@4 b4@4 ~@2 e4@2 f#4@2 a4@6 f#4@4 d3 ~@3 e4@2 [f#4,a4]@4 [e4,a4]@2 ~@2 a4@2 [b4,d5]@2 [a4,d5]@2 ~@2 [b4,e5]@12 [c3,g3]@2 [c#3,g#3]@2 [d3,a3,d4]@4 [d3,a3,d4]@2 [d3,b3]@2 [d3,a3]@2 ~@2 [f3,c4,f4]@2 [e3,b3,e4]@2 [d3,a3,d4]@6 [a3,d4]@2 f#3@2 [a3,d4]@2 e2@2 [f#2,c#3]@2 [g2,d3]@4 g3@2 e3@2 g2@2 [d3,g3]@2 [d3,g3]@2 e3@2 b3@2]/7", // F#m A5 Bm D5 E5 C5 C#5 D5 …
  Z: "[~@2 [e3,a3]@2 [g3,c4]@2 [f#3,b3]@2 [e3,a3]@2 c3@2 [c#3,f#3]@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [a2,e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 ~@2 e3@2 [d3,g3]@4 [d3,g3]@2 e3@2 g2@2 [g2,d3]@2 [g2,e3]@2 c3@2 [c#3,e3]@4 a3@2 f#3@2 e3@2 a3@2 c3@2 c#3@2 [e3,a3]@4 [e3,a3]@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 [a2,f#3]@2 [e3,a3]@4 e3@2 f#3@2 a2@2 [a2,e3]@2 [a2,f#3]@2 ~@2 [e2,b2,e3]@4 e3@2 c#3@2 [b2,e3]@4 c#3@2 [d3,g3] ~ [c4,e4]@2]/8", // A5 C5 B5 A5 F#5 A5 D A5 …
  AA: "[[d4,g4]!2 e4 [d4,g4]!2 [c3,g3] [c#3,g#3] [d3,a3,d4]@2 [d3,a3,d4] [d3,b3] [d3,a3] ~ [f3,c4,f4] [e3,b3,e4] [d3,a3,d4]@3 [a3,d4] f#3 [a3,d4] e2 [f#2,c#3] [g2,d3]@2 [d3,g3] [f3,a#3] [e3,a3] [d3,g3] a#2 b2 d3]/4", // G5 C5 C#5 D5 G D5 F5 E5 …
  AB: "[f3,a#3] [e3,a3] [d3,g3] [g2,d3,g3]@5", // A#5 A5 G5
})).s("gm_overdriven_guitar").gain(0.52).pan(1)

// other · synth brass 2
const synth_brass_2 = note("<~@19 A ~@6 B@2 ~@22 B@2 ~@22 C@3 ~@53 C@3 ~@7 D>".pickRestart({
  A: "~ [a3,a4] [c4,c5] [b3,b4] [a3,a4] [g3,b3,g4] [g#3,c4,g#4] [a3,c#4,a4]", // A C B A G G# A
  B: "[~@5 [d3,d4] [e3,e4] [g3,g4]@8 [g3,g4]]/2", // D E G
  C: "[~@10 [d3,d4]@2 [e3,e4]@2 [g3,g4]@16 [g3,g4]@6 [e4,e5]@2 [a#3,a#4] [b3,b4]@2 ~ [g3,g4]@2 ~@4]/3", // D E G E A# B G
  D: "~ [e3,e4] [d3,d4] [g3,g4]@2 ~@3", // E D G
})).s("gm_synth_brass_2").gain(0.56)

// bass · electric bass pick
const bass = note("<~@4 A@8 B@8 C@8 A@8 B@8 D@8 E@8 B@8 F@8 G@8 H@8 I@8 J@8 A@8 B@8 F@8 K@8 L>".pickRestart({
  A: "[~ a2 c3 b2 a2 c2 c#2 a1@2 e2 f#2 a1 e2 f#2 ~ a1@2 e2 f#2 a1 e2 e1 f#1 a1@2 d2 e2 g1 d2 e2 ~ a1@2 a2 f#2 e2 ~ c2 c#2 a2@2 e2 f#2 a1 e2 f#2 ~ a1@2 e2 f#2 a1 e2 b1 c#2 e1@2 e1 c#2 e1 b1 c#2 ~ e1]/8",
  B: "[~ f#1 ~ g1 ~ g#1 ~ a1@2 e2 f#2 a1 e2 f#2 ~ a1@2 e2 f#2 a1 e2 e1 f#1 g1@2 d2 e2 g1 d2 e2 c2 d2@2 d2!2 g1@2 g1!2 a1@2 e2 f#2 a1 e2 g1 g#1 e1@2 e1 c#2 e1 b1 e1!2 a1@2 a1 f#2 a2 e2 f#2!2 a2]/8",
  C: "[~ a2 a1 ~ a1 c2 c#2 d2@2 d2 d2@2 ~ f2 e2 d2@2 d2!2 c2 d2 e1 f#1 g1@2 g2 e2 g2 d2 e2 ~ g1@2 g1!2 ~@2 c2 c#2 d2@2 d2!2 ~@2 f2 e2 d2@3 d2 c2 d2 e1 f#1 g1@2 g2 e2 g2!2 a2 g2 g1]/8",
  D: "[~ a2 a1 ~ a1 c2 c#2 d2@2 d2 d2@2 ~ f2 e2 d2@2 d2!2 c2 d2 e1 f#1 g1@2 g2 e2 g2 d2 e2 ~ g1@2 g1!2 ~@2 c2 c#2 d2@2 d2!2 ~@2 f2 e2 d2@2 d2!2 c2 d2 e1 f#1 g1@2 g2 e2 g2 d2 e2 ~ g1]/8",
  E: "[~ g1!2 ~@2 c2 c#2 d2@2 e2 f#2 a1 e2 f#2 ~ a1@2 e2 f#2 a1 e2 e1 f#1 a1@2 d2 e2 g1 d2 e2 ~ a1@2 a2 f#2 e2 ~ c2 c#2 a2@2 e2 f#2 a1 e2 f#2 ~ a1@2 e2 f#2 a1 e2 b1 c#2 e1@2 e1 c#2 e1 b1 c#2 ~ e1]/8",
  F: "[~ a2 a1 ~ a1 c2 c#2 d2@2 d2 d2@2 ~ f2 e2 d2@2 d2!2 c2 d2 e1 f#1 g1@2 g2 e2 g2 d2 e2 ~ g1@2 g1!2 ~@2 c2 c#2 d2@2 d2!2 ~@2 f2 e2 d2@3 d2 c2 d2 e1 f#1 g1@2 g2 e2 g2 d2 e2 ~@2]/8",
  G: "[~ e1 f#1 g1 a1 c2 c#2 d2@2 d2 ~@3 f2 e2 d2@3 d2 c2 d2 e1 f#1 g1@2 g2 e2 g2 d2 e2 ~ g1@2 g1 ~@3 c2 c#2 d2@2 d2!2 ~@2 f2 e2 d2@2 d2!2 c2 d2 e1 f#1 g1@2 g2 e2 g2 d2 e2 ~ g1]/8",
  H: "[~ e2@2 d2!2 e1 f#1 a1@2 a1 f#1 e1 a1 f#1 ~ a1@2 a1 f#1 e1 a1 f#1 ~ g1@2 d2 e2 g1 d2 e2 ~ a1@2 a1 f#1 e1 a1 c2 c#2 a1@2 a1 f#1 e1 a1 f#1 ~ a1@2 a1 f#1 e1 a1 f#1 ~ g1@2 d2 e2 g1 d2 e2 ~ a1]/8",
  I: "[~ a1 f#1 e1 a1 f#1 ~ a1@2 a1 f#1 e1 a1 f#1 ~ a1@2 a1 f#1 e1 a1 f#1 ~ g1@2 d2 e2 d2 g1 e1 ~ f#1@2 c#2@3 ~ d2 g1 a1@2 a1 f#1 e1 a1 f#1 ~ a1@2 a1 f#1 e1 a1 f#1 ~ c2@4 g1@4 a1]/8",
  J: "[~ a1 f#2 a2 ~ c2 c#2 d2@2 d2 d2@2 ~ f2 e2 d2@2 d2!2 c2 d2 e1 f#1 g1@2 g2 e2 g2 d2 e2 ~ g1@2 g1!2 ~@2 c2 c#2 d2@2 d2!2 ~@2 f2 e2 d2@3 d2 c2 d2 e1 f#1 g1@2 g2 e2 g2!2 a2 g2 g1]/8",
  K: "[~ e1 f#1 g1 a1 c2 c#2 d2@2 d2 ~@3 f2 e2 d2@3 d2 c2 d2 e1 f#1 g1@2 g2 e2 g2 d2 e2 ~ g1@2 g1 ~@3 c2 c#2 d2@2 d2!2 ~@2 f2 e2 d2@2 d2!2 c2 d2 e1 f#1 g1@2 g1 a#1 b1 g2 a#1 b1 d2]/8",
  L: "b1 a1 g1 g1@5",
})).s("gm_electric_bass_pick").gain(0.8)

// chords · electric guitar clean
const electric_guitar_clean_2 = note("<~@83 A@2 ~ B ~@4 C ~@49>".pickRestart({
  A: "[~@2 g3 e3 g2 [d3,g3] e3 [f3,b3]@2 [g2,f3,b3]@3 d3 g2 [c3,f3] e3]/2", B: "~@4 a5@3 ~ a5@3 ~@5", C: "~@7 e4 ~@8",
})).s("gm_electric_guitar_clean").gain(0.64).pan(1)

// chords · piano
const piano = note(`<
  ~@4 A B C D@2 E@2 F G H@2 I@2 J K L@2 M N O P Q@2 R S B C T@2 U@2 F G H@2 V@2 J K W X M N O P Q@2 R ~ B C D@2 E@2 F G
  H@2 I@2 Y K W Z M N O P AA AB@2 AC AA N AD AE AF@2 ~ AG AH C T@2 AH C T@2 AI AJ AK AL AM AN@3 M N O P Q@2 R S B C D@2
  AO@2 F G H@2 I@2 Y K W Z M N O P Q@2 R AP AQ@2 AD P AR AS AT AU
>`.pickRestart({
  A: "~@2 [a2,a3] ~ [c3,c4]@2 [b2,b3]@2 ~ [d6,e6] [g5,a5,b5,c6] [d5,f5] [g4,b4] ~@3", // A C B Dsus2 Cmaj7 Dm G
  B: "a5 [e5,a5] e5!3 [e5,a5] a5 e5 a5 ~@3 [a3,c#4,e4] ~ [a2,e3] ~", // A5 A A5
  C: "[a3,c#4,e4] ~ e3 ~ [a3,c#4,e4] ~ [a2,e3] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 ~@2 g2@2", // A A5 A
  D: "[[g3,b3]@2 ~@2 [g3,b3,d4] ~ g2 ~ [g3,b3,d4] ~ [g3,b3,d4] ~@3 [a2,e3]@4 [g3,c#4,e4] ~ e3 ~ [a3,c#4] ~ e3 ~ [a3,c#4]@2 e3 ~@3]/2", // G A5 C#dim A
  E: "[[a2,e3,a3,c#4,e4]@3 ~ [a3,c#4,e4] ~ e3 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a2,e3] ~ [a3,c#4,e4]@5 ~ [a3,c#4,e4] ~ e3 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@5]/2", // A A5 A
  F: "[e2,g#3,b3,e4]@3 ~ [g#3,b3,e4] ~@5 [g#4,e5] ~ [a4,f#5] ~ [a#4,g5] ~", // E C#m D D#
  G: "[b4,g#5]@2 ~@2 [b4,g#5] ~ [a#4,g5] ~ [b4,g#5] ~ [a#4,g5] ~ [a4,f#5] ~ [g#4,e5] ~", // E D# E D# D C#m
  H: "[[a2,e3,a3,c#4,e4]@3 ~ [b3,d4,e4] ~ e3 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ e3 ~ [a3,c#4,e4]@6 e3 ~@3 [a3,c#4,e4] ~ [a3,c#4,e4] ~@5]/2", // A E7 A
  I: "[[g2,g3,b3,d4]@3 ~ [g3,b3,d4]@2 g2 ~ [a3,d4] ~@5 [d3,f#3,a3,d4]@4 ~@4 [g2,g3,b3,d4]@6 ~@4]/2", // G D5 D G
  J: "[a2,e3,a3,c#4,e4]@3 ~ [b3,d4,e4]@2 e3 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [g#3,b3,e4]@2", // A E7 A E
  K: "~@2 [g#3,b3,d4,e4] ~@3 [g#3,b3,e4]@4 ~@2 [g#3,b3,e4] ~@3", // E7 E
  L: "[~@2 [a3,a4] [g3,g4] [e3,e4] [c3,g3] [c#3,g#3] [a2,a3]@9]/2", M: "~@4 [d4,f#4,a4] ~ a3 ~@5 [d4,f#4,a4] ~@3",
  N: "~@2 [d3,a3]@2 [d4,e4,f#4,a4] ~ a3 d3 [d4,f#4,a4] ~ [e4,f#4,a4] ~ d4 ~ g2@2", // D5 D F#m7
  O: "~@4 [d5,g5]!4 [d5,g5]@2 [c#5,g5]@2 [c5,g5]@2 [a#4,g5]@2", P: "[b4,g5] [c5,g5] [b4,g5] [g4,g5]@5",
  Q: "[[d3,a3,d4,f#4]@3 ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@3 [a3,d4,f#4]@4 d3 ~ [a3,d4,f#4] ~ d3 ~ [a3,d4,f#4] ~ [a3,d4,f#4]@2 ~@2 [g3,b3,d4]@2]/2", // D G
  R: "~@2 g2@2 [g3,b3,d4] ~ g2 ~ [g3,b3,d4] ~ [g3,b3,d4] ~@3 [g3,a3,d4]@2", // G Gsus2
  S: "~@2 a2@2 c3@2 b2@2 a2@2 c3@2 c#3@2 a2 ~",
  T: "[[g3,b3]@2 ~@2 [g3,b3,d4] ~ g2 ~ [g3,b3,d4] ~ [g3,b3,d4] ~@3 [a2,e3]@4 [g3,c#4,e4] ~ e3 ~ [a3,c#4] ~ e3 ~ [a3,c#4] ~ e3 ~@3]/2", // G A5 C#dim A
  U: "[[a2,e3,a3,c#4,e4]@3 ~ [a3,c#4,e4] ~ e3 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a2,e3] ~ [a3,c#4,e4]@5 ~ [a3,c#4,e4] ~ e3 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 ~@4]/2", // A A5 A
  V: "[[g2,g3,b3,d4]@3 ~ [g3,b3,d4] ~ g2 ~ [a3,d4] ~@5 [d3,f#3,a3,d4]@4 ~@4 [g2,g3,b3,d4]@6 ~@4]/2", // G D5 D G
  W: "~@2 [c#4,a4] ~@3 [d#4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~", // F#m D#dim A5
  X: "e4 ~ [d#4,a4] ~ [d4,a4] ~ c#4 ~@7 [d3,a3,d5,f#5,a5]@2", // D#dim D5 D
  Y: "[a2,e3,a3,c#4,e4]@3 ~ [b3,d4,e4] ~ e3 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [g#3,b3,e4]@2", // A E7 A E
  Z: "e4 ~ [d#4,a4]@2 [d4,a4] ~ c#4 ~@7 [d3,a3,d5,f#5,a5]@2", // D#dim D5 D
  AA: "[d3,a3,d4,f#4]@3 ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@3 [a3,d4,f#4]@2", // D
  AB: "[~@2 [d3,a3]@2 [d4,e4,f#4,a4] ~ a3 d3 [d4,f#4,a4] ~ [e4,f#4,a4] ~ d4 ~ g2@4 [f3,b3,d4] ~ g2 ~ f3 ~ [g3,b3,d4]@2 g2@2 [g3,a3,d4] ~ [f3,a3,d4]@2]/2", // D5 D F#m7 Bdim G Gsus2 Dm
  AC: "d3 ~ [f3,g3,b3,d4] ~ g2@2 [g3,a3,d4]@2 d3 ~ [g3,b3,d4]@3 ~@3", // G7 Gsus2 G
  AD: "~@4 a#4 b4 [d5,g5] a#4 b4 [d5,g5] a#4 b4 [d5,g5] a#4 b4 [d5,g5]", // G5
  AE: "a#4 b4 [d5,g5] a#4 b4 [d5,g5] a#4 b4 [d5,g5] a#4 b4 [d5,g5] a#4 b4 [d5,g5] b4", // G5
  AF: "[[d3,a3,d4,f#4]@3 ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@3 [a3,d4,f#4]@5 ~ [g#3,b3,e4] ~@5 [g#4,e5] ~ [a4,f#5] ~ [a#4,g5] ~]/2", // D E C#m D D#
  AG: "~@6 [c6,d6,e6] [g5,b5] [d5,e5,f5] [a4,b4,c5] [f4,g4] [d4,e4] [b3,c4] [f3,g3,a3] [c3,d3,e3] b2", // C G Dm Am Fsus2 Dsus2 Cmaj7 F …
  AH: "a5 [e5,a5]!2 e5 a5 e5 a5 e5 a5 ~@3 [a3,c#4,e4] ~ [a2,e3] ~", // A5 A A5
  AI: "[a3,e4,a4,e5]@3 ~ [a4,e5] ~ e4 ~ [a4,e5] ~ [a4,e5] ~ e4 ~ [a4,c#5,e5] ~", // A5 A
  AJ: "e4 ~ [a4,e5] ~ e4@2 [a4,e5]@2 e4 ~ [a4,e5] ~@5", AK: "~@2 [g3,g4,b4,d5] ~@3 [a4,d5]@2 g3@2 g4@2 ~@2 f#3 ~",
  AL: "~@2 [f#4,a4,d5] ~ f#3 ~ g4@2 g3@2 [g4,b4,d5]@2 ~@4", // D G
  AM: "~@4 [a3,c#4,e4] ~@3 [a3,c#4,e4]@2 [e3,f3] ~ [a3,c#4,e4] ~ [b3,d4,e4] ~", // A Fmaj7 A E7
  AN: "[~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4]@4 [a2,e3]@2 [b3,e4] ~ [c3,c4,e4,g4]@4 ~@4 [g2,g3,b3,d4]@3 ~ [b3,d4] ~@3 a2@4 [a3,c#4,e4] ~@7 [a4,e5] ~ [a4,e5] ~@3]/3", // A A5 E5 C G Bm A A5
  AO: "[[a2,e3,a3,c#4,e4]@3 ~ [a3,c#4,e4] ~ e3 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a2,e3] ~ [a3,c#4,e4]@5 ~ [a3,c#4,e4] ~ e3 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 ~@4]/2", // A A5 A
  AP: "~@2 [g3,b3,d4] ~ g2 ~ [g3,a3,d4]@2 g2@2 [g3,b3,d4] ~ g3 ~ d3@2", // G Gsus2 G
  AQ: "[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~", // D5
  AR: "d6 [f#5,d6] f#5 d6 [f#5,d6] d6!2 [f#5,d6] ~@8", AS: "~@6 d5 ~@3 [d5,a5] ~@5",
  AT: "[g2,g3,b3,d4] ~@7 [g2,f3,b3,d4] ~@7", AU: "[g2,f3,b3,d4] ~ [g3,b3,d4] ~ d3 ~ [g2,d4,g4]@10",
})).s("gm_piano").gain(0.4).pan(0)

// other · electric guitar clean
const electric_guitar_clean_3 = note("<~@86 [~@4 a4@3 ~ a4@3 ~@5] ~@4 [~@7 e3 ~@8] ~@49>")
  .s("gm_electric_guitar_clean").gain(0.64).pan(1)

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

// drums · snare
const snare = s("sd").struct(`<
  A B C A B@16 D B@7 A B@15 D B@7 A B@15 D B@7 D B@7 A B@15 D B@3 D B@3 A B@15 D B@7 D B@3 D B@2 ~ E
>`.pickRestart({
  A: "~@7 x", B: "~ x ~ x", C: "~ x!3", D: "~@2 x ~@3 x!2", E: "x!2 ~@2",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<A ~ B C D ~@23 C ~@23 C ~@31 C ~@23 C ~@30 E F>".pickRestart({
  A: "~@2 x!2", B: "~@3 x ~ x ~@2", C: "~ x!4 ~@2 x", D: "~@5 x ~ x", E: "~ x ~ x!2 ~ x ~", F: "~ x ~ x ~@4",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@4 A B@23 ~ B@23 ~ B@31 ~ B@23 ~ B@30 ~@2>".pickRestart({
  A: "~ x!3", B: "x!4",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~ B A ~@24 A ~@23 A ~@31 A ~@23 A ~@30 C D>".pickRestart({
  A: "~@5 x!2 ~", B: "~@5 x ~ x", C: "x ~ x ~@2 x ~ x", D: "x!2 ~@2",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@11 A B ~@22 A B ~@22 A B ~@54 A B ~@24>".pickRestart({
  A: "~@7 x", B: "~ x ~ x ~ x ~@2",
})).gain(0.8)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~ [~ x ~ x] [~ x!3] ~@138>").gain(0.8)

stack(
  electric_guitar_clean, overdriven_guitar, synth_brass_2, bass, electric_guitar_clean_2, piano,
  electric_guitar_clean_3, kick, snare, low_tom, hihat, mid_tom, open_hat, crash, ride_bell
)

More by Lynyrd Skynyrd