Strudelify

Je hoeft niet naar huis vannacht

Marco Borsato

KeyE majorTempo148 bpm
0:00/0:00
// Je hoeft niet naar huis vannacht — Marco Borsato
// 148 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 125 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(148/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 · piano · "A.PIANO 1"
const piano = note(`<
  ~ A@8 B@2 C@4 D@7 E F@3 G H I J@3 K L@2 M@2 N O P Q R S B@2 C@4 D@7 E F@3 G H I J@3 K L@2 M@2 N O P Q R S T@4 U@2 V@2
  W@2 X@2 Y Z AA AB AC@3 AD AE AF AG AH AI AJ J@3 K J@3 K J@3 K AK@3 AL ~@2 AM@4
>`.pickRestart({
  A: "[~@2 d#4@2 ~@2 [e3,g#3,b3]@9 ~@3 d#4@2 ~@2 [e3,a3,b3]@9 ~@3 c#4@2 ~@2 a4@9 ~ [d4,a4]@5 ~ [d4,a4]@4 g#4@2 [a3,f#4]@2 d2@2 ~@2 d#4@2 ~@2 e3@5 ~@3 e2@2 ~@2 d#4@2 ~@2 [a3,b3]@8 f#2 ~@3 c#4@2 ~@2 a4@8 ~@4 d2@4 [d4,a4]@4 g#4@2 [a3,f#4]@2 e4@2, e2@15 ~ f#2@16 d2@21 ~@11 e2@13 ~@3 f#2@13 ~@3 d2@17 ~@5 d2@8 ~@2, [e3,g#3,b3]@4 e4@14 ~@2 e4@14 ~@2 d4@11 ~@15 e4@4 ~@2 e4@14 ~@2 e4@14 ~@2 d4@11 ~ [d4,a4]@5 ~@11, ~@3 b4@6 ~@2 b4@6 ~@18 b4@6 ~@2 b4@6 ~@15, ~@16 [e3,a3,b3]@5 ~@11 [d3,e3,a3]@6 e3@18 ~@2 e3@5 ~ [e3,g#3,b3]@5 ~ [g#3,b3]@10 [e3,a3,b3]@5 ~@11 [d3,e3,a3]@5 ~ e3@18 ~@2 e3@5 ~]/8", // E Esus4 D5 D Asus2 D5 D E …
  B: "[[e3,b3]@23 ~ [e3,b3]@7 ~]/2", // E5
  C: "[a3@19 ~ a3@2 g#3@2 a3@2 g#3@2 a3@2 ~@2 e3@21 ~ [e3,b3]@9 ~, [e3,b3]@30 b3@23 ~@11]/4", // E5
  D: "[~@10 [d4,e4,a4,c#5]@5 ~ a4@14 ~@2 e3@16 ~@10 b3@4 ~@22 a4@2 g#4@2 a4@2 ~@2 e4@2 ~@2 e3@16, [d3,a3]@18 ~@12 b4@34 ~@26 g#4@5 ~@17, ~@16 [c#4,e4]@16 f#4@32 a3@31 ~@17, ~@54 e4@7 ~ e4@30 ~@2 b3@18]/7", // A D5 C#m
  E: "f#3@8 e3@7 ~, b3 ~@15",
  F: "[~@10 c#4@2 d4@2 ~@6 a3 ~ a3@3 ~ [a3,a4] ~ a4@4 [c#4,f#4]@10 f#3@2 ~@2 f#3@2, [e3,a3]@12 ~@2 a4@11 ~@3 a3@6 ~@10 a3@4, ~@16 f#2@7 ~, ~@16 a4 ~@7]/3", // A F#5 A5
  G: "[a3,f#4]@4 f#3@2 [b3,g#4]@4 f#3@2 [c#4,a4]@2 f#3 ~, f#2@15 ~", // D E F#m
  H: "[c#4,e4,a4]@4 ~@2 [b3,d#4,e4]@5 ~ [a3,c#4,e4]@3 ~, a2@3 ~ a2@11 ~", I: "[b2,g#3,b3,e4] ~@7",
  J: "[g#3@2 d#4@2 e4@2 g#3@4 ~@4 e3@2 ~@4 e4@2 [c#4,e4]@8 c#3 ~ f#3@3 ~ [f#3,d#4]@2 d#4@6 ~@2 b2@2, e3@6 g#3@2 c#3@7 ~ b2@7 ~, b3@3 b4@6 d#4@2 b4@6 ~@5 d#4@2, ~@3 [b3,e4]@5 c#4@3 ~@5 [b3,e4]@3 [b3,b4]@5, ~@8 g#3@2 ~ g#3@3 ~@5 f#3@2 ~@3]/3", // C#m D#m E5 B
  K: "a2@3 ~@3 e4 a2, a4@15 ~, e4@10 b3@5 ~, b3@8 a3@7 ~, a3@6 [a2,g#4]@9 ~", // Amaj7
  L: "[[b3,e4]@6 g#3@6 ~@2 e3@2 [c#4,e4]@6 g#3@6 g#3@2 c#3 ~, e3@7 ~ c#3@7 ~, g#3@2 ~ b4@6 ~@7, ~@6 [b3,e4]@10 ~@6 [c#4,e4,b4]@9 ~, ~@12 g#3@4 g#3@3 ~@13]/2", // E5 C#m E5 C#m7
  M: "[f#3@2 ~@8 b3@4 b2@2 b2@4 ~@2 b3@4 b3@2 [b3,e4,g#4]@3 ~, d#4@31 ~, b2@8 b2@6 ~@2 b3@4 b2@11 ~, b3@6 b3@4 b4@6 b4@15 ~, ~@4 f#3@27 ~]/2", // E
  N: "e4@10 ~@2 e4@2 a2 ~, [a2,b3]@13 ~@3, g#4@9 ~ g#4@5 ~", O: "[d#4,f#4]@5 c#4 d#4@2, b2, b3@3 ~",
  P: "c#4@5 ~ c#4 c#3, e4@15 ~, c#3@3 ~, g#3@7 ~@3 g#3@5 ~", Q: "[d#3,b3,d#4,f#4]@15 ~",
  R: "[b3,e4]@5 ~ a3@4 ~@2 a3@2 a2 ~, a2@3 ~, a3@3 ~@3 [b3,e4]@9 ~", S: "[a1,a2,a3,e4] ~@7, b3 ~@15",
  T: "[~@2 d#4@2 ~@2 [e3,g#3,b3]@9 ~@3 d#4@2 ~@2 [e3,a3,b3]@9 ~ a3@12 ~@16 e4@4, e2@15 ~ f#2@16 e4@2 ~@10 a3@14 ~@6, [e3,g#3,b3]@2 e4@7 ~ e4@6 f#4@16, ~@3 b4@6 ~@2 b4@6 ~@6 a4@9, ~@16 [e3,a3,b3]@5 ~@11 d3@24 ~@8]/4", // E Esus4 E Esus4
  U: "[[f#3,c#4,a4]@14 ~@4 [b4,g#5]@3 [c#5,a5]@3 [b4,g#5]@3 [a4,f#5]@3 [g#4,e5]@2, f#4 ~@13 [e3,b3,e4]@18, ~@7 g#4@8 ~]/2", // F#m E F#m E D C#m E5
  V: "[[a3,f#4]@12 a3 ~@8 d3@3 a3@3 ~ a3@2 d3@2, d3@17 ~@7 d4@6 ~@2, [a4,f#5]@3 ~@4 [e4,f#4,a4]@9]/2", // D F#m7
  W: "[[f#2,a3]@7 ~@17 f#3@2 ~@2 e4@2 f#3@2, c#4@12 f#2@19 ~, ~@12 f#3@9 ~@11, ~@7 a4@7 ~@2, ~@14 [a3,e4]@12 a3@5 ~]/2", // F#m A5
  X: "[a2@8 a3@4 a2@2 [b1,b2,b3,f#4,b4]@17 ~, [e4,a4]@13 ~@19, a3@7 ~@25]/2", // B5 A5
  Y: "[b3,e4,g#4]@9 ~ [b3,e4,a4]@2 ~ [b3,e4,b4]@2 ~, e3@15 ~", // E Esus4 E5
  Z: "[b3,e4,b4]@2 ~ [b3,e4,a4]@2 ~ [e4,g#4]@2 [b3,e4,g#4]@2 ~ [b3,f#4]@2 ~ e4@2, c#3@15 ~, ~@6 b3 ~@7 b3 ~", // E5 Esus4 E B5
  AA: "b3@6 ~@2 b3@7 ~, [b2,e4,f#4]@15 ~", AB: "[a3,c#4,e4]@5 ~ [b3,d#4,e4]@4 ~@2 [a3,c#4,e4]@3 ~, a2@6 ~@4 a2@5 ~",
  AC: "[b2 e3 f#3 g#3 e3 f#3 ~@25 f#5@5 [g#4,b4,e5]@4 [f#4,b4,d#5]@3 ~ [f#4,c#5]@3 ~, ~@6 g#3@2 f#3@17 g#4 b4 e5 g#4 b4 e5@6 ~@12, ~@7 b3@2 g#3@2 e4@2 b3@2 f#4@2 e4 f#4 g#4 e4@17 ~@11, ~@10 b3@2 g#3@9 f#4 g#4 b4 f#4@13 ~@11, ~@14 e4@2 b3@21 ~@11]/3", // E B F#5
  AD: "~@15 [g4,a4,b4,c5], [f#4,b4]@11 [e6,f6,g6] [b5,c6,d6] [g5,a5] e5@2, ~ [g7,a7,b7], ~@9 [e7,f7]@7, ~@5 [a6,b6]@3", // Cmaj7 B5 Em Bm Gsus2 G Fmaj7 Asus2
  AE: "a2@3 ~@4 a2, e4, b3@3 b3, a3@5 ~@3, ~@3 a2@4 ~", AF: "b2@3 ~@3 d#4@2, f#4, d#4@3 ~, b3@5 b3@3, ~@3 b2@4 ~",
  AG: "c#3 ~@6 c#3, [e4,g#4]@5 e4@3, c#4@3 c#4@3 c#4@2, ~ c#3 ~@2", // E
  AH: "b3@3 ~ b3@2 ~@4 e4@2 b3@2 d#3 ~, [d#3,d#4,f#4]@6 [b3,e4,f#4]@4 [d#4,f#4]@5 ~, ~@2 d#3 ~, ~@10 b3 ~@5", // D#m Bsus4 D#m
  AI: "a2@3 ~@11 a3@2, e4@5 e4@3, b3@2 b3!2, a3@3 a3@4 ~, ~ a2@3",
  AJ: "~@2 b3 ~ [b2,b3,f#4] ~ [b2,b3,f#4,b4]@2 [b2,b3,f#4,b4]@2 [b2,b3,f#4,b4]@2 [b2,b3,f#4,b4]@2 [b2,b3,f#4,b4] ~", // B5
  AK: "[~@2 d#4@2 ~@6 e3@2 g#3@2 e3 ~@3 d#4@2 ~@6 e3@2 g#3@3 ~ e4 ~ d#4@2 ~@8 b3@2 ~@2, b3@14 ~@2 c#4@15 ~@17, [e3,g#3]@10 ~@6 [e3,g#3]@11 ~@5 [e3,b3]@10 ~@6, ~@4 e4@13 ~@3 e4@12 ~@4 e4@9 ~@3, ~@6 b4@12 ~@4 b4@12 ~@4 b4@9 ~]/3", // E E5
  AL: "[a1,a2,g#3,b3,e4]@2 ~ e4@2 [a1,a2,g#3,b3,e4]@2 ~ [b1,b2,f#3,b3,e4]@2 ~ [b1,b2,f#3,b3,e4]@2 ~ [b1,b2,b3,e4]@2, ~@2 [a1,a2,g#3,b3]@2 ~@9 f#3@2 ~", // E Bsus4 E5 E
  AM: "[~@3 [e1,e2]@2 [f#1,f#2]@2 ~ [g#1,g#2]@3 [b1,b2]@2 [c#2,c#3]@10 ~@16 d4@3 ~ d4!2 [b3,d4] b3@3 ~@15, ~@12 e2@3 ~ e3@3 b3@2 ~@11, ~@25 e1@33 ~@6, ~@17 f#3@13 ~@2, ~@35 g#3@24 ~@5]/4", // E F# G# B C# Bm
})).s("gm_piano").gain(0.72).pan(0.3)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@3 A@2 B C D@2 ~@15 E ~@4 F G H ~ F@2 I ~ J ~@3 K ~@16 E ~@4 F G H ~ F@2 I ~ J ~@3 K ~@4 L ~@15 M N O P ~@2 Q F G H ~
  F G H ~ F G H ~ R S T ~@4 U@3
>`.pickRestart({
  A: "[~@6 d3@16 ~@2 d3@7 ~, ~@3 a3@10 ~@3, ~@11 d2@3 ~@2]/2", B: "~@12 e3@3 ~", C: "~@6 e3@9 ~",
  D: "[~@6 d3@13 ~ d3@3 ~ d3@6 ~@2, ~@3 a3@10 ~@3]/2", E: "~@2 a3 ~@13", F: "~@2 g#3 ~@5", G: "~@2 g#3 ~@3 g#3 ~",
  H: "~@5 f#3@3", I: "~@7 b3", J: "~@14 b3 ~", K: "~@4 a3 ~@11", L: "~@7 d3, ~@9 d3@5 ~@2, ~@5 a3@3",
  M: "~@7 d5, ~@9 d7@7, ~@5 c7@3, ~@13 f5@2 ~", N: "~@5 a3@3", O: "~@7 b2", P: "~@5 g#4@3, ~@4 c#3@3 ~",
  Q: "~@2 [b2,f#4,b4] ~ b4 ~@11", R: "~ a3@2 ~@13", S: "~@14 e3 ~", T: "~@9 e3@5 ~@2",
  U: "[~@26 b3 ~ b3 ~ d4@2 ~ b3!2 ~@3 e3@5 ~@5, ~@15 e2@29 ~@4, ~@32 d4@3 [b3,d4]@9 ~@4]/3", // Bm
})).s("gm_piano").gain(0.4).pan(0.3)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B C D A B C E A F G H A F C I A F G H A F C I B@2 G J K L M N O L M@2 P M L Q P R A F G H A F C I A F G H A F C I
  B@2 G J K L M N O L M@2 P M L Q P R A B S@2 T K S@2 B@2 U@2 K L M N O L M@2 P M L Q P M K L M N K L M N K L M N K L V
  W ~@2 X@4
>`.pickRestart({
  A: "e1!8", B: "f#1!8", C: "d2!8", D: "d2!5 b1 d2 e2", E: "d2!4 b1!2 a1 b1", F: "g#1!8", G: "a1!8", H: "a1!7 d2",
  I: "d2!6 a1 b1", J: "b1 ~@7", K: "e1@2 e1!6", L: "c#2@2 c#2!6", M: "b1@2 b1!6", N: "a1@2 a1 e2 a2 a1 a2 b1",
  O: "d#2 e2!3 d#2 e2!3", P: "a1@2 a1!6", Q: "d#2@2 d#2!6", R: "a1 ~@7", S: "d2@2 d2!6", T: "f#1@2 f#1!6",
  U: "[a1!5 ~ a2 b1@2 b1!5 ~@2, ~@5 e2@2 ~@9]/2", V: "g#1@2 g#1!6", W: "a1 ~@2 a1@2 a1 ~@2 b1@2 ~ b1@2 b1@2 ~",
  X: "[~@3 e1@2 f#1@3 g#1@3 b1@2 c#2@11 [e1,e2]@37 ~@3]/4", // E
})).s("gm_electric_bass_finger").gain(0.8)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A B C D A B C E ~@15 F G H I J A K L M N K L O P Q R S T U ~@15 F G H I J A K L M N K L O P Q R S T U A B V@3 W@3 X
  H Y@2 A K L M N K L O P Q R S T Z A K L M N K L M N K L M N K A AA ~@3 AB AC AD
>`.pickRestart({
  A: "[e2,e3,g#3,b3,e4]@2 [e2,e3,g#3,b3] [e3,g#3]!2 [e3,g#3,b3] [e2,e3,g#3,b3,e4] [e3,g#3,b3], ~@3 [b3,e4]@2 ~@3", // E E5
  B: "[f#2,f#3,a3,b3,e4]@2 [f#2,f#3,a3,b3] [f#3,a3]!2 [f#3,a3,b3] [f#2,f#3,a3,b3,e4] [f#3,a3,b3], ~@3 [b3,e4]@2 ~@3", // F#m7 B7 F#m B7 F#m7 B7 E5
  C: "[d3,a3,d4,e4]@2 [d3,f#3,a3,d4] [f#3,a3]!2 [f#3,a3,d4] [d3,f#3,a3,d4,e4] [f#3,a3,d4], f#3 ~@5 [d4,e4]@4 ~@6", // Dsus2 D F#m D Dsus2
  D: "[a3,d4,e4]@4 [d3,f#3,a3,d4]@2 [f#3,a3]@2 [f#3,a3]@2 [f#3,a3,d4]@2 [d3,f#3,a3,d4,e4]@2 [d3,f#3,a3,d4,e4]!2, [d3,f#3] ~@5 [d4,e4]@4 ~@6", // Asus4 D F#m D Dsus2
  E: "[a3,d4,e4]@2 [d3,f#3,a3,d4] [f#3,a3]!2 [f#3,a3,d4] [d3,f#3,a3,d4,e4] [f#3,a3,d4], [d3,f#3] ~@5 [d4,e4]@4 ~@6", // Asus4 D F#m D Dsus2
  F: "~@14 [f#2,c#3,a3,c#4,f#4]!2", // F#m
  G: "[c#3,a3,c#4,f#4]@2 [f#2,c#3,a3,c#4] [c#3,a3]!2 [c#3,a3,c#4] [f#2,c#3,a3,c#4,f#4] [c#3,a3,c#4], f#2 ~@5 [c#4,f#4]@4 ~@6", // F#m F#5
  H: "[a3,c#4,f#4]@2 [f#2,c#3,a3,c#4] [c#3,a3]!2 [c#3,a3,c#4] [f#2,c#3,a3,c#4,f#4] [c#3,a3,c#4], [f#2,c#3] ~@5 [c#4,f#4]@4 ~@6", // F#m F#5
  I: "[a2,e3,a3,c#4,e4]@4 [a2,e3,a3,c#4]@2 [e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4]!2 ~ [a2,e3,a3,c#4,e4]!3 ~ [a2,e3,a3,c#4,e4]", // A
  J: "[b2,f#3,a3,c#4,e4] ~@15", // F#m7
  K: "[c#3,g#3,c#4,e4]@4 [c#3,g#3,c#4]@2 g#3@2 g#3 ~ [g#3,c#4]@2 [c#3,g#3,c#4,e4]@2 [g#3,c#4]@2, ~@3 [c#4,e4]@2 ~@3", // C#m C#5 C#m C#5 C#m
  L: "[b2,f#3,b3,e4]@2 [b2,f#3,b3] f#3!2 [f#3,b3] [b2,f#3,b3,d#4] [f#3,b3], ~@3 [b3,d#4]@2 ~@3", // Bsus4 B5 B B5 B
  M: "[a2,e3,a3,b3,e4]@4 [a2,e3,a3,b3]@2 [e3,a3]@2 [e3,a3]@2 [e3,a3,b3]@2 [a2,e3,a3,b3,e4]@2 [b2,e3,g#3,b3,e4]!2, ~@3 [b3,e4]@2 ~@3", // Asus2 A5 Esus4 Asus2 E E5
  N: "[e2,b3,e4]@2 [e2,e3,g#3,b3] [e3,g#3]!2 [e3,g#3,b3] [e2,e3,g#3,b3,e4] [e3,g#3,b3], [e3,g#3] ~@5 [b3,e4]@4 ~@6", // E5 E E5
  O: "[b2,f#3,b3]@2 f#3@2 f#3@2 [f#3,b3]@2 [b2,f#3,b3,d#4]@2 [f#3,b3]@2 [b2,f#3,b3,d#4]@2 [b2,e3,g#3,b3,e4]!2, ~ [b3,d#4]@2 ~@5", // B5 B B5 B E B
  P: "[a2,a3,b3,e4]@2 [a2,e3,a3,b3] [e3,a3]!2 [e3,a3,b3] [a2,e3,a3,b3,e4] [e3,a3,b3], e3 ~@5 [b3,e4]@4 ~@6", // Asus2 A5 Esus4 Asus2 Esus4 E5
  Q: "[b2,f#3,b3,d#4]@4 [b2,f#3,b3]@2 f#3@2 f#3 ~ [f#3,b3]@2 [b2,f#3,b3,d#4]@2 [f#3,b3]@2, ~@3 [b3,d#4]@2 ~@3", // B B5 B B5 B
  R: "[c#3,g#3,c#4,e4]@2 [c#3,g#3,c#4] c#4!2 [g#3,c#4] [c#3,g#3,c#4,e4] [g#3,c#4], ~@3 [g#3,e4]@2 ~@3", // C#m C#5 C#m C#5 C#m
  S: "[b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4] [f#3,b3]!2 [f#3,b3,e4] [b2,f#3,b3,e4]!2, ~@3 d#4@2 ~@3", // B B5 Esus2 Bsus4
  T: "[a2,e3,a3,b3,e4]@4 [a2,e3,a3,b3]@2 [a3,b3]@2 [a3,b3]@2 [e3,a3,b3]@2 [a2,e3,a3,b3,e4]@2 [e3,a3,b3] ~, ~@3 [e3,e4]@2 ~@3", // Asus2 Esus4 Asus2 Esus4 E
  U: "[a2,e3,a3,b3,e4] ~@7", V: "[[a3,d4,e4]@29 ~@4 f#4@14 ~, d3@31 ~ [a3,c#4]@15 ~, f#3 ~@30 f#3@16 ~]/3",
  W: "[[b3,e4,g#4]@12 ~@5 a4@28 ~@3, ~@5 d3@10 ~, ~@16 [a3,d4,f#4]@29 ~@3]/3", // E D
  X: "[f#2,c#3,a3,c#4,f#4]@2 [f#2,c#3,a3,c#4] [c#3,a3]!2 [c#3,a3,c#4] [f#2,c#3,a3,c#4,f#4] [c#3,a3,c#4], ~@3 [c#4,f#4]@2 ~@3", // F#m F#5
  Y: "[[a2,e3,a3,b3,e4]@2 [a2,e3,a3,b3] [e3,a3]!2 [e3,a3,b3] [a2,e3,a3,b3,e4] [b2,f#3,b3,e4,f#4]@3 [b2,f#3,b3,e4] [f#3,b3]!2 [f#3,b3,e4] [b3,e4,f#4]@2, ~@6 [b3,e4]@4 ~@12 [e4,f#4]@4 ~@2 [b2,f#3] ~@3]/2", // Asus2 A5 Esus4 Asus2 Bsus4 B5 Esus2 Bsus4 …
  Z: "[b2,e3,a3,b3,e4]@4 [b2,e3,a3,b3]@2 [a3,b3]@2 [a3,b3]@2 [e3,a3,b3]@2 [b2,e3,a3,b3,e4]@2 [e3,a3,b3] ~, ~@3 [e3,e4]@2 ~@3", // Esus4 Asus2 Esus4 E
  AA: "[a2,a3,b3,e4]@3 [a2,e3,a3,b3,e4]@2 [a2,e3,a3,b3,e4]@3 [b2,f#3,a3,b3,e4]@3 [b2,f#3,a3,b3,e4]@2 [b2,f#3,a3,b3,e4]@3, e3 ~@15", // Asus2 Bsus4
  AB: "~@8 [b2,e3,g#3,b3,d4]!3 [b2,g#3,b3] [b2,e3,g#3,b3,d4]!2 [b2,e3,b3,d4] [b2,e3,g#3,b3,d4]", // E7 E E7
  AC: "[b2,e3,g#3,b3,d4] [e3,g#3,b3,d4] [b2,e3,g#3,b3,d4]!2 [e3,g#3,b3,d4] [b2,e3,g#3,b3,d4]!4 [e3,g#3,b3,d4] [b2,e3,g#3,b3,d4]!2 [b2,e3,g#3,d4] [b2,e3,g#3,b3,d4]!3", // E7
  AD: "[b2,e3,g#3,b3,d4] [b2,g#3,b3,d4] [b2,e3,g#3,b3,d4]!2 [e3,g#3] [g#3,d4] [b3,d4]@10, ~@5 e3@7 ~@4, ~@6 g#3@7 ~@3", // E7 G#dim E7 E G#dim Bm
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~ A B C D A B C@2 ~@16 E@2 F ~ A G H I A G H J K L G M N ~@17 E@2 F ~ A G H I A G H J K L G M N ~ A B ~@6 E@2 I O A G
  H I A G H J K L G M N P A G H I A G H I A G H I A G A ~@7
>`.pickRestart({
  A: "~@2 e4 e2@2 [e2,e4] ~ [e2,e4]", B: "~@2 e4 f#2@2 [f#2,e4] ~ [f#2,e4]", C: "~@2 e4 d3@2 [d3,e4] ~ [d3,e4]",
  D: "~@2 e4 d3@2 [d3,e4] ~@2", E: "~@2 f#4 f#2@2 [f#2,f#4] ~ [f#2,f#4]", F: "~@2 e4 a2 ~@4",
  G: "~@2 e4 c#3@2 [c#3,e4] ~ [c#3,e4]", H: "~@2 e4 b2@2 [b2,d#4] ~ [b2,d#4]", I: "~@2 e4 a2@2 [a2,e4] ~@2",
  J: "e4 b2@2 [b2,d#4] ~ [b2,d#4] ~@2", K: "~@2 e4 a2@2 [a2,e4] ~ [a2,e4]", L: "~@2 d#4 b2@2 [b2,d#4] ~ [b2,d#4]",
  M: "~@3 b2@2 b2 ~@2", N: "~@4 e4@2 a2@4 [a2,e4]@2 ~@2 [a2,e4] ~", O: "~@2 f#4 b2@2 [b2,f#4] ~@2",
  P: "~@4 e4@2 b2@4 [b2,e4]@2 ~@2 [b2,e4] ~", // E5
})).s("gm_acoustic_guitar_steel").gain(0.17).pan(0.7)

// chords · pad warm · "WARM PAD"
const pad_warm = note("<~@25 A@3 ~ B C D@5 E@7 ~@16 A@3 ~ B C D@5 E@7 ~@12 B C D@5 F@7 G@4 H@8 I@4 ~@6>".pickRestart({
  A: "[[a3,c#4,f#4]@29 ~@2 [a3,c#4,e4]@15 ~@2]/3", B: "[e2,g#3,b3,e4]@15 c#4", C: "c#2@15 [b1,f#3,b3,e4]",
  D: "[~@6 d#4@9 [a1,a3,b3,e4]@16 [e2,b3]@16 [c#2,c#4]@16 [b1,f#3,b3,d#4]@17, ~@31 [g#3,e4]@31 ~@18]/5", // Asus2 E5 C# B C#m
  E: "[~@8 e4@5 ~@2 [a3,b3,e4]@15 ~ [b1,f#3,b3,d#4]@15 ~ [g#3,c#4,e4]@15 ~@17 [a3,b3,e4]@19 ~@14, ~@13 a1@18 ~@15 c#2@16 ~ d#2@14 a1@20 ~@15, ~@64 [b3,d#4,f#4]@15 ~@33]/7", // Asus2 B C#m Asus2 B
  F: "[~@8 e4@5 ~@2 [a3,b3,e4]@15 ~ [b1,f#3,b3,d#4]@15 ~ [g#3,c#4,e4]@15 ~@17 [a3,b3,e4]@33, ~@13 a1@18 ~@15 c#2@16 ~ d#2@14 a1@20 ~@15, ~@64 [b3,d#4,f#4]@15 ~@33]/7", // Asus2 B C#m Asus2 B
  G: "[[b3,e4] ~@15 c#2@15 e4@7 d#4@9 [a1,a3,b3,e4]@16 ~, g#3@31 [b1,f#3,b3]@16 ~@17, e2@15 c#4@15 ~@34]/4", // E5 Asus2 B5
  H: "[[e2,b3]@15 ~ c#2@15 e4@7 d#4@9 [a1,a3,b3,e4]@16 ~, [g#3,e4]@31 [b1,f#3,b3]@16 ~@17, ~@15 c#4@15 ~@34]/4", // E5 Asus2 C#m B5
  I: "[[e2,b3]@15 ~ c#2@15 [b1,g#3]@16 ~ a3@16, [g#3,e4]@31 ~@16 a1@16 ~, ~@15 c#4@15 ~ [b3,e4]@32 ~]/4", // E5 E C#m E5
})).s("gm_pad_warm").gain(0.61)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~ A@8 ~@6 B@2 ~@6 B@2 ~@4 C@3 D@5 E F G H I ~@7 B@2 ~@6 B@2 ~@4 C@3 D@5 E F G H I ~ J@4 ~@4 K@4 L M N O P Q R@4 ~@4
  C@3 S@8 T@4 U ~@2 V@2 ~@2
>`.pickRestart({
  A: "[~ d#4 ~ b4@6 d#4 ~ b4@6 c#4 ~ a4@14 d#4 ~ b4@6 d#4 ~ b4@6 c#4 ~ a4@13, ~@4 e4@14 ~@2 e4@14 ~@2 d4@30 ~@2 e4@14 ~@2 e4@14 ~@2 d4@27 ~]/8",
  B: "[~@4 d4 c#4 ~ a4@8 ~, ~@6 d4@9 ~]/2", C: "[~ d#4 ~ b4@6 d#4 ~ b4@6 e4 ~ b4@5, ~@4 e4@14 ~@2 e4@13 ~@3 d#4@12]/3",
  D: "[a4@3 g#4@3 e4@3 d#4 ~ b4@6 d#4 ~ b4@6 e4 ~ b4@13, ~@20 e4@13 ~@3 e4@12 ~@4 f#4@28]/5", E: "a2", F: "b2",
  G: "c#3", H: "d#3", I: "e3", J: "[~ d#4 ~ b4@6 d#4 ~ b4@21, ~@2 e4@7 ~ e4@22]/4",
  K: "[~@14 [a3,e4,a4]@17 a2@14 ~ b2@18]/4", L: "g#4@10 a4@3 b4@3", M: "b4@3 a4@3 g#4@2 g#4@3 f#4@3 e4@2",
  N: "f#4@5 b3@2 ~ b3@8", O: "a3@3 e4@5", P: "e3@3 f#3@5", Q: "b3@4 [f3,g3,a3] [b2,c3,d3,e3] [d2,e2,f2,g2,a2] ~ f#5@8",
  R: "[f#5@7 b5@25]/4", S: "[a4@3 g#4@3 e4@3 d#4 ~ b4@6 d#4 ~ b4@6 e4 ~ b4@5, ~@20 e4@14 ~@2 e4@13 ~@3 d#4@12]/4",
  T: "[a4@3 g#4@3 e4@3 d#4 ~ b4@6 d#4 ~ b4@6 d#4 ~ b4@5, ~@20 e4@14 ~@2 e4@13 ~@3 e4@12]/4",
  U: "a2@2 ~ a2@2 a2@2 ~ b2@2 ~ b2@2 b2@2 ~", V: "[~@3 [e2,e3]@2 [f#2,f#3]@3 [g#2,g#3]@3 [b2,b3]@2 [c#3,c#4]@11 ~@8]/2",
})).s("gm_distortion_guitar").gain(0.64).pan(0.6)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note(`<
  ~ A B C@2 A B D@2 E F G H E F I J E F G H E F I J K@2 L M A N O L A N P@2 L O N Q L ~ E F G H E F I J E F G H E F I J
  K@2 L M A N O L A N P@2 L O N Q L ~ A B R@2 S T R U V@2 W@2 A N O L A N P@2 L O N Q L O A N O L A N O L A N O L A N X
  Y ~@3 Z@3
>`.pickRestart({
  A: "e2", B: "f#2", C: "d3/2", D: "[d3@31 ~]/2",
  E: "e2 ~ e2 ~ [e2,e3,b3,e4]@2 e2 ~ [e2,e3,b3,e4]@2 e2 ~ e2 ~ [e2,e3,b3,e4]@2", // E5
  F: "g#2 ~ g#2 ~ [g#2,e3,b3,e4]@2 g#2 ~ [g#2,e3,b3,e4]@2 g#2 ~ g#2 ~ [g#2,e3,b3,e4]@2", // E
  G: "a2 ~ a2 ~ [a2,a3,e4]@2 a2 ~ [a2,a3,e4]@2 a2 ~ a2 ~ [a2,a3,e4]@2", // A5
  H: "a2 ~ a2 ~ a3@2 [a2,g#3]@2 a3@2 a2 ~ a2 ~ a2 ~, ~ e4 e4@2, ~@4 a2 ~@3 a2 ~ g#3@6", // Amaj7
  I: "[d3,a3] ~ a3 ~ [d3,a3]@2 a3 ~ [d3,a3]@2 [d3,a3] ~ [d3,a3] ~ [d3,a3]@2", // D5
  J: "[d3,a3] ~ [d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", K: "[~@14 f#3!2 f#3@16, f#2]/2",
  L: "a2", M: "a2 ~@15", N: "c#3", O: "b2", P: "[b2@20 b2 ~ b2@2 b2@2 b2@2 b2@2 b2@2]/2", Q: "d#3",
  R: "d3 ~ d3 ~ [d3,a3,d4]@2 d3 ~ [d3,a3,d4]@2 d3 ~ d3 ~ [d3,a3,d4]@2", // D5
  S: "f#3 ~ f#3 ~ [f#3,c#4,f#4]@2 f#3 ~ [f#3,c#4,f#4]@2 f#3 ~ f#3 ~ [e3,b3,e4]@2", // F#5 E5
  T: "e3 ~ e3 ~ [e3,b3,e4]@2 e3 ~ [e3,b3,e4]@2 e3 ~ [e3,b3,e4]@2 e3 ~", // E5
  U: "d3 ~ d3 ~ [d3,a3,d4]@2 d3 ~ [d3,a3,d4]@2 d3 ~ d3@2 [d3,a3,d4]@2", // D5
  V: "[f#3@2 f#3@2 [f#3,c#4,f#4]@2 f#3 ~ [f#3,c#4,f#4]@2 f#3 ~ f#3@2 [f#2,f#3]@18]/2", W: "[[a2,a3]@7 [b2,b3]@9]/2",
  X: "g#2", Y: "a2@2 ~ a2@2 a2@2 ~ b2@2 ~ b2@2 b2@2 ~", Z: "[~@8 e3@37 ~@3, ~@8 e2@23 ~@17]/3",
})).s("gm_distortion_guitar").gain(0.47).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B@23 C B@2 D ~ B@7 C B@4 E ~ B@15 C B@2 D ~ B@3 F B@3 C B@4 F ~ B@2 C@8 G H B@7 C B@5 C B@15 I ~@2 J K ~ L
>`.pickRestart({
  A: "~@5 x ~@2", B: "x!2", C: "x!4", D: "x ~@10 x ~@3 x", E: "x ~@7 x ~@6 x", F: "x ~@3 x ~@2 x", G: "x ~ x ~ x ~ x!2",
  H: "~@5 x!2 ~", I: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", J: "~@3 x ~ x ~@2 x ~@2 x ~ x ~@2", K: "~ x", L: "~@13 x ~@2",
})).gain(0.72).pan(0.3)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~ A@23 ~ A@2 B ~ A@7 ~ A@5 ~ A@15 ~ A@2 B ~ A@7 ~ A@5 ~ A@2 ~@10 A@7 ~ A@5 ~ A@15 ~@7
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x ~@3 x ~@2",
})).gain(0.4).pan(0.3)

// drums · rim
const rim = s("rim").struct("<~@79 [~ x]!3 ~ [~ x]!2 ~@40>").gain(0.8).pan(0.3)

// drums · snare
const snare = s("sd").struct(`<
  A B@7 C B@15 D B@2 E F B@7 D B@4 G F B@15 D B@2 H I B@3 J B@9 F B@2 ~@3 K ~@2 B@11 L B@5 M B@7 D B@7 F@2 ~ F ~@3
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@4 x!4 ~ x!2", D: "~@2 x ~@5 x ~@5 x!2", E: "~ x!2 ~", F: "x",
  G: "~@4 x ~@5 x ~@2 x!2 ~", H: "~ x ~@2", I: "x ~@2 x", J: "~ x ~@2 x ~@3", K: "~ x",
  L: "~@2 x ~ x ~@4 x ~ x!2 ~ x!2", M: "~ x!7",
// … 80 more lines

More by Marco Borsato