Strudelify

Quando non ci sei

Matia Bazar

KeyB minorTempo85 bpm
0:00/0:00
// Quando non ci sei — Matia Bazar
// 85 bpm, 4/4, key B 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: duplicate parts dropped: ch 3 choir aahs (copy of ch 16 piano)
// note: Full arrangement: all 83 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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.

// bass · electric bass finger
const bass = note(`<
  ~@9 A B C D E F G H I J K L M N O P Q@8 R S T@3 U V W X@4 Y@5 Z AA AB AC@5 AD AE@2 AF AG AH AI AJ AK@6 AL AM AN AO@4
  AP@4
>`.pickRestart({
  A: "b1@7 b1", B: "a1@19 ~@2 a1@3", C: "g#1@19 ~@2 g#1@3", D: "g1@37 ~@5 a1@6", E: "b1@19 ~@2 b1@3",
  F: "a1@19 ~@2 a1 ~@2", G: "g#1@18 ~@3 g#1@2 ~", H: "g1@9 c2@9 f2@20 ~@4 g1@6",
  I: "a1@20 ~ e1@3 a1@3 ~@3 a1@5 ~ a1 ~@2 a1@2 ~ g1@6", J: "e1@21 d1@2 ~ e1@2 ~@4 e1@6 e1 ~@2 e1@2 ~ g1@6",
  K: "a1@20 ~ e1@3 a1@2 ~@4 a1@5 ~ a1@3 a1@3 g1@6", L: "e1@20 ~ d1@2 ~ e1@3 d1@2 ~ e1@6 g1@3 e1@3 g1@5 ~",
  M: "g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@3 ~@3",
  N: "a1 ~@2 a1 ~@2 a1 ~@2 a1 ~@2 a1 ~@2 a1 ~@2 a1 ~@2 a1 ~@2",
  O: "g1 ~@5 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4",
  P: "g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@6 a1@5 ~",
  Q: "[b1@21 ~@3 a1@2 ~@4 a1@2 ~@4 a1@11 g1@21 ~@3 f#1@2 ~@4 f#1@2 ~@4 f#1@12 e1@24 d2@3 ~@3 d2@2 ~@3 d2@12 c#2@23 ~ f#1@2 ~@4 f#1@3 ~@3 f#1@11 ~ b1@21 ~@2 a1@2 ~@4 a1@2 ~@4 a1@11 ~ g1@21 ~@3 f#1@2 ~@4 f#1@2 ~@4 f#1@12 e1@23 d2@3 ~@3 d2@2 ~@4 d2@12 c#2@23 ~ f#1@2 ~@4 f#1@3 ~@3 f#1@11 ~ b1 ~@3]/8",
  R: "~ b1@9 f#1@2 ~ b1@3 f#1@2 ~ a1@2 ~@4 a1@12 b1@3 a1@3 g1@2 ~@3",
  S: "~ g1@12 c#2@3 d2@3 g2@2 ~@4 g2@9 d2@2 b1@3 a1@3 g1@3 ~@3",
  T: "[g1@12 a1@2 ~@4 f#1@2 ~@4 f#1@12 g1@3 f#1@3 e1@37 ~ a1@3 b1@3 d2@3 e2@30 ~@18 b1@4 ~@3, ~@15 g1@5 ~@124]/3",
  U: "~@40 a1 ~@7", V: "~@40 g#1@3 ~@5", W: "~@39 g1@8 ~",
  X: "[a1@9 b1@9 c#2@9 d2@6 e2@6 b1@21 f#1@2 b1@2 ~@4 b1@13 f#1@2 b1@3 a1@21 f#1@2 ~ a1@2 ~@4 a1@12 f#1@2 a1@4 g#1@20 f#1@2 ~ g#1@2 ~@3 g#1@16 ~@3 g1@6 d1@2 g1@3]/4",
  Y: "[~@3 d1@2 ~ g1@6 d1@2 ~ g1@6 d1@3 g1@3 d1@3 f#1@6 a1@20 ~ e1@3 a1@3 ~@3 a1@5 ~ a1 ~@2 a1@2 ~ g1@6 e1@20 d1@2 ~ e1@2 ~@4 e1@6 e1 ~@2 e1@2 ~ g1@6 a1@20 ~ e1@3 a1@2 ~@4 a1@5 ~ a1@3 a1@3 g1@6 e1@20 d1@2 ~ e1@3 d1@2 ~ e1@6 g1@3 e1@3 g1@5 ~ g1@2 ~@4 g1@2 ~@4 g1@2]/5",
  Z: "~@4 g1@2 ~@4 g1@2 ~@4 g1 ~@5 g1@2 ~@4 g1@3 ~@2 a1@2 ~@4 a1@2 ~@4 a1@2 ~",
  AA: "~@3 a1@2 ~@4 a1@2 ~@4 a1@2 ~@4 a1@2 ~@4 a1@2 ~@4 g1 ~@5 g1@2 ~@4 g1@2 ~",
  AB: "~@3 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@3 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@2",
  AC: "[~@2 g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@6 a1@5 ~ b1@21 ~@3 a1@2 ~@3 a1@2 ~@4 a1@11 ~ g1@21 ~@3 f#1@2 ~@4 f#1@2 ~@4 f#1@12 e1@23 d2@3 ~@3 d2@2 ~@4 d2@12 c#2@23 ~ f#1@2 ~@4 f#1@3 ~@3 f#1@11 ~ b1@18]/5",
  AD: "~@5 a1@2 ~@4 a1@2 ~@4 a1@11 ~ g1@19",
  AE: "[~@5 f#1@2 ~@4 f#1@2 ~@4 f#1@11 e1@24 d2@3 ~@3 d2@2 ~@4 d2@12 c#2@20]/2",
  AF: "~@4 f#1@2 ~@4 f#1@3 ~@2 f#1@11 ~ b1@21", AG: "~@3 a1@2 ~@4 a1@2 ~@4 a1@11 ~ g1@21",
  AH: "~@3 f#1@2 ~@3 f#1@2 ~@4 f#1@12 e1@22", AI: "~@2 d2@3 ~@3 d2@2 ~@4 d2@12 c#2@22",
  AJ: "~ f#1@2 ~@4 f#1@3 ~@3 f#1@11 ~ b1@9 ~@3 a1@9 ~@2",
  AK: "[~ g1@9 ~@3 f#1@9 ~@3 e1@12 e1@32 ~@80 e2@2 ~ e2@6 ~@3 d2@3 ~@74 e1@6 e1 ~@2 e1@2 ~ d2@3 c#2@2 ~ b1@3 f#1 ~@2 b1 ~@5 b1@8 f#1@2 ~ b1@3 f#1@2 ~ a1@2 ~, ~@72 e1@20 ~@4 e1@21 ~@2 e1@19 ~@5 e1@13 ~@2 e1@7 ~@2 e1@20 ~@4 e1@21 ~@2 e1@19 ~@55, ~@84 e2@22 ~@2 e2@22 ~ e2@16 ~@17 e2@13 ~@2 e2@22 ~ e2@22 ~@2 e2@16 ~@46]/6",
  AL: "~@3 a1@12 b1@3 a1@3 g1@2 ~@4 g1@11 c#2@3 d2@3 g2@2 ~@2",
  AM: "~@2 g2@9 d2@3 b1@3 a1@3 g1@3 ~@2 g1@12 a1@2 ~@4 f#1@2 ~@3, ~@40 g1@5 ~@3",
  AN: "~ f#1@12 g1@3 f#1@2 e1@9 ~ e1 ~ e1@8 ~ b1@2 ~ e2@3 ~@3",
  AO: "[e2@3 ~@3 d2@5 b1@3 a1@3 b1 ~@5 b1@8 ~ f#1@2 ~ b1@3 f#1@2 ~ a1@2 ~@4 a1@11 b1@3 a1@3 g1@2 ~@4 g1@12 c#2@3 d2@3 g2@2 ~@4 g2@8 d2@3 b1@3 a1@3 g1@3 ~@3 g1@12 a1@2 ~@4 f#1@2 ~@3 f#1@12 g1@3 f#1@3 e1@2 ~ b1@3 e2@3 ~@3 e2@9 b1@2 e2@2 ~ b1@3 e1@3 ~@2, ~@132 g1@5 ~@55]/4",
  AP: "[~ e1@2 ~ f#1@3 a1@3 d2@2 ~ b1@15 f#1@2 ~ b1@2 f#1@2 ~ a1@2 ~@4 a1@12 b1@3 a1@3 g1@2 ~@4 g1@8 c#2@3 d2@3 g2@2 ~ g2@6 g2@6 g2@3 d2@3 b1@3 a1@3 g1@3 ~@3 g1@11 a1@2 ~@4 f#1@2 ~@4 f#1@12 g1@3 f#1@3 ~@38, ~@127 g1@5 ~@60]/4",
})).s("gm_electric_bass_finger").gain(0.62)

// other · piano
const piano = note("<~@17 A B ~ C@5 ~@13 D E ~ F@4 G H@2 ~ I@3 J ~@6 K@2 ~@22>".pickRestart({
  A: "~@9 f#4@3 ~ g4@4 f#4@3 g4@6 f#4@6 ~ g4@6 a4@9", B: "~ a4@9 g4@23 f#4@2 e4@10 ~@3",
  C: "[~@30 g4@6 a4@6 b4@11 ~ a4@6 a4@5 ~ d5@12 a4@6 a4@5 ~ [a4,d5]@12 ~ a4@5 a4@5 ~ [a4,d5]@12 a4@6 a4@6 [a4,d5]@11 ~ d5@12 [a4,d5]@12 [a4,d5]@12 [a4,d5]@12 ~@42, ~@65 a4@12 ~@72 a4@12 ~@79]/5", // D5
  D: "~@7 [f#4,a4,c#5]@3 ~@2", E: "~@7 [a3,c#4,f#4]@3 ~@2",
  F: "[~@27 b4@11 ~ b4@5 b4@3 b4@8 ~ b4@3 b4@3 b4@3 a#4@3 b4@6 b4@6 b4@6 b4@5 a#4@3 ~ b4@8 b4@3 b4@3 ~ b4@4 b4@4 b4@4 b4@5 d5@48 ~@17]/4",
  G: "~@15 f#4", H: "[~ g4@4 f#4@3 g4@5 ~ f#4@6 g4@5 ~@2 a4@8 ~ a4@9 g4@23 f#4@2 e4@9 ~@17]/2",
  I: "[~@16 g4@6 a4@6 b4@5 ~@7 a4@6 a4@5 ~ d5@6 ~@6 a4@6 a4@5 ~ [a4,d5]@5 ~@7 a4@5 a4@5 ~ [a4,d5]@5 ~@7 a4@6 a4@6 [a4,d5]@6 ~@6 d5@6 ~@3, ~@51 a4@6 ~@77 a4@6 ~@4]/3", // D5
  J: "~ [a4,d5]@2 ~@2 [a4,d5]@2 ~@2 a4@2 ~@5, ~@13 d5@3 ~@8", // D5
  K: "[~@29 b4@5 a#4@3 b4@6 a#4@3 b4@6 a#4@3 b4@5 a#4@4 b4@6 d5@23 ~@3]/2",
})).s("gm_piano").gain(0.05)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@13 A B C D E@2 F@3 G H@2 I@8 ~@8 J@3 K L@3 M@8 N@6 O P@2 Q@7 ~@11>".pickRestart({
  A: "~@18 b3@9 b3@9 ~@6 f#3@5 ~, b2@23 ~, ~@3 f#3@11 ~@2, ~@3 b3",
  B: "~@9 f#3@5 ~@4 b3@9 b3@9 b3@6 f#3@3 ~@3, a2@11 ~", C: "~@9 f#3@2 ~@7 b3@9 b3@9 b3@6 f#3@2 ~@4, g#2@11 ~",
  D: "~@9 f#3 ~@8 b3@9 b3@6 ~@3 b3@6 f#3@3 ~@3, g2@23 ~",
  E: "[~@3 c#4@2 ~@2 e3 ~@3 d4@2 ~@2 g3, a2@27 ~@3 a2@15 ~@3 e2@26 ~@4 e2@18, ~@9 e3@32 ~@16 g3@30 ~@9, ~@18 c#4@11 ~@13 d4@6]/2",
  F: "[~@9 c#4@6 ~@6 e3@3 ~@24 [g2,d3,b3]@20 ~@4, a2@27 ~@3 a2@15 ~@3 e2@25 ~@5 e2@22 ~@44, ~@9 e3@27 c#4@21 g3@36 d4@7 ~@44, ~@33 d4@9 e4@8 ~@22, ~@24 g3 ~@11]/3", // G
  G: "[a2,e3,a3,c#4]@11 ~", H: "[[g2,d3,g3,b3]@43 ~@5 [d3,d4,g4]@42 ~@6, ~@45 [g2,g3]@43 ~@8]/2",
  I: "[~@12 b3@11 ~@13 b3@11 ~@12 b3@12 ~@12 d4@12 ~@18 g3@6 ~@11 f#4@6 a3@3 ~@21 e3@6 c#3 ~@17 a#3@6 ~@12 b3@11 ~@12 b3@11 ~@13 b3@12 ~@12 d4@12 ~@17 g3@6 ~@12 f#4@6 a3@3 ~@21 e3@6 c#3 ~@17 a#3@7 ~@3, b2@23 ~ a2@20 ~@3 g2@23 ~ f#2@25 ~@5 g3@11 ~@7 d3@20 ~@3 c#3@24 ~@24 b2@23 a2@20 ~@4 g2@23 ~ f#2@25 ~@11 b3@13 ~@4 a3@12 ~@12 e3@12 ~@12 f#3@20 ~@2, ~@6 f#3@17 ~@7 f#3@18 ~@5 g3@18 ~@6 a3@18 e2@27 ~@32 b3@12 ~@12 c#4@14 ~@99 g3@11 ~@6 d3@20 ~@4 c#3@24 ~@28, ~@107 b3@13 ~@5 a3@11 ~@12 e3@12 ~@12 f#3@20 ~@4 f#3@17 ~@6 f#3@18 ~@6 g3@18 ~@6 a3@18 e2@27 ~@32 b3@12 ~@12 c#4@14 ~@2]/8",
  J: "[~@56 b3@9 b3@9 ~@6 f#3@5 ~@10 f#3@5 ~@4 b3@9 b3@9 ~@5 f#3@3 ~@3 g#2@9 f#3@2, ~@39 b2@46 ~ a2@44 ~@14, ~@47 f#3@33 ~@64, ~@74 b3@12 ~@36 b3@9 ~@13]/3",
  K: "~@7 b3@9 b3@9 b3@6 f#3@2 ~@4 g2@9 f#3 ~",
  L: "[~@7 b3@9 b3@6 ~@2 b3@6 f#3@3 ~@21 c#4@12 ~@12 e3@6 ~@18 d4@11 ~@12 g3@6 ~@9 e3@4, ~@36 a2@27 ~@3 a2@15 ~@3 e2@26 ~@3 e2@18 a2@13, ~@45 e3@32 ~@16 g3@30 ~@21, ~@72 c#4@22 ~@25 d4@15 ~@10]/3",
  M: "[~@5 c#4@12 ~@12 e3@6 ~@47 [g2,d3,b3]@39 ~@8 [a2,e3,a3,c#4]@43 ~@5 [g2,d3,g3,b3]@42 ~@5 [d3,d4,g4]@42 ~@18 b3@11 ~@12 b3@11 ~@13 b3@12 ~@12 d4@12 ~@12 b3@5, ~@17 a2@15 ~@3 e2@25 ~@4 e2@18 g3@4 ~@135 [g2,g3]@43 ~@8 b2@23 ~ a2@20 ~@3 g2@23 ~ f#2@25 ~@16, ~@23 c#4@20 g3@36 d4@7 ~@192 f#3@17 ~@6 f#3@18 ~@6 g3@18 ~@6 a3@18 e2@17, ~@52 d4@17 ~ e4@16 ~@287 g3@11]/8", // G A G G5 G
  N: "[g3@6 ~@12 f#4@6 a3@3 ~@21 e3@6 c#3 ~@17 a#3@6 ~@11 b3@11 ~@13 b3@11 ~@13 b3@12 ~@12 d4@11 ~@18 g3@6 ~@12 f#4@6 a3@3 ~@21 e3@6 c#3 ~@16 a#3@6 ~@12 b3@9, ~@6 d3@20 ~@4 c#3@24 ~@24 b2@23 a2@20 ~@4 g2@23 ~ f#2@25 ~@10 b3@13 ~@5 a3@12 ~@12 e3@12 ~@12 f#3@20 ~@3 f#3@15, ~@12 a3@12 ~@12 e3@12 ~@12 f#3@20 ~@4 f#3@17 ~@6 f#3@18 ~@6 g3@18 ~@6 a3@18 ~@5 g3@11 ~@7 d3@20 ~@4 c#3@24 ~@23 b2@21, ~@42 b3@12 ~@12 c#4@14 ~@92 e2@27 ~@33 b3@12 ~@11 c#4@14 ~@19]/6",
  O: "~@15 b3@11 ~@13 b3@9, ~@3 a2@20 ~@4 g2@21, ~@3 f#3@6 ~@2 g3@5",
  P: "[~@14 d4@12 ~@18 g3@6 ~@12 f#4@6 a3@3 ~@20 e3@5, ~@3 f#2@25 ~@4 g3@11 ~@7 d3@20 ~@4 c#3@22, ~@8 a3@18 e2@27 ~@33 b3@10, ~@38 b3@13 ~@5 a3@12 ~@12 e3@11 ~@5]/2",
  Q: "[~ c#3 ~@17 a#3@6 ~@20 c#4@3 ~@35 e4@33 ~@10 d4@6 e4@5 ~ d4@5 ~@7 e4@6 ~@6 e4@11 d4@6 e4@6 d4@6 ~@6 e4@6 ~@12 d4@6 e4@6 d4@6 ~@6 c#4@6 ~@5 c#4@6 ~@6 d4@6 e4@6 d4@6 ~@6 c#4@6 ~@12 g3@6 ~@26, ~@7 f#3@18 d4@22 ~ d4@68 ~@27 c#4@12 ~ c#4@12 ~@23 c#4@12 c#4@12 ~@83 c#4@11 ~@27, ~@13 c#4@14 ~@9 b3@21 ~@3 b3@55 ~@94 e4@11 ~@25 e4@14 ~@33 e4@17 ~@27, ~@72 g3@44 ~@21 g3@29 ~@19 g3@29 ~@19 g3@20 ~@3 g3@21 ~@3 g3@20 ~@36]/7",
})).s("gm_electric_guitar_clean").gain(0.28)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@25 A@8 B@5 ~@2 C D ~@11 E@8 F G H I J K@2 ~@2 L M@8 N@4>".pickRestart({
  A: "[[f#4,b4,d5]@24 [e4,a4,c#5]@23 [d4,g4,b4]@24 [c#4,f#4,a4]@24 [b3,e4,g4]@24 [a3,d4,f#4]@23 [g3,c#4,e4]@24 [f#3,a#3,c#4]@24 [f#4,b4,d5]@23 [e4,a4,c#5]@24 [d4,g4,b4]@24 [c#4,f#4,a4]@24 [b3,e4,g4]@23 [a3,d4,f#4]@24 [g3,c#4,e4]@24 [f#3,a#3,c#4]@24 [b4,d5,b5]@4]/8", // Bm A G F#m Em D C#dim F# …
  B: "[~@19 [a4,c#5,a5]@24 [g4,b4,g5]@71 [f#4,a4,f#5]@24 [e4,b4,e5]@94 ~@8]/5", C: "~@13 g3@3",
  D: "a3@8 ~ b3@9 c#4@9 d4@6 e4@5 ~@10",
  E: "[~@32 [f#4,b4,d5]@24 [e4,a4,c#5]@23 [d4,g4,b4]@24 [c#4,f#4,a4]@24 [b3,e4,g4]@23 [a3,d4,f#4]@24 [g3,c#4,e4]@24 [f#3,a#3,c#4]@24 [f#4,b4,d5]@23 [e4,a4,c#5]@24 [d4,g4,b4]@24 [c#4,f#4,a4]@23 [b3,e4,g4]@24 [a3,d4,f#4]@24 [g3,c#4,e4]@20]/8", // Bm A G F#m Em D C#dim F# …
  F: "~@4 [f#3,a#3,c#4]@23 [f#4,b4,d5]@21", G: "~ [e4,a4,c#5]@8 [d4,g4,b4]@7", H: "~@3 [c#4,f#4,a4]@23 [b3,e4,g4]@22",
  I: "~ [a3,d4,f#4]@12 [g3,c#4,e4]@11", J: "~ [f#3,a#3,c#4]@24 [b3,d4,b4]@12 [a3,c#4,a4]@11",
  K: "[~ [g3,b3,b4]@12 [f#3,a3,a4]@12 ~@11 e5@31 ~@29, ~@25 [e3,g3,b4]@45 ~@26]/2", // G F#m Em
  L: "~@22 d4@23 [c#4,c#5]@3, ~@21 d5@23 ~@4", // C#
  M: "[~@22 [b4,d5,b5]@23 [a4,c#5,a5]@23 ~ [g4,b4,g5]@70 [f#4,a4,f#5]@23 [e4,b4,e5]@47 [b4,d5,b5]@23 ~ [a4,c#5,a5]@23 [g4,b4,g5]@70 ~ [f#4,a4,f#5]@23 [e4,b4,e5]@34]/8", // Bm A G F#m E5 Bm A G …
  N: "[~@13 [b4,d5,b5]@23 [a4,c#5,a5]@23 ~ [g4,b4,g5]@70 [f#4,a4,f#5]@23 ~ [e4,b4,e5]@23 ~@15]/4", // Bm A G F#m E5
})).s("gm_string_ensemble_2").gain(0.26)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@67 A@4 ~@12>".pickRestart({
  A: "[~@24 [d4,d5]@23 [c#4,c#5]@23 ~@2 d5@22 [c#4,c#5]@23 ~ [d4,d5]@23 ~ [c#4,c#5]@23 ~@27, ~@71 d4@23 ~@98]/4", // D C# D C#
})).s("gm_string_ensemble_2").gain(0.11)

// other · rock organ
const rock_organ = note("<~@9 [b3@7 c#4 d4 e4 f#4 a4 b4@2 a4 f#4]!4 ~@70>").s("gm_rock_organ").gain(0.42)

// other · overdriven guitar
const overdriven_guitar = note(`<
  A@8 ~ B C D@2 E F G@2 H I J K L M N@2 O@7 P@3 Q@3 R S T U@3 V W@8 X@8 Y@4 Z AA@2 ~@3 AB@3 AC@4 AD@2 AE AF@2
>`.pickRestart({
  A: "b1@2 ~@4 b1@2 ~ b1@2 ~@4 b1@2 ~@31", B: "[b2,b3]", C: "[a2,a3]", D: "[[g#2,g#3]@47 [g2,g3]@44 ~@5]/2",
  E: "b2@40 ~ b2@7", F: "a2@40 ~ a2@7", G: "[g#2@38 ~@3 g#2@6 g2@42 ~@7]/2", H: "~ a2@47", I: "~ e2@46 ~",
  J: "~ a2@44 ~@3", K: "~ e2@45 ~@2", L: "g2", M: "a2", N: "[g2@47 ~]/2",
  O: "[~@12 b3@12 ~@12 b3@11 ~@12 g3@12 ~@12 f#3@11 ~@13 e4@12 ~@11 d4@10 ~@14 b3@10 ~@20 a#3@6 ~@12 b3@11 ~@12 b3@12 ~@12 g3@12 ~@12 f#3@11 ~@13 e4@11 ~@12 d4@10 ~@2 c#3@4, b2@21 ~@3 a2@23 g2@21 ~@3 f#2@22 ~@8 b3@20 ~@4 a3@16 ~@7 g3@16 ~@8 c#3@18 b2@21 ~@2 a2@23 ~@55 b3@20 ~@3 a3@16 ~@6, ~@6 f#3@19 ~@5 f#3@19 ~@4 d3@19 ~@5 d3@18 e3@21 ~@3 d3@22 ~ c#3@22 ~@2 f#2@24 ~@47 g2@21 ~@3 f#2@22 ~@53, ~@178 c#4@12 ~@6 f#3@19 ~@4 f#3@19 ~@5 d3@19 ~@5 d3@18 e3@21 ~@2 d3@22 ~@6]/7",
  P: "[~@8 b3@10 ~@20 a#3@6 d4@23 c#4 ~@5 b3@6 a3@6 b3@44 ~@3 b3@3 c#4@2 d4@5 ~@2, ~ g3@8 ~ f#2@12 ~@50, ~@26 c#3@18 ~@26 c#4@5 ~@69, ~@32 c#4@12 ~@25 d4@2 ~@73]/3",
  Q: "[d4@12 c#4@6 b3@5 a3@5 ~ b3@94 ~@14 b2@3 ~@4]/3", R: "~@40 a2@3 ~@5", S: "~@10 g#2 ~", T: "~@39 g2@8 ~",
  U: "[a2@8 ~ b2@9 c#3@9 d3@6 e3@6 b2@40 b2@7 a2@39 ~@2 a2@6 g#2@11]/3", V: "~@5 g#2 g2@2",
  W: "[~@37 a2@46 ~ e2@46 ~@2 a2@44 ~@3 e2@45 ~@2 g2@48 a2@47 g2@63]/8",
  X: "[~@44 b3@12 ~@11 b3@12 ~@12 g3@12 ~@12 f#3@11 ~@13 e4@11 ~@12 d4@10 ~@14 b3@10 ~@20 a#3@6 ~@11 b3@12 ~@12 b3@12 ~@12 g3@12 ~@12 f#3@11 ~@12 e4@12 ~@12 d4@10 ~@14 b3@8, ~@32 b2@21 ~@3 a2@23 g2@21 ~@3 f#2@22 ~@8 b3@20 ~@3 a3@16 ~@8 g3@16 ~@8 c#3@18 b2@21 ~@2 a2@23 ~@48 e3@21 ~@3 d3@22 ~@2 c#3@20, ~@38 f#3@19 ~@4 f#3@19 ~@5 d3@19 ~@5 d3@18 e3@21 ~@2 d3@22 ~@2 c#3@22 ~@2 f#2@24 ~@47 g2@21 ~@3 f#2@22 ~@69, ~@210 c#4@12 ~@6 f#3@19 ~@4 f#3@19 ~@5 d3@19 ~@5 d3@18 ~@5 b3@20 ~@4 a3@16 ~@8 g3@14]/8",
  Y: "[~@21 a#3@6 ~@12 b3@12 ~@12 b3@12 ~@12 g3@12 ~@11 f#3@11 ~@13 e4@12 ~@12 d4@10 ~@14 b3@10, ~@4 f#2@24 ~@47 g2@21 ~@3 f#2@22 ~@71, ~@10 c#3@18 ~@5 f#3@19 ~@5 f#3@19 ~@5 d3@19 ~@4 d3@18 e3@21 ~@3 d3@22 ~@2 c#3@22, ~@15 c#4@12 b2@21 ~@3 a2@23 ~@54 b3@20 ~@4 a3@16 ~@8 g3@16]/4",
  Z: "~@19 a#3@6 f#3@11 e3@12, ~ f#2@24 ~@23, ~@7 c#3@18 ~@23, ~@13 c#4@12 ~@23", AA: "[d3@4 c#3@4 b2@15 ~@9]/2",
  AB: "[~@22 d4@23 c#4 ~@5 b3@6 a3@6 b3@43 ~@3 b3@3 c#4@3 d4@5 ~ d4@11 c#4@6 ~ b3@5, ~@47 d4@2 ~@95, ~@48 c#4@5 ~@91]/3",
  AC: "[a3@5 ~@60 d4@23 ~ c#4 d4@2 ~@3 b3@4 ~ a3@6 b3@43 ~@4 b3@3 c#4@2 d4@5 ~ d4@12 c#4@6 b3@6 a3@4, ~@6 b3@86 c#4@5 ~@95]/4",
  AD: "[~@61 d4@23 c#4 ~@5 b3@4 ~@2, ~@2 b3@85 c#4@5 ~@4, ~@43 d4 ~@4]/2", AE: "a3 b3@7",
  AF: "[~@5 b3@2 c#4@3 d4@5 ~ d4@12 c#4@6 b3@5 a3@5 ~ b3@47 ~@4]/2",
})).s("gm_overdriven_guitar").gain(0.38).pan(0.3)

// other · overdriven guitar · soft notes
const overdriven_guitar_soft = note("<[~@18 b1@2 ~@4 b1@2 ~ b1@2 ~@4 b1@2 ~ b1@2 ~@4 b1@2 ~@4]!8 ~@75>")
  .s("gm_overdriven_guitar").gain(0.16).pan(0.3)

// other · distortion guitar
const distortion_guitar = note("<~@7 A@2 ~@66 B C@3 D@4>".pickRestart({
  A: "[~@16 b3@13 ~@3, ~@15 g3@16 ~, ~@23 d3@21 ~@4, ~@47 d4@39 ~@10]/2",
  B: "~@6 b3@3 a3@2 b3@3 d4@4 e4@2 f#4@12 a4@6 [e4,f4] ~@9, ~@20 f4 ~@17 f#4@10", // Fmaj7
  C: "[~ [e4,f4] [f#4,a4]@11 a4 ~@5 e4@9 d4@9 b3@3 d4@3 e4@8 e4 ~@2 e4 ~@3 e4@2 a4@3 e4@3 g4@12 a4@2 g4@2 e4@2 d4@2 e4@2 g4@2 g4 d4@2 e4@2 d4@2 a3@2 c4@2 d4@2 a3@2 c4@2 e4@2 c4@2 e4@2 d4@2 ~ a3@3 d4@2 ~ d4@3 c4@3 a3@3 g3@2 a3@3 c4@3 a3@3 g3@2, ~@115 c4@2 ~@27]/3", // Fmaj7 F#m
  D: "[~ a3@3 c4@3 d4@3 e4@3 g4@3 b4 ~@2 f#4 g#4@2 ~ g#4@2 b4 g#4 ~@2 g#4@2 f#4 g#4@2 ~ g#4 ~ g#4@2 b4@2 ~ f#4@2 ~ f#4@2 ~ b4 ~@2 b4@2 ~@2 g#4@2 f#4@2 g#4 c#5 g#4@2 b4 g#4@2 f#4 g#4@2 ~ g#4@2 b4 g#4@2 ~ g#4 ~@2 g#4@2 ~ g#4 c#5 ~@2 b4 ~@2 f#4@2 ~ f#4@2 g#4 b4@2 g#4 b4 g#4@2 ~ g#4@2 ~ g#4@2 c#5 ~ d5 d5@21 c#5@2 b4@9 a4@6 b4@32 ~@12, ~@18 g#4@2 ~@2 f#4@2 ~@4 b4@2 ~@4 f#4@2 c#5@2 ~@3 g#4@2 ~ g#4@2 ~ g#4@2 ~ g#4@2 ~ g#4@2 ~@20 b4@2 ~@115, ~@54 f#4@2 ~@13 f#4@2 ~@7 f#4@2 ~ f#4@2 ~@2 g#4@2 ~ g#4@2 ~ g#4@2 ~@8 f#4@2 ~ f#4@2 ~@2 g#4@2 ~@82]/4",
})).s("gm_distortion_guitar").gain(0.09).pan(0.4)

// other · distortion guitar
const distortion_guitar_2 = note(`<
  ~@9 A@4 ~@8 B C D E ~@12 F G H I@2 ~@7 J K L M@2 ~@11 N O@2 ~@7 P@2 Q R S@2 T U
>`.pickRestart({
  A: "b2@7 c#3 d3 e3 f#3 a3 b3@2 a3 f#3", B: "g2@4 ~@2 g2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2 ~@5",
  C: "a2@2 ~@4 a2@2 ~@4 a2@2 ~@4 a2@2 ~@4 a2@2 ~@4 a2@2 ~@4 a2 ~@5 a2@2 ~@4",
  D: "g2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2@3 ~@3 g2@2 ~@4 g2@2 ~@4", E: "[g2,g3]@15 ~",
  F: "~@41 [b2,d3,f#3]@3 ~@4", G: "~@20 [a2,c#3,f#3] ~@3", H: "~@20 [g#2,b2,f#3] ~@3", I: "[~@39 [g2,b2,g3]@47 ~@10]/2",
  J: "~@17 g2@2 ~ g2 ~@2 g2", K: "~@4 g2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2 ~@4 a2@2 ~@4 a2@2 ~@4 a2@2 ~",
  L: "~@3 a2@2 ~@4 a2@2 ~@4 a2@2 ~@4 a2 ~@5 a2@2 ~@4 g2@2 ~@4 g2@2 ~@4 g2@2 ~",
  M: "[~@3 g2@2 ~@4 g2@2 ~@4 g2@3 ~@3 g2@2 ~@3 g2@2 ~@4 [g2,g3]@44 ~@20]/2", N: "~@25 b3@11 a3@12",
  O: "[g3@12 ~ f#3@11 e3@41 ~@31]/2",
  P: "[~@3 b3@3 a3@3 b3@2 d4@4 e4@2 f#4@12 a4@6 [e4,f4] ~@10 e4 [f#4,a4]@11 a4 ~@5 e4@9 d4@9 b3@3 d4@3 e4@8, ~@17 f4 ~@17 f#4@11 ~ f4 ~@48]/2", // Fmaj7 F#m
  Q: "e4 ~@2 e4 ~@3 e4@2 a4@3 e4@3 g4@12 a4@2 g4@2 e4@2 d4@2 e4@2 g4@2 g4 ~ d4@2 ~ d4@2 a3@2, ~@43 e4@2 ~@3",
  R: "c4@2 d4@2 a3@2 c4@2 e4@2 c4@2 e4@2 d4@2 ~ a3@3 d4@2 ~ d4@3 c4@3 a3@3 g3@3 a3@2 c4@3 a3@3 g3@3 a3@2, ~@8 c4 ~@15",
  S: "[~ c4@3 d4@3 e4@3 g4@3 b4 ~@2 f#4 g#4@2 ~ g#4@2 b4 g#4 ~@2 g#4@2 f#4 g#4@2 ~ g#4 ~ g#4@2 b4@2 ~ f#4@2 ~ f#4@2 ~ b4 ~@2 b4@2 ~ f#4@2 ~ f#4@2 g#4 c#5 g#4@2 b4 g#4@2 f#4 g#4@2 ~ g#4@2 b4 g#4@2 ~ g#4 ~@2 g#4@2 ~ g#4 c#5 ~@2 b4 ~@2 f#4@2 ~ f#4@2 g#4 b4@2 g#4 b4, ~@15 g#4@2 ~@2 f#4@2 ~@4 b4@2 ~@4 f#4@2 c#5@2 ~@3 g#4@2 ~ g#4@2 ~ g#4@2 ~ g#4@2 ~ g#4@2 ~ g#4@2 ~@11 f#4@2 ~@4 b4@2 ~ f#4@2 ~ f#4@2 ~@2 g#4@2 ~ g#4@2 ~ g#4@2 ~@6]/2",
  T: "g#4@2 ~ g#4@2 ~ g#4@2 c#5 ~ d5 d5@21 c#5@2 b4@9 a4@5, ~@2 f#4@2 ~ f#4@2 ~@2 g#4@2 ~@37", U: "~ b4@39 ~@8",
})).s("gm_distortion_guitar").gain(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<A B@3 C@5 D@7 E@2 F G H ~@19 I J@8 K ~@33>".pickRestart({
  A: "~@9 b3@7 ~@2 b3@9 ~@10 b2@11, b2@3 ~, ~ f#3@7, ~@9 b3@7",
  B: "[~@18 b3@9 ~@9 f#3@4 ~@17 f#3@2 ~@7 b3@9 ~@9 f#3@6 b2@2 ~ f#3@2 ~@19 b3@9 ~@9 f#3@6 ~@3 f#3 ~@2, b2@36 ~@6 b2@6 g#2@40 ~@2 a2@6 g2@42 g2@5 ~, ~@9 f#3@27 ~@9 f#3@8 ~@52 f#3@27 ~@12, ~@27 b3@13 ~@35 b3@27 ~@21 b3@19 ~@2]/3",
  C: "[~@6 b3@3 ~@5 f#3@2 ~@6 b3@3 ~@13 b3@3 ~@5 f#3 ~@7 b3@3 ~@7 b4@13 ~@3, b2@43 ~@5 a2@32 ~@4 a2@12 g#2@43 ~@5 g2@32 ~@15 d5@39 ~@10, ~@9 f#3@27 d3@44 ~@4 d3@44 ~@4 d3@45 ~@3 d3@21 ~@39, ~@27 b3@20 ~@10 f#3@23 ~@10 f#3@13 ~@2 f#3@24 ~@24 f#3@25 ~@11 g4@42 ~@9, ~@75 b3@27 ~@21 b3@19 ~@29 b3@19 d4@42 ~@8]/5",
  D: "[~@6 b3@3 ~@5 f#3@2 ~@6 b3@3 ~@13 b3@3 ~@5 f#3 ~@7 b3@3 ~@13 b3@3 ~@5 f#3@2 ~@6 b3@3 ~@13 b3@3 ~@5 f#3 ~, b2@43 ~@5 a2@32 ~@4 a2@12 g#2@43 ~@5 g2@32 ~@15 d5@10 f#3@33 ~@15 f#3@23 ~@10 f#3@13 ~@2 f#3@24 ~@15, ~@9 f#3@33 ~@15 f#3@23 ~@10 f#3@13 ~@2 f#3@24 ~@24 f#3@25 ~@11 g4@30 b3@20 ~@28 b3@27 ~@21 b3@19 ~@2, ~@27 b3@20 ~@28 b3@27 ~@21 b3@19 ~@29 b3@19 d4@38 d3@44 ~@4 d3@44 ~@4 d3@12, ~@36 d3@44 ~@4 d3@44 ~@4 d3@45 ~@3 d3@12 b2@43 ~@5 a2@32 ~@4 a2@12 g#2@43 ~@5]/7",
  E: "[~@18 b3@9 ~@21 [e3,a3]@8 ~ [e3,a3]@9 [e3,a3,c#4,e4] ~@17 [e3,a3,c#4,e4] ~@5 e4 ~@2 e4@3, g2@32 ~@13 g4@42 ~@9, ~@9 f#3@25 ~@2 d3@12 [c#4,e4]@18 ~@24 [e3,a3,c#4]@5 ~, ~@27 b3@19 d4@42 ~@8, ~@47 d5@39 ~@10]/2", // A5 A C#m A
  F: "[g3,d4]@18 e4 ~@11 e3 ~@5 [g3,d4,e4] ~@2 e4@3 [e3,g3]@5 ~, e3@5 ~ e3 ~, e4 ~@17 [g3,d4]@18 ~@6 [d4,e4] ~@5", // G5 Em7 Em G5 Dsus2
  G: "[e3,a3,c#4,e4]@17 ~ [e3,a3]@12 [e3,a3] ~@5 [c#4,e4] ~@2 e4@3 e4 ~@2 e4@3, ~@18 [c#4,e4]@18 a3@5 ~ [a3,c#4]@6", // A A5 C#m A
  H: "[g3,d4]@17 ~ [e3,g3,d4,e4]@9 [d4,e4]@3 [e3,g3]@6 [d4,e4]@6 [d4,e4]@6, [e3,e4] ~@26 [e3,g3] ~@2 [d4,e4] ~@5 g3@12, ~@36 e3 ~@11", // G5 Em7 Dsus2 Em Dsus2 E Em Dsus2
  I: "~@13 [d3,g3,b3,d4]@3", // G
  J: "[[g3,b3,d4]@9 [d3,g3,b3]@7 ~@2 [g3,d4]@9 [d3,g3,b3]@6 [g3,b3,c#4]@6 ~@17 b3@9 ~@15 f#3@6 ~@18 b3@9 ~@38 b3@9 ~@15 f#3@3 ~@21 b3@9 ~@20 [e3,a3]@8 ~ [e3,a3]@9 [e3,a3,c#4,e4] ~@17 [e3,a3,c#4,e4] ~@5 e4 ~@2 e4@3 [g3,d4]@18 e4 ~@10 e3 ~@5 [g3,d4,e4] ~@2 e4@3 [e3,g3]@5 ~ [e3,a3,c#4,e4]@17 ~ [e3,a3]@12 [e3,a3] ~@5 [c#4,e4] ~@2 e4@3 e4 ~@2 e4@3 [g3,d4]@13, ~@9 d4@3 ~@6 b3@5 ~@4 d4@12 b2@43 ~@4 a2@32 ~@4 a2@11 g#2@42 ~@6 g2@32 ~@13 d4@41 ~@9 e4 ~@17 [g3,d4]@17 ~@48 a3@5 ~ [a3,c#4]@6 ~@13, ~@47 f#3@33 ~@15 f#3@23 ~@9 f#3@13 ~@2 f#3@23 ~@25 f#3@25 ~@10 g4@42 ~@50 [d4,e4] ~@23 [c#4,e4]@18 ~@25, ~@65 b3@20 ~@28 b3@27 ~@20 b3@19 ~@29 b3@19 d5@39 ~@118, ~@74 d3@44 ~@4 d3@43 ~@4 d3@44 ~@3 d3@12 [c#4,e4]@18 ~@24 [e3,a3,c#4]@5 ~ e3@29 ~@6 e3@6 ~@54 [e3,e4] ~@12]/8", // G G5 G C#m7b5 A5 A G5 Em7 …
  K: "~@4 [e3,g3,d4,e4]@9 [d4,e4]@3 [e3,g3]@6 [d4,e4]@6 [d4,e4]@6 ~@14, ~@13 [e3,g3] ~@2 [d4,e4] ~@5 g3@12 ~@14, ~@22 e3 ~@25", // Em7 Dsus2 Em Dsus2 Em Dsus2
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(1)

// drums · kick
const kick = s("bd").struct(`<
  ~@9 A@3 B C@3 D C@3 D C@2 E F G H I J K L M N O P Q R S T@2 ~ U V W X Y Z AA@2 AB AC AD AE AF AG AH AI@2 AJ AK AL AM
  AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH
>`.pickRestart({
  A: "x ~@3 x!2 ~ x", B: "x ~@8 x ~@2 x ~@3", C: "x ~@3 x!2 ~@2", D: "x!2", E: "x!2 ~ x ~ x ~ x", F: "~ x ~ x ~@4",
  G: "x ~@5 x ~@17 x ~@5 x ~@16 x", H: "~@8 x ~@14 x ~@5 x ~@17 x", I: "~@5 x ~@17 x ~@7 x ~@14 x ~",
  J: "~@4 x ~@17 x ~@8 x ~@14 x ~", K: "~@4 x ~@16 x ~@5 x ~@17 x ~@2", L: "~@2 x ~@4 x ~ x ~@5 x",
  M: "~@3 x ~@16 x ~@8 x ~@14 x ~@3", N: "~ x ~@8 x ~@11 x ~", O: "~ x ~@17 x ~@5 x ~@17 x ~@4",
  P: "~ x ~@17 x ~@5 x ~@16 x ~@5", Q: "x ~@2 x!2 ~@2 x", R: "x ~@17 x ~@5 x ~@16 x ~@6", S: "~@41 x ~@6", T: "~@5 x",
  U: "~@39 x ~@4 x ~@3", V: "~@7 x ~@2 x ~@8 x ~@2 x ~", W: "~@14 x ~@8 x ~@13 x ~@5 x ~@4",
  X: "~@13 x ~@5 x ~@17 x ~@8 x ~", Y: "~@7 x ~@8 x ~@19 x ~@11", Z: "~@2 x!2 ~@2 x ~", AA: "~@11 x ~@5 x ~@17 x ~@12",
  AB: "~@5 x ~@11 x ~@6", AC: "~@10 x ~@5 x ~@16 x ~@14", AD: "~@3 x ~ x ~@5 x ~ x ~@2",
  AE: "~@3 x ~@11 x ~@10 x ~@11 x ~@9", AF: "~ x ~@14 x ~@2 x ~@4", AG: "~@8 x ~@4 x ~@17 x ~@8 x ~@7",
  AH: "~@7 x ~@5 x ~@17 x ~@5 x ~@10", AI: "~@2 x ~@2 x ~@4 x ~ x ~@3", AJ: "~@5 x ~@5 x ~@17 x ~@8 x ~@9",
  AK: "~@5 x ~@5 x ~@16 x ~@5 x ~@13", AL: "~@4 x ~@8 x ~@14 x ~@5 x ~@13", AM: "~@7 x ~@19 x ~@5 x ~@14",
  AN: "~ x ~ x ~@5 x ~@2 x ~@3", AO: "~@3 x ~@4 x ~@17 x ~@5 x ~@15", AP: "~@2 x ~@8 x ~@14 x ~@5 x ~@15",
  AQ: "~@25 x ~@11 x ~@10", AR: "~ x ~@11 x ~@11 x ~@10 x ~@11", AS: "~ x", AT: "x ~@22 x ~@23 x", AU: "~@23 x ~@23 x",
  AV: "~@11 x ~@11 x", AW: "~@22 x ~@22 x ~@2", AX: "~@3 x ~@17 x ~@22 x ~@3", AY: "~@2 x ~@17 x ~@22 x ~@4",
  AZ: "~ x ~@16 x ~@20 x ~@8", BA: "~@17 x ~@23 x ~@5 x", BB: "~@8 x ~@11 x ~@2 x", BC: "~@15 x ~@23 x ~@4 x ~@3",
  BD: "~@14 x ~@20 x ~@12", BE: "~@13 x ~@22 x ~@5 x ~@5", BF: "~@12 x ~@22 x ~@5 x ~@6", BG: "~@11 x ~@22 x ~@5 x ~@7",
  BH: "~@5 x ~@18",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A@3 B A@3 C A@3 C A@2 D E A F G H I J K L M@2 N O P ~@2 Q R S T U V W X Y Z AA AB AC AD AE@2 AF AG AH AI AJ AK AL
  AM AN AO ~ AP AQ F AR I K AS AT AU AV AW AX AY AZ BA BB
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@2 x!2 ~@5 x!2", C: "~@4 x ~@4 x!7", D: "~ x!3", E: "x ~@3 x ~@3 x ~@5 x!2",
  F: "~@11 x ~@23 x ~@12", G: "~@11 x ~@22 x ~@13", H: "~@10 x ~@8 x ~@5 x ~@8 x ~@5 x ~@2 x ~@4",
// … 109 more lines

More by Matia Bazar