Strudelify
Atlantis cover art

The Shadows: 50 Golden Greats

Atlantis

The Shadows

KeyC majorTempo121 bpm
0:00/0:00
// Atlantis — The Shadows
// 121 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 90 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 28.
// note: The whole transcription plays 27 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(121/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  ~ A B C D E B F D G H I J K H I L M N O P I M K P I D G@2 I J K H I Q R N O C I M K S I T G H I J K H I L M N O P I M
  K P I D G@2 I J K H I Q R N O C I M K S I T A B C D E B F D U
>`.pickRestart({
  A: "f2@4 ~@2 f2 ~ c2@7 ~", B: "a#1@4 ~@2 a#1 ~ f2@7 ~", C: "g1@4 ~@2 g1 ~ g1@4 b1@4", D: "c2@4 ~@2 c2 ~ d2@4 e2@4",
  E: "f2@4 ~@2 f2 ~ c2@4 ~@2 b1@2", F: "d#2@4 ~@2 d#2 ~ d#2@4 d#2@4", G: "f2@4 ~@2 f2 ~ f2@7 ~",
  H: "f2@4 ~@2 f2 ~ f2@4 d2@4", I: "c2@4 ~@2 c2 ~ c2@7 ~", J: "c2@4 ~@2 c2 ~ c2@4 ~@2 b1@2",
  K: "a#1@4 ~@2 a#1 ~ a#1@7 ~", L: "c2@4 ~@2 c2 ~ c2@4 ~@2 g1@2", M: "a1@4 ~@2 a1 ~ a1@7 ~", N: "d2@4 ~@2 d2 ~ d2@8",
  O: "b1@4 ~@2 b1 ~ b1@7 ~", P: "g1@4 ~@2 g1 ~ g1@7 ~", Q: "c2@4 ~@2 c2 ~ c2@4 g1@4", R: "a1 ~ a1@4 ~@2",
  S: "g1@4 ~@2 g1 ~ g1@3 ~ a1@4", T: "c2@4 ~@2 c2 ~ d2@3 ~ e2@3 ~", U: "f2 ~@3",
})).s("gm_electric_bass_finger").gain(0.36)

// other · synth strings 1
const synth_strings_1 = note(`<
  ~@9 A B C D E A F@2 G H@3 I@2 J K@3 A B C D E A F@2 G H@3 I@2 J K@3 A B C D E A F@2 G H@3 I@2 J K@3 A B C D E A F@2 G
  H@3 I@2 J K@3 ~@9
>`.pickRestart({
  A: "f3", B: "a3@15 ~", C: "g3@11 ~ e4@2 d4@2", D: "e4@5 ~ c4@6 g3@4", E: "a#3@15 ~",
  F: "[~@6 c5@2 d5@2 e5 ~ g5 ~@5 e5 d5 c5 ~@5 g4 e4 c4 ~@3, g3@27 ~@5]/2", G: "c4", H: "[d4@47 ~]/3", I: "[e4@31 ~]/2",
  J: "f4", K: "[~@22 c5@2 d5@2 e5 ~ g5 ~@5 e5 d5 c5 ~@5 g4 e4 c4 ~@3, g4@41 ~@7]/3",
})).s("gm_synth_strings_1").gain(0.1).pan(0.4)

// chords · electric guitar muted
const electric_guitar_muted = note("<A B C D E B C F G ~@71 H I J@3 I K@2 G ~>".pickRestart({
  A: "~@4 a3!2 [a3,a#3] a#3", B: "a#3@2 c4!6 [c4,g4]@2 [c4,g4]@2 [e4,g4]@2 [c4,e4]@2, c4 ~@15",
  C: "[a#3,c4,e4]@2 ~ a#3!5 [a#3,f4]@2 [a#3,f4]@2 [f3,f4]@2 f3@2, ~ [a#3,c4] ~@6", // C7 A#5 F A#sus2
  D: "[f3,g3] g3 ~@3 a#3!2 [a3,a#3], ~@4 g3@9 ~@3", E: "[g3,a3]!2 ~@2 a3!2 [a3,a#3] a#3, ~@4 g3@7 ~@5",
  F: "[f3,g3] g3 ~@4 c4!2, ~@2 g3@5 ~", G: "c4@7 ~", H: "~@7 a3@3 ~@2 a3@2 ~ c4, ~@5 a3 ~@2, ~@11 a#3@3 a#3@2",
  I: "~ c4!8 ~@6 a#3, a#3@3 ~@4 g4@3 [c4,g4]@2 g4@2 e4@2, ~@11 e4@2 c4@2 ~", // C5
  J: "[~ a#3 ~ a#3!6 ~@3 f4@2 ~@2 f3@2 g3@2 ~@5 a#3@3 ~@3 [g3,a3]@2 ~ g3@2 ~@3 a3@3 ~@2 a3@2 ~ c4, [c4,e4]@2 [a#3,c4]@2 ~@3 f4@3 [a#3,f4]@2 ~@3 g3@3 ~@2 g3@9 a3@2 ~@2 a3@2 ~ g3@7 a#3@3 a#3@2, ~@11 f3@3 f3@2 ~@12 a#3@2 a#3@3 ~@9 a3@2 ~@4]/3", // Gsus2 C A#sus2 A#5
  K: "[~ a#3 ~ a#3!5 a#3@2 ~@2 f4@2 ~@2 f3@2 g3@2 ~@7 c4@3 c4@2, [c4,e4]@2 [a#3,c4]@2 ~@3 f4@3 [a#3,f4]@2 ~@3 g3@3 ~@2 g3@10 ~@2, ~@11 f3@3 f3@2 ~@16]/2", // C A#sus2 A#5
})).s("gm_electric_guitar_muted").gain(0.17)

// chords · synth strings 1
const synth_strings_1_2 = note(`<
  ~ A B C D A B E F G@2 H@2 I J H@2 K L M N D K I O P@2 G@2 H@2 I J H@2 Q L M R D K I O P@2 G@2 H@2 I J H@2 K L M N D K
  I O P@2 G@2 H@2 I J H@2 Q L M R D K I O P@2 A B C D A B E F S
>`.pickRestart({
  A: "[a3,c4,f4]@7 ~ [g3,c4,e4]@7 ~", B: "[a#3,d4,f4]@7 ~ [a3,c4,f4]@7 ~", C: "[g3,a#3,d4]@15 ~", D: "[g3,c4,e4]@15 ~",
  E: "[g3,a#3,d#4]@15 ~", F: "[g3,a#3,c4,e4]@15 ~", G: "[[a3,c4,f4]@31 ~]/2", H: "[[g3,c4,e4]@31 ~]/2",
  I: "[a#3,d4,f4]@15 ~", J: "[a3,c4,f4]@15 ~", K: "[a3,c4,e4]@15 ~", L: "[a3,d4,f#4]@15 ~", M: "[b3,d4,f#4]@15 ~",
  N: "[b3,d4,g4]@15 ~", O: "[a#3,d4,g4]@15 ~", P: "[~@16 a#3@15 ~, [g3,c4,e4]@31 ~]/2",
  Q: "[a3,c4,e4]@2 ~@2 [a3,c4,e4]@11 ~", R: "[g3,b3,d4]@15 ~", S: "[a3,c4,f4]@3 ~@13",
})).s("gm_synth_strings_1").gain(0.04)

// other · electric guitar muted
const electric_guitar_muted_2 = note(`<
  ~@9 A ~@3 B A ~@8 B ~@2 C ~ A C ~@3 C ~@2 A D ~@2 A ~ B ~ C A ~@3 B A ~@8 B ~@2 C ~ A C ~@3 C ~@2 A D ~@2 A ~ B ~ C
  ~@7 E F
>`.pickRestart({
  A: "~@2 a3 ~@13", B: "~@2 a#3 ~@13", C: "~@2 g3 ~@13", D: "~@10 b3 ~@5", E: "~@15 f3", F: "~ f3 ~@14",
})).s("gm_electric_guitar_muted").gain(0.13).pan(0.7)

// other · string ensemble 2
const string_ensemble_2 = note("<~@5 A B C D ~@26 E F G H I ~@3 J K ~@26 E F G H I ~@3 J K ~@4 A B C D ~>".pickRestart({
  A: "[a4,a5] [g4,g5]", B: "[f4,f5]@3 ~", C: "~@3 [g3,g4]", D: "[c4,c5]", E: "~ [c4,e4,a4]@3",
  F: "~@2 [d5,d6]@2 [a4,a5]@2 [f#4,f#5] [e4,e5]", G: "[f#4,f#5]@7 ~", H: "~@2 [e5,e6]@2 [b4,b5]@2 [g4,g5] [f#4,f#5]",
  I: "[g4,g5]@7 ~", J: "~@2 [e4,e5] [d4,d5]", K: "[c4,c5]@7 ~",
})).s("gm_string_ensemble_2").gain(0.18)

// other · string ensemble 1
const string_ensemble_1 = note("<~@33 A B C ~@33 A B C ~@18>".pickRestart({
  A: "~@2 [e3,e4] [d3,d4]", B: "[e3,e4]@2 [c3,c4] [g2,g3]", C: "[a2,a3] ~@3 [a2,a3]@7 ~@5",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C D A B E F G H I D J K I D L M N O D L J C I P Q K R D S T R D U V W O D X S Y I P G H I D J K I D L M N O D L
  J C I P Q K R D S T R D U V W O D X S Y I P A B C D A B E F Z
>`.pickRestart({
  A: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]!3 ~ [f3,a3,c4,f4] ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~", // F C
  B: "[f3,a#3,d4,f4]@2 [f3,a#3,d4,f4]!3 ~ [f3,a#3,d4,f4] ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~", // A# F
  C: "[d3,g3,a#3,g4]@2 [d3,g3,a#3,g4]!3 ~ [d3,g3,a#3,g4]@2 [d3,g3,a#3,g4]@2 [d3,g3,a#3,g4]@2 [d3,g3,a#3,g4]@2 [d3,g3,a#3,g4] ~", // Gm
  D: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]!3 ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~", // C
  E: "[d#3,g3,a#3,d#4]@2 [d#3,g3,a#3,d#4]!3 ~ [d#3,g3,a#3,d#4]@2 [d#3,g3,a#3,d#4]@2 [d#3,g3,a#3,d#4]@2 [d#3,g3,a#3,d#4]@2 [d#3,g3,a#3,d#4] ~", // D#
  F: "[e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]!3 ~ [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4] ~", // C7
  G: "[f3,a3,c4,f4]@3 [f3,a3,c4,f4]!2 ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@2", // F
  H: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]!3 ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~", // F
  I: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]!3 ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2", // C
  J: "[f3,a#3,d4,f4]@3 [f3,a#3,d4,f4]!2 ~ [f3,a#3,d4,f4]@2 [f3,a#3,d4,f4]@2 [f3,a#3,d4,f4]@2 [f3,a#3,d4,f4]@2 [f3,a#3,d4,f4] ~", // A#
  K: "[f3,a3,c4,f4]@3 [f3,a3,c4,f4]!2 ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~", // F
  L: "[e3,a3,c4,e4]@2 [e3,a3,c4,e4]!3 ~ [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4] ~", // Am
  M: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!3 ~ [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~", // D
  N: "[f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4]!3 ~ [f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4] ~", // Bm
  O: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]!3 ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~", // G
  P: "[e3,g3,a#3,c4,e4]@3 [e3,g3,a#3,c4,e4]!2 ~ [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4] ~", // C7
  Q: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]!3 ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@2", // F
  R: "[e3,g3,c4,e4]@3 [e3,g3,c4,e4]!2 ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2", // C
  S: "[f3,a#3,d4,f4]@2 [f3,a#3,d4,f4]!3 ~ [f3,a#3,d4,f4]@2 [f3,a#3,d4,f4]@2 [f3,a#3,d4,f4]@2 [f3,a#3,d4,f4]@2 [f3,a#3,d4,f4] ~", // A#
  T: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]!3 ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~", // F
  U: "[e3,a3,c4,e4] ~ [e3,a3,c4,e4]@4 ~@2", // Am
  V: "[d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]!2 ~ [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~", // D
  W: "[f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4]!3 ~ [f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4]@4 [f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4] ~", // Bm
  X: "[e3,a3,c4,e4]@3 [e3,a3,c4,e4]!2 ~ [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4] ~", // Am
  Y: "[d3,g3,a#3,g4]@3 [d3,g3,a#3,g4]!2 ~ [d3,g3,a#3,g4]@2 [d3,g3,a#3,g4]@2 [d3,g3,a#3,g4]@2 [d3,g3,a#3,g4]@2 [d3,g3,a#3,g4] ~", // Gm
  Z: "[f3,a3,c4,f4]@3 ~@13", // F
})).s("gm_acoustic_guitar_steel").gain(0.04).pan(0.4)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~@29
  [~@10 g3 a3 c4 c#4 d4 d#4]
  [e4 ~ c4 ~@3 g3 ~@9]
  ~@34
  [~@10 g3 a3 c4 c#4 d4 d#4]
  [e4 ~ c4 ~@3 g3 ~@9]
  ~@23
>`).s("gm_string_ensemble_1").gain(0.25).pan(0.2)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@9 A B@3 C D@2 ~ E F@2 G H I J K L@2 M@4 C N@2 ~ O P Q R@2 S T U V@2 W@4 C X@2 ~ E F@2 G H I J K L@2 Y@7 ~ Z@2 AA@6
  AB ~@8 AC@2
>`.pickRestart({
  A: "c4@2 c4@2 ~@7 d4@2 d4 [d4,e4]@2, ~@2 c4@5 ~", // Dsus2
  B: "[~@2 f4@2 f4@4 f4@2 ~@6 [a4,c5]@2 ~@3 g4@2 g4@17 ~@4 c5@2 c5@2, [e4,f4]@2 ~@8 f4@2 f4@2 a4@2 ~@2 [a4,c5]@2 c5@3 ~@25, ~ e4@2 ~@8 g4@2 g4@2 g4@2 ~@2 g4@2 ~@27]/3", // Am Fmaj7 Am
  C: "a#4@2 a#4@2 a#4@4 a#4@2 ~@5 c5, c5@2 ~@3 a#4!2 d5, ~@11 c5@2 c5@2 ~",
  D: "[[c5,d5]@2 [c5,d5]@2 ~@4 a4@2 ~@8 g4@2 g4@11 ~, ~@4 c5@7 f4@2 f4@2 f4@2 c4@2 ~@13, ~@5 a4!2 c4 [c4,g4] ~@7]/2", // Csus2 C5
  E: "a4!2 ~@4 e4!2, ~ a4@3", F: "[[e4,f#4] f#4 f#4@7 ~@3 d5!2 b4!2, ~@7 d5]/2", G: "g4!2 g4@6, b4 ~@3",
  H: "~@4 e5!2 d5!2, ~@3 e5", I: "c5@2 c5!3 ~@3 [a4,b4]@2 [a4,b4]@2 [g4,a4]@2 g4@2, d5@4 ~ c5@2 c5@3 ~@6, ~@3 b4 ~@4",
  J: "[f4,g4] f4 ~@2 d5!2 c5!2, ~ f4@2 d5", // Fsus2
  K: "[a#4,c5]@2 a#4!3 ~@3 [g4,a4]@2 [g4,a4]@2 f4@2 f4@2, ~@5 a#4@2 a#4@3 ~@6, ~@3 a4 ~@2 g4@2", // A#sus2 Gsus2
  L: "[g4!2 g4@9 ~@5, f4 ~@7]/2",
  M: "[c4@2 c4@2 ~@6 d4@2 d4@2 e4 ~@3 f4@2 f4@4 f4@2 ~@9 c5 ~ g4@2 g4 g4@18 ~@2 c5@2 c5@2, ~@2 c4@5 d4 f4 ~@4 f4!2 a4 a4!2 ~@14, ~@15 e4@2 e4@2 ~@8 g4@2 g4@2 g4@2 c5@2 ~ c5@3 ~@25]/4",
  N: "[~@2 c5@2 ~@4 a4@2 ~@6 [c4,g4]@2 [c4,g4]@2 g4@11 ~, [c5,d5]@2 ~@2 c5@7 f4@2 f4@2 f4@2 ~@15, ~ d5@2 ~@7 a4@2 a4@2 c4@2 ~@16]/2", // C5 Csus2
  O: "~@4 a4!2 e4!2, ~@3 a4", P: "[e4,f#4] f#4 f#4@6", Q: "~@4 d5!2 b4!2, ~@3 d5",
  R: "[[g4,b4] g4 g4@10 e5!2 d5!2, ~@7 e5]/2", // G
  S: "c5@2 c5!3 ~@3 [a4,b4]@2 [a4,b4]@2 g4@2 g4@2, d5@4 ~ c5@2 c5@3 ~@6, ~@3 b4 ~@2 a4@2", // Asus2
  T: "f4!2 ~@2 d5!2 [c5,d5] c5, g4@4 f4@7 ~@5", // Csus2
  U: "[a#4,c5]@2 a#4!3 ~@3 [g4,a4]@2 [g4,a4]@2 [f4,g4]@2 f4@2, ~@5 a#4@2 a#4@3 ~@6, ~@3 a4 ~@4", // A#sus2 Gsus2 Fsus2
  V: "[g4!2 g4@8 ~@6, f4 ~@7]/2",
  W: "[c4@2 c4@2 ~@7 d4@2 d4 e4 ~@3 f4@2 f4@4 f4@2 ~@6 [a4,c5]@2 ~@3 g4@2 g4@17 ~@4 c5@2 c5@2, ~@4 c4@10 d4@2 f4@2 ~@8 f4@2 f4@2 a4@2 ~@2 [a4,c5]@2 c5@3 ~@25, ~@15 e4@2 e4@2 ~@8 g4@2 g4@2 g4@2 ~@2 g4@2 ~@27]/4", // Am
  X: "[~@2 c5@2 ~@4 a4@2 ~@8 g4@2 g4@11 ~, [c5,d5]@2 ~@2 c5@7 f4@2 f4@2 f4@2 c4@2 ~@13, ~ d5@2 ~@7 a4@2 a4@2 c4@2 [c4,g4]@2 ~@14]/2", // Csus2 C5
  Y: "[c4@2 c4@2 ~@6 d4@2 d4@2 e4 ~@3 f4@2 f4@4 f4@2 ~@6 a4 ~ c5@2 ~ g4 g4@2 g4@18 ~ c5@3 ~@4 a#4@2 a#4@3 a#4@3 [a#4,c5]@2 ~ [c5,d5]@2 [c5,d5]@2 ~ c5@2 ~@3 a4@2 ~ [f4,a4]@2 ~ [c4,f4]@2 ~ c4 ~ g4@2 g4@11 ~, ~@4 c4@10 d4@2 f4@2 ~@8 f4@2 f4@2 a4@2 ~ [a4,c5]@2 ~ c5@3 ~@23 c5@2 c5@4 ~@13 d5@2 ~ c5@8 ~@5 c4@2 ~@13, ~@15 e4@2 e4@2 ~@8 g4@2 g4@2 g4@2 ~@30 a#4@3 ~@10 a#4@3 ~@13 a4@2 ~ [f4,g4]@3 ~@14]/7", // A#sus2 Csus2 F F5 Am Fsus2
  Z: "[~@7 a4@3 ~@6 e4@2 f#4@2 f#4@12, ~@10 a4@2 a4@3 f#4@3 ~@14, ~@11 e4@3 e4@2 ~@16]/2",
  AA: "[~@7 d5@3 ~@6 b4@2 g4@2 g4@19 e5@3 ~@8 c5@2 c5 [b4,c5]@2 ~ b4@2 ~@8 f4@2 ~@3 d5@3 ~@2 d5@2 ~@2 c5@2 a#4@2 a#4 [a4,a#4]@2 ~ a4@2 ~@2 g4@2 f4@2, ~@10 d5@2 d5@3 g4@3 ~@25 d5@3 d5@2 d5@4 ~@7 g4@3 g4@2 g4@4 ~@6 d5@2 ~@3 a#4@3 ~@5 [g4,a#4]@3 [g4,a4]@2 ~@4, ~@11 b4@3 b4@2 ~@26 e5@2 e5@3 c5@3 ~@5 [a4,c5]@3 [a4,b4]@2 a4@3 f4@3 ~@2 f4@7 c5@3 c5@2 ~@11 f4@3 ~@2]/6", // Cmaj7 A#maj7 Gm Gsus2 Am Asus2
  AB: "f4 ~@3", AC: "[~@8 a4 [c4,f4,a4] [c4,f4,a4]@5 ~, ~@15 [c4,f4]@3 ~@14]/2",
})).s("gm_electric_guitar_jazz").gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@8 B C D C D@2 E D F D G D@2 E D H C I F D C D E D C J K L C F E D@2 E C M B C D C D@2 E D F D G D@2 E D H C I F D
  C D E D C J K L C F E D@2 E C M A@8 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x!2 ~ x ~ x ~ x ~ x ~ x ~", C: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~",
  D: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3", E: "x ~ x!3 ~ x ~ x ~ x ~@3 x ~", F: "~@2 x!3 ~ x ~ x ~ x ~ x ~ x ~",
  G: "x ~ x!2 ~@2 x ~ x ~ x ~ x ~ x ~", H: "x ~ x!3 ~ x ~ x ~@3 x ~ x ~", I: "x ~ x!2 ~@8 x ~@3", J: "x ~ x!2", K: "x",
  L: "~@2 x!3 ~ x ~ x ~ x ~ x ~@3", M: "x ~ x!2 ~@4 x ~@3 x ~@3",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~@3 B ~@17 C ~@7 D A ~@8 E ~@17 C ~@7 D A ~@8 E ~@3 A ~@3 B ~>".pickRestart({
  A: "~@6 x!2", B: "~@7 x", C: "~@13 x!2 ~", D: "~@13 x ~@2", E: "~@10 x!3 ~ x ~",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@6 B ~ B@2 C B ~ B ~ B@2 C B D ~ E ~ B ~ B C B ~ F ~ B ~@2 C B@2 C ~ E ~@2 B ~ B@2 C B ~ B ~ B@2 C B D ~ E ~ B
  ~ B C B ~ F ~ B ~@2 C B@2 C ~ E ~@3 A ~@5
>`.pickRestart({
  A: "~ x", B: "~@7 x", C: "~@3 x", D: "~@5 x ~@2", E: "~ x ~@2", F: "~ x ~@6",
})).gain(0.2)

// drums · high tom
const high_tom = s("ht").struct("<~@4 A ~@21 A ~@7 B ~@9 C ~@17 A ~@7 B ~@9 C ~@3 A ~@5>".pickRestart({
  A: "~@5 x ~@2", B: "~@4 x!3 ~", C: "~@6 x!3 ~@7",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~ B ~ A ~@7 A ~ C ~@7 A ~@7 D A ~ A ~@6 A ~@7 A ~ C ~@7 A ~@7 D A ~ A ~@6 A ~@3 A ~ B ~ A
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x ~@2", D: "x!2 ~@2",
})).gain(0.25)

// drums · ride
const ride = s("rd").struct("<~ A B C D A B E F ~@72 A B C D A B E F ~>".pickRestart({
  A: "~@3 x!2 ~ x ~ x ~ x ~ x ~ x ~", B: "x!2 ~ x!2 ~ x ~ x ~ x ~ x ~ x ~", C: "x ~@2 x ~@2 x ~ x ~ x ~ x ~@3",
  D: "x!3 ~@5", E: "x ~@2 x ~@2 x ~ x ~ x ~@5", F: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3",
})).gain(0.2)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@3 A ~@3 A ~@75 A ~@3 A ~@2>".pickRestart({
  A: "~ x!2 ~@4 x",
})).gain(0.1)

stack(
// … 4 more lines

More by The Shadows