Strudelify
Banane e lamponi cover art

Basi musicali - Gianni Morandi

Banane e lamponi

Morandi

KeyD minorTempo93 bpm
0:00/0:00
// Banane e lamponi — Morandi
// 93 bpm, 4/4, key D minor. 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 86 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): STEEL GT.
setcpm(93/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 B C D ~ E ~@5 F@5 G@3 H@5 ~@7 I@4 ~@4 J@5 G@3 K@5 ~@32 L ~>".pickRestart({
  A: "[d4,d5]@2 [a3,a4] [c4,c5] ~ [a3,a4] ~ [d4,d5] ~ [a3,a4] [c4,c5]@2 [a3,a4] ~ [d4,d5]@2", // D A C A D A C A …
  B: "[a3,a4] [c4,c5] ~ [a3,a4] ~ [d3,d4] ~ [a3,a4] [c3,c4] ~ [c3,c4] ~ [d4,d5]@2 [a3,a4] [c4,c5]", // A C A D A C D A …
  C: "~ [a3,a4] ~ [d4,d5] ~ [a3,a4] [c4,c5]@2 [a3,a4]!2 [d4,d5]@2 [a3,a4] [c4,c5] ~ [a3,a4]", // A D A C A D A C …
  D: "~ [d3,d4] ~ [a3,a4] [c3,c4] ~ [c3,c4] ~@9", E: "~@2 [c4,g4] [d4,g4] [d4,eb4] c4 [d4,g4]@2 ~@8, ~@4 g4@2 c4 ~@9",
  F: "[~@4 f4 e4@2 d4 [g2,f3,a3,bb3,d4]@14 [g2,f3,a3,bb3,d4]@2 [g3,b3,c4,e4]@14 [a2,g3,b3,c4,e4]@2 bb2@14 bb2@2 a2@4 a2@2 ~ [a2,b2,c3,db3,eb3] [bb1,b1,db2,eb2,e2,f2,gb2,g2,ab2,bb2] [ab1,a1] ~@6 d4@2 a3 c4 ~ a3 ~ d4, ~@24 a2@12 ~@4 [a3,d4,f4]@16 [g4,c5]@9 ~@15, ~@56 db4@6 [g3,a3,b3,c4,db4,eb4]@3 ~@15, ~@63 [d3,e3,f3,gb3,ab3,bb3]@2 ~@15]/5", // Gm7 Cmaj7 Am7 Adim Amaj7 Dm C5 Am7b5 …
  G: "~ a3 c4@2 a3 ~ c4 a3 d4@2 a3 c4 ~ a3 ~ d4",
  H: "[~ a3 c4@2 [a3,f4] ~@2 [ab3,d4] [g2,f3,a3,bb3,d4]@14 [g2,f3,a3,bb3,d4]@2 [g3,b3,c4,e4]@14 [a2,g3,b3,c4,e4]@2 bb2@14 bb2@2 a2@4 ~@3 [b2,c3,db3,d3,eb3] [b1,db2,eb2,e2,f2,gb2,g2,ab2,a2,bb2] [ab1,a1,bb1] ~@4 [c3,d3] [e3,f3,g3,a3,b3] ~@8, ~@5 e4@3 ~@32 [a3,d4,f4]@16 [g4,c5]@9 ~@5 [a2,b2]@2 ~@8, ~@6 a3@2 ~@16 a2@12 ~@20 db4@6 [a3,b3,c4,db4,eb4]@2 ~@5 [d2,e2,f2,g2]@3 ~@8, ~@60 a2@3 [e3,f3,g3,ab3,bb3]@2 ~@3 a1@4 ~@8]/5", // Dm Abdim Gm7 Cmaj7 Am7 Csus2 Em Dm …
  I: "[~@7 g2 [f3,bb3,d4]@2 g2 [f3,bb3,d4] ~ [g2,f3,bb3,d4] ~ [g3,c4]@2 [g3,c4,e4] ~ a2 [g3,c4,e4] a2 [g3,c4,e4] ~ [ab3,d4,f4]@2 bb2 ab3 bb2 [ab3,d4,f4] bb2 [a3,c4,e4,f4]@2 [a3,c4,e4,f4] ~ d3 [a3,c4,e4,f4] d3 [a3,c4,f4] ~ d4 ~ [a3,bb3,d4,f4] ~@2 [g2,a3,bb3,d4,f4] ~ [g3,bb3,db4,e4]@2 [g3,bb3,db4,e4] ~ a2 e4 ~ [g3,bb3,db4,e4] d3 [a3,c4,e4,f4]@3 [a3,c4,e4,f4] ~ [a3,c4,e4,f4] d3 [a3,d4,f4], ~@15 e4 ~@8 bb2 ~@6 d3 ~@32]/4", // Bb Gm7 C5 C Ddim Fmaj7 F Bbmaj7 …
  J: "[~@4 f4 e4@2 d4 [g2,f3,a3,bb3,d4]@14 [g2,f3,a3,bb3,d4]@2 [g3,b3,c4,e4]@14 [a2,g3,b3,c4,e4]@2 bb2@14 bb2@2 a2@4 a2@2 ~ [a2,b2,c3,db3,eb3] [bb1,b1,db2,eb2,e2,f2,gb2,g2,ab2,bb2] [ab1,a1] [c6,d6] g2 [g4,a4] d3 d4 ~ d4@2 a3 c4 ~ a3 ~ d4, ~@24 a2@12 ~@4 [a3,d4,f4]@16 [g4,c5]@9 ~@15, ~@56 db4@6 [g3,a3,b3,c4,db4,eb4]@3 ~@15, ~@63 [d3,e3,f3,ab3,bb3]@2 ~@15]/5", // Gm7 Cmaj7 Am7 Adim Amaj7 Csus2 Gsus2 Dm …
  K: "[~ a3 c4@2 [a3,f4] ~@2 d4 [g2,f3,bb3,d4]@14 [g2,f3,a3,bb3,d4]@2 [g3,b3,c4,e4]@14 [a2,g3,b3,c4,e4]@2 bb2@14 bb2@2 a2@4 a2@2 ~ [a2,b2,c3,db3,eb3] [bb1,b1,db2,eb2,e2,f2,gb2,g2,ab2,bb2] [ab1,a1] ~@4 [c3,d3] [e3,f3,g3,a3,b3] ~@8, ~@5 e4@3 ~@32 [a3,d4,f4]@16 [g4,c5]@9 ~@5 [a2,b2]@2 ~@8, ~@6 a3@2 ~@16 a2@12 ~@20 db4@6 [g3,a3,b3,c4,db4,eb4]@3 ~@4 [d2,e2,f2,g2]@3 ~@8, ~@63 [d3,e3,f3]@2 ~@3 a1@4 ~@8]/5", // Dm Gm7 Cmaj7 Am7 Adim Amaj7 Csus2 Em …
  L: "~@8 [d2,d3,d4,d5] ~ [d2,d3,d4,d5] ~@2 [d2,d3,d4,d5]!3", // D
})).s("gm_piano").gain(0.36).pan(0.4)

// chords · piano · soft notes
const piano_soft = note("<~@13 A B C ~@5 A D E ~@7 F ~ G H ~@6 A D C ~@5 A D E ~@34>".pickRestart({
  A: "~@2 a2 ~@5", B: "~@7 [d4,e4]", C: "[c2,d2] ~@15", D: "~@7 [d4,e4,f4]", E: "[c2,d2] ~@3 [b1,c2]@3 ~@9",
  F: "~@15 a2", G: "~@8 [g2,a3,bb3,f4] g2 ~@2 g2 ~@3", H: "~@4 [g3,bb3,db4] ~@11",
})).s("gm_piano").gain(0.14).pan(0.4)

// bass · acoustic bass · "BASSO"
const bass = note(`<
  ~@3 A@2 B@2 C D E F G H I J K D E F L M N J O@4 P@4 Q@4 R D E F G H I J K D E F L M I J O@4 S@4 T@4 U ~@7 V@4 W@4 S@4
  X@2 ~
>`.pickRestart({
  A: "[~@8 d2@3 a1 c2 d2 a1 d2@4 a1 c2 d2 c2 d2 a1@2 ~ a1 a2 a1 ~ a1]/2",
  B: "[a2 a1 ~ a1 a2 a1 ~ a1 d2@2 ~ a1 c2 d2 a1 d2@4 a1 c2 d2 c2 d2 a1@2 ~ a1 a2 a1 ~ a1]/2",
  C: "e3@3 ~@5 d2@2 ~ d2 a1@2 ~ a1", D: "d2@2 ~ d2 a1@2 d2@2 a1@2 ~ a1 e3@2 ~ a2",
  E: "e3@3 e1 e2 c2 a1 e1 d2@2 ~ d2 a1@2 ~ a1", F: "d2@2 ~ d2 a1@2 d2@2 e2@2 ~ e2 a1@2 ~ a1",
  G: "e2@2 ~ a1 e2@3 ~ g1@2 ~ g1 d2@2 ~ d2", H: "g1@2 ~ g1 d2@2 g1@2 a1@2 ~ a1 e2@2 ~ e2",
  I: "a1@2 ~ a1 e2@2 a1@2 bb1@2 ~ bb1 f2@2 ~ f2", J: "bb1@2 ~ bb1 f2@2 bb1@2 a1@2 ~ a1 a2@3 a1",
  K: "e2@2 ~@6 d2@2 ~ d2 a1@2 ~ a1", L: "e2@2 ~ a1 e2@3 ~ g1@2 ~ g1 d2@3 ~", M: "g1@2 ~ g1 d2@2 g1@2 a1@2 ~ a1 e2@3 a1",
  N: "a1@2 ~ a1 e2@2 a1@2 bb1@2 ~ bb1 f2@3 f2",
  O: "[a2 ~@7 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 bb1@2 ~ bb1 f1@3 d2@3 ~ d2 a1@2 d2@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 d2@2 ~ d2@3 a1 c2]/4",
  P: "[d2@2 ~ d2 a1@2 d2@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 bb1@2 ~ bb1 f1@3 d2@3 ~ d2 a1@2 d2@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 d2@2 ~ d2@4 ~]/4",
  Q: "[d2 ~@7 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 bb1@2 ~ bb1 f1 bb1 ~ d2@3 ~ d2 a1@2 d2@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 d2@2 ~ d2 a1@3 d2]/4",
  R: "~@8 d2@2 ~ d2 a1@2 ~ a1",
  S: "[d2@2 ~ d2 a1@2 d2@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 bb1@2 ~ bb1 f1@3 d2@3 ~ d2 a1@2 d2@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 d2@2 ~ d2@5]/4",
  T: "[~ d2 ~ a1 g1@2 d1@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 bb1@2 ~ bb1 f1@3 d2@3 ~ d2 a1@2 d2@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 d2@2 ~ d2@3 a1 c2]/4",
  U: "d2@2 ~ d2 a1@2 d2@2 ~@8",
  V: "[~@8 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 bb1@2 ~ bb1 f1@3 d2@3 ~ d2 a1@2 d2@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 d2@2 ~ d2@5]/4",
  W: "[~@8 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 bb1@2 ~ bb1 f1@3 d2@3 ~ d2 a1@2 d2@2 g1@2 ~ g1 d1@3 a1@3 ~ a1 e1@2 a1@2 d2@2 ~ d2@3 a1 c2]/4",
  X: "[~ d2 ~ a1 g1@2 d1 ~ d1@2 ~ d1 d2@2 d1 d1@4 d2 d2@2 d1@2 d2 ~ d2 ~@2 d2!3]/2",
})).s("gm_acoustic_bass").gain(0.46)

// chords · acoustic guitar nylon · "NYLON GT"
const acoustic_guitar_nylon = note(`<
  ~@3 A@4 B@4 C@4 D@4 C@4 E@4 F@5 G@3 B@4 C@4 D@4 C@4 E@4 H@8 I ~@7 J@8 K@6 L
>`.pickRestart({
  A: "[~@8 [c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4]@2 [d3,a3,c4,d4,f4] d3 [a3,c4,e4,g4]@2 [a3,c4,e4,g4] a2!2 [a3,c4,e4,g4] a2 [a3,c4,e4,g4]@2 [a3,c4,e4,g4] a2!2 [a3,c4,e4,g4] a2 [a3,c4,e4,g4] d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4]@2 [d3,a3,c4,d4,f4] ~ [a3,db4,e4,g4]@2 [a3,db4,e4,g4] a2!2 [a3,db4,e4,g4] a2 [a3,db4,e4,g4], ~@7 [d3,a3]@2 ~@46 a2@2 ~@7]/4", // Dm7 Am7 Dm7 A7 D5
  B: "[~@7 d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,f4]@2 [c4,d4,f4] d3!2 ~ d3 [a3,c4,d4,f4] d3 [a2,a3,c4,e4,g4]@2 [a3,c4,e4,g4] a2!2 [a3,c4,e4,g4] a2 [a3,c4,e4,g4]@2 [a2,a3,c4,e4,g4] a2!2 [a3,c4,e4,g4] a2 [a3,c4,e4,g4] a2 [d3,a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,f4] d3 [a2,a3,c4,e4,g4] ~ [a3,c4,e4,g4] a2!2 [a3,c4,e4,g4] a2 [a3,c4,e4,g4], ~@10 [a3,c4,d4,f4] ~@21]/4", // Dm7 Am7 Dm7 Am7 Dm7
  C: "[~ [a3,c4,e4,g4] a2!2 [a3,c4,e4,g4] a2 [a3,c4,e4,g4] ~ [g2,f3,a3,bb3,d4]@2 [f3,a3,bb3,d4] g2 ~ [f3,a3,bb3,d4] g2 [f3,a3,bb3,d4]@2 [g2,f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] g2 [f3,a3,bb3,d4] g2 [g3,a3,c4,e4] ~ [g3,a3,c4,e4] a2!2 [g3,a3,c4,e4] a2 ~ a2 [g3,a3,c4,e4] a2!2 [g3,a3,c4,e4] a2 [g3,a3,c4,e4] a2 [bb2,a3,d4,f4] ~ [a3,d4,f4] bb2!2 [a3,d4,f4] bb2 [a3,d4,f4]@2 [bb2,a3,d4,f4] ~ bb2 [a3,d4,f4] ~ [a3,d4,f4] ~ [a2,g3,bb3,db4,f4] ~ [g3,bb3,db4,f4] a2!2 [g3,bb3,db4,f4] a2!2, ~@12 g2@2 ~@11 a2@2 ~@4 [g3,a3,c4,e4]@2 ~@20 bb2@2 ~@9]/4", // Am7 Gm7 Bbmaj7 Gm7 Bbmaj7 Am7 Bbmaj7 Dm …
  D: "[[g3,bb3,db4,e4] ~@6 d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,f4]@2 [c4,d4,f4] d3!2 ~ d3 [a3,c4,d4,f4] d3 [a2,a3,c4,e4,g4]@2 [a3,c4,e4,g4] a2!2 [a3,c4,e4,g4] a2 [a3,c4,e4,g4]@2 [a2,a3,c4,e4,g4] a2!2 [a3,c4,e4,g4] a2 [a3,c4,e4,g4] a2 [d3,a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,f4] d3 [a2,a3,c4,e4,g4] ~ [a3,c4,e4,g4] a2!2 [a3,c4,e4,g4] a2 [a3,c4,e4,g4], ~@10 [a3,c4,d4,f4] ~@21]/4", // Gdim Dm7 Am7 Dm7 Am7 Dm7
  E: "[[g3,bb3,db4,e4] ~@6 g2 [f3,a3,bb3,d4]@2 [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] ~ a2 ~ a2 [g3,a3,c4,e4] bb2 [ab3,d4,f4] ~ [ab3,d4,f4] bb2!2 [ab3,d4,f4] bb2 [ab3,c4,d4,f4]@2 [ab3,c4,d4,f4] ~ d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] g2 [f3,a3,bb3,d4] ~ [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] g2 [g3,a3,bb3,db4,f4]@2 [g3,bb3,db4,f4] ~ a2 [g3,bb3,db4,e4] ~ [g3,bb3,db4,e4] ~ [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,e4,g4], ~@10 [g3,a3,c4,e4] ~@21]/4", // Gdim Bbmaj7 Am7 Ddim Dm7b5 Dm7 Bbmaj7 Gm7b5 …
  F: "[~ [a3,c4,d4,e4,g4] ~ d3 [a3,c4,d4,e4,g4]@2 [a3,c4,d4,e4,g4] ~ [g2,f3,a3,bb3,d4] ~ [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] ~ a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] bb2 [ab3,d4,f4]@2 [ab3,d4,f4] bb2!2 [a3,d4,f4] bb2 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] ~ d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] ~ [a3,bb3,d4,f4] ~ [a3,bb3,d4,f4] ~ g2 [a3,bb3,d4,f4] a2 [db4,g4,c5]@2 [db4,g4,c5] a2!2 [db4,g4,bb4]@2 [db4,g4,bb4] d3 [gb3,a3,b3,e4]@2 [gb3,a3,b3,e4] d3!2 [gb3,a3,b3,e4] d3 [gb3,a3,b3,e4]@2 ~@7 [g2,a3,bb3,d4,f4]@2 g2 [a3,bb3,d4,f4] g2 [g2,a3,bb3,d4,f4] ~ [g3,c4,e4]]/5", // Am7 Gm7 Bbmaj7 Am7 Ddim Dm Dm7 Bbmaj7 …
  G: "[~ [g3,c4,e4] a2!2 [g3,c4,e4] a2 [g3,c4,e4] ~ [bb2,ab3,d4,f4]@2 bb2 ab3 bb2 [ab3,d4,f4] bb2 [d3,a3,c4,e4,f4]@2 [a3,c4,e4,f4] ~ d3 [a3,c4,e4,f4] d3 [a3,c4,e4,f4] d3 [g2,a3,bb3,d4,f4] ~ [a3,bb3,d4,f4] ~ g2 [a3,bb3,d4,f4] g2 [a2,g3,db4,e4]@2 [g3,db4,e4] a2!2 [g3,db4,e4] ~ [a2,g3,db4,e4] ~ [d3,a3,c4,e4,f4]@2 ~ [a3,c4,e4,f4] d3 [a3,c4,e4,f4] d3 [d3,a3,d4,f4]]/3", // C Bb7 Ddim Dm7 Fmaj7 Gm7 Bbmaj7 A7 …
  H: "[~ [a3,c4,d4,e4,g4] ~ d3 [a3,c4,d4,e4,g4]@2 [a3,c4,d4,e4,g4] ~ [g2,f3,a3,bb3,d4] ~ [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] ~ a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] bb2 [ab3,d4,f4]@2 [ab3,d4,f4] bb2!2 [a3,d4,f4] bb2 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] ~ d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] ~ [a3,bb3,d4,f4] ~ [a3,bb3,d4,f4] ~ g2 [a3,bb3,d4,f4] a2 [db4,g4,c5]@2 [db4,g4,c5] a2!2 [db4,g4,bb4]@2 [db4,g4,bb4] d3 [gb3,a3,b3,e4]@2 [gb3,a3,b3,e4] d3!2 [gb3,a3,b3,e4] d3 [gb3,a3,b3,e4]@2 d3 ~ d3 [gb3,a3,b3,e4]@2 [gb3,a3,b3,e4] ~ [f3,a3,bb3,d4]@2 [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] ~ a2 ~ a2 [g3,a3,c4,e4] bb2 [ab3,d4,f4] ~ [ab3,d4,f4] bb2!2 [ab3,d4,f4] bb2 [ab3,c4,d4,f4]@2 [ab3,c4,d4,f4] ~ d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] g2 [f3,a3,bb3,d4] ~ [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] g2 [g3,a3,bb3,db4,f4]@2 [g3,bb3,db4,f4] ~ a2 [g3,bb3,db4,e4] ~ [g3,bb3,db4,e4] ~ [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,e4,g4], ~@42 [g3,a3,c4,e4] ~@21]/8", // Am7 Gm7 Bbmaj7 Am7 Ddim Dm Dm7 Bbmaj7 …
  I: "~ [a3,c4,d4,e4,g4] ~ d3 [a3,c4,d4,e4,g4]@2 [a3,c4,d4,e4,g4] ~@9", // Am7
  J: "[~@8 [g2,f3,a3,bb3,d4] ~ [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] ~ a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] bb2 [ab3,d4,f4]@2 [ab3,d4,f4] bb2!2 [a3,d4,f4] bb2 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] ~ d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] ~ [a3,bb3,d4,f4] ~ [a3,bb3,d4,f4] ~ g2 [a3,bb3,d4,f4] a2 [db4,g4,c5]@2 [db4,g4,c5] a2!2 [db4,g4,bb4]@2 [db4,g4,bb4] d3 [gb3,a3,b3,e4]@2 [gb3,a3,b3,e4] d3!2 [gb3,a3,b3,e4] d3 [gb3,a3,b3,e4]@2 ~@7 [f3,a3,bb3,d4]@2 [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] ~ a2 ~ a2 [g3,a3,c4,e4] bb2 [ab3,d4,f4] ~ [ab3,d4,f4] bb2!2 [ab3,d4,f4] bb2 [ab3,c4,d4,f4]@2 [ab3,c4,d4,f4] ~ d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] g2 [f3,a3,bb3,d4] ~ [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] g2 [g3,a3,bb3,db4,f4]@2 [g3,bb3,db4,f4] ~ a2 [g3,bb3,db4,e4] ~ [g3,bb3,db4,e4] ~ [a3,c4,d4,f4]@2 [a3,c4,d4,f4] d3!2 [a3,c4,d4,f4] d3 [a3,c4,d4,e4,g4], ~@42 [g3,a3,c4,e4] ~@21]/8", // Gm7 Bbmaj7 Am7 Ddim Dm Dm7 Bbmaj7 C …
  K: "[~ [a3,c4,d4,e4,g4] ~ d3 [a3,c4,d4,e4,g4]@2 [a3,c4,d4,e4,g4] ~ [g2,f3,a3,bb3,d4] ~ [f3,a3,bb3,d4] g2!2 [f3,a3,bb3,d4] a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] ~ a2 [g3,a3,c4,e4]@2 [g3,a3,c4,e4] bb2 [ab3,d4,f4]@2 [ab3,d4,f4] bb2!2 [a3,d4,f4] bb2 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] ~ d3 [a3,c4,d4,f4]@2 [a3,c4,d4,f4] ~ [a3,bb3,d4,f4] ~ [a3,bb3,d4,f4] ~ g2 [a3,bb3,d4,f4] a2 [db4,g4,c5]@2 [db4,g4,c5] a2!2 [db4,g4,bb4]@2 [db4,g4,bb4] d3 [gb3,a3,b3,e4]@2 [gb3,a3,b3,e4] d3!2 [gb3,a3,b3,e4] d3 [gb3,a3,b3,e4]@2 d3 ~ d3 [gb3,a3,b3,e4]@2 [gb3,a3,b3,e4] ~ [gb3,a3,b3,e4]@2 d3 [gb3,a3,b3,e4] d3 [gb3,a3,b3,e4] d3 [gb3,a3,b3,e4]@2 d3 ~ [gb3,a3,b3,e4] [gb3,a3,b3,e4]@2 d3 ~ [d3,gb3,a3,b3,e4] ~ [d3,gb3,a3,b3,e4] ~@2 a3 [d3,gb3,a3,d4] [gb3,a3,d4]]/6", // Am7 Gm7 Bbmaj7 Am7 Ddim Dm Dm7 Bbmaj7 …
  L: "d3 ~@15",
})).s("gm_acoustic_guitar_nylon").gain(0.3).pan(0.6)

// chords · acoustic guitar steel · "STEEL GT"
const acoustic_guitar_steel = note(`<
  ~@3 A B ~ C ~ D E F@2 ~ G H ~ D E F@2 ~ G H ~@13 I J K@2 ~ G L ~ D E K@2 ~ G L ~@35
>`.pickRestart({
  A: "~@8 a3@5 ~@3", B: "~@5 d3 ~@10", C: "~@5 d3 ~ d3 ~@8", D: "~ a3 ~@6 d4@2 d4 ~@4 d4, ~@7 a2@2 ~@7",
  E: "a2 d4 ~ [c4,d4,g4] d4 ~ d4 ~@9", F: "[~@8 d4@2 d4 ~@2 d4 ~ d4@2 d4 ~@2 d4 ~ d4 ~@9]/2", G: "~@10 bb2 ~@5",
  H: "~@2 bb2 ~@4 a2@2 ~ a2 ~@5", I: "~ a3 ~@6 d4@2 d4 [e4,f4] [f4,g4] ~ [f4,g4] f4, ~@7 a2@2 ~@7",
  J: "[a2,f4] ~@3 d4 ~ d4 ~@9, g4 ~@3", K: "[~@8 d4@2 d4 ~@2 d4 ~ d4@2 d4 ~@2 d4 ~ d4 g2@2 ~@7]/2",
  L: "~@2 bb2 ~@4 a2 ~@2 a2 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.4)

// chords · acoustic guitar steel · "STEEL GT" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@5 A ~@2 B C ~@3 D E ~ B C ~@3 D E ~@14 C ~@3 D F ~ B C ~@3 D G ~@35
>`.pickRestart({
  A: "~@7 a2 ~@8", B: "~@13 d4 ~@2", C: "~@7 d3 ~@8", D: "~@9 bb2 ~@6", E: "bb2 ~@6 bb2@2 ~@7", F: "bb2 ~@15",
  G: "bb2 ~@6 bb2 ~@8",
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.4)

// chords · percussive organ · "ORGANO"
const percussive_organ = note("<A B C D ~@7 E@4 ~@4 E@4 F@8 ~@8 E@4 ~@4 E@4 F@8 G@5 ~@7 H@4 I@3 J@7 ~>".pickRestart({
  A: "d6@2 a5 c6 ~ a5 ~ d6 ~ a5 c6@2 a5 ~ d6@2", B: "a5 c6 ~ a5 ~ d5 ~ a5 c5 ~ c5 ~ d6@2 a5 c6",
  C: "~ a5 ~ d6 ~ a5 c6@2 a5!2 d6@2 a5 c6 ~ a5", D: "~ d5 ~ a5 c5 ~ c5 ~@9",
  E: "[~@8 [bb4,d5,f5,bb5]@16 [c5,e5,g5,c6]@16 [d5,f5,a5,d6]@15 ~ [g4,bb4,db5,f5]@8]/4", // Bb C Dm Gm7b5
  F: "[~@8 [bb4,d5,f5,bb5]@7 [c5,e5,g5,c6]@7 ~@2 [ab4,c5,d5,f5]@7 [c5,d5,f5,a5]@9 [bb4,d5,f5,bb5]@7 [g5,c6]@5 [g5,bb5]@3 ~ [c5,e5,f5,a5]@14 ~@2 [bb4,d5,f5,bb5]@7 [c5,e5,g5,c6]@8 ~ [ab4,c5,d5,f5]@7 [a4,c5,d5,f5]@8 ~ [bb4,d5,f5,a5]@7 c6@5 bb5@4 [a4,db5,e5,gb5,a5]@8, ~@47 db5@8 ~@56 [db5,f5,g5]@9 ~@8]/8", // Bb C Dm7b5 Dm7 Bb C5 Gm Fmaj7 …
  G: "[~@8 [bb4,d5,f5,bb5]@7 [c5,e5,g5,c6]@7 ~@2 [ab4,c5,d5,f5]@7 [c5,d5,f5,a5]@9 [bb4,d5,f5,bb5]@7 [g5,c6]@5 [g5,bb5]@3 ~ [c5,e5,f5,a5]@14 ~@10, ~@47 db5@8 ~@25]/5", // Bb C Dm7b5 Dm7 Bb C5 Gm Fmaj7
  H: "[~@8 [bb4,d5,f5,bb5]@7 [c5,e5,g5,c6]@8 ~ [ab4,c5,d5,f5]@7 [a4,c5,d5,f5]@8 ~ [bb4,d5,f5,a5]@7 c6@5 bb5@4 [a4,db5,e5,gb5,a5]@8, ~@47 [db5,f5,g5]@9 ~@8]/4", // Bb C Dm7b5 Dm7 Bbmaj7 Gbm7 Gm7b5
  I: "[~@8 [bb4,d5,f5,bb5]@7 [c5,e5,g5,c6]@7 ~@2 [ab4,c5,d5,f5]@7 [c5,d5,f5,a5]@9 [bb4,d5,f5,bb5]@7 [db5,g5,c6]]/3", // Bb C Dm7b5 Dm7 Bb C
  J: "[~@4 [g5,bb5]@3 ~ [c5,e5,f5,a5]@14 ~@2 [bb4,d5,f5,bb5]@7 [c5,e5,g5,c6]@8 ~ [ab4,c5,d5,f5]@7 [a4,c5,d5,f5]@8 ~ [bb4,d5,f5,a5]@7 c6@5 bb5@4 [a4,db5,e5,gb5,a5]@7 [a4,db5,e5,gb5]@25 [d4,gb4,a4,b4,e5] ~ [d4,gb4,a4,b4,e5] ~@2 [d4,gb4,a4,d5]!3, ~@63 [db5,f5,g5]@9 ~@40]/7", // Gm Fmaj7 Bb C Dm7b5 Dm7 Bbmaj7 Gbm7 …
})).s("gm_percussive_organ").gain(0.38).pan(0.4)

// other · brass section · "BRASS"
const brass_section = note(`<
  ~@24 A B ~@2 C D ~ E F G H ~@9 I J I J ~@4 A B ~@2 C D ~@2 A B ~@10 C D ~ E F G H E F G K@3 ~
>`.pickRestart({
  A: "~ [e4,e5] ~ [a3,a4] [e4,e5] ~ [a3,a4] ~@9", B: "~ [e4,e5] ~ [a3,a4] [d4,d5] ~ [a3,a4] ~@9",
  C: "~ [g4,g5] ~ [g4,g5] [e4,e5] ~ [c4,c5] ~@9", D: "~ [a3,a4] ~ [a3,a4] [c4,c5] ~ [c4,c5] ~@9, ~@5 [d4,d5]@2 ~@9",
  E: "~ f5 ~ f5 e5!2 d5!2 g4@2 bb4 d5 ~@4", F: "~@3 f5 ~ f5 e5 d5 f4@2 ab4 d5 ~@4",
  G: "~@3 [g4,a4] ~ g4@2 a4 ~ a4 ~ bb4 ~ a4 ~ bb4, ~@2 f4 ~ g4 ~ g4 ~", // Gsus2
  H: "a4 [bb4,c5] a4 [bb4,c5] [db5,d5] e5 db5 [d5,e5] e5@5 d5 ~ a5", I: "~@12 e4 a3 ~@2", J: "e4 a3 ~@14",
  K: "[a4 [bb4,c5] a4 [bb4,c5] [db5,d5] e5 db5 [d5,e5] d5@32 d5 ~ d4 ~@2 d5!3]/3", // Bbsus2 Dmaj7 Dsus2
})).s("gm_brass_section").gain(0.72).pan(0.6)

// drums · rim
const rim = s("rim").struct("<~@15 A ~@7 B ~@11 B ~@7 A ~@7 B ~@34>".pickRestart({
  A: "~ x ~@6", B: "~@3 x ~@12",
})).gain(0.56)

// drums · kick
const kick = s("bd").struct("<~@3 A B@11 C B@7 C B@7 C B@3 C B@7 C B@7 C B@23 A B@7 D E ~>".pickRestart({
  A: "~@8 x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3", C: "x ~@7 x ~@2 x!2 ~@3",
  D: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@2 x", E: "x ~@2 x!2 ~@2 x!2 ~ x ~@5",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@15 A ~@7 A ~@11 A ~@7 A ~@7 A ~@7 B ~@7 B ~@15 B C ~>".pickRestart({
  A: "~ x ~@2", B: "~ x ~@14", C: "~@13 x!3",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct(`<
  A@3 ~@4 A ~@3 A ~@3 B ~@3 A ~@7 A ~@3 C ~@7 A ~@3 B ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 C ~@3 A ~@3 A ~@2
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~@12", C: "~@2 x!2 ~@4",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<A@15 B A@7 B A@7 B A@3 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 C D ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@5 x ~ x", C: "~@3 x ~ x ~ x", D: "~ x ~ x ~@4",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@15 A ~@7 A ~@2 B C ~@2 D E ~@3 A ~@7 A ~@7 A ~@2 B C ~@2 D F ~@2 B C G H D I C@2 J C ~@2 D E ~@2 B C ~@2 D F K ~
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@11 x!2 ~@3", C: "~@3 x!2 ~@11", D: "~@8 x ~@2 x ~ x ~ x", E: "~ x ~ x ~@12",
  F: "~ x ~ x!2 ~ x ~@9", G: "~@3 x!3 ~@10", H: "~ x ~@2 x ~@11", I: "~ x ~ x!4 ~@9", J: "~@9 x ~ x!2 ~@3",
  K: "~@8 x ~ x ~@2 x!3",
})).gain(0.56)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@30 A ~@27 A ~@7 A ~@7 A ~@7 A ~@3>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
  A ~@6
>`.pickRestart({
  A: "~ x",
})).gain(0.56)

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

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@23 A B@2 C D E D F G H I J ~@16 A B@2 C D E D F K B@2 C D E D F L B@2 C D E D F A B@2 C D E D F M N ~
>`.pickRestart({
  A: "~@8 x ~ x!6", B: "~ x ~ x!6 ~ x!6", C: "~ x!8 ~ x!3 ~ x!2", D: "x!2 ~ x!6 ~ x!6", E: "~ x!8 ~ x!6",
  F: "~ x!4 ~ x!3 ~ x!6", G: "~@8 x!4 ~ x ~ x", H: "x!3 ~ x ~ x!3 ~ x!2 ~ x ~ x", I: "x!3 ~ x ~ x!5 ~ x!4",
  J: "~ x!8 ~ x!2 ~ x ~ x", K: "x!3 ~ x!3 ~ x ~ x!6", L: "x ~ x!3 ~ x!3 ~ x!6", M: "x!3 ~ x!3 ~@9",
  N: "~@8 x ~ x ~@2 x!3",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@23 A B@2 C D E D F G H I J ~@16 A B@2 C D E D F K B@2 C D E D F L B@2 C D E D F A B@2 C D E D F M N ~
>`.pickRestart({
  A: "~@8 x ~ x!6", B: "~ x ~ x!6 ~ x!6", C: "~ x!8 ~ x!3 ~ x!2", D: "x!2 ~ x!6 ~ x!6", E: "~ x!8 ~ x!6",
  F: "~ x!4 ~ x!3 ~ x!6", G: "~@8 x!4 ~ x ~ x", H: "x!5 ~ x!8 ~ x", I: "x!5 ~ x!10", J: "~ x!8 ~ x!2 ~ x ~ x",
  K: "x!3 ~ x!3 ~ x ~ x!6", L: "x!5 ~ x!3 ~ x!6", M: "x!3 ~ x!3 ~@9", N: "~@8 x ~ x ~@2 x!3",
})).gain(0.4)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@31 [~@13 x ~@2] ~@54>").gain(2.82)

// drums · bongos
const bongos = s("bongo:4").struct("<~@3 [~ x ~@2] ~@82>").gain(1.68)
// … 74 more lines

More by Morandi