Strudelify

Ricordati di me

Antonello Venditti

KeyA majorTempo90 bpm
0:00/0:00
// Ricordati di me — Venditti Antonello
// 90 bpm, 4/4, key A 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 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@15 A B C D E F G F H I J K L M N O P O Q R S T U V W X Y X Z R S V AA V AB AC AD AE AF O P O Q R S T U V W T U V W T
  U V W AG U V W T U V W T U V W T U V W ~@2
>`.pickRestart({
  A: "~@12 b2@3 ~", B: "e2 c#3", C: "a2 b2", D: "e3 c#3", E: "a2@5 ~ a2 a#2 b2@8", F: "g#2 g#2@7 a2@8", G: "b2@3 a2",
  H: "b2@12 ~@2 b2 c#3", I: "d3 c3", J: "b2@8 b2@4 b3 b2@2 ~", K: "e2@5 e2 b2@2 c#3@8", L: "a2@5 ~ a2@2 b2@6 ~ b2",
  M: "e3 d#3 c#3 b2", N: "a2@6 ~@2 b2@7 ~", O: "g#2 g#2@5 ~ g#2 a2@8", P: "b2@5 ~ b2 ~ b2@4 a2@4",
  Q: "b2@6 b2@2 b2@5 ~@3", R: "c3 a#2", S: "a2@5 ~ a2@2 a2@4 a3 e3 a2@2", T: "d2@5 d2 a2@2 b2@8",
  U: "g2@5 ~ g2@2 a2@6 ~ a2", V: "d3 c#3 b2 a2", W: "g2@6 ~@2 a2@7 ~", X: "f#2 f#2@5 ~ f#2 g2@8",
  Y: "a2@5 ~ a2 ~ a2@4 g2@4", Z: "a2@6 a2@2 a2@5 ~@3", AA: "g2@6 a2@8 ~ a2", AB: "g2@5 ~ a2@4 e3 a2 a3@4",
  AC: "e3@4 ~ e4 b2@2 c#3@7 ~", AD: "a2@5 ~ b2@8 ~ b2", AE: "e3@4 ~ e3 b2 ~ c#3@7 ~", AF: "[c#2,c#3]@8 b2@4 a2@3 ~",
  AG: "d2@4 ~ d2 a2@2 b2@8",
})).s("gm_acoustic_bass").gain(0.42)

// bass · acoustic bass · "ACOU BASS" · soft notes
const bass_soft = note("<~@29 A ~@9 B ~@23 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 C ~@2>".pickRestart({
  A: "~@7 a2 ~@7 b2", B: "~@7 g2 ~@7 a2", C: "~@7 g2 ~@8",
})).s("gm_acoustic_bass").gain(0.21)

// chords · piano · "A.PIANO"
const piano = note(`<
  A B C@2 D@4 E F G@2 H@4 I F J@2 K@4 L@2 M N O@2 P@4 Q@2 R S T U V@4 W X Y Z AA AB AC AD AE AF P@4 AG@2 R S T U R S T U
  R S T U R S T U R S T U R S T U R S T U ~@2
>`.pickRestart({
  A: "~@4 a#3@4 ~@3 d#5@5, [f#2,a#4,c#5]@7 ~@3 a#3@6, ~ c#3@3 [d#3,f#4,a#4,f5]@4", // F# D#m
  B: "~@4 f#3@4 ~@4 c#4@2 g#4 ~, [b2,d#4,f#4,c#5]@8 [c#3,a#4]@7 ~, ~ f#3 ~@2 c#4@2 ~@2, ~@3 b4@5 ~@2 g#3@5 ~", // B F#
  C: "[~@7 g#4 ~@7 g#4 [d#4,a#4]@2 a#4 ~@2 [d#4,b4]@2 ~@3 g#3@2 g#3@3 ~, [f#2,c#4,a#4]@4 ~ a#2@3 b2@4 c#3@4, f#4@6 f#4@2 ~@6 f#4@2 ~@3 a#4@4 ~@9, ~@2 c#3@6 [d#3,d#4,a#4]@8 ~@3 d#4@2 ~@2 [c#4,g#4]@7 ~@2, ~@2 a#3@2 ~@2 f#3@3 f#3 f#3@2 ~@4]/2", // D#5 G#m F# D#5 C#5
  D: "[~@22 c#5@2 ~@4 b3@2 ~@8 e4 ~@7 e4 f#4 g#4@2 g#4 ~@2 a4@2 ~@3 f#3@2 f#3@3 ~, b4@11 c#5@9 e3@4 ~@2 f#3@5 ~@3 b2@8 g#2@6 a2@15 ~, [e2,a#4]@7 ~ d#5@6 ~@4 e3 a4@4 ~@7 f#4@8 ~ f#4@5 e3@6 e3@2 e3@11 ~, ~@2 b2@5 ~ [c#3,d5]@8 [a2,a#4,b4]@7 ~ [b2,g#4]@7 ~ [e2,g#4]@7 ~ g#4@6 ~@5 g#4@3 ~ f#4@8 ~, ~@4 g#3@6 g#3@13 ~@13 g#3@4 c#3@8 ~@8 b2@7 ~]/4", // Edim Dmaj7 E
  E: "f#4@4 e4@3 ~@5 f#4@4, g#4@15 ~, b4@7 ~@9", F: "~@7 a3, g#4, e4@3 e4 c#4@4, ~ a3@5 e4@2, ~ b3@3",
  G: "[e4@4 e4@4 ~@14 e4@2 ~@4 e4@3 ~, [f#4,g#4,b4]@4 ~@2 f#4@4 b3@5 ~, ~@2 g#4 ~, ~@8 e4@3 ~@5, ~@18 a3@6 [a3,c#4]@7 ~]/2", // G#m7 A
  H: "[~@2 a2@2 ~@6 a2@2 b2@3 ~, g#2@8 ~@8 b2@12 a2@2 b4@4 ~@3 b4@24 ~@3, b4@3 e4@21 ~@2 e4@8 d#4@27 ~@3, ~@2 d#4@21 ~ d#4@8 g#2@8 ~@24, ~@5 b4@19 ~@4 f#4@6 ~ e4@26 ~@3]/4",
  I: "f#4@4 e4@3 ~@5 f#4@3 ~, g#4@15 ~, b4@7 ~@9",
  J: "[e4@2 e4@2 ~@7 e4 ~@2 e4 ~, [f#4,g#4,b4]@4 ~@2 f#4@4 b3@5 ~, ~@2 g#4 ~, ~@8 e4@3 ~@5, ~@18 a3@6 [a3,c#4]@7 ~]/2", // G#m7 A
  K: "[~@8 a2@8 ~@24 a2@8 ~@14 b2 c#3, g#2@8 ~@8 b2@12 a2@2 b4@4 ~@3 b4@24 ~@3, b4@3 e4@21 ~@2 e4@8 d#4@27 ~@3, ~@2 d#4@21 ~ d#4@8 g#2@8 ~@24, ~@5 b4@19 ~@4 f#4@6 ~ e4@26 ~@3]/4",
  L: "[[a3,d4,f#4]@3 ~@3 d2@2 [a3,c4,e4]@4 [a3,c4,e4]@2 c3@2 [b3,e4,f#4]@3 ~ [b3,e4,f#4]@2 ~@2 [b3,d#4,f#4]@3 ~ [b2,b3,d#4,f#4]@2 ~@2, d2 [a3,d4,f#4] c2@4 ~@2, ~@16 b2@4 ~@2 b2@5 ~@5]/2", // D Am Bsus4 B D
  M: "[e4,g#4,b4]@7 ~ d#5@3 c#5@3 ~@2, ~@8 g#4@7 ~", N: "b4@3 a4@5 [e4,g#4]@6 f#4@2, e4@7 ~@9",
  O: "[[e4,g#4]@8 ~@2 f#4@2 g#4@2 ~@7 e4@3 e4@4 e4@3 ~, ~@2 e4@3 ~@3, ~@14 c#5@17 ~]/2", // E
  P: "[~@5 a2 ~@2, b4@3 e4@21 ~@2 e4@8 d#4@27 ~@3, ~@2 d#4@21 ~ d#4@8 g#2@8 ~@24, ~@5 b4@19 ~@4 f#4@6 ~ e4@26 ~@3, ~@16 b2@12 ~@2 b4@4 ~@3 b4@24 ~@3]/4",
  Q: "[[g3,c4,e4]@3 ~@3 c2@2 [g3,a#3,d4]@3 ~@3 a#2@2 [a3,d4,e4]@3 ~@5 [a3,c#4,e4]@3 ~ [a2,a3,c#4,e4]@2 ~@2, c2 [g3,c4,e4] a#1@4 ~@2, ~@3 [g3,a#3,d4] a2 [a3,d4,e4] ~@2, ~@22 a2@5 ~@5]/2", // C Gm Asus4 A C Gm Asus4
  R: "a4@2 a4@3 a4@2 ~ [e5,e6]@4 [d5,d6]@4, a5 ~, ~@5 a3 ~ [a3,a4]@9", S: "~@2 a4 ~@2 [a3,a4] ~ a3@8 ~, ~@7 a4 ~@8",
  T: "~@2 [a3,a4] ~@2 a4 ~@4 [d4,d5]@2 [e4,e5]@2 [f#4,f#5]@2, ~@7 a4@7 ~@2", // A D E F#
  U: "~@2 [a3,a4] ~@2 [b3,b4] ~ a4@7 ~@2, [d4,d5]@3 ~", // A B D
  V: "[~@2 [a3,a4] ~@2 a4 ~@2 [b4,b5]@2 a5 ~ a3 [f#4,f#5]@2 ~ a3@2 [d4,a4] ~@2 a4 d5@2 [c#4,c#5]@2 [d4,d5]@2 [e4,e5]@2 [a4,a5]@4 [b4,b5]@2 a4!2 ~ d4 d4@10 a4 ~@2 a4 ~@2 [c#4,c#5]@2 [d4,d5]@2 [e4,e5]@2 [c#4,c#5] ~, ~@7 a4@3 a4@7 ~@19 a5@2 ~ a4@10 ~@6 a4@5 ~@4, ~@11 [g4,g5]@2 ~@2 [e4,e5]@7 d4 ~@11 [d4,a4] ~@3 [f#4,f#5]@2 d5@15 d4@3 ~@6]/4", // A B F# D5 C# D E A …
  W: "[g3,c4,e4]@3 ~@3 c3@2 [a#2,a#3,d4]@4 [f3,a#3,d4]@2 a#2@2, c3@4 [g3,c4,e4]@4 f3 ~@7", // C A# C
  X: "[a3,d4,e4]@3 ~ [a3,d4,e4]@2 ~@2 [a3,c#4,e4]@3 ~@2 [a3,c#4,e4]@2 ~, a2@4 ~@2 a2@4 ~ a2@4 ~, ~@12 e3@3 ~", // Asus4 A
  Y: "[a3,d4,f#4]@4 [a3,c#4,e4]@3 ~ [b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 ~", Z: "[g3,b3,d4]@5 ~ [a3,c#4,e4]@9 a3",
  AA: "[a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~ [b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 ~", // D A Bm
  AB: "[g3,b3,d4]@5 ~ [c#4,e4]@5 ~@3 a4 ~, ~@6 a3@4 ~ a3@4 ~, ~@13 e4@2 ~", // G C#m
  AC: "[b3,e4,g#4]@4 [b3,d#4,f#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~", AD: "[a3,c#4,e4]@5 ~ [b3,d#4,f#4]@9 b3",
  AE: "[b3,e4,g#4]@3 ~ [b3,d#4,f#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~", // E B C#m
  AF: "[a3,c#4,e4]@7 ~ [d#4,d#5] [b3,b4] [e4,e5] [b3,b4] [f#4,f#5] [b3,b4] [b4,b5] [b3,b4]", // A D# B E B F# B
  AG: "[[g3,c4,e4]@3 ~@3 c2@2 [g3,a#3,d4]@3 ~ [g3,a#3,d4]@2 a#2@2 [a3,d4,e4]@3 ~ [a3,d4,e4]@2 ~@2 [a3,c#4,e4]@3 ~ [a2,a3,c#4,e4]@2 ~@2, c2 [g3,c4,e4] a#1@4 ~@2, ~@16 a2@4 ~@2 a2@5 ~@5]/2", // C Gm Asus4 A C
})).s("gm_piano").gain(0.53)

// chords · piano · "A.PIANO" · soft notes
const piano_soft = note(`<
  ~@3 A ~@4 B ~ C@2 ~@4 B ~ C@2 ~@10 D E ~@4 F G H I J K L M N ~@4 O ~@4 D E ~@4 F G H I F G H I F G H I F G H I F G H I
  F G H I F G H I ~@2
>`.pickRestart({
  A: "~@2 d#4 ~@13", B: "e4 ~ c#4@2, ~@2 e4 ~", C: "[~ [e4,g#4] ~@2, ~@4 c#4@7 ~@5]/2", D: "g#2 a2", E: "~@3 a2",
  F: "~@2 a3 ~@10 e4@2 ~", G: "a3 ~ a3 ~ a3 ~@3 [a4,a5]@7 ~, [b4,b5] ~", H: "~@5 a3 ~ a3@6 ~@3", I: "~@7 a3@8 ~",
  J: "a3!2 d4 a3!2 d4 ~ d4@8 a3", K: "~@4 a3 d4 ~ d4@3 ~@6", L: "~ a3 ~ a3!2 d4 a3 ~@6 a3 ~ a3",
  M: "a3!2 ~ a3!2 ~ a3 ~@2 a3 a3@2 ~@4, ~@2 d4@3 d4@2 ~@9", N: "~@10 f3 ~@4 a3", O: "~@12 c#4@3 ~",
})).s("gm_piano").gain(0.3)

// chords · french horn · "HRN/GTR/SX"
const french_horn = note("<A B@2 C D E F G H I J@2 K@2 L@2 ~@74>".pickRestart({
  A: "~@4 a#3@4 f5@2 ~ d#5@5, c#5@15 ~, [f#2,a#4]@7 ~@3 a#3@6, ~ c#3@3 d#3@4", // F#
  B: "[~@2 f#3 ~ f#3@4 ~@4 c#4@3 ~@7 f#4 g#4 ~@6 f#4 g#4, [b2,c#5]@8 c#3@7 ~ f#2@7 ~@3 a#2@6, ~@3 b4@5 a#4@14 ~@2 a#4@6 ~@2, ~@10 g#3@5 ~@3 c#3@6 d#3@8, ~@7 f#3]/2", // Bsus2
  C: "~@2 f#3 ~@2 b4@2 ~@3 g#3 ~@5, b2@8 c#3@7 ~, [d#4,a#4]@6 ~ [c#4,g#4]@9, ~ f#3 ~@2", D: "g#4 ~ g#4 ~ g#4 ~ g#4 ~",
  E: "g#4@2 ~@2 [c#4,e4,f#4] ~@3 c#4@3 ~ [c#4,d#4]@2 ~@2", // F#7 C#sus2
  F: "[b3,g#4] ~@3 [b3,e4]@2 ~@2 [d#4,g#4]@2 ~@2 g#4@2 ~@2, ~@4 g#4 ~@11", // E E5 G#5
  G: "[c#4,e4,g#4] ~ [c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,d#4] ~, ~@4 f#4 ~@11", // C#m A D#m7b5
  H: "[e4,f#4] e4 ~ f#4, g#4@15 ~, [e2,b4] [c#2,e4]", I: "~@7 a3, [a2,g#4], e4@3 e4 [b2,c#4]@4, ~ a3@5 e4@2, ~ b3@3",
  J: "[e4@4 e4@4 ~@20 e4@3 ~, [e2,f#4,g#4,b4]@4 c#2@5 a3@3 ~@4, ~@8 [e4,g#4]@8 [a2,g#4]@8 [b2,a3,c#4]@7 ~, ~@12 f#4@8 b3@11 ~, ~@8 e4@3 e4@3 ~@2]/2", // E Amaj7 F#m
  K: "[[g#2,d#4]@2 a2@2 a3@2 ~ a2, e4@3 ~, b4@4 b2@3 ~, ~ c#4@2 [b3,d#4,f#4]]/2", // G#5 B
  L: "[g#2@8 a2@8 ~@8 b3@7 ~, e4@3 ~, b4@4 b2@3 ~, ~ c#4@2 ~]/2",
})).s("gm_french_horn").gain(0.13)

// chords · french horn · "HRN/GTR/SX" · soft notes
const french_horn_soft = note("<~@2 A B C D E ~ F ~ G@2 ~@2 H I ~@74>".pickRestart({
  A: "~ a#3 ~@2", B: "~@12 g#3@3 ~", C: "e4 ~ [b3,e4] ~ [d#4,e4] ~ [c#4,e4] ~, b3 ~@15",
  D: "[c#4,e4]@2 ~@6 [a3,e4]@3 ~ a3@2 ~@2", E: "e4 ~@7 e4@2 ~@2 [c#4,e4]@2 ~@2", F: "~ c#4", G: "[~@4 c#4@7 ~@5]/2",
  H: "d#4@7 ~@9", I: "a3@8 [d#4,f#4]@7 ~",
})).s("gm_french_horn").gain(0.06)

// chords · string ensemble 2 · "STR/SX/BRS"
const string_ensemble_2 = note(`<
  ~@3 A B C@2 D E F G H I@4 J K L@2 M@4 N O J K P@2 M@4 Q R S@3 T@5 U V W@4 X@4 M@4 Y Z AA ~ AB AC ~@26
>`.pickRestart({
  A: "~@5 b5 ~@4 f#4@4 f4@2", B: "e5", C: "[g#5@6 c#5 e5]/2", D: "g#5@4 ~@3 d#5", E: "e2 c#2", F: "a2 b2",
  G: "[e2,e3] [c#2,c#3]", H: "[a2,a3]@8 [b2,b3]@7 ~",
  I: "[g#2@4 [a2,c#5]@4 [b4,b5]@4 [d#4,d#5] [e4,e5] [f#4,f#5] ~ [g#2,g#3]@4 ~@2 a5 ~ [b2,b3]@7 ~, e5@12 ~@3 b4@16 ~, ~@4 b2@3 a2 ~@2 [a2,a3]@2 ~@4, ~@15 b5@7 ~@10]/4", // A B D# E F# G# B A
  J: "~@5 e6 d#6 b5", K: "g#5@3 a5", L: "[b5@5 a5 g#5 f#5]/2",
  M: "[b5@8 c#6@8 b5@8 [d#4,d#5]@2 [e4,e5]@2 f#4@2 ~@10 [c#5,c#6]@8 [b4,b5]@15 ~, b4@12 ~@2 f#5@2 ~@2 e5@13 ~, ~@15 [b4,b5]@5 ~@12]/4", // D# E C# B
  N: "[d4,f#4,d5,f#5]@8 [e4,c5,e5]@7 ~", O: "e5@7 ~ [d#5,b5]@7 ~, [b3,f#4,b4,f#5]@7 ~",
  P: "[~@5 a5 g#5 f#5, b5@5 ~@3, ~@16 a3@15 ~]/2", Q: "[c4,e4,c5,e5] [d4,a#4,d5]",
  R: "d5@7 ~ [c#5,a5]@7 ~, [a3,e4,a4,e5]@7 ~", // F#m A5
  S: "[[a3,a4,a5]@4 [e5,e6]@2 [d5,d6]@2 ~@8 d4@2 c#4@2 ~ d5 [e4,e5] [f#4,f#5], d4@14 ~@7 d4@3, ~@2 b3@5 a3@3 b3 ~]/3", // A E D E F#
  T: "[[b3,d4,d5]@12 c#4@4 ~@8 [b4,b5]@2 [a4,a5] [g4,g5]@2 [f#4,f#5]@2 e4 ~@6 [d4,d5]@2 c#5@2 [d4,d5]@2 [e4,e5]@2 ~@4 [b4,b5]@2 [a4,a5]@2 [f#4,f#5]@2 [g3,b3,d5]@16 [c#4,c#5]@2 [d4,d5]@2 [c#4,e4,e5]@2 [c#4,c#5] ~, ~@6 a3@6 b3@4 a3@12 d4@9 ~@3, ~@16 d4@15 e5@7 ~@2 c#4@8 [f#3,d4]@8 ~@16 a3@7 ~, ~@16 e4@6 ~ [a4,a5]@2 ~@15]/5", // Bm B A G F# D E B …
  U: "[e4,g4,e5,c6]@8 [d4,f4,d5,a#5]@7 ~", V: "~@8 [c#5,e5,a5]@7 ~, [d4,e4]@15 ~, [d5,e5,a5] ~, ~@6 a4@9 ~",
  W: "[[d4,f#4]@4 [c#4,e4]@3 ~ [b3,d4]@4 [a3,c#4]@3 ~ [g3,b3]@6 [a3,c#4,c#5]@10, d5@11 ~@5]/2", // D C#m Bm A G A
  X: "[[e4,g#4]@4 [d#4,f#4]@3 ~ [c#4,e4]@4 [b3,d#4]@3 ~ [a3,c#4]@6 [b3,d#4,d#5]@10, e5@11 ~@5]/2", // E D#m C#m B A B
  Y: "e5@8 [d4,a#4,d5]@7 ~", Z: "d5@7 ~ c#5@6 ~@2, [e4,a4,e5]@7 ~", AA: "[a4,a5]@2 [e5,e6] [d5,d6]",
  AB: "~@5 d5 [e4,e5] [f#4,f#5], ~@5 d4@3", AC: "d4@3 ~",
})).s("gm_string_ensemble_2").gain(0.27)

// chords · string ensemble 2 · "STR/SX/BRS" · soft notes
const string_ensemble_2_soft = note(`<
  ~@2 A@2 ~@3 B C@2 D@2 E ~ F G H@6 ~@2 I J K@6 ~@2 L M N@2 O P Q R ~ S ~@14 T U V@3 W ~@26
>`.pickRestart({
  A: "[a#5@23 g#5@9]/2", B: "~@5 e5@2 ~", C: "[f#4 e4 d#4 ~ a3@2 [b3,e4]@2, ~@3 c#4@3 ~@2]/2",
  D: "[f#4@4 e4@4 d#4@4 c#4@12 e4@7 ~]/2", E: "~ d#5 ~@2", F: "~@7 g#5", G: "f#5@7 ~", H: "[e5@11 ~, b4@23 ~@73]/6",
  I: "~@8 c4@7 ~", J: "e4@8 d#4@7 ~",
  K: "[e4@8 d#4@4 ~@4 b3@3 ~ a3@7 ~ [d#4,f#4]@4 ~@12 b3@3 ~@5 b3@9 ~@35, e5@11 ~, b4@23 ~@9 g#4@4 f#4@12 ~@48, g#4@16 e4@12 ~@4 e4@31 ~@33, ~@12 c#4@16 b3@12 c#4@23 ~@33]/6", // D#m
  L: "~@8 a#3@7 ~", M: "d4@8 c#4@7 ~", N: "[~@4 [b4,b5]@2 ~ c#4, f#4@12 [a4,a5]@3 ~]/2", O: "~@4 d4 ~ a3@2, f#4@7 ~",
  P: "g3@3 ~", Q: "~ g3", R: "~ d4@5 ~@10", S: "~ e4@2 ~", T: "[c4,e4,c5]@8 a#3@7 ~", U: "d4@8 [c#4,a5]@7 ~, a3@7 ~",
  V: "[a3@7 ~@9 [b4,b5]@8 ~@4 c#4@4 d4@4 c#4@4 b3@4 a3@4, d4@14 ~@6 d4 ~@3, f#4@24 [a4,a5]@7 ~ f#4@14 ~@2, ~@2 b3@5 a3@3 ~@2]/3", // B A
  W: "[g3,b3,d5]@3 [a3,c#4]", // G A
})).s("gm_string_ensemble_2").gain(0.1)

// chords · trumpet · "STR/SX/BRS"
const trumpet = note("<~@64 A ~ B C D@2 B E@8 ~@5 F@3 G@2 ~>".pickRestart({
  A: "~@2 [e5,e6] [d5,d6]", B: "~@2 c#4@2 ~ d5 [e4,e5] [f#4,f#5], ~@5 d4@3", C: "[b3,d4,d5]@3 a3",
  D: "[[a3,a4,a5]@2 [e5,e6] [d5,d6] ~@4, d4@7 ~]/2", E: "[[g3,b3,d4,d5]@3 [a3,c#4]@29]/8",
  F: "[[a3,a4,a5]@4 [e5,e6]@2 [d5,d6]@2 b5@4 ~@2 c#4@2 d4@2 c#4@2 d4 d5 [e4,e5] [f#4,f#5], d4@14 ~@7 d4@3, f#4@12 ~@4 f#4@7 ~, ~@2 b3@5 a3@3 b3 a3]/3", // A E D E F#
  G: "[[g3,b3,d4,d5]@3 a3@3 ~@2, ~@3 c#4 ~@4]/2", // G
})).s("gm_trumpet").gain(0.2)

// chords · trumpet · "STR/SX/BRS" · soft notes
const trumpet_soft = note("<~@64 A@3 B C@3 ~@14 D ~@4>".pickRestart({
  A: "[~@4 [b4,b5]@2 ~ c#4 d4 ~ b3 a3, ~@4 b3@10 a3@6 d4 ~@3, ~@12 [a4,a5]@3 ~ f#4@7 ~]/3", B: "g3@3 c#4",
  C: "[~@4 [b4,b5]@2 ~ c#4 d4 ~ b3 a3, f#4@12 [a4,a5]@3 ~ f#4@7 ~, ~@4 b3@10 a3@6 d4 ~@3]/3", D: "b4@4 [a4,a5]@3 ~",
})).s("gm_trumpet").gain(0.07)

// chords · soprano sax · "STR/SX/BRS"
const soprano_sax = note("<~@72 A@3 B A@3 C ~@10>".pickRestart({
  A: "[[a3,a4,a5]@4 [e5,e6]@2 [d5,d6]@2 b5@4 ~@2 c#4@2 d4@2 c#4@2 d4 d5 [e4,e5] [f#4,f#5], d4@14 ~@7 d4@3, f#4 ~, ~@2 b3@5 a3@3 b3 ~]/3", // A E D E F#
  B: "[b3,d4,d5]@3 [a3,c#4]", C: "[b3,d4,d5]@3 ~",
})).s("gm_soprano_sax").gain(0.2)

// chords · soprano sax · "STR/SX/BRS" · soft notes
const soprano_sax_soft = note("<~@73 A B C ~ A B C ~@10>".pickRestart({
  A: "b4@4 [a4,a5]@3 ~", B: "~@3 a3, f#4@7 ~", C: "g3@3 ~",
})).s("gm_soprano_sax").gain(0.13)

// chords · trombone · "STR/SX/BRS"
const trombone = note("<~@80 A@3 B ~@6>".pickRestart({
  A: "[[a3,a4,a5]@4 [e5,e6]@2 [d5,d6]@2 b5@4 ~@2 c#4@2 d4@2 c#4@2 d4 d5 [e4,e5] [f#4,f#5], d4@14 ~@7 d4@3, f#4 ~, ~@2 b3@5 a3@3 b3 ~]/3", // A E D E F#
  B: "[b3,d4,d5]@3 ~", // Bm
})).s("gm_trombone").gain(0.2)

// chords · trombone · "STR/SX/BRS" · soft notes · A
const trombone_soft = note("<~@81 [b4@4 [a4,a5]@3 ~] [~@3 a3, f#4@7 ~] [g3@3 ~] ~@6>").s("gm_trombone").gain(0.13)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@30 A ~ B ~@2 C ~@4 A ~ B ~@2 C ~@8 A ~ B ~@2 C ~@30>".pickRestart({
  A: "~@7 x ~@8", B: "~@7 x", C: "~@13 x ~@2",
})).gain(0.25)

// drums · rim
const rim = s("rim").struct("<~@26 [~ x ~ x]!3 [~@4 x ~@7 x ~@2 x] [~ x ~ x]!4 ~@56>").gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@35 A B@3 C B@4 ~ A B@3 C B D B C B@4 ~ A B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@4 ~@2
>`.pickRestart({
  A: "~@9 x ~@2 x ~ x!2", B: "~ x ~ x", C: "~@4 x ~@7 x ~@2 x", D: "~@4 x ~@5 x!6",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@49 [~@12 x ~@2 x] ~ [~@9 x!7] ~@38>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@25 A ~@23 B ~ C ~@5 D E ~@31>".pickRestart({
  A: "~@3 x", B: "~@11 x!2 ~@3", C: "~@15 x", D: "~@14 x!2", E: "x",
})).gain(0.2)

// drums · high tom
const high_tom = s("ht").struct("<~@49 [~@9 x ~@6] ~@40>").gain(0.5)

// drums · ride
// … 51 more lines

More by Antonello Venditti