Strudelify

E andata cosi

Dirotta su Cuba

KeyC majorTempo110 bpm
0:00/0:00
// E andata cosi — Dirotta su Cuba
// 110 bpm, 4/4, key C 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 115 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 27.
setcpm(110/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
const piano = note("<~ A@2 B@2 ~@2 C@2 D@2 E@4 F@2 G@2 H@2 ~@94>".pickRestart({
  A: "[[d5,f#5,g5,b5]@3 [g4,a4,d5,f#5]@13]/2", B: "[[d5,f#5,g5,b5]@3 [g4,a4,d5,f#5]@2 [c4,f#4,b4]@2 [a3,d4,g4]@8 ~]/2",
  C: "[b3@9 ~ c4 [c4,g4]@5, [a2,e3,g3], g4@11 ~@5, c4@5 ~@3, ~@9 b3@2 ~@5]/2", // C5 A7
  D: "[e4@9 ~ f4 ~@4 a5, [d3,a3,c4], c5@11 ~@2 c6@3, f4@10 ~ [f4,c5]@5, ~@9 e4@2 ~@3 e5@2]/2", // D7 F5
  E: "[b5@6 b5 ~@7 [d5,b5] [e5,c6]@4 ~@3 [g5,e6] g#5@5 g#5 ~@2 g5, [d5,e5,g5]@7 [b4,g5]@8 ~@5 e5@3 ~@6 [g#5,a#5,d#6]@3, ~@13 [c5,a5]@2 ~@4 d#5@4 ~@9, ~@21 c6@2 d#6@6 ~@3]/4", // G C Em7 Em G#sus2 F
  F: "[[g5,a5,d6]@13 ~@3]/2", G: "[~@15 g5, [d2,f3,g3,c4,e4]@27 c5@5, ~@9 e5@7, ~@21 f4@11, ~@3 g4]/2",
  H: "[b4@4 b4@2 [g4,b4,c5,e5]@8 b4@6 b4@2 [g4,b4,c5,e5]@4 [g4,b4,c5,e5]@5 ~, [a2,e3,g3]@31 ~, [d4,e4,g4,a4,d5]@3 ~@4 [e4,g4,a4,d5]@4 ~@5]/2", // Cmaj7 A7 Dsus4 Em7
})).s("gm_piano").gain(0.3)

// bass · fretless bass
const bass = note(`<
  ~ A B C@3 D E@2 F@2 G@4 H@2 I@2 J@4 K L M N@2 O P Q R@5 S@3 T U V W@2 X@2 Y@2 U V Z@2 AA@4 AB L M N@2 O P Q AC@8 AD@5
  L M N@2 O P AE@6 AF@4 AG AH AI@2 AG AJ AK@3 AL@6 AM AN@2 AO@3 ~
>`.pickRestart({
  A: "d1@5 ~ d1@3 ~ d1@3 d1@2 ~", B: "d1@2 d2 d1 ~ d1@4 d2 d1!3 d2 d1!2",
  C: "[d2@3 d1@3 d2@4 d1@2 e1@2 f1@12 b1@2 f1@2 e1@16 c2 b1]/3", D: "a#1", E: "[a1@7 e1]/2",
  F: "[d1@21 ~ d1@2 f1@4 g1@4]/2", G: "[a1@26 c1@4 d1@10 c#2@2 c2@2 b1 ~ a#1@7 f2@3 a#2@7 ~]/4",
  H: "[a1@5 ~ a1 ~ a1@6 a1@13 ~ c1@3 ~]/2", I: "[d1@5 ~ d1 ~ d1@6 d1@4 d1@3 ~ d1@2 f1@4 g1@4]/2",
  J: "[a1@5 ~ a1 ~ a1@5 ~ a1@12 a1@2 g1@2 g#1@7 ~ d#2@2 g#2@2 d#2@2 g#1 ~ g1@11 ~ g1 ~ g1@4]/4", K: "g1 ~@15",
  L: "c2@6 ~ c2 ~@2 c2@4 g1 g#1", M: "a1@6 ~ a1 ~ a2 a1@2 a2 a1@2 ~",
  N: "[g#1@3 ~ g#1 ~@2 g#1 ~ g#2 g#1@3 ~ g1@4 g1@2 ~ g1@2 ~ g1@2 c2@2 d2@2 b1@2]/2",
  O: "c2@3 ~ c2 ~ c2!2 ~ c2 c2@3 ~ g1 g#1", P: "a1@3 ~ a1 ~@2 a1 ~ a2 a1@5 ~", Q: "f1@3 ~ f1@2 ~ f1 ~ f2 f1@4 g1@2",
  R: "[~@2 g1 ~ g1 ~ g1 ~ c2 ~ c2@2 c1@2 f1@6 f2@3 [c2,f2] f1@2 f1@2 f2@2 e1@6 e2@2 a#1@6 a#2@2 a1@6 a2@2 a1 a1@2 a2 a1@2 a2@2 d1@6 d2@2 d1 d1@2 d2 d1@2 d2@2 ~@2]/5", // F5
  S: "[g#1@4 g#2@3 [d#2,f#2] g#1@2 g#2@4 f1@6 f2@2 g1@8 c1@17 ~]/3", T: "e1!2 ~@6 e1@3 ~ g#1@3 ~",
  U: "a1@2 ~@5 a1 a1@2 ~@4 g2 a2", V: "~@2 a1@2 ~ a1@2 ~ a1@3 ~ a1 ~ c1@2",
  W: "[d1@2 ~@5 d1 d1@2 ~@4 c2 d2@2 ~ d1@2 ~ d1@2 ~ d1@3 ~ b1@2 g1@2]/2",
  X: "[a1@2 ~@5 a1 a1@2 ~@4 g2 a2@2 ~ a1@2 ~ a1@2 ~ a1@3 ~@3 c1@2]/2",
  Y: "[d1@2 ~@5 d1!2 ~ c2@2 b1@2 a#1@4 e2@3 f2@3 a#2@7 ~]/2",
  Z: "[d1@2 ~@5 d1 d1@2 ~@4 c2 d2@2 ~ d1 ~@2 d1@2 ~ e1@4 b1@2 g1@2]/2",
  AA: "[a1@2 ~@5 a1 a1@2 ~@4 g2 a2@2 ~ a1@2 ~ a1@2 ~ a1 ~ a1@2 g1 ~ g#1@7 ~ g#1 ~ g#1@2 g#2@2 g#1@2 g1@11 ~ g2 ~@2 f2@2 ~]/4",
  AB: "g2 ~@7",
  AC: "[~@2 g1 ~ g1 ~ g1 ~ c2 ~ c2@2 c1@2 f1@6 f2@3 [c2,f2] f1@2 f1@2 f2@2 e1@6 e2@2 a#1@6 a#2@2 a1@6 a2@2 a1 a1@2 a2 a1@2 a2@2 d1@6 d2@2 d1 d1@2 d2 d1@2 e1 ~ f1@5 ~ f1@2 ~@4 f1@2 ~@2 g1@5 ~ g1@2 ~@4 g1@3 ~ g#1@5 ~ g#1@2 ~@4 g#1@3 ~ g1@2]/8", // F5
  AD: "[~@4 g1@2 ~ g1 g2@2 d2@2 c#2@2 f1@6 f1@2 ~ f1 f2@2 d#2@2 d2 ~ c#2@8 g1@8 c2@6 c2@2 ~ c2!2 ~ c2@4 f1@5 ~ f1@2 g1@5 ~ g1@3 ~]/5",
  AE: "[g1@4 g2@3 g1@2 g2 g1@2 g2@2 c2@6 c2@2 ~@6 c2@2 f1@6 f2@3 [c2,f2] f1@2 f1@2 f2@2 e1@6 e2@2 a#1@6 a#2@2 a1@6 a2@2 a1 a1@2 a2 a1@2 a2@2 d1@6 d2@2 d1 d1@2 d2 d1@2 d2@2 ~@2, ~@11 c1@4 ~@33]/6", // F5
  AF: "[g#1@4 g#2@3 [d#2,f#2] g#1@2 g#2@4 f1@6 f2@3 f1 f1@2 f2@4 g1@6 g2@3 g1 g1@2 g2@4 g#1@6 g#2@3 g#1 g#1@2 g#2@2 d#2@3 ~]/4", // D#m
  AG: "c#2@6 ~ c#2 ~ c#2 c#2@5 ~", AH: "a#1@4 a#2@3 a#1 ~ a#2 a#1@2 a#2@3 ~",
  AI: "[a1@4 a2@3 a1 ~ a2 a1@2 a2@2 g#1@6 g#2@3 g#1@2 g#1@2 ~ d#2@2 c2@2]/2", AJ: "a#1@6 ~ a#1 g#2@2 a2@2 a#2 f2 c#2@2",
  AK: "[g#1@3 ~ g#1@2 ~ g#1 ~ g#1 g#1@4 c#2@5 ~ c#2@10 f#1@16 f1@2]/3",
  AL: "[~@2 c2@2 f1@2 b1@4 f2@2 b1@2 a#1@9 a#1 ~ a#1 a#1@4 d#2@8 ~ d#2 ~ d#2 d#2@2 a#1@2 a1@6 a1@3 a1 ~@2 a1@3 ~ f#1@5 ~ f#1@2 g#1@5 ~ d#1@2 c#1@18]/6",
  AM: "a1 g#1", AN: "[b1@3 f1]/2", AO: "a#1/3",
})).s("gm_fretless_bass").gain(0.5)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@24 A B C B D B E C D B@3 C@2 ~@19 A B C B D B E C D B@3 C@2 ~@6 A ~@7 D B@3 C@2 ~@3 F G H G I G J H I G@2 ~@10
>`.pickRestart({
  A: "~@4 a3 ~@2 a3 ~@4 a3!4", B: "~@4 a3!4 ~@4 a3!4", C: "~@4 a3 ~ a3!2 ~@4 a3!4", D: "~@4 a3!4 ~@4 a3 ~ a3!2",
  E: "~@4 a3 ~ a3!2 ~@4 a3 ~ a3!2", F: "~@4 a#3 ~@2 a#3 ~@4 a#3!4", G: "~@4 a#3!4 ~@4 a#3!4",
  H: "~@4 a#3 ~ a#3!2 ~@4 a#3!4", I: "~@4 a#3!4 ~@4 a#3 ~ a#3!2", J: "~@4 a#3 ~ a#3!2 ~@4 a#3 ~ a#3!2",
})).s("gm_overdriven_guitar").gain(0.19).pan(0.2)

// other · overdriven guitar · soft notes
const overdriven_guitar_soft = note(`<
  ~@24 A ~ B ~ C ~ C B C ~@3 B ~@20 A ~ B ~ C ~ C B C ~@3 B ~@7 A ~@7 C ~@3 B ~@4 D ~ E ~ F ~ F E F ~@12
>`.pickRestart({
  A: "~@5 a3!2 ~@9", B: "~@5 a3 ~@10", C: "~@13 a3 ~@2", D: "~@5 a#3!2 ~@9", E: "~@5 a#3 ~@10", F: "~@13 a#3 ~@2",
})).s("gm_overdriven_guitar").gain(0.13).pan(0.2)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~ A@2 B@3 ~ C D E F C D G ~ C D E F C H ~@56 I J ~@36>".pickRestart({
  A: "[[d4,b4]@6 [c4,d4,a4]@25 ~]/2", B: "[~@10 [c4,b4]@3 ~ [d#4,d5]@16 [g4,c5]@17 ~]/3",
  C: "[a3,b3,e4]@3 [a3,b3,e4]@2 ~ [a3,b3,e4]@2 [a3,b3,e4]@2 ~ [a3,b3,e4]@2 ~ [a3,b3,e4]@2", // Asus2
  D: "~ [a3,b3,e4]@2 [a3,b3,e4]@2 ~ [a3,b3,e4]@2 ~ e4 ~@2 e4 ~@3", // Asus2
  E: "[a3,c4,e4,g4]@2 ~ [a3,c4,e4,g4]@2 ~ [a3,c4,e4,g4]@2 ~ [a3,c4,e4,g4]@2 [a3,c4,e4,g4]@2 ~ [a3,c4,e4,g4]@2", // Am7
  F: "~ [c4,e4,g4] ~@2 e4@2 ~ [c4,e4,g4]@2 ~ [c4,e4,g4]@2 ~ [c4,e4] ~@2", // C
  G: "[a3,c4,e4,g4]@2 ~ [a3,c4,e4,g4]@2 ~ [a3,c4,e4,g4]@2 ~ [a3,c4,e4,g4]@2 [a3,c4,g4]@2 ~@3", // Am7
  H: "~ [a3,b3,e4]@2 [a3,b3,e4]@2 ~ [a3,b3,e4]@2 ~ e4 ~@6", // Asus2
  I: "[g4,c5]@2 ~ [g4,c5] ~ [g4,c5] [g4,c5]@3 [g4,c5] ~@2 [g4,c5]!2 ~@2", J: "~ c5 [g4,c5]!2 ~@12, [g4,b4] ~@7",
})).s("gm_acoustic_guitar_steel").gain(0.07).pan(0.2)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note("<~@8 A ~ B ~ A ~@3 A ~ B ~ C ~@94>".pickRestart({
  A: "~@9 [a3,b3] ~@2 [a3,b3] ~@3", B: "~ a3 ~@2 [a3,c4,g4]@2 ~ a3@2 ~ a3@2 ~ [a3,g4] ~@2", C: "~@9 [a3,b3] ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.05).pan(0.2)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A B@6 ~@5 C@3 D@2 ~@3 E@3 F@3 G@4 H@3 I@6 J K@2 L@2 M@4 N@2 L@2 O@4 F@3 G@4 H@3 P@6 Q@6 ~@6 R@2 S@8 T U@4 V@2 W@7 X
  Y@2 Z@3 ~
>`.pickRestart({
  A: "~@12 a3 [b3,c4,d4] [e4,f4,g4,a4] [b4,c5]", // Bm Fmaj7 Cmaj7
  B: "[[g5,b5]@6 [g4,a4,d5,f#5]@26 [g5,b5]@6 [g4,a4,d5,f#5]@4 [c4,f#4,b4]@4 [a3,d#4,b4,d5]@16 ~@16 a#4 g#4 [a#2,d4,g4]@16, d6@23 ~@8 [e4,g#4,c5,e5]@9 ~@8, ~@21 d4@10 [g#3,c4]@17]/6", // G D G D B B7 Gm Eaug …
  C: "[~@5 [a4,c5] [b4,d5] [c5,e5]@8 [g#4,a#4,d#5]@9]/3", D: "[d5@7 [g3,a3,d4,e4]@9, g4 ~]/2",
  E: "[~@10 [e4,a4,c5]@2 [d4,g4,b4]@2 c5@9 ~ c5@2 g5@2 d#5@2 f5@5 ~ g4 c5 d5 f5 c5 d5 f5 g5 f5 g5 c6 d6, ~@7 [g#3,d#4]@8 [g3,f4]@9]/3", // Am G G#5 G7
  F: "[[e6,f6,g6] ~@5 [f4,f5]@2 [e4,e5]@2 [f4,f5]@2 [g4,g5]@2 [g4,g5]@22 [e4,e5]@4 [g4,g5]@4 [d5,d6]@4]/3", // Em F E F G E G D
  G: "[[c5,c6]@5 [c4,c5] [a#4,a#5] [g4,g5]@4 [f4,f5] [e4,e5] [f4,f5] [g4,g5] [g4,g5]@6 [e4,e5] [g4,g5] [b4,b5]@2 [c5,c6]@2 [g4,g5]@4 [c4,c5]]/4", // C A# G F E F G E …
  H: "[[g4,g5]@2 [f4,f5] [a#4,a#5]@2 [g#4,g#5]@2 [g4,g5]@4 [f4,f5] [e4,e5] [f4,f5] [g4,g5] [c5,c6]@5 [e4,e5] [f4,f5]@2 [e5,g5,e6]]/3", // G F A# G# G F E F …
  I: "[~@2 [c5,e5,c6]@4 [a#4,d5,a#5]@4 [g#4,c5,g#5]@4 [g4,b4,g5]@12 [d5,b5,d6]@2 [b4,g#5,b5]@2 [c4,e4,f#4,g#4,e5,g#5]@12 [e4,e5]@2 [d4,d5]@2 c5@21 ~ [f4,g#4,c5]@2 [f3,d4,g4,b4]@8 [g3,d4,e4,g4,d5]@18, ~@23 [g#3,c4]@12 b3@13]/6", // C A# G# G E Caug E D …
  J: "[g4,g5,g6]!2 ~@14", K: "[b5@7 a5]/2", L: "[e5@7 a5]/2", M: "[b5@13 g5 e5 f5@2 c6@5 g5 g#5@2 f6@7]/4",
  N: "[e6@7 a5]/2",
  O: "[b5@26 [e4,a4,c5,c6]@2 [d4,g4,b4,b5]@2 [c5,c6]@9 ~ c5@2 g5@2 d#5@2 f5@5 ~ g4 c5 d5 f5 c5 d5 f5 g5 f5 g5 c6 d6, ~@15 [g#3,d#4]@8 [g3,f4]@9]/4", // Am G C G#5 G7
  P: "[~ [c5,e5,c6]@2 [a#4,d5,a#5]@2 [g#4,c5,g#5]@2 [g4,b4,g5]@6 [d5,b5,d6] [b4,g#5,b5] [c4,e4,f#4,g#4,e5,g#5]@6 [g3,c4,e4,e5] [a3,d4,f#4,d5] [g#3,c4,g4,c5]@3 d#5 f5@2 a#5@2 g5@6 d#6@2 c6@9]/6", // C A# G# G E Caug C D …
  Q: "[~@2 d6 d#6 d6 a#5 g5@2 b5 c6 a5 g#5 g5 f5 d#5 c5@15 g6@6 f6@2 d#6@4 b5@2 g5@2 [g3,d4,d6]@16 [g#3,c4,d#4,g4]@8 [b3,d#4,g4]@8 [g3,b3,d4]@6 ~@12, ~@30 [b3,d#4,g4]@8 b3@23 ~@35, ~@19 [f3,d#4]@4 ~@25]/6", // G5 G#maj7 Baug G Baug F7
  R: "[~@3 [f4,f5] [e4,e5] [f4,f5] [g4,g5] [c5,c6]@5 [e4,e5] [f4,f5]@2 [e5,g5,e6]]/2", // F E F G C E F Em
  S: "[~@2 [c5,e5,c6]@4 [a#4,d5,a#5]@4 [g#4,c5,g#5]@4 [g4,b4,g5]@12 [d5,b5,d6]@2 [b4,g#5,b5]@2 [c4,e4,f#4,g#4,e5,g#5]@12 [e4,e5]@2 [d4,d5]@2 c5@4 [d#4,f4,d#5,f5] [g4,g5] [c5,c6]@6 [d#5,d#6] ~ f5 ~ g6@5 ~ [f5,f6]@4 [g3,d#5,d#6]@2 [c4,f5]@2 [d#3,g5,g6]@2 [g5,g6]@12 [e5,e6] ~ [g5,g6]@2 [g#5,g#6]@6 ~@2 [f#4,f#5]@2 [f4,f5]@2 [f#4,f#5]@2 [g#4,g#5]@2 [g#4,g#5]@18, ~@23 c4@13 ~@3 g3@8 [f#3,a#3]@9 ~@8, ~@60 f6@2 ~@12 f6 ~@53, ~@61 g5@6 ~@61]/8", // C A# G# G E Caug E D …
  T: "~ [f4,f5] [g#4,g#5] [d#5,d#6]", // F G# D#
  U: "[[c#5,c#6]@5 [c#4,c#5] [b4,b5] [g#4,g#5]@4 [f#4,f#5] [f4,f5] [f#4,f#5] [g#4,g#5] [g#4,g#5]@6 [f4,f5] [g#4,g#5] c6@2 [c#5,c#6]@2 [g#4,g#5]@4 [c#4,c#5], ~@46 c5 ~@17]/4", // C# B G# F# F F# G# F …
  V: "[[a#4,a#5]@2 [g#4,g#5] [f#4,f#5]@2 [c#5,c#6]@2 [a#4,a#5]@4 [f#4,f#5] [f4,f5] [f#4,f#5] [g#4,g#5] [c#5,c#6]]/2", // A# G# F# C# A# F# F F# …
  W: "[~@2 [a#4,a#5]@4 [g#4,g#5]@4 [f#4,f#5]@4 [f4,f5]@6 [d#4,d#5]@2 [g#4,g#5]@4 [f4,f5]@2 [c4,c5]@2 c6@14 g#5@2 f5@12 f5 ~ d#5@2 [c#4,e4,g#4,c#5]@22 [c#4,a4]@2 [c4,d#4,g#4]@8 [c#3,g#3,a#3,c4,d#4,f4,g#4,c5]@18, ~@15 c5@6 ~@2 [f4,a4]@8 ~@25]/7", // A# G# F# F D# G# F C …
  X: "[g#3,e4,g#4,g#5] [a#3,d#4,f#4,f#5], c#4", Y: "[f5@3 d#5, [a3,c#4,f4]]/2", Z: "[g#3,a#3,c4,f4,c5]/3",
})).s("gm_string_ensemble_1").gain(0.36)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note("<~@75 A@3 ~@37>".pickRestart({
  A: "[~@4 [e4,g4,a4,d5]@2 ~@2 [e4,g4,a4,d5]@2 ~@2 [e4,g4,a4,d5] ~ [g#4,a#4,c5,d#5,g5]@5 ~ [g#4,a#4,c5,d#5,f5] ~ [f4,g4,b4,d#5]@5 ~ [f4,g4,b4,d5] ~ [g4,d5]@6 ~@12]/3", // Em7 G#maj7 Fm7 D#aug G7 G5
})).s("gm_lead_2_sawtooth").gain(0.27)

// other · overdriven guitar
const overdriven_guitar_2 = note("<~@2 A ~@37 B@2 C@2 D@2 C E B@2 C@2 D@2 ~@22 F G H I J K L M@2 ~@30>".pickRestart({
  A: "d3 ~ [d4,d5] d3 ~ d3 ~@3 [d4,d5] d4!2 [d4,d5] d4!2 [d4,d5]", B: "~@4 [c4,e4] ~@7 [c4,e4]@2 ~@2",
  C: "~@2 [g3,c4] ~@3 [g3,c4] ~", D: "~@2 [c4,e4] ~@3 [c4,e4] ~", E: "~@2 [c#4,f4] ~@3 [c#4,f4] ~",
  F: "~@9 e4 d#4 e4 g4 a4 c5@2", G: "d#5@3 ~ d#5@2 c5@3 ~ d#5@6", H: "~@4 a#4 g4 a#4!2 f4!2 d#4 c4 f4 d#4 c4@2",
  I: "d#4 c4 d#4!2 c4 g3 a#3 g3 c4@3 g3 f3 d#3 f3@2", J: "d#3@3 ~@7 d#4 ~ d4 c4 a3@2", K: "c4@2 c4 ~ c4@2 d4@2 ~@8",
  L: "~@2 b3 [c4,e4] g4 e4 f4 f#4 a4 c5 d5 d#5 e5 f5 ~ f#5", // C
  M: "[g5 ~ e5 c5@2 a#4@3 ~@2 a4 [c5,d5] d#5@7 ~ d5 ~ c5@5 ~@5]/2", // Csus2
})).s("gm_overdriven_guitar").gain(0.39)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@41 A ~@3 B C ~@2 A ~@3 B ~@61>".pickRestart({
  A: "~@2 g3@5 ~", B: "~@4 g3@11 ~", C: "~@2 e4 ~@3 e4 ~",
})).s("gm_electric_guitar_clean").gain(0.37)

// chords · epiano1
const epiano1 = note(`<
  ~@3 A@4 B@2 C@2 D@2 E@2 F@2 G@2 H@4 I J K L@2 J K M@3 N@6 O P@2 Q@2 R@2 S@2 T@2 U@2 V@4 W J K L@2 J K M@3 X@8 Y@3 Z AA
  AB@2 AC AD AE@6 AF@4 AG AH AI@2 AG AH AJ@7 AK@2 AL AM@2 AN@4
>`.pickRestart({
  A: "[~@10 [c4,d4,f#4,b4]@4 b4@12 ~@2 g4@2 [d4,g4,g#4,c5]@17 ~@13 a4@4, ~@7 [d#4,d5]@8 ~@13 g4@4, ~@14 g4@14 ~@19 [g#4,c5,e5]@17, ~@13 b4@2 ~@9 g5@8]/4", // Bm Csus2 D#maj7 G#aug
  B: "[[a2,g3,b3,d4,e4,g4]@31 ~]/2", C: "[~ f4, [d2,f3,c4,e4,g4], ~@14 e5@17 ~, ~@15 [a4,c5]@17]/2",
  D: "[~@9 b4@7, [a2,g3,b3,d4,e4,g4]]/2", E: "[[d2,f3,a3,c4,e4]@7 [a#2,g#3,a#3,c#4,d#4,g#4]@9]/2",
  F: "[a2,g3,b3,d4,e4,g4]/2", G: "[~@9 e5@7, [d2,f3,g3,c4,e4,g4]]/2",
  H: "[[a2,g3,b3,d4,e4]@15 [g#3,a#3,c4,d#4,g4]@8 [g2,a3,c4,d4,f4]@9]/4", I: "[a4,c5,f5] ~@15, g5 ~@7",
  J: "[g3,b3,d4]@3 [g3,c4,e4]@5, c2", K: "[g3,b3,d4]@3 [g3,c4,e4]@5, a1",
  L: "[[g#1,c4,d#4,f4,g4,a#4]@14 [c4,e4,f4,a4]@9 [d3,g3,c4] ~ g2 [d3,g3,c4]@6, ~@7 g1@9]/2", // G#maj7 Fmaj7 Csus2
  M: "[[c4,d#4,f4,g4,a#4]@6 [g3,c4,f4] ~@3 [g3,c4,f4]@4 [g2,f3,a3,c4,d4]@8 [c2,a#3,d4,e4,a4]@8 [f2,a3,c4,e4,g4]@16 [e2,g#3,c4,d4,g4]@2, f2@7 ~@17]/3", // Cm7 Csus4 Dm7 Am Fmaj7 C
  N: "[~@3 [a#1,a#2,g#3,c4,e4,g4]@4 [a1,a2,g3,b3,d4,e4]@8 [d2,c4,e4,f#4,g#4]@8 [g#2,g3,c4,d#4,g4]@8 [f2,g#3,a#3,c4,d#4,g4]@4 [g2,f3,a3,b3,e4]@4 [c2,g3,b3,d4,e4]@9]/6", // C7 Em7 G#maj7 Fm7 Em Cmaj7
  O: "[g5,c6,d6,g6]!2 ~@6 g4@4 f4@4, ~ [g#3,c4,d4]", // Gsus4 Dm7b5
  P: "[[g3,b3,d4,e4]@7 ~ [d5,e5]@9 ~ [d3,g3,c4] ~@2 [d3,g3,c4] ~ a2 [d3,g3,c4]@8, a1, ~@7 [g4,b4]@10 ~@15]/2", // Em7 Dsus2 Csus2 G
  Q: "[[c4,d4,f4,g4,a4,c5], d2@3 ~@13]/2", R: "[[g3,b3,d4,e4]@17 ~ [a3,d4,g4] ~@2 [a3,d4,g4] ~@2 [a3,d4,g4]@8, a1]/2",
  S: "[[d2,g3,c4,d4,f4]@14 [g#3,c#4,d#4,f4]@7 [a#3,d4,d#4,g4]@3 [g#3,c4,c#4,g4]@8]/2", // Dm7 C# D#maj7 G#maj7
  T: "[[g3,b3,d4,e4]@18 [d3,g3,c4] ~@2 [d3,g3,c4] ~@2 [d3,g3,c4]@8, a1]/2", // Em7 Csus2
  U: "[~@7 e5@5 [e2,g#3,c4,d4,g4]@4, [d2,f3,g3,c4,e4]@3 ~]/2", // C
  V: "[~@14 e5@12 [a2,g3,c4]@2 [g2,g3,b3]@2 [g#2,g3,c4,d#4,g4]@16 [g2,a3,c4,d4,f4]@17 ~, [a1,g3,b3,d4,e4]@13 ~@19, ~@6 a2@7 ~@19]/4", // Am7 G G#maj7 Dm7 Em7
  W: "[g2,a3,c4,d4,f4] ~@15", // Dm7
  X: "[~@6 [a#1,a#2,g#3,c4,e4,g4]@8 [g3,b3,d4,e4]@12 ~@4 [d2,c4,e4,f#4,g#4]@12 [d2,g3,e4] ~ [a3,d4,f#4] ~ [g#3,c4,d#4,g4]@11 ~ [c4,f4,g4,a#4] ~@3 [c4,d4,f4,g4,a#4,c5]@5 ~ [c4,d4,f4,g4,a#4,c5] ~@3 [f4,g4,a#4,c5]@2 [c4,d4,f4,g4,a#4,c5] ~@3 [g#2,d#3,g#3,d#4,f4,g4,a#4,c5]@16 [g2,d3,f3,a3,a#3,d4,f4]@12 [g1,a3,a#3,d4,f4]@2 f#1@2 f1@6 ~@6 [g#3,a#3,c4,d#4,g4] ~ f2@2 [c#2,b3,d#4,f4,g4,a#4]@2, ~@14 [a1,a2]@14 ~@14 c4@2 e2@2 f2@12 ~@4 [g2,d3,f3]@13 ~@41 f2@6 ~@6, ~@46 c#4 ~@25 [c4,d4] ~@37 [g#3,a#3,c4,d#4,g4]@12 ~@6, ~@30 f1 ~]/8", // C7 Em7 D G#maj7 Csus4 Gm7 Fsus4 Gm7 …
  Y: "[~@3 [g1,g2,f3,a#3,b3,d#4]@4 [c2,e4,g4,a4,b4,d5]@8 [f2,c4,d#4,f4,g4,a#4]@4 [g2,b3,d4,d#4,g4]@5]/3", // D# Cmaj7 Cm7 G
  Z: "c2@4 c3@2 ~ [g3,c4] ~ c3 ~@2 c3@4, g4, [b3,d4,e4]@3 c2@5, ~@5 [g3,c4]@3", AA: "[a1,g3,b3,d4,e4,g4]",
  AB: "[[g#1,g#2,a#3,c4,d#4,g4]@7 [g1,g2,c4,e4,f4,a4]@9]/2", AC: "[c2,c4,d4,e4,g4,b4]", AD: "[a2,c4,d4,e4,g4,b4]",
  AE: "[[g2,a#3,d4,f4,a4]@7 [a#3,d4,f4,a4]@4 [c3,d4,f4,g4,a#4,c5]@4 [f2,a3,c4,e4,g4]@8 [e2,g#3,c4,d4,g4]@4 [a#1,a#2,g#3,c4,e4,g4]@4 [g3,b3,d4,e4]@6 ~@2 [c4,e4,f#4,g#4]@9, ~@7 c2@8 ~@16 [a1,a2]@7 ~@10]/6", // Gm7 A#maj7 Gm7 Fmaj7 C C7 Em7 Caug …
  AF: "[[g#1,g#3,a#3,c4,d#4,g4]@7 [f1,g#3,a#3,c4,d#4,g4]@8 [a3,c4]@6 [g3,c4] g2 [a#3,c#4,d#4,f#4,g#4]@5 [f#3,a#3,c4]@4, ~@15 [g1,f4,g4]@7 ~ [g#1,g#2]@9]/4", // G#maj7 Fm7 Am C5 D#m7 Cm7b5 G7 G#
  AG: "[g#3,c4,d#4]@3 [g#3,c#4,f4]@5, c#2", AH: "[g#3,c4,d#4]@3 [g#3,c#4,f4]@5, a#1",
  AI: "[[a1,c#4,e4,f#4,g#4,b4]@14 [g#2,c#4,f#4,g#4,a#4]@11 [g#3,c#4] ~@2 [g#3,c#4]@4, ~@7 g#1@9, ~@27 g#2@5]/2", // Amaj7 F# C#5
  AJ: "[[g#1,b3,d#4,f#4,a#4]@7 [b3,d#4,f4,a#4]@6 [b3,d#4,f4,g#4]@2 [f#2,f4,g#4,a#4,c#5]@8 [f3,d4,d#4,g4,a#4,d5]@4 [b2,f#3,a3,d#4,g4,a4,c#5]@4 [a#2,f3,g#3,c#4,d#4,f4,g#4,c5]@8 [d#2,c#4,d#4,f4,g4,a4]@8 [a1,g#3,c#4,e4,g#4]@8 [f#2,a4,c#5,e5,f#5], ~@7 c#2@8 ~@41]/7", // G#m7 Bmaj7 Fm7b5 F#maj7 D#maj7 B7 A#m7 Amaj7 …
  AK: "[~@4 [a3,c#4,e4,f#4]@2 ~ e4 ~@6 [c#2,c#3,g#3,c4,c#4,f4]@18, ~@3 [g#2,d#3,f#3,a#3,c#4,d#4,f#4]@4 ~@9]/2", // F#m7 C#maj7 D#m7
  AL: "[a2,e3,g#3,c#4,e4,g#4] [g#2,d#3,f#3,g#3,a#3,c#4,d#4,f#4]", AM: "[[b1,b2]@3 [f1,f2], [a3,c#4,d#4,f4]]/2",
  AN: "[~@32 c6@17 ~@15, [a#1,a#2,g#3,a#3,c4,d#4,f4,g#4]@31 [g#5,a#5]@18 ~@15, ~@30 [d#5,f5]@19 ~@15]/4", // Fm7 G#sus2 D#sus2
})).s("gm_epiano1").gain(0.29).pan(0.4)

// chords · epiano2
const epiano2 = note("<~ A@2 B@3 ~@109>".pickRestart({
  A: "[[d4,f#4,g4,b4]@3 [g3,c4,d4,f#4,a4]@13]/2", // Gmaj7 D7
  B: "[[d4,f#4,g4,b4]@3 [g3,c4,f#4,a4]@2 ~@2 b4@6 ~ g4 g4@9, ~@7 d5@8 ~@9, ~@7 g4@7 ~@10, ~@13 b4@2 ~@9]/3", // Gmaj7 F#dim
})).s("gm_epiano2").gain(0.33).pan(0.4)

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

// drums · rim
const rim = s("rim").struct("<~@7 [~ x ~ x]!7 [~@3 x] [~ x ~ x]!5 [~ x ~@2] ~@94>").gain(0.54)

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

More by Dirotta su Cuba