Strudelify

Acqua azzurra, acqua chiara

Battisti Lucio

KeyA majorTempo97 bpm
0:00/0:00
// Acqua azzurra, acqua chiara — Battisti Lucio
// 97 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 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(97/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(`<
  ~ A B C D E F G@4 ~@7 A B C D H I J K L@2 ~@7 M@3 N@2 O P Q R S T A B U D H I V@3 W X Y Z AA AB AC AD AE AF AG AH AI
  AJ AK AL AM AJ AK AL AM AJ AK AN AM AO AP AQ@2 ~
>`.pickRestart({
  A: "d2@13 b1 a1 f#1", B: "a1@6 ~ a1@6 g#1@3", C: "g1 ~ g1 ~ g1@3 f#1 g1 f#1 g1@2 d1@2 b0@2",
  D: "f#1@2 ~ f#1!2 g1 ~ a1@8 ~", E: "d2@12 d2 b1 a1 f#1", F: "a1@12 ~ a1 g#1@2", G: "[g1@5 ~ a1@8 g1@8 a1@27 ~@15]/4",
  H: "d2 a1 d2@5 a1 d2@5 b1 a1 f#1", I: "a1 f#1 a1@5 e1 a1@5 ~ a1@2", J: "g1 ~ g1 ~ g1 ~ g1@2 a1 ~ a1 ~ a1 ~ a1 ~",
  K: "g1 ~ g1 ~ g1 ~ g1 ~ a1@2 a1 ~ a1 ~ a1 ~", L: "[g1@2 ~ g1@2 g1@2 ~ a1@17 ~@7]/2",
  M: "[~@8 d2@13 b1 a1 f#1 a1@6 ~ a1@6 g#1@3 g1 ~ g1 ~ g1@3 f#1]/3",
  N: "[g1 f#1 g1@2 d1@2 b0@2 f#1@2 ~ f#1!2 g1 ~ a1@8 ~ d2 a1 d2@5 a1]/2", O: "d2@5 b1 a1 f#1 a1 f#1 a1@5 e1",
  P: "a1@5 ~ a1@2 g1 ~ g1 ~ g1 ~ g1@2", Q: "a1 ~ a1 ~ a1 ~ a1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  R: "a1@2 a1 ~ a1 ~ a1 ~ g1@2 ~ g1@2 g1@2 ~", S: "f#1 ~ f#1 ~ f#1@3 f#1!2 ~ f#1 ~ f#1@3 ~",
  T: "f#1 ~ f#1@2 f#1@2 ~ f#1 a1@2 a1 ~ a1 ~ a1@2", U: "g1@2 g1 ~ g1@3 f#1 g1 f#1 g1@2 d1@2 b0@2",
  V: "[g1@3 a1@4 b1@17]/3", W: "b0@5 ~ b0 ~ b0@7 ~", X: "b0@5 ~ b0@2 f#1 ~ b1@3 ~ b1@2",
  Y: "f#1@5 ~ f#1 ~ f#1@5 ~ f#1 ~", Z: "f#1@7 ~ f#2@2 e2@4 c#2@2", AA: "c#1@4 ~@2 c#1 ~ c#1@5 ~ c#1 ~",
  AB: "c#1@5 ~ c#1 ~ f#1@5 ~ f#1@2", AC: "b0@5 ~ b1 ~ b0@6 f#1@2", AD: "b0@5 ~ b0@3 ~ b0@3 ~ b1 ~",
  AE: "b0@5 ~ b1@4 f#1@2 b1@2 a1@2", AF: "g#1@5 ~ g#1@4 d#1@3 ~ d1 ~", AG: "c#1@5 ~ c#1 ~ c#1@6 d#1@2",
  AH: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", AI: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2", AJ: "e2@13 c#2 b1 g#1",
  AK: "b1@6 ~ b1@6 a#1@3", AL: "a1 ~ a1 ~ a1@3 g#1 a1 g#1 a1@2 e1@2 c#1@2", AM: "g#1@2 ~ g#1!2 a1 ~ b1@8 ~",
  AN: "a1@2 a1 ~ a1@3 g#1 a1 g#1 a1@2 e1@2 c#1@2", AO: "e2 b1 e2@5 b1 e2@5 c#2 b1 g#1",
  AP: "b1 g#1 b1@5 f#1 b1@5 ~ b1@2", AQ: "[a1@3 b1@4 c#2@9]/2",
})).s("gm_acoustic_bass").gain(0.57)

// chords · trumpet · "TRUMPT/GTR"
const trumpet = note("<A B C D E B F G@2 ~@41 H I J@3 ~@13 K L ~ M K L ~ M K L ~ M K N O@2 ~>".pickRestart({
  A: "~@11 [a4,d5,f#5]!4 [a4,d5,g5]", B: "~ [a4,d5,f#5]@4 ~@6 [a4,d5,f#5] [a4,d5,g5]!2 [a4,d5,f#5]!2",
  C: "~ [a4,c#5,e5]@3 ~@7 [a4,c#5,e5] [a4,c#5,f#5]!2 [a4,c#5,e5]!2", // A F#m A
  D: "~ [g4,b4,d5]@4 ~@6 [g4,b4,d5] [g4,b4,e5]!2 [g4,b4,d5] ~", // G Em G
  E: "[f#4,a#4,c#5]@2 ~ a#4 [f#4,a#4,c#5] [g4,b4,d5] ~ [a4,c#5,e5]@2 ~@2 [a4,d5,f#5]!4 [a4,d5,g5]", // F# G A D Dsus4
  F: "~ [a4,c#5,e5]@3 ~@7 [a4,c#5,e5] [a4,c#5,f#5]!2 [a4,c#5,e5] ~", // A F#m A
  G: "[[e4,e5]@2 [d4,d5] ~ [f#4,f#5] ~ [e4,e5]@4 [c#4,c#5] ~ [c#4,c#5] ~ [b3,b4]@4 [c#4,c#5] ~ [b3,b4] ~ [a3,a4]@6 ~@4]/2", // E D F# E C# B C# B …
  H: "~@4 [a4,d5,f#5]!3 [a4,d5,g5] ~ [a4,d5,f#5]@3 ~@4", // D Dsus4 D
  I: "~@4 [a4,c#5,e5]!3 [a4,c#5,f#5] ~ [a4,c#5,e5]@3 [a4,c#5,e5] [a4,c#5,f#5] [a4,c#5,e5] ~", // A F#m A F#m A
  J: "[[g4,b4,d5]@5 ~ [a4,c#5,e5]@8 [b4,d#5,f#5]@30 ~@4]/3", K: "~@4 [b4,e5,g#5]!3 [b4,e5,a5] ~ [b4,e5,g#5]@3 ~@4",
  L: "~@4 [b4,d#5,f#5]!3 [b4,d#5,g#5] ~ [b4,d#5,f#5]@3 ~@4", // B G#m B
  M: "[g#4,c5,d#5]@2 ~ c#5 [g#4,c5,d#5] [a4,c#5,e5] ~ [b4,d#5,f#5]@6 ~@3", // G# A B
  N: "~@4 [b4,d#5,f#5]!3 [b4,d#5,g#5] ~ [b4,d#5,f#5]@3 [b4,d#5,f#5] [b4,d#5,g#5] [b4,d#5,f#5] ~", // B G#m B G#m B
  O: "[[a4,c#5,e5]@5 ~ [b4,d#5,f#5]@8 [c#5,f5,g#5]@18]/2", // A B C#
})).s("gm_trumpet").gain(0.52)

// other · electric guitar jazz · "JAZZGT/STR"
const electric_guitar_jazz = note("<~ A B C D E F G ~@77>".pickRestart({
  A: "~@3 [f#4,f#5]!4 [g4,g5] ~ [f#4,f#5]@3 ~@4", B: "~@3 [e4,e5]!4 [f#4,f#5] ~ [e4,e5]@3 ~@4",
  C: "~@3 d5 [d4,g4,b4] ~ [f#4,f#5]@6 ~@4", D: "[f#4,a#4,c#5]@3 a#4 [f#4,a#4,c#5] [g4,b4,d5] ~ [a4,c#5,e5]@3 ~@6",
  E: "~@4 [f#4,f#5]!3 [g4,g5] ~ [f#4,f#5]@4 ~@3", F: "~@4 [e4,e5]!3 [f#4,f#5] ~ [e4,e5]@4 ~@3",
  G: "[e4,e5] ~ [d4,d5] ~ [f#4,f#5] ~ [e4,e5]@3 ~ [c#4,c#5] ~ [c#4,c#5] ~@3", // E D F# E C#
})).s("gm_electric_guitar_jazz").gain(0.62)

// chords · string ensemble 2 · "JAZZGT/STR"
const string_ensemble_2 = note(`<
  ~@8 A B C@2 ~@6 D@2 E F@3 G@2 H@2 I J@5 K@8 L@2 M@2 D@2 E F@3 N@3 O P Q@4 R S T U V@3 W@2 X Y W@2 X Z W@2 X Z AA@2
  AB@2 ~
>`.pickRestart({
  A: "~@12 a4 b4 ~ a4", B: "c#5@3 ~ c#5 d5 ~ c#5 e5@3 ~ e5 f#5 ~ e5", C: "[a5@27 ~@5]/2",
  D: "[[d4,f#4] [c#4,e4], a4]/2", E: "[b3,d4,g4]",
  F: "[[a#3,c#4,f#4]@4 [a#3,c#4,f#4] [b3,g4]@2 [c#4,e4]@9 [d4,f#4]@16 [c#4,e4]@16, ~@5 d4 ~ a4@41]/3", // F# Em C#m D C#m
  G: "[b3,d4,g4] [c#4,e4,a4]", // G A
  H: "[[b3,d4,g4]@8 ~@4 a4 b4 ~ a4 c#5@3 ~ [c#5,d5] ~@2 c#5 e5@3 ~ e5 f#5 ~ e5, ~ [a3,c#4]@2 ~]/2", I: "a5",
  J: "[~@8 [e3,a3,c#4]@16 [g#3,e4]@16 [f#3,d4]@8 [g#3,e4]@8 [e3,a3,c#4]@16 a3@2 ~ b3 c#4@4, ~@3 b3@4 ~@2 e3, ~@18 c#4 ~, ~@37 a3@3]/5", // A C#m D C#m A
  K: "[~@2 d4 e4 f#4@2 ~@2 [b3,d4]@16 [d4,f#4]@16 [c#4,e4]@16 [b3,d4,g4]@16 [a#3,c#4,f#4]@4 [a#3,c#4,f#4] [b3,g4]@2 [c#4,e4]@9 [d4,f#4]@16 [c#4,e4]@16 [b3,d4,g4]@8, f#3@3 ~@13, a#3@8 f#4@3 ~@13 a4@32 ~@21 d4 ~ a4@41 ~@8]/8", // Bm D C#m G F# Em C#m D …
  L: "[c#4,e4,a4] [b3,d4,g4]", M: "[[f#3,a#3,c#4]@6 [b3,d4] [e3,a3,c#4,e4], a3 ~@31]/2",
  N: "[[g3,b3,d4]@6 [a3,c#4,e4]@8 [b3,d#4,f#4]@31 ~@3]/3", O: "d#3", P: "f#3@4 g#3@3 a#3@4 g#3@4 ~",
  Q: "[~@4 c#3 d#3 e3 d#3 [e3,e4]@6 [f#3,a#3]@2, c#4, a#3 ~]/4", // E F#
  R: "[b3,b4]@2 [a#3,a#4] ~ [a#3,a#4]@2 [g#3,g#4]@2 [g#3,g#4]@8", // B A# G#
  S: "[b3,b4]@2 [a#3,a#4] ~ [a#3,a#4]@2 [g#3,g#4]@2 [g#3,g#4]@7 ~", // B A# G#
  T: "[d#4,d#5]@2 [c#4,c#5] ~@2 b3 b4 ~ b4@5 ~ a4@2, ~@4 [c#4,c#5]@2 ~ b3@6 a3@3", // D# C#
  U: "[g#3,g#4]@2 [a#3,a#4] ~ [a#3,a#4]@2 [c4,c5] ~@2 c#4 c#5 ~ [c#4,c#5]@2 [d#4,d#5]@2, ~@7 c4@2 ~@7, ~@4 c5 ~@3", // G# A# C C# D#
  V: "[[e4,e5]@2 [d#4,d#5] ~@2 c#5@2 ~@3 b4 ~ b3@35 ~, ~@4 [d#4,d#5]@2 ~@3 b3@2 ~@37, ~@5 c#4 ~@2 [c#4,c#5]@2 ~ b4@34 ~@3]/3", // E D# C#
  W: "[[e4,g#4] [d#4,f#4], [b4,b5]]/2", X: "[c#4,e4,a4,a5]",
  Y: "[c4,d#4,g#4,g#5]@4 [c4,d#4,g#4] [c#4,e4,a5] ~ [d#4,f#4,b4,b5]@9, ~@5 a4@2 ~@9", // G# A B
  Z: "[d#4,g#4,g#5]@4 [c4,d#4,g#4] [c#4,a4]@2 [d#4,f#4,b4,b5]@9, c4@3 ~@2 [e4,a5] ~@10", // G#5 G# F#m B A5
  AA: "[[e4,g#4,b4] [d#4,f#4,b4], b5]/2", AB: "[[a3,c#4,e4,a4,a5]@3 [b3,d#4,f#4,b4,b5]@4 [c#4,f4,g#4,c#5,c#6]@9]/2",
})).s("gm_string_ensemble_2").gain(0.43)

// chords · piano · "ORG/PIANO"
const piano = note(`<
  ~@12 A B C D E F@2 G H I J K L@2 M@2 ~ N@3 O@2 P Q@7 R S T@2 U G H I J K ~@2 V W@2 X@2 Y@2 Z AA AB AC AD AE AF AG AH
  AI AJ AG AH AI AJ AG AK AI AJ AG AH AL@2 ~
>`.pickRestart({
  A: "[c#4,e4]@2 ~@2 [c#4,e4]@2 ~ a3, [a1,a2], ~ [c#4,e4] ~ [c#4,e4], ~@3 a3@2 ~@3", // C#m A C#m
  B: "[b3,d4,e4] e4 [d4,e4] d4, [e1,e2]", C: "~@2 f#3!2 ~@2 [g#3,b3,e4]@2, [b1,b2] [e1,e2], ~@2 [b3,d4]@2 ~@2 e3 ~",
  D: "[c#4,e4] ~ [c#4,e4]!2, [a1,a2], ~ c#4 ~@2, ~@3 a3@2 ~@3", // C#m A
  E: "[c#4,e4]@2 ~ a3 ~@3 f#3, [a1,a2] [f#1,f#2], ~ [c#4,e4] [a#3,c#4,f#4]!2, ~@5 f#3@2 ~", // C#m A F# C#m F#
  F: "[[b1,b2]@2 [b1,b2,f#3]@2 [b1,b2]@2 [b1,b2,f#3]@2 ~@4 [b3,d4,f#4]@2 ~@6 [d4,f#4,a4]@3 ~@2 a3 [d4,f#4]@3 ~@2 a3, [b3,d4,f#4]@4 [b3,d4,f#4]@4 [b1,b2]@11 ~@11 d4@2, ~@8 [b3,d4,f#4]@4 ~@2 [b3,d4,f#4]@5 ~@4 a3@2 ~ [a3,a4]@6, ~@10 f#3@9 ~@5 [d4,f#4,a4]@2 ~@3 f#4@3, ~ [d2,d3]]/2", // B B5 B B5 Bm D Bm B …
  G: "~@4 [c#4,e4,a4]@3 ~@2 a3 ~@5 a3, a2@3 a2, ~@7 a3@2 ~ [a3,a4]@6, ~@8 [c#4,e4,a4]@2 [c#4,e4]@3 e4@3, ~@7 c#4", // A C#m
  H: "g3@2 [b3,d4,g4]@2 [b3,d4,g4] ~@2 g3, g2@3 g2, ~@5 [b3,d4,g4]@3, ~@5 g3@2 ~", // G
  I: "[f#2,f#3,a#3,c#4,f#4]@3 [f#2,f#3,a#3,c#4,f#4]!2 [g2,g3,b3,d4,f#4,g4] ~ [c#4,e4,a4]@7 [c#4,e4,a4]@2, ~@7 [a2,a3]@9", // F# Gmaj7 A
  J: "~@4 [a3,d4,f#4,a4]@3 ~ [d4,f#4,a4]@2 [d4,f#4]@3 ~@2 a3, d3, ~@7 a3@2 ~ [a3,a4]@6, ~@13 f#4@3, ~@7 d4", // D A
  K: "~@4 [c#4,e4,a4]@3 ~ e4 [a3,e4] [c#4,e4]@3 ~@2 a3, a2, ~@7 a3@2 ~ [a3,a4]@6, ~@8 [c#4,a4]@2 ~@3 e4@3, ~@7 c#4", // A A5 C#m A F#m
  L: "[g2,b3,d4,g4]!2 [a2,c#4,e4,a4]!2", // G A
  M: "[[g2,g3,b3,d4]@3 [g3,b3,d4]@2 [g2,g3,b3,d4]@3 [a2,a3,c#4,e4]@14 ~@10, ~@3 g2 ~@28]/2", // G A
  N: "[~@4 [c#4,e4]@2 c#4@2 ~@3 a3 [b3,d4,e4]@2 ~@2 [b3,d4]@2 ~ e3 ~@3 f#3, ~ a2@2 e2@2 ~, ~@4 [c#4,e4]!2 ~ [b3,d4,e4] ~ [b3,d4] ~ [b3,d4,f#4], ~@9 a3@2 ~@4 e3@2 ~@3 b2@4]/3", // C#m E7 Bm C#m E7 Bm
  O: "[~@2 [b3,d4,e4]@2 ~@3 a3 ~ d4 ~ c#4 [c#4,e4]@2 a3!2, e2 a2@2 a2, ~@3 [c#4,e4] e4@2 ~@2, ~@8 c#4@3 ~@3 [c#4,e4]@2, ~@8 a3@2 [a3,d4]@2 a3 ~@3]/2", // E7 C#m D5
  P: "~@3 f#3 ~ f#3 [b2,f#3,b3,d4,f#4]!2, f#2@2 [b2,b3,d4,f#4] ~, [a#3,c#4,f#4]!2 ~@2, ~ f#3@2 ~@5", // Bm F#
  Q: "[[b2,f#3,b3,d4,f#4]@4 ~@8 [d4,f#4,a4]@3 ~@2 a3 [d4,f#4]@3 ~@2 a3 ~@4 [c#4,e4,a4]@3 ~@2 a3 e4@2 ~@3 a3 g3@4 [b3,d4,g4]@4 [b3,d4,g4]@2 ~@4 g3@2 [f#2,f#3,a#3,c#4,f#4]@3 [f#2,f#3,a#3,c#4,f#4]!2 [g2,g3,b3,d4,f#4,g4] ~ [c#4,e4,a4]@7 [c#4,e4,a4]@2 ~@4 [a3,d4,f#4,a4]@3 ~ [d4,f#4,a4]@2 [d4,f#4]@3 ~@2 a3 ~@4 [c#4,e4,a4]@3 ~ e4 [a3,e4] [c#4,e4]@3 ~@2 a3 [g2,b3,d4,g4]@4 [g2,b3,d4,g4]@4, ~@8 [d2,d3]@16 a2@12 a2@4 g2@12 g2@4 ~@7 [a2,a3]@9 d3@16 a2@16 ~@8, ~@15 a3@2 ~ [a3,a4]@6 ~@7 a3@2 ~ [a3,a4]@6 ~@10 [b3,d4,g4]@6 ~@23 a3@2 ~ [a3,a4]@6 ~@7 a3@2 ~ [a3,a4]@6 ~@8, ~@16 [d4,f#4,a4]@2 ~@3 f#4@3 ~@13 e4@3 ~@45 f#4@3 ~@13 e4@3 ~@8, ~@11 d4 ~@4 [c#4,e4,a4] c#4@2 c#4 ~@5 g3@2 ~@16 d4 ~@4 [c#4,a4] ~@2 c#4 ~@4]/7", // Bm D A G F# Gmaj7 A D …
  R: "[a2,c#4,e4,a4]!2 [g2,b3,d4,g4]!2", // A G
  S: "[a2,c#4,e4,a4]@4 [a2,c#4,e4,a4]@4 [g2,g3,b3,d4]@3 [g3,b3,d4]@2 [g2,g3,b3,d4]@3, ~@11 g2 ~@4", // A G
  T: "[[f#3,a#3,c#4,f#4]@2 f#4@4 [f#3,c#4,f#4]@8 [f#3,c#4,f#4]@6 [f#3,a#3,c#4,f#4]@2 f#4 ~ a3@2 a3@2 [a1,a2,a3,c#4,e4,a4]@4, ~@6 [c#4,e4,a4] ~]/2", // F# F#5 F# A
  U: "~@4 [d4,f#4,a4]@3 ~@2 a3 [d4,f#4]@3 ~@2 a3, [d2,d3], ~@7 a3@2 ~ [a3,a4]@6, ~@8 [d4,f#4,a4]@2 ~@3 f#4@3, ~@7 d4", // D A D
  V: "~@4 [d#4,f#4]@2 ~ b3, [d#4,f#4]!2 ~ [d#4,f#4], ~ b3@2 b3@2 ~@3", // D#m
  W: "[[b3,d#4,f#4] [d#4,f#4] [b3,d#4,f#4] [d#4,f#4] [d#4,f#4]!4, b1]/2", // B D#m B D#m
  X: "[[f#3,a#3,c#4,f#4] [f#3,a#3,f#4] [f#3,a#3,c#4,f#4]!2 [f#3,a#3,c#4,f#4] [a#3,c#4,f#4] f#4 ~, f#2]/2", // F#
  Y: "[[g#3,e4] ~ e4!2 [g#3,c#4,e4]!2 [a#3,c#4,f#4]!2, [c#2,c#3]@3 f#1]/2", Z: "[d#5,f#5] [f#5,b5] [d#5,f#5,b5] d#5",
  AA: "[d#5,f#5,b5] [f#5,b5] ~ [f#5,b5]", AB: "[d#5,f#5,b5] [d#5,f#5] [b4,d#5] [f#4,b4,d#5], ~ b5@3, ~ f#5",
  AC: "[d#4,g#4,c5] [d#4,g#4,c#5] d#4!2, [g#2,g#3], ~ [g#4,c5,d#5]", AD: "[e4,g#4,c#5,e5]!4, c#2",
  AE: "[g#4,b4,e5]!2 [e4,g#4,b4,e5]!2", AF: "[e4,g#4,b4,e5]!4",
  AG: "~@4 [e4,g#4,b4]@3 ~@2 b3 [e4,g#4]@3 ~@2 b3, [e2,e3], ~@7 b3@2 ~ [b3,b4]@6, ~@8 [e4,g#4,b4]@2 ~@3 g#4@3, ~@7 e4", // E B E
  AH: "~@4 [d#4,f#4,b4]@3 ~@2 b3 f#4@2 ~@3 b3, b2@3 b2, ~@7 b3@2 ~ [b3,b4]@6, ~@8 [d#4,f#4,b4]@2 d#4@3 f#4@3, ~@7 d#4", // B
  AI: "a3@2 [c#4,e4,a4]@2 [c#4,e4,a4] ~@2 a3, a2@3 a2, ~@5 [c#4,e4,a4]@3, ~@5 a3@2 ~", // A
  AJ: "[g#2,g#3,c4,d#4,g#4]@3 [g#2,g#3,c4,d#4,g#4]!2 [a2,a3,c#4,e4,g#4,a4] ~ [d#4,f#4,b4]@7 [d#4,f#4,b4]@2, ~@7 [b2,b3]@9", // G# Amaj7 B
  AK: "~@4 [d#4,f#4,b4]@3 ~@2 b3 ~@5 b3, b2@3 b2, ~@7 b3@2 ~ [b3,b4]@6, ~@8 [d#4,f#4,b4]@2 [d#4,f#4]@3 f#4@3, ~@7 d#4", // B D#m
  AL: "[~ e4@5 [b2,b3,d#4,f#4,b4]@7 ~ [c#3,c#4,f4,g#4,c#5]@18, [a2,a3,c#4,a4]@3 ~@13]/2", // B C# A
})).s("gm_piano").gain(0.46)

// chords · piano · "ORG/PIANO" · soft notes
const piano_soft = note(`<
  ~@12 A B C D E ~@3 F G H ~@6 I@2 J K L ~@3 M@2 ~ N ~@3 O@2 ~@2 F G H ~@3 P Q@2 R S T U V@2 W ~ X Y@2 ~@2 Z AA ~@2 Z AA
  ~@2 Z AA ~@5
>`.pickRestart({
  A: "~ a3@2 ~@2 a3@2 ~", B: "~@7 e3, ~ e3@2 e3@2 e3@2 ~, ~ [b3,d4] b3 [b3,e4]", C: "~@7 e3",
  D: "~@2 e4@2 ~ a3@2 a3, ~ a3@2 ~@5", E: "~ a3@2 ~@5", F: "~@7 g3@3 ~@6", G: "~@5 a2 ~@10", H: "~@9 a3 ~@6",
  I: "[~@7 a3@2 ~@4 e3@2 ~, ~@5 a3@2 ~@9, ~@3 e4 ~@4]/2", J: "~ e4 ~@2, e4 ~@3, ~ e3@2 ~@5", K: "~@6 e3@3 ~ a3@4 ~@2",
  L: "~@5 a3 ~@2", M: "[~@15 g3@3 ~@11 a2 ~@2]/2", N: "~ a3 ~@14", O: "[~@2 [f#3,a#3,c#4]@4 a#3@8 a#3@6 ~@2 f#3 ~@9]/2",
  P: "~@5 b3@2 ~", Q: "[~ b3 ~ b3 b3!4, b2]/2", R: "~ c#4 ~@2", S: "~ f#3 [f#3,a#3,c#4] [f#3,a#3,c#4,f#4]",
  T: "c#4 [g#3,c#4,e4] [g#3,c#4]!2", U: "~ f#2", V: "[b5 d#5 ~ [f#5,b5] ~ d#5 [d#5,f#5,b5] d#5, [b1,b2]]/2",
  W: "[b1,b2]", X: "c#3", Y: "[e4!2 ~@6, [e2,e3]]/2", Z: "~@7 a3@3 ~@6", AA: "~@5 b2 ~@10",
})).s("gm_piano").gain(0.23)

// chords · drawbar organ · "ORG/PIANO"
const drawbar_organ = note("<~ A B C D E F ~ G ~@76>".pickRestart({
  A: "d5", B: "c#5", C: "[g4,b4,d5]", D: "[f#4,a#4,c#5]@3 [f#4,a#4,c#5]!2 [g4,b4,d5] ~ [a4,c#5,e5]@4 ~@5",
  E: "[d5,f#5]", F: "[c#5,e5]", G: "~@3 a4@5",
})).s("gm_drawbar_organ").gain(0.14)

// chords · drawbar organ · "ORG/PIANO" · soft notes
const drawbar_organ_soft = note("<~ A@2 ~@2 B@2 C D ~@76>".pickRestart({
  A: "[f#5 e5, a4]/2", B: "a4/2", C: "[g4,b4,d5] [a4,c#5]", D: "b4@3 ~@5",
})).s("gm_drawbar_organ").gain(0.03)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A@2 B C A@2 B D ~@8 E A@2 B C A@2 B@2 ~@8 F G D B@2 H D B@2 D I G A@2 B C A@2 B ~@2 B@7 J B@3 K L A@2 B C A@2 B C
  A@2 B C A@2 B ~@2
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@7 x!4", D: "~ x ~@2", E: "~ x!4 ~@3", F: "~@5 x!3", G: "x", H: "~@4 x!4 ~@8",
  I: "~@4 x ~@2 x ~@4 x ~@3", J: "~@4 x ~@7 x!2 ~ x", K: "x!8", L: "x ~ x ~ x ~ x!4 ~@6",
})).gain(0.48)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@45 [~ x ~@14] ~@16 [~@7 x] ~@22>").gain(0.24)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~ A@2 ~@2 A@2 ~@10 B A@2 ~@2 A@2 ~@11 C D ~@2 D@2 ~@4 E A@2 ~@2 A@2 ~@15 F A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@3
>`.pickRestart({
  A: "~@3 x ~@2 x ~@9", B: "~@15 x", C: "~@7 x ~@3 x ~@2 x ~", D: "~@11 x ~@2 x ~", E: "~@4 x ~@7 x!4", F: "~@14 x!2",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct("<~@55 A B C B@4 A C D E F B ~@17>".pickRestart({
  A: "x!7 ~", B: "x!8", C: "x!3 ~ x!3 ~", D: "x ~ x ~ x!3 ~", E: "x ~ x!6", F: "x ~ x!3 ~ x!2",
})).gain(0.3)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@55 A ~ B ~@5 B C D E ~@18>".pickRestart({
  A: "~@7 x", B: "~@3 x ~@3 x", C: "~ x ~ x ~@3 x", D: "~ x ~@6", E: "~@5 x ~@2",
})).gain(0.06)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A@2 ~@2 A@2 ~@10 B A@2 ~@2 A@2 ~@11 C D ~@2 D@2 ~@4 E A@2 ~@2 A@2 ~@15 F A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@3
>`.pickRestart({
  A: "~@5 x ~@10", B: "~@13 x!2 ~", C: "~@5 x!2 ~@6 x ~@2", D: "~@13 x ~@2", E: "~@2 x!2 ~@4 x!4 ~@4",
  F: "~@12 x!2 ~@2",
})).gain(0.54)

// … 39 more lines

More by Battisti Lucio