Strudelify
KeyF♯ minorTempo120 bpm
0:00/0:00
// Ronnie — The Four Seasons
// 120 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 96 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Bass Guitar.
setcpm(120/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 · electric guitar jazz · "Lead Guitar"
const electric_guitar_jazz = note(`<
  A B C@2 D E F G H I F G H I J K L M J K N O P@2 Q R F G H I F G H I J K L M J K N O P@2 Q S T U V W X Y Z AA S AB AC@2
  AD AE AC@2 AD AE J K L M J K N O P@2 Q AF AG AH AI@2 AJ AK AG AH AI@2 AJ AK AG AH AI@2 AJ AK AL@2
>`.pickRestart({
  A: "a4@3 ~ g#4@3 ~ a4@3 ~ b4@3 ~ a4@3 ~ g#4@3 ~",
  B: "[c#4,f#4,a4]@3 ~ [c#4,f4,g#4]@3 ~ [c#4,f#4,a4]@3 ~ [d#4,f#4,b4]@3 ~ [d#4,f#4,a4]@3 ~ [d#4,f#4,b4]@3 ~", // F#m C# F#m B D#dim B
  C: "[[d4,f#4,a4,c#5]@34 ~@2 f#4@3 ~ g#4@3 ~ a4@3 ~]/2", D: "c#5@14 ~ d5@2 ~ c#5@5 ~", E: "[d4,e4,g#4,b4]@19 ~@5",
  F: "~@6 [a3,c#4,e4]@5 ~ [a3,c#4,e4]@5 ~ [a3,c#4,e4]@5 ~", G: "[g#3,c#4,e4]@14 ~@4 [g#3,c#4,e4]@5 ~",
  H: "[a3,c#4,f#4]@5 ~ [f#3,a3,c#4]@10 ~@5 c#4@2 ~", // F#m
  I: "[f#3,b3,d4]@5 ~ [d3,f#3,b3]@5 ~ [b2,e3,a3]@5 ~ [b2,d3,g#3]@5 ~", J: "[a2,d3,f#3]@5 ~ [a2,d3,f#3]@14 ~@4",
  K: "[b2,d3,f#3]@5 ~ [b2,d3,f#3]@5 ~ [b2,e3,g#3]@5 ~ [b2,e3,g#3]@5 ~", // Bm E
  L: "[c#3,e3,a3]@3 ~ [c#3,e3,g#3]@3 ~ [a2,c#3,f#3]@3 ~ [a2,c#3,e3]@10 ~@2", M: "[a2,c#3,e3]@5 ~ [a2,c#3,e3]@5 ~@13",
  N: "a3@3 ~ g#3@3 ~ a3@3 ~ b3@3 ~ a3@3 ~ g#3@3 ~",
  O: "[c#3,f#3,a3]@3 ~ [c#3,f3,g#3]@3 ~ [c#3,f#3,a3]@3 ~ [d#3,f#3,b3]@3 ~ [d#3,f#3,a3]@3 ~ [d#3,f#3,b3]@3 ~", // F#m C# F#m B D#dim B
  P: "[[d3,f#3,a3,c#4]@34 ~@2 f#3@3 ~ g#3@3 ~ a3@3 ~]/2", Q: "c#4@14 ~ d4@2 ~ c#4@5 ~", R: "[d3,e3,g#3,b3]@19 ~@5",
  S: "[f3,g#3,c#4]@19 ~@5", T: "~@3 [f#3,f#4]@2 ~ [f#3,f#4]@4 ~ [c#3,c#4] [c#3,c#4]@4 ~ [a#2,a#3] [a#2,a#3]@5 ~",
  U: "~@6 f4@2 ~ c#4@2 ~ c#4@5 ~ d#4@5 ~", V: "e4@4 ~ e4 e4@4 ~ c#4 c#4@4 ~ a#3 a#3@5 ~",
  W: "~@3 d#4@4 ~ c#4 b3@5 ~ b3@5 ~ c#4@2 ~", X: "d4@4 ~ d4 d4@4 ~ b3 b3@4 ~ f#3 f#3@4 ~ f#3",
  Y: "[a#2,a#3]@5 ~ [c#3,f#3,a#3]@5 ~ [f#3,a#3,d#4]@7 ~@2 [f#3,a#3,c#4]@2 ~", Z: "c#4@19 ~@5",
  AA: "[d#3,f#3,b3]@5 ~ [d#3,f#3,a#3]@5 ~ [f#3,b3,d#4]@7 ~@2 [f#3,b3,f4]@2 ~", // B D#m B
  AB: "[e3,e4]@3 ~ [d3,d4]@3 ~ [c#3,c#4]@3 ~ [b2,b3]@3 ~ [a2,a3]@3 ~ [g#2,g#3]@3 ~", // E D C# B A G#
  AC: "[[a2,a3]@5 ~ [a2,c#3,e3]@5 ~ a3@10 ~@2 a3@14 ~@9 f#4, ~@6 [c#4,e4]@13 ~@5]/2", // A C#m
  AD: "[a3,c#4,f#4]@4 ~ [f#3,a3,c#4] [f#3,a3,c#4]@10 ~@5 c#4@2 ~", AE: "d4@2 ~ b3@2 ~ b3@5 ~ a3@5 ~ g#3@5 ~",
  AF: "[d3,e3,g#3,b3]@7 ~@5", AG: "a#3@3 ~ a3@3 ~ a#3@3 ~ c4@3 ~ a#3@3 ~ a3@3 ~",
  AH: "[d3,g3,a#3]@3 ~ [d3,f#3,a3]@3 ~ [d3,g3,a#3]@3 ~ [d#3,g3,c4]@3 ~ [d#3,g3,a#3]@3 ~ [d#3,g3,c4]@3 ~", // Gm D Gm Cm D# Cm
  AI: "[[d#3,g3,a#3,d4]@34 ~@2 g3@3 ~ a3@3 ~ a#3@3 ~]/2", AJ: "d4@14 ~ d#4@2 ~ d4@2 ~@4", AK: "[d#3,f3,a3,c4]@19 ~@5",
  AL: "[[d3,f3,a#3]@43 ~@5]/2", // A#
})).s("gm_electric_guitar_jazz").gain(0.15).pan(0.8)

// chords · electric guitar jazz · "Lead Guitar"
const electric_guitar_jazz_2 = note(`<
  A ~@2 B C ~@15 A ~@2 D C ~@15 A ~@2 D C ~@2 E@2 F@2 ~ G ~@6 H ~@3 H ~@6 A ~@2 D C ~ I ~@2 J K ~ I ~@2 J K ~ I ~@2 J K
  ~@3
>`.pickRestart({
  A: "[c#3,e3]@5 ~ [c#3,f3]@5 ~", B: "~@6 c#3@5 ~", C: "[d3,f#3,a3]@19 ~@5", D: "~@6 c#4@5 ~",
  E: "[[f#3,a#3]@28 ~ e3 e3@4 ~ e3 c#3@4 ~ a#2 a#2@5 ~]/2", F: "[f#3@28 ~ d3 d3@4 ~ b2 b2@4 ~ f#2 f#2@4 ~ g#2]/2",
  G: "[f3,a#3]@5 ~ [f3,a#3]@5 ~ [f3,a#3]@5 ~ [f3,a#3]@5 ~", H: "f#3@5 ~ [b2,e3]@5 ~", I: "[d3,f3]@5 ~ [d3,f#3]@5 ~",
  J: "~@6 d3@5 ~", K: "[d#3,g3,a#3]@19 ~@5",
})).s("gm_electric_guitar_jazz").gain(0.15).pan(0.8)

// chords · electric guitar jazz · "Rythm Guitar"
const electric_guitar_jazz_3 = note(`<
  A B C D E F G H I J G H I J K L M N K L ~ O P Q R F G H I J G H I J K L M N K L ~ O P Q R S T U V W X Y Z AA AB ~ AC
  AD I AE AC AD I AE K L M N K L ~ O P Q R F AF AG AH AI AJ AK AF AG AH AI AJ AK AF AG AH AI AJ AK AL@2
>`.pickRestart({
  A: "[a2,e3,a3,c#4,e4]@7 ~@2 [a2,e3,a3,c#4,e4]@2 ~ [c#3,g#3,b3,f4,g#4]@7 ~@2 [c#3,g#3,b3,f4,g#4]@2 ~", // A C#7
  B: "[f#2,c#3,f#3,a3,c#4,f#4]@3 ~ [f#2,c#3,f#3,a3,c#4,f#4]@3 ~ [f#2,c#3,f#3,a3,c#4,f#4]@3 ~ [b2,d#3,a3,b3,f#4]@3 ~ [b2,d#3,a3,b3,f#4]@3 ~ [b2,d#3,a3,b3,f#4]@3 ~", // F#m B7
  C: "[f#2,a2,d3,a3,c#4,f#4]@7 ~@2 [f#2,a2,d3,a3,c#4,f#4]@2 ~ [f#2,a2,d3,a3,c#4,f#4]@7 ~@2 [f#2,a2,d3,a3,c#4,f#4]@2 ~", // Dmaj7
  D: "[f#2,a2,d3,a3,c#4,f#4]@7 ~@2 [f#2,a2,d3,a3,c#4,f#4]@2 ~ [f#2,a2,d3,a3,c#4,f#4]@3 ~ [f#2,a2,d3,a3,c#4,f#4]@3 ~ [f#2,a2,d3,a3,c#4,f#4]@3 ~", // Dmaj7
  E: "[f#2,b2,d3,a3,c#4,f#4]@7 ~@2 [f#2,b2,d3,a3,c#4,f#4]@2 ~ [f#2,b2,d3,a3,c#4,f#4]@7 ~@2 [f#2,b2,d3,a3,c#4,f#4]@2 ~", // Dmaj7
  F: "[e2,b2,d3,g#3,b3,e4]@5 ~ [e2,b2,d3,g#3,b3,e4]@5 ~ [e2,b2,d3,g#3,b3,e4]@5 ~ [e2,b2,d3,g#3,b3,e4]@5 ~", // E7
  G: "[a2,e3,a3,c#4,e4]@7 ~@2 [a2,e3,a3,c#4,e4]@2 ~ [a2,e3,a3,c#4,e4]@7 ~@2 [a2,e3,a3,c#4,e4]@2 ~", // A
  H: "[g#2,c#3,g#3,c#4,e4,g#4]@7 ~@2 [g#2,c#3,g#3,c#4,e4,g#4]@2 ~ [g#2,c#3,g#3,c#4,e4,g#4]@5 ~ [g#2,c#3,g#3,c#4,e4,g#4]@5 ~", // C#m
  I: "[f#2,c#3,f#3,a3,c#4,f#4]@7 ~@2 [f#2,c#3,f#3,a3,c#4,f#4]@2 ~ [f#2,c#3,f#3,a3,c#4,f#4]@5 ~ [f#2,c#3,f#3,a3,c#4,f#4]@5 ~", // F#m
  J: "[f#2,b2,f#3,b3,d4,f#4]@5 ~ [f#2,b2,f#3,b3,d4,f#4]@5 ~ [e2,b2,d3,g#3,b3,e4]@5 ~ [e2,b2,d3,g#3,b3,e4]@5 ~", // Bm E7
  K: "[d3,a3,d4,f#4]@7 ~@2 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@5 ~", // D
  L: "[f#2,b2,f#3,b3,d4,f#4]@7 ~@2 [f#2,b2,f#3,b3,d4,f#4]@2 ~ [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@5 ~", // Bm E
  M: "[a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@7 ~@2 [a2,e3,a3,c#4,e4]@2 ~", // A
  N: "[a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@5 ~@13", // A
  O: "[f#3,c#4,f#4,a4,c#5,f#5]@3 ~ [f#3,c#4,f#4,a4,c#5,f#5]@3 ~ [f#3,c#4,f#4,a4,c#5,f#5]@3 ~ [f#3,b3,d#4,a4,b4,f#5]@3 ~ [f#3,b3,d#4,a4,b4,f#5]@3 ~ [f#3,b3,d#4,a4,b4,f#5]@3 ~", // F#m B7
  P: "[f#3,a3,d4,a4,c#5,f#5]@7 ~@2 [f#3,a3,d4,a4,c#5,f#5]@2 ~ [f#3,a3,d4,a4,c#5,f#5]@7 ~@2 [f#3,a3,d4,a4,c#5,f#5]@2 ~", // Dmaj7
  Q: "[f#3,a3,d4,a4,c#5,f#5]@7 ~@2 [f#3,a3,d4,a4,c#5,f#5]@2 ~ [f#3,a3,d4,a4,c#5,f#5]@3 ~ [f#3,a3,d4,a4,c#5,f#5]@3 ~ [f#3,a3,d4,a4,c#5,f#5]@3 ~", // Dmaj7
  R: "[b2,d3,a3,c#4,f#4]@7 ~@2 [b2,d3,a3,c#4,f#4]@2 ~ [b2,d3,a3,c#4,f#4]@7 ~@2 [b2,d3,a3,c#4,f#4]@2 ~", // Bm7
  S: "[c#3,f#3,g#3,c#4,f#4]@5 ~ [c#3,f#3,g#3,c#4,f#4]@5 ~ [c#3,f#3,g#3,c#4,f#4]@5 ~ [c#3,f#3,g#3,c#4,f#4]@5 ~", // C#sus4
  T: "[f#2,c#3,f#3,a#3,c#4,f#4]@5 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@5 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@5 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@5 ~", // F#
  U: "[f#2,c#3,f#3,a#3,c#4,f#4]@2 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@2 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@2 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@2 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@5 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@5 ~", // F#
  V: "[f#2,c#3,f3,a#3,c#4,f#4]@5 ~ [f#2,c#3,f3,a#3,c#4,f#4]@5 ~ [f#2,c#3,f3,a#3,c#4,f#4]@5 ~ [f#2,c#3,f3,a#3,c#4,f#4]@5 ~", // F#maj7
  W: "[f#2,b2,f#3,b3,d4,f#4]@2 ~ [f#2,b2,f#3,b3,d4,f#4]@2 ~ [f#2,b2,f#3,b3,d4,f#4]@2 ~ [f#2,b2,f#3,b3,d4,f#4]@2 ~ [f#2,b2,f#3,b3,d4,f#4]@5 ~ [f#2,b2,f#3,b3,d4,f#4]@5 ~", // Bm
  X: "[f#2,b2,f#3,b3,d4,f#4]@5 ~ [f#2,b2,f#3,b3,d4,f#4]@5 ~ [f#2,b2,f#3,b3,d4,f#4]@5 ~ [f#2,b2,f#3,b3,d4,f#4]@5 ~", // Bm
  Y: "[f#2,c#3,f#3,a#3,c#4,f#4]@7 ~@2 [f#2,c#3,f#3,a#3,c#4,f#4]@2 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@5 ~ [f#2,c#3,f#3,a#3,c#4,f#4]@5 ~", // F#
  Z: "[a#2,f#3,a#3,c#4]@5 ~ [a#2,f#3,a#3,c#4]@5 ~ [a#2,f#3,a#3,c#4]@5 ~ [a#2,f#3,a#3,c#4]@5 ~", // F#
  AA: "[f#2,b2,f#3,b3,d#4,f#4]@7 ~@2 [f#2,b2,f#3,b3,d#4,f#4]@2 ~ [f#2,b2,f#3,b3,d#4,f#4]@5 ~ [f#2,b2,f#3,b3,d#4,f#4]@5 ~", // B
  AB: "[c#3,f3,g#3,c#4,f4]@7 ~@2 [c#3,f3,g#3,c#4,f4]@2 ~ [c#3,f3,g#3,c#4,f4]@5 ~ [c#3,f3,g#3,c#4,f4]@5 ~", // C#
  AC: "[a2,e3,a3,c#4,e4]@7 ~@2 [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@5 ~ [a2,e3,a3,c#4,e4]@3 [a2,e3,a3,c#4,e4]@3", // A
  AD: "[g#2,c#3,g#3,c#4,e4,g#4]@7 ~@2 [g#2,c#3,g#3,c#4,e4,g#4]@2 ~ [g#2,c#3,g#3,c#4,e4,g#4]@5 ~ [g#2,c#3,g#3,c#4,e4,g#4]@2 ~ [g#2,c#3,g#3,c#4,e4,g#4]@2 ~", // C#m
  AE: "[f#2,b2,f#3,b3,d4,f#4]@5 ~ [f#2,b2,f#3,b3,d4,f#4]@5 ~ [e2,b2,e3,g#3,b3,e4]@5 ~ [e2,b2,e3,g#3,b3,e4]@5 ~", // Bm E
  AF: "[f3,a#3,d4,f4]@4 [f3,a#3,d4,f4]@4 [f3,a#3,d4,f4]@4 [d3,a3,c4,f#4]@3 ~ [d3,a3,c4,f#4]@3 ~ [d3,a3,c4,f#4]@3 ~", // A# D7
  AG: "[g2,d3,g3,a#3,d4,f4]@3 ~ [g2,d3,g3,a#3,d4,f4]@3 ~ [g2,d3,g3,a#3,d4,f4]@3 ~ [g3,c4,d#4,g4]@3 ~ [g3,c4,d#4,g4]@3 ~ [g3,c4,d#4,g4]@3 ~", // Gm7 Cm
  AH: "[g2,d3,g3,a#3,d#4,g4]@7 ~@2 [g2,d3,g3,a#3,d#4,g4]@2 ~ [g2,d3,g3,a#3,d#4,g4]@7 ~@2 [g2,d3,g3,a#3,d#4,g4]@2 ~", // D#maj7
  AI: "[g2,d3,g3,a#3,d#4,g4]@7 ~@2 [g2,d3,g3,a#3,d#4,g4]@2 ~ [g2,d3,g3,a#3,d#4,g4]@3 ~ [g2,d3,g3,a#3,d#4,g4]@3 ~ [g2,d3,g3,a#3,d#4,g4]@3 ~", // D#maj7
  AJ: "[g2,c3,d#3,a#3,d4,g4]@7 ~@2 [g2,c3,d#3,a#3,d4,g4]@2 ~ [g2,c3,d#3,a#3,d4,g4]@6 [g2,c3,d#3,a#3,d4,g4]@2 ~ [g2,c3,d#3,a#3,d4,g4]@2 ~", // Cm7
  AK: "[f2,c3,d#3,a3,c4,f4]@5 ~ [f2,c3,d#3,a3,c4,f4]@5 ~ [f2,c3,d#3,a3,c4,f4]@5 ~ [f2,c3,d#3,a3,c4,f4]@5 ~", // F7
  AL: "[[f3,a#3,d4,f4]@47 ~]/2", // A#
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.9)

// chords · piano
const piano = note(`<
  A B C@2 D E F G H I F G H I J K L M J K A B N@2 D E F G H I F G H I J K L M J K A B N@2 D O P Q R S T U V W O X Y@2 Z
  AA Y@2 Z AA J K L M J K A B N@2 D AB AC AD AE@2 AF AG AC AD AE@2 AF AG AC AD AE@2 AF AG AH@2
>`.pickRestart({
  A: "a4@3 ~ g#4@3 ~ a4@3 ~ b4@3 ~ a4@3 ~ g#4@3 ~",
  B: "[c#4,f#4,a4]@3 ~ [c#4,f4,g#4]@3 ~ [c#4,f#4,a4]@3 ~ [d#4,f#4,b4]@3 ~ [d#4,f#4,a4]@3 ~ [d#4,f#4,b4]@3 ~", // F#m C# F#m B D#dim B
  C: "[d4@19 ~@5 d4@10 ~@2 f#4@3 ~ g#4@3 ~ a4@3 ~, [f#4,a4,c#5]@17 ~@7]/2", D: "c#5@14 ~ d5@2 ~ c#5@5 ~",
  E: "[d4,e4,g#4,b4]@19 ~@5", F: "~@6 [a4,c#5,e5]@5 ~ [a4,c#5,e5]@5 ~ [a4,c#5,e5]@5 ~",
  G: "[g#4,c#5,e5]@14 ~@4 [g#4,c#5,e5]@5 ~", H: "[a4,c#5,f#5]@5 ~ [f#4,a4,c#5]@10 ~@5 c#5@2 ~",
  I: "[f#4,b4,d5]@5 ~ [d4,f#4,b4]@5 ~ [b3,e4,a4]@5 ~ [b3,d4,g#4]@5 ~", J: "[a3,d4,f#4]@5 ~ [a3,d4,f#4]@14 ~@4",
  K: "[b3,d4,f#4]@5 ~ [b3,d4,f#4]@5 ~ [b3,e4,g#4]@5 ~ [b3,e4,g#4]@5 ~", // Bm E
  L: "[c#4,e4,a4]@3 ~ [c#4,e4,g#4]@3 ~ [a3,c#4,f#4]@3 ~ [a3,c#4,e4]@10 ~@2", M: "[a3,c#4,e4]@5 ~ [a3,c#4,e4]@5 ~@13",
  N: "[[d4,f#4,a4,c#5]@34 ~@2 f#4@3 ~ g#4@3 ~ a4@3 ~]/2", O: "[f4,g#4,c#5]@19 ~@5",
  P: "~@3 [f#4,f#5]@2 ~ [f#4,f#5]@4 ~ [c#4,c#5] [c#4,c#5]@4 ~ [a#3,a#4] [a#3,a#4]@5 ~", // F# C# A#
  Q: "~@6 f5@2 ~ c#5@2 ~ c#5@5 ~ d#5@5 ~", R: "e5@4 ~ e5 e5@4 ~ c#5 c#5@4 ~ a#4 a#4@5 ~",
  S: "~@3 d#5@4 ~ c#5 b4@5 ~ b4@5 ~ c#5@2 ~", T: "d5@4 ~ d5 d5@4 ~ b4 b4@4 ~ f#4 f#4@4 ~ f#4",
  U: "[a#3,a#4]@5 ~ [c#4,f#4,a#4]@5 ~ [f#4,a#4,d#5]@7 ~@2 [f#4,a#4,c#5]@2 ~", V: "c#5@19 ~@5",
  W: "[d#4,f#4,b4]@5 ~ [d#4,f#4,a#4]@5 ~ [f#4,b4,d#5]@7 ~@2 [f#4,b4,f5]@2 ~", // B D#m B
  X: "[e4,e5]@3 ~ [d4,d5]@3 ~ [c#4,c#5]@3 ~ [b3,b4]@3 ~ [a3,a4]@3 ~ [g#3,g#4]@3 ~", // E D C# B A G#
  Y: "[[a3,a4]@5 ~ [a3,c#4,e4]@5 ~ a4@10 ~@2 a4@14 ~@9 f#5, ~@6 [c#5,e5]@13 ~@5]/2", // A C#m
  Z: "[a4,c#5,f#5]@4 ~ [f#4,a4,c#5] [f#4,a4,c#5]@10 ~@5 c#5@2 ~", AA: "d5@2 ~ b4@2 ~ b4@5 ~ a4@5 ~ g#4@5 ~",
  AB: "[d4,e4,g#4,b4]@7 ~@5", AC: "a#4@3 ~ a4@3 ~ a#4@3 ~ c5@3 ~ a#4@3 ~ a4@3 ~",
  AD: "[d4,g4,a#4]@3 ~ [d4,f#4,a4]@3 ~ [d4,g4,a#4]@3 ~ [d#4,g4,c5]@3 ~ [d#4,g4,a#4]@3 ~ [d#4,g4,c5]@3 ~", // Gm D Gm Cm D# Cm
  AE: "[[d#4,g4,a#4,d5]@34 ~@2 g4@3 ~ a4@3 ~ a#4@3 ~]/2", AF: "d5@14 ~ d#5@2 ~ d5@2 ~@4", AG: "[d#4,f4,a4,c5]@19 ~@5",
  AH: "[[d4,f4,a#4]@43 ~@5]/2", // A#
})).s("gm_piano").gain(0.33).pan(0.3)

// chords · piano
const piano_2 = note(`<
  A ~@2 B C ~@15 A ~@2 B C ~@15 A ~@2 B C ~@2 D@2 E@2 ~ F ~@6 G ~@3 G ~@6 A ~@2 B C ~ H ~@2 I J ~ H ~@2 I J ~ H ~@2 I J
  ~@3
>`.pickRestart({
  A: "[c#4,e4]@5 ~ [c#4,f4]@5 ~", B: "~@6 c#4@5 ~", C: "[d4,f#4,a4]@19 ~@5",
  D: "[[f#4,a#4]@28 ~ e4 e4@4 ~ e4 c#4@4 ~ a#3 a#3@5 ~]/2", E: "[f#4@28 ~ d4 d4@4 ~ b3 b3@4 ~ f#3 f#3@4 ~ g#3]/2",
  F: "[f4,a#4]@5 ~ [f4,a#4]@5 ~ [f4,a#4]@5 ~ [f4,a#4]@5 ~", G: "f#4@5 ~ [b3,e4]@5 ~", H: "[d4,f4]@5 ~ [d4,f#4]@5 ~",
  I: "~@6 d4@5 ~", J: "[d#4,g4,a#4]@19 ~@5",
})).s("gm_piano").gain(0.33).pan(0.3)

// bass · electric guitar jazz · "Bass Guitar"
const bass = note(`<
  ~ A ~ B ~ C D ~ E ~ D ~ E ~ F ~ G ~ F ~ H A ~ B ~ C D ~ E ~ D ~ E ~ F ~ G ~ F ~ H A ~ B ~ I ~@6 J ~@2 K D ~ E ~ D ~ E
  ~ F ~ G ~ F ~ H A ~ B ~@2 L M ~ F N ~ L M ~ F N ~ L M ~ F N ~@3
>`.pickRestart({
  A: "~@4 g#2@3 ~@17", B: "~@18 c3@5 ~", C: "~@12 f#2@5 ~@7", D: "~@18 b2@2 ~ c3@2 ~", E: "~@12 g#2@5 ~@7",
  F: "~@18 c#3@5 ~", G: "~@9 e3@2 ~@13", H: "a2@7 ~@2 a2@2 ~ c#2@7 ~@2 c#2@2 ~", I: "~@12 a#2@5 ~@7",
  J: "~@12 f2@5 ~@7", K: "e3@3 ~ d3@3 ~ c#3@3 ~ b2@3 ~ a2@3 ~ g#2@3 ~", L: "~@9 a#2@2 ~@10 d2@2 ~",
  M: "~@4 a2@3 ~@9 a#2@3 ~@5", N: "~@21 e2@2 ~",
})).s("gm_electric_guitar_jazz").gain(0.15).pan(0.2)

// drums · rim
const rim = s("rim").struct("<~@76 A@2 B C B C A@2 B C B C A@2 B C B C ~@2>".pickRestart({
  A: "x!6", B: "x!4", C: "x ~@2 x ~@2 x ~ x ~ x ~",
})).gain(0.39)

// drums · kick
const kick = s("bd").struct("<~@76 [~ x ~ x ~ x]!2 ~@4 [~ x ~ x ~ x]!2 ~@4 [~ x ~ x ~ x]!2 ~@6>").gain(0.39)

// drums · snare
const snare = s("sd").struct(`<
  A@2 B C D E F G@2 F@2 G@2 F G@2 H I G@2 A@2 J K L M F G@2 F@2 G@2 F G@2 H I G@2 A@2 J K L M N O N O P Q O R S A T@2 U
  V T@2 U V G@2 H I G@2 A@2 J K L M W@2 B X Y Z W@2 B X Y Z W@2 B X Y Z ~@2
>`.pickRestart({
  A: "x!6", B: "x ~@5 x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~@2", C: "x ~@5 x ~@2 x ~ x!2 ~@3 x ~@3 x ~@3",
  D: "x ~@8 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~@2", E: "x ~@5 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@5", F: "x ~ x!3 ~ x!2", G: "x ~ x!6",
  H: "x ~@3 x ~@3 x ~@3 x ~@5 x ~@2 x ~@2", I: "x ~@5 x ~@5 x ~ x!2 ~ x!2 ~ x!2 ~ x",
  J: "x ~@5 x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2", K: "x ~@5 x ~ x!2 ~@2 x ~@3 x ~@3 x ~@3",
  L: "x ~@5 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2", M: "x ~@5 x ~ x!2 ~ x!2 ~@2 x ~@2 x ~@5",
  N: "x ~@4 x!2 ~@4 x!2 ~@4 x!2 ~@5", O: "x!4", P: "x ~@4 x!2 ~@4 x!2 ~@4 x!2 ~@4 x", Q: "x ~ x!3 ~ x ~",
  R: "x ~@5 x ~ x!2 ~ x!2 ~@5 x ~@5", S: "x ~@5 x ~ x!2 ~@2 x ~@5 x ~@5", T: "x ~@5 x ~ x!2 ~@2 x ~@5 x ~@2 x ~@2",
  U: "x ~@5 x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~@5", V: "x!3 ~ x!3 ~", W: "x!3", X: "x ~@5 x ~@2 x ~@2 x ~@3 x ~@3 x ~@3",
  Y: "x ~@5 x ~ x!2 ~ x!2 ~@2 x ~@2 x ~@2 x ~@2", Z: "x ~@2 x ~@2 x ~ x ~ x ~",
})).gain(0.39)

// drums · open hat
const open_hat = s("oh").struct("<~@76 A@2 B C B C A@2 B C B C A@2 B C B C D ~>".pickRestart({
  A: "x!6", B: "x!4", C: "x ~@2 x ~@2 x ~ x ~ x ~", D: "x",
})).gain(0.39)

// drums · ride
const ride = s("rd").struct(`<
  ~@6 A@10 B A@3 C@2 A D A@12 B A@3 C@2 A D A@11 C A@10 B A@3 C@2 A D A@2 ~@18 E ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x ~@2 x ~@2", C: "x!6", D: "x ~@2 x ~@2 x ~ x ~ x ~", E: "x",
})).gain(0.39)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@6 A@10 B A@3 C@2 A D A@12 B A@3 C@2 A D A@11 C A@10 B A@3 C@2 A D A@2 ~@20
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x ~@2 x ~@2", C: "x!6", D: "x ~@2 x ~@2 x ~ x ~ x ~",
})).gain(0.39)

// drums · splash
const splash = s("cr").struct("<~@2 x ~@91 x ~>").gain(0.39)

stack(
  electric_guitar_jazz, electric_guitar_jazz_2, electric_guitar_jazz_3, piano, piano_2, bass, rim, kick, snare,
  open_hat, ride, tambourine, splash
)

More by The Four Seasons