Strudelify
Balla Linda cover art

Lucio Battisti

Balla Linda

Battisti

KeyG majorTempo106 bpm
0:00/0:00
// Balla Linda — Battisti
// 106 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 87 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(106/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 F G H I@2 J@8 K@8 L@8 M@6 N O P Q R S T U V@3 W X@6 Y@5 Z@8 AA@2 AB@7 AC@4 ~@3
>`.pickRestart({
  A: "~@13 g1@2 ~@4 g1@2 ~@3",
  B: "~ g1@2 ~@5 g1@2 ~@3 [c4,e4]@3 g3@2 ~ g3@3 g3@2, ~@13 [c2,c3]@11, ~@13 g3@2 ~@4 [c4,e4]@5", // C
  C: "~ [b3,d4]@3 g3 ~@2 [g3,b3,d4]@5 a3 [a3,c4,f4]@4 ~@2 a3@3 a3@2, ~ g2@11 ~ f2@11, ~ g3@2 ~@16 [c4,f4]@5", // Bm G F F5
  D: "~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@5 g3 [g3,c4,e4]@3 g3 ~@2 g3@3 g3@2, ~ g2@11 ~ [c2,c3]@11, ~@19 [c4,e4]@5", // G C
  E: "~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [a3,c4,f4]@4 ~@2 a3@2 a3@3, ~ g2@12 f2@11, ~@19 [c4,f4]@5", // G F F5
  F: "c4 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [g3,c4,e4]@3 ~@3 g3@3 g3@2, ~ g2@12 [c2,c3]@11, ~@19 [c4,e4]@5", // G C
  G: "~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [a3,c4,f4]@4 ~@2 a3@3 a3@2, ~ g2@12 f2@11, ~@19 [c4,f4]@5", // G F F5
  H: "~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 ~@8 [c4,e4]@2 ~@3, ~ g2@10 ~@2 c2@11, ~@19 g3 ~@4", // G C
  I: "[[g3,c4,e4]@5 ~@5 [g3,b3,d4] ~@4 [g3,b3,d4]@5 ~@5 [g3,c4,e4]@2 ~@4 [g3,c4,e4]@5 ~@5 [g3,b3,d4]@2 ~@3 [g3,b3,d4]@2, ~@5 g2@15 c2@16 g2@12]/2", // C G C G
  J: "[~ g2 ~@6 [c4,e4]@2 ~@3 [g3,c4,e4]@6 ~@5 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@6 [b3,d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4]@6 b3@4 b3@2 [b3,d4]@2 ~@4 [b3,d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4,f#4]@6 [e3,g#3,b3,d4]@6 [e3,g#3,b3,d4]@6 [g#3,b3,d4]@6 [g#3,b3,d4]@6 [a3,c4,e4]@6 [a3,c4,e4]@6 [a3,c4,e4]@6 [a3,c4,e4]@6 [d3,f#3,a3,c4]@6 [f#3,a3,c4]@6 [f#3,a3,c4]@6 ~@4 g3@2 [g3,b3,d4]@6 [g3,b3,d4]@6 [g3,b3,d4]@6 b3@3 b3@3 [b3,f#4]@6 [b3,f#4]@6, ~@3 c2@16 g2@17 g2@24 b2@24 g#2@24 a2@24 d2@24 g2@24 ~@12, ~@8 g3 ~@45 [d4,g4]@6 f#4@6 ~@30 e3@11 ~@31 d3@18 ~@24 [b2,d4]@12, ~@25 [f#3,a3,c4] ~@3 [g3,d4] ~@2]/8", // C G Bm E7 G#dim Am D7 F#dim …
  K: "[[b3,d4,f#4]@6 b3@3 b3@2 ~ [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@4 b3@2 [d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4,f#4]@4 ~@2 [d4,f#4]@6 [a3,d4,f#4]@6 [a3,d4,f#4]@6 [a3,d4,f#4]@6 [b3,d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4]@4 b3@2 [b3,d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4,f#4]@6 ~@3 e3@2 ~ [g#3,b3,d4]@6 [g#3,b3,d4]@6 [g#3,b3,d4]@6 [g#3,b3,d4]@5 ~ [a3,c4,e4]@6 [a3,c4,e4]@6 [a3,c4,e4]@6 [a3,c4,e4]@4 ~@2 f#4@6 [a3,f#4]@6, ~@6 [d4,f#4]@5 ~ e3@24 b2@23 ~ d3@24 g2@23 ~ b2@23 ~ g#2@23 ~ a2@24 [d3,d4]@12, ~@36 b3 ~@21 a3@8 ~@60 [b3,d4,f#4]@5 ~@47 a3@8 ~@6]/8", // Bm Em D Bm D G Bm G#dim …
  L: "[[a3,d4,f#4]@6 a3@3 a3@2 ~ [d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4]@4 ~@2 [d4,f#4]@6 [b3,d4,f#4]@6 [d4,f#4]@6 d4@3 [b3,d4]@2 ~ [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@4 ~@2 [d4,f#4]@6 [b3,d4,f#4]@6 [d4,f#4]@6 ~@3 b3@2 ~ [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@4 b3@2 [d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4]@3 [b3,d4]@2 ~ [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@6 b3@4 b3@2 [d4,f#4]@6 [b3,d4,f#4]@6, ~@6 [d4,f#4]@5 ~ g2@22 b3@8 ~@6 b3@9 ~@25 b3@8 ~@6 b3@9 ~@27 b3 ~@47 b3 ~@11, ~@36 b2@23 ~ e3@24 b2@23 ~ e3@23 ~ b2@23 ~ e3@24 b2@12, ~@54 f#4@5 ~@43 [d4,f#4]@5 ~@43 f#4@5 ~@19 [e4,g4]@6 ~@12]/8", // D G5 G D Bm D Bm Em …
  M: "[[d4,f#4]@6 ~@3 b3@2 ~ [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@6 b3@4 b3@2 [d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4,f#4]@6 d4@3 d4@2 ~ [c4,e4,g4]@6 [c4,e4,g4]@6 [c4,e4,g4]@6 [c4,e4,g4]@3 ~ e4 ~ [b3,d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4]@6 [d4,g4]@4 [d4,g4] ~ [c4,e4,g4]@6 [c4,e4,g4]@6 [c4,e4,g4]@6 [c4,e4,g4]@3 ~ [e4,g4] ~ [b3,d4,g4]@6 b3@3 b3@3, b3@9 ~@3 e3@24 b2@23 ~ c3@23 ~ g2@24 c3@23 ~ g2@12, ~@6 [d4,f#4]@5 ~@19 [e4,g4]@6 b3 ~@17 [b3,f#4]@5 ~@22 [c4,g4]@2 ~@19 b3@6 ~@21 c4@2 ~@7 [d4,g4]@6]/6", // D Em D Bm C G G5 C …
  N: "b3@3 b3@3 ~@3 g3@3 g3@4 g3@2 [g3,b3,d4]@6, b2 g2, [d4,f#4] [b3,d4,f#4] [b3,d4] ~", O: "[e2,e3,g#3,b3,d4]@7 ~",
  P: "~@12 [c4,e4]@3 g3@2 ~ g3@3 g3@2 ~, ~ [c2,c3], ~@6 g3 ~@2 [c4,e4]@3", // C
  Q: "[b3,d4]@3 g3 ~@2 [g3,b3,d4]@4 a3 ~ [a3,c4,f4]@4 ~@2 a3@3 a3@2 ~, g2@11 ~ f2@11 ~, g3@2 ~@16 [c4,f4]@5 ~", // Bm G F F5
  R: "[g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 g3 ~ [g3,c4,e4]@3 g3 ~@2 g3@3 g3@2 ~, g2@11 ~ [c2,c3]@12, ~@3 [c4,e4]", // G C
  S: "[g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [a3,c4,f4]@4 ~@2 a3@2 ~@2 c4 ~, g2@12 f2@11 ~, ~@3 f4, ~@9 c4@2 ~, ~@5 a3", // G F
  T: "[g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [g3,c4,e4]@3 ~@3 g3@3 g3 ~@2, g2@12 [c2,c3]@11 ~, ~@18 [c4,e4]@5 ~", // G C
  U: "[g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [a3,c4,f4]@4 ~@2 a3@3 a3@2 ~, g2@12 f2@11 ~, ~@18 [c4,f4]@5 ~", // G F F5
  V: "[[g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 ~@7 [c4,e4]@2 ~@13 [g3,b3,d4] ~@5 [g3,b3,d4]@5 ~@5 [g3,c4,e4]@2 ~@3 [g3,c4,e4]@5 ~@6 [g3,b3]@2 ~@3 [g3,b3,d4]@3, g2@10 ~@2 c2@15 g2@15 ~ c2@16 ~@13, ~@17 g3 ~@4 c4@6 ~@35 d4@2 ~@7, ~@23 [g3,e4]@6 ~@29 g2@12 ~@2]/3", // G C G C G C
  W: "g2 ~@6 [c4,e4]@2 ~@3 [g3,c4,e4]@5 g2@6 [g3,b3,d4], ~ c2@8 ~@3, ~@7 g3 ~@16", // C G
  X: "[~@5 [g3,b3,d4]@6 [b3,d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4]@4 b3@2 [b3,d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4,f#4]@6 ~@3 e3@2 ~ [g#3,b3,d4]@6 [g#3,b3,d4]@6 [g#3,b3,d4]@6 [g#3,b3,d4]@5 ~ [a3,c4,e4]@6 [a3,c4,e4]@6 [a3,c4,e4]@6 [a3,c4,e4]@4 ~@2 f#4@6 [a3,f#4]@6 [a3,d4,f#4]@6 a3@3 a3@2 ~ [d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4], ~@11 g2@23 ~ b2@23 ~ g#2@23 ~ a2@24 d3@23 ~ g2@13, ~@53 [b3,d4,f#4]@5 ~@47 a3@8 ~@31, ~@107 d4@12 ~@6 [d4,f#4]@5 ~@14]/6", // G Bm G#dim Am D G5 G Bm …
  Y: "[~@5 [b3,d4,g4]@4 ~@2 [d4,f#4]@6 [b3,d4,f#4]@6 [d4,f#4]@6 d4@3 [b3,d4]@2 ~ [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@4 ~@2 [d4,f#4]@6 [b3,d4,f#4]@6 [d4,f#4]@6 ~@3 b3@2 ~ [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@4 b3@2 [d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4,f#4], ~@9 b3@8 ~@6 b3@9 ~@25 b3@8 ~@6 b3@9 ~@27 b3 ~@12, ~@11 b2@23 ~ e3@24 b2@23 ~ e3@23 ~ b2@13, ~@29 f#4@5 ~@43 [d4,f#4]@5 ~@38]/5", // G D Bm D Bm Em D Bm …
  Z: "[~@5 [b3,d4]@3 [b3,d4]@2 ~ [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@6 b3@4 b3@2 [d4,f#4]@6 [b3,d4,f#4]@6 [d4,f#4]@6 ~@3 b3@2 ~ [b3,e4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@6 b3@4 b3@2 [b3,d4,f#4]@6 [b3,d4,f#4]@6 [b3,d4,f#4]@6 d4@3 d4@2 ~ [c4,e4,g4]@6 [c4,e4,g4]@6 [c4,e4,g4]@6 [c4,e4,g4]@3 ~ e4 ~ [b3,d4,g4]@6 [b3,d4,g4]@6 [b3,d4,g4]@6 [d4,g4]@4 [d4,g4] ~ [c4,e4,g4]@6 [c4,e4,g4]@6 [c4,e4,g4]@6 [c4,e4,g4]@3 ~ [e4,g4] ~ [b3,d4,g4]@6 b3@3 b3@2 ~ [b2,b3,d4,f#4], ~@5 f#4@5 ~ e3@24 b2@23 ~ e3@24 b2@23 ~ c3@24 g2@24 c3@23 ~ g2@12 ~, ~@29 [e4,g4]@6 b3 ~@11 b3@9 ~@45 [b3,f#4]@5 ~@22 [c4,g4]@2 ~@19 b3@6 ~@21 c4@2 ~@7 [d4,g4]@6 ~, ~@53 [d4,f#4]@5 ~@19 [e4,g4]@6 ~@109]/8", // Bm Em D Bm D Em Bm C …
  AA: "[~@2 b3@3 ~@3 g3@2 ~ g3@4 g3@2 [g3,b3,d4]@6 [e2,e3,g#3,b3,d4]@21 ~@4, ~@5 [b3,d4,f#4]@6 g2@12 ~@25, ~@11 [b3,d4]@6 ~@31]/2", // G E7 Bm
  AB: "[~@11 [c4,e4]@3 g3@2 ~ g3@3 g3@2 ~ [b3,d4]@3 g3 ~@2 [g3,b3,d4]@4 a3 ~ [a3,c4,f4]@4 ~@2 a3@3 a3@2 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 g3 ~ [g3,c4,e4]@3 g3 ~@2 g3@3 g3@2 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [a3,c4,f4]@4 ~@2 a3@2 ~@2 c4 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [g3,c4,e4]@3 ~@3 g3@3 g3 ~@2 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [a3,c4,f4]@4 ~@2 a3@3 a3@2 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 ~@2 [c4,e4]@3 g3@2 ~ g3@3 g3@2 ~ [g2,g3,b3,d4], ~@11 [c2,c3]@12 g2@11 ~ f2@11 ~ g2@11 ~ [c2,c3]@12 g2@12 f2@11 ~ g2@12 [c2,c3]@11 ~ g2@12 f2@11 ~ g2@10 ~@2 [c2,c3]@12 ~, ~@11 g3@2 ~@4 [c4,e4]@6 g3@2 ~@16 [c4,f4]@5 ~@19 [c4,e4]@6 ~@18 f4@6 ~@73, ~@89 c4@4 ~@20 [c4,e4]@5 ~@19 [c4,f4]@5 ~@19 [c4,e4]@6 ~, ~@91 a3@4 ~@60 g3@2 ~@11]/7", // C Bm G F G C G F …
  AC: "[~@2 g3 ~@2 [g3,b3,d4]@4 a3 ~ [a3,c4,f4]@4 ~@2 a3@3 a3@2 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 g3 ~ [g3,c4,e4]@3 g3 ~@2 g3@3 g3@2 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 [a3,c4,f4]@4 ~@2 a3@2 ~@2 c4 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@6 ~@13, ~@11 f2@11 ~ g2@11 ~ [c2,c3]@12 g2@12 f2@11 ~ g2@12 ~@13, ~@17 [c4,f4]@5 ~@19 [c4,e4]@6 ~@18 f4@6 ~@25, ~@65 c4@4 ~@27, ~@67 a3@4 ~@25]/4", // G F G C G F G C …
})).s("gm_piano").gain(0.52)

// other · string ensemble 1
const string_ensemble_1 = note("<~@7 A@4 B ~@17 C@8 D@3 E F ~@8 G@2 ~@8 H@8 I@5 ~@14>".pickRestart({
  A: "[~@13 e5@14 ~@2 c6@2 b5 ~@2 b5@10 e4@15 ~@3 b4 ~@2 b4@10 e5@15 c6@2 ~@4]/4", B: "b5@11 ~@13",
  C: "[~@12 d5@23 e5@24 d5@24 ~ e5@23 d5@24 e5@24 d5@24 ~ e5@12]/8", D: "[~@11 b4@24 e5@24 ~ b4@12]/3", E: "f#4 f4",
  F: "e4", G: "[~@10 c5@5 b4@6 g4@5 e4@3 ~@19]/2", H: "[~@11 d5@23 e5@24 d5@24 ~ e5@23 d5@24 e5@24 d5@24 ~ e5@13]/8",
  I: "[~@10 b4@24 e5@24 ~ b4@12 f#4@12 f4@12 e4@25]/5",
})).s("gm_string_ensemble_1").gain(0.32)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@9 [~@11 c5@3 ~@10] [~@21 b5 ~@2] ~@40 [~@5 d4 ~ d4@9 ~@8] ~@35>")
  .s("gm_string_ensemble_1").gain(0.19)

// other · timpani
const timpani = note("<~ A B C@3 D E F G H ~@29 I J K L M@3 N O P Q R ~@19 S T@2 U V@3 W@2 U V@2 X Y Z ~>".pickRestart({
  A: "~@11 g2@2 ~@11", B: "~@11 g2 ~ g2@2 ~@9", C: "~@5 g2 ~ g2 ~@16", D: "~@5 g2 ~ g2@2 ~@15",
  E: "~@5 g2 ~ g2@2 ~@4 g2@5 ~@6", F: "~@5 g2@4 ~@11 g2 ~@3", G: "~@4 g2 ~@3", H: "~@3 g2@3 ~@13 g2@3 ~@2",
  I: "~@10 g2 ~ g2@7 ~@5", J: "~@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", K: "g2 ~ g2 ~ g2 ~ g2@3 ~@3", L: "~@10 g2 ~ g2@2 ~@10",
  M: "~@4 g2 ~ g2 ~@17", N: "~@4 g2 ~ g2@2 ~@16", O: "~@4 g2 ~ g2@2 ~@4 g2@5 ~@7", P: "~@4 g2@4 ~@11 g2 ~@4",
  Q: "~@11 g2@3 ~@10", R: "~@2 g2@3 ~@13 g2@3 ~@3", S: "~@9 g2 ~ g2@7 ~@6",
  T: "[~@3 g2@2 ~@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@2 g2@6 ~@7]/2",
  U: "~@9 g2 ~ g2@2 ~@11", V: "~@3 g2 ~ g2 ~@18", W: "~@3 g2 ~ g2@2 ~@17", X: "~@3 g2 ~ g2 ~@5 g2@2 ~@3 g2@3 ~@2 g2@3",
  Y: "~@2 g2@5 ~@10 g2 ~ a2 [g2,a2] g2 ~ a2", Z: "g2 ~@2 g2 a2 [g2,a2] g2 a2 g2 [g2,a2] ~ g2@4 ~ a2@8, ~@5 a2 ~@6",
})).s("gm_timpani").gain(0.79)

// other · timpani · soft notes
const timpani_soft = note("<~@8 A B C ~@38 D E F ~@32 G H ~>".pickRestart({
  A: "~@3 g2 ~@20", B: "~@10 g2 ~@13", C: "~@17 g2 ~@6", D: "~@2 g2 ~@21", E: "~@9 g2 ~@14", F: "~@16 g2 ~@7",
  G: "~@17 a2 g2 ~@3 a2 g2", H: "~ a2 [g2,a2] ~@21",
})).s("gm_timpani").gain(0.47)

// chords · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~ A ~ A B C ~ D@2 ~@4 E@2 ~@3 F@2 G ~@3 H@2 ~@3 I J K L M N O P Q R S T U@2 ~ V W X ~ Y@2 ~@5 Z@2 ~@3 AA AB AC@3 AD AE
  AF@2 AG@5 ~ AH AI@2 ~ AJ ~ AH AK@4 ~
>`.pickRestart({
  A: "~@13 e5@11", B: "~@13 c5@11", C: "~ d5@12 e5@11", D: "[~@13 e4@15 ~@20]/2", E: "[~ g#4@2 ~]/2",
  F: "[~@6 g4@11 ~@7]/2", G: "~ b3 ~@4", H: "[~@12 c4@25 ~@11]/2", I: "~@12 [d5,f#5,b5] ~@5 [d5,f#5,b5] ~@5",
  J: "[d5,f#5,b5] ~@5 [d5,f#5,b5]@2 ~@4 [g5,b5] ~@5 [g5,b5] ~@5, ~@6 e5 ~@2 e5 ~@2", // Bm G
  K: "[e5,g5,b5] ~@5 [e5,b5]@2 ~@4 [d5,f#5,b5]@2 ~@4 [d5,b5]@2 ~@4, ~@6 g5 ~@11 f#5 ~@5", // Em E5 Bm G
  L: "[d5,b5]@2 ~@4 [d5,f#5,b5] ~@5 [e5,g5,b5] ~@5 [e5,g5,b5] ~@5, f#5 ~@23", // G Bm Em
  M: "[g5,b5] ~@5 [e5,b5]@2 ~@4 [d5,f#5] ~@5 [d5,f#5,b5] ~@5, e5@2 ~@4 g5 ~@5 b5@2 ~@10", // G E5 D Bm
  N: "[d5,f#5,b5] ~@5 [d5,f#5,b5] ~@5 [e5,g5,b5] ~@5 [e5,g5,b5] ~@5", // Bm Em
  O: "[e5,g5,b5] ~@5 [e5,g5,b5] ~@5 [d5,f#5,b5] ~@5 [d5,f#5,b5] ~@5", // Em Bm
  P: "[d5,f#5,b5] ~@5 [f#5,b5] ~@5 [c5,g5]@2 ~@4 [e5,g5] ~@5, ~@6 d5@2 ~@4 e5 ~@5 c5@2 ~@4", // Bm B5 C5 Em
  Q: "[e5,g5] ~@5 [c5,e5]@2 ~@4 [b4,d5,g5] ~@5 [d5,g5] ~@5, c5@2 ~@4 g5 ~@11 b4@2 ~@4", // Em C G G5
  R: "[b4,d5,g5] ~@5 [d5,g5] ~@5 [c5,e5,g5] ~@5 [c5,e5,g5] ~@5, ~@3 b4 ~@8", // G G5 C
  S: "[e5,g5] ~@5 [c5,g5]@2 ~@4 g4@12, c5@2 ~@4 e5 ~@17", T: "b4 f5", U: "[e5@36 e5 ~@11]/2", V: "~ e5", W: "~ c5",
  X: "d5 e5", Y: "[~@4 e4@5 ~@7]/2", Z: "[~@11 c4@25 ~@12]/2", AA: "~@11 [d5,f#5,b5] ~@5 [d5,f#5,b5] ~@5 [d5,f#5,b5]",
  AB: "~@5 [d5,f#5,b5]@2 ~@4 [g5,b5] ~@5 [g5,b5] ~@5 [e5,g5,b5], ~@11 e5@2 ~@4 e5@2 ~@5", // Bm G Em
  AC: "[~@5 [g5,b5] ~@5 [d5,f#5,b5]@2 ~@4 [d5,f#5,b5]@2 ~@4 [d5,f#5] ~@5 [d5,f#5,b5] ~@5 [g5,b5] ~@5 [e5,g5,b5] ~@5 [g5,b5] ~@5 [e5,b5]@2 ~@4 [d5,f#5] ~@5 [d5,f#5,b5] ~@5 [d5,f#5,b5], ~@5 e5@2 ~@16 b5@2 ~@10 e5@2 ~@10 e5@2 ~@4 g5 ~@5 b5@2 ~@11]/3", // G Bm D Bm G Em G E5 …
  AD: "~@5 [f#5,b5] ~@5 [e5,g5,b5] ~@5 [e5,g5,b5] ~@5 [e5,g5,b5], ~@5 d5@2 ~@17", // B5 Em
  AE: "~@5 [e5,g5,b5] ~@5 [d5,f#5,b5] ~@5 [d5,f#5,b5] ~@5 [d5,f#5,b5]", // Em Bm
  AF: "[~@5 [f#5,b5] ~@5 [c5,g5]@2 ~@4 [e5,g5] ~@5 [e5,g5] ~@5 [c5,e5]@2 ~@4 [b4,d5,g5] ~@5 [b4,d5,g5] ~@5 [b4,d5,g5], ~@5 d5@2 ~@4 e5 ~@5 c5@2 ~@4 c5@2 ~@4 g5 ~@18]/2", // B5 C5 Em C G
  AG: "[~@5 [d5,g5] ~@5 [c5,e5,g5] ~@5 [c5,e5,g5] ~@5 [e5,g5] ~@5 [c5,g5]@2 ~@4 g4@12 b4@12 f5@12 e5@36 e5@11 ~@2, ~@5 b4@2 ~@16 c5@2 ~@4 e5 ~@90]/5", // G5 C Em C5
  AH: "~@11 e5@12 ~", AI: "[~@11 c5@12 d5@12 e5@12 ~]/2", AJ: "~@11 e5@11 ~@2",
  AK: "[~@11 c5@12 d5@12 [g3,a4]@27 ~@2 [c3,d4]@28 ~@4]/4", // Gsus2 Csus2
})).s("gm_string_ensemble_1").gain(0.33)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft_2 = note(`<
  ~@2 A B@2 ~ C D E@6 F@5 ~ G@5 H@5 ~@12 I@2 J@2 ~ K L M@7 N@5 ~@12 O@4 P@6 Q@3 ~
>`.pickRestart({
  A: "d5@13 c5@11", B: "~ d5@12 ~@11", C: "~ d5@11 ~ c5@11", D: "~ d5@11 ~@12",
  E: "[~@4 d4@15 ~ c4@15 d4@16 e4@15 d4@16 ~@2 b3@24 f#4@23 ~@13]/6", F: "[~ e4@2 f#4@2 b3@2 f#4@2 ~]/5",
  G: "[~@9 a3@26 ~ b3@24 f#4@24 g#4@23 ~@13]/5", H: "[~@12 f#4@23 ~ b3@24 f#4@23 ~ g4@21 ~@15]/5",
  I: "[~@22 d5@13 ~ c5@12]/2", J: "d5 ~", K: "d5@11 ~ c5@12", L: "d5@11 ~@13",
  M: "[~@3 d4@15 ~ c4@15 d4@16 e4@15 d4@16 ~@2 b3@24 f#4@24 g#4@23 ~@14]/7",
  N: "[~@11 f#4@23 ~ b3@24 f#4@23 ~ g4@21 ~@16]/5", O: "[~@22 d5@13 c5@12 d5@12 ~@12 d5@12 ~@13]/4",
  P: "[~@23 d5@11 ~ c5@12 d5@11 ~@12 d5@13 c5@12 d5@12 ~@12 d5@12 ~@13]/6",
  Q: "[~@11 [c4,f4]@27 ~@2 [c4,e4,g4]@27 ~@5]/3", // F5 C
})).s("gm_string_ensemble_1").gain(0.21)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@31 A ~ A B C D@4 E F ~@20 G ~ G H I J@6 ~@14>".pickRestart({
  A: "~@9 [b3,g4]@4 ~@11", B: "~@3 [b3,d4,f#4] ~@4", C: "~ e3, ~@3 [b3,g4]@5",
  D: "[~@12 g3@7 ~@17 d4@9 ~@9 g3@3 ~@3 e4@9 ~@15 g3@6 g3@6, ~@12 [c3,e4]@23 ~ g2@23 ~ c3@23 ~ g2@12, ~@21 g3@9 g3@15 g3@9 ~@3 g3@12 g3@9 g3@5 ~@13, ~@24 c4@11 ~@13 b3@11 ~@13 e4@11 ~@13, ~@27 d4@5]/4", // C
  E: "~ b3 ~ g3, [b2,f#4] [g2,d4]", F: "b3@4 ~ [e3,b3]@3 ~@16, g#2 ~@2", G: "~@2 [b3,g4] ~@3",
  H: "~@8 [b3,d4,f#4]@3 ~@13", I: "~@11 e3@13, ~@8 [b3,g4]@15 ~",
  J: "[~@11 g3@7 ~@17 d4@9 ~@9 g3@3 ~@3 e4@9 ~@15 g3@6 g3@6 ~@6 b3@6 ~@6 g3@6 b3@4 ~ [e3,b3]@3 ~@17, ~@11 [c3,e4]@23 ~ g2@23 ~ c3@23 ~ g2@12 [b2,f#4]@13 ~@36, ~@20 g3@9 g3@15 g3@9 ~@3 g3@12 g3@9 g3@5 ~@25 [g2,d4]@12 g#2@8 ~@17, ~@23 c4@11 ~@13 b3@11 ~@13 e4@11 ~@62, ~@80 d4@15 ~@49]/6", // E5 C B5 G5
})).s("gm_electric_guitar_clean").gain(0.56)

// bass · electric bass finger
const bass = note("<~ A B@2 C@2 D E ~@28 F G H I J K L M N M O P Q@4 ~@15 R@6 S@8 T@5 ~>".pickRestart({
  A: "~@13 c2@8 ~@2 c2", B: "[~ g1@10 ~@2 f1@7 ~@3 f1@2 g1@9 ~@3 c2@8 ~@2 c2]/2",
  C: "[~ g1@10 ~@2 f1@7 ~@3 f1@2 g1@9 ~@3 c2@7 ~@3 c2]/2", D: "~ g1@9 ~@3 f1@7 ~@3 f1", E: "~@2 g1@9 ~@13",
  F: "~@12 c2@6 ~@3 c2 ~@2", G: "c2@9 ~@3 g1@6 ~@3 g1 ~@2", H: "g1@7 ~@5 c2@7 ~@2 c2 ~@2", I: "c2@9 ~@3 g1@8 ~@4",
  J: "b1@2 ~ f1@2 ~", K: "~@8 g#1@3 ~ g#1@3 ~ g#1@3 ~ g#1@3 ~", L: "g#1@3 ~ g#1@3 ~ g#1@3 ~ c2@8 ~@2 c2 ~",
  M: "g1@10 ~@2 f1@7 ~@3 f1@2", N: "g1@9 ~@3 c2@8 ~@2 c2 ~", O: "g1@9 ~@3 c2@7 ~@3 c2 ~", P: "g1@9 ~@3 f1@7 ~@3 f1 ~",
  Q: "[g1@9 ~@3 c3@3 e2@2 c3@3 ~@2 c3@3 e2@3 c3@3 ~@12 c3@12 ~@4 g2@15 c3@12 ~@10]/4",
  R: "[~@11 c2@6 ~@3 c2 ~@2 c2@9 ~@3 g1@6 ~@3 g1 ~@2 g1@7 ~@5 c2@7 ~@2 c2 ~@2 c2@9 ~@3 g1@8 ~@4 b1@8 ~@4 f1@8 ~@4 g#1@4 g#1@3 ~ g#1@3 ~ g#1@3 ~ g#1@3 ~ g#1@3 ~ g#1]/6",
  S: "[~@3 g#1@3 ~ g#1@3 ~ c2@8 ~@2 c2 ~ g1@10 ~@2 f1@7 ~@3 f1@2 g1@9 ~@3 c2@8 ~@2 c2 ~ g1@10 ~@2 f1@7 ~@3 f1@2 g1@9 ~@3 c2@7 ~@3 c2 ~ g1@9 ~@3 f1@7 ~@3 f1 ~ g1@9 ~@3 c2@8 ~@2 c2 ~ g1@10 ~@2 f1@7 ~@3 f1@2 g1]/8",
  T: "[~@11 c2@8 ~@2 c2 ~ g1@10 ~@2 f1@7 ~@3 f1@2 g1@9 ~@3 f1@27 ~@3 c1@27 ~@4]/5",
})).s("gm_electric_bass_finger").gain(0.8)

// bass · electric bass finger · soft notes
const bass_soft = note("<~@41 A ~@6 B C D E@2 ~@34>".pickRestart({
  A: "g#1@3 ~ g#1@3 ~@17", B: "~@10 e2 ~", C: "~ b2@2 ~", D: "~@9 c3@2 ~@13", E: "[~@16 c3@2 g2@17 ~@13]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// other · orchestral harp
const orchestral_harp = note("<~@52 A@8 B ~@26>".pickRestart({
  A: "[~@11 b4@2 g4@2 d4@2 b3@2 d4@2 g4@2 b4@2 g4@2 d4@2 b3@2 d4@2 g4 ~ f#4@2 d4@2 b3@2 f#3@2 b3@2 d4@2 f#4@2 d4@2 b3@2 f#3@2 b3@2 d4 ~ d4@2 b3@2 g#3@2 ~@2 g#3 ~ b3@2 d4@2 b3@2 g#3@2 e3@2 g#3 ~ b3 ~ e4@2 c4@2 a3@2 e3@2 a3@2 c4@2 e4@2 c4@2 a3@2 e3@2 a3@2 c4@2 e4 ~ d3@2 f#3@2 a3@2 d4@2 a3@2 ~ d3@2 f#3@2 ~ a3@2 d4@2 a3 ~ b4@2 g4@2 d4@2 b3@2 d4@2 g4@2 b4@2 g4@2 d4@2 b3@2 d4@2 g4 ~ f#4@2 d4@2 b3@2 f#3@2 b3@2 d4@2 f#4@2 d4@2 b3@2 f#3@2 b3@2 d4 ~ b4@2 g4@2 e4@2 b3@2 e4@2 g4@2 b4, ~@65 e3@5 ~@49 f#3@2 ~@71]/8",
  B: "~ g4@2 e4@2 b3@2 e4@2 ~@15",
})).s("gm_orchestral_harp").gain(0.5)

// other · flute
const flute = note("<~@34 A@7 B C D E D E F G ~@16 H@8 I@8 J@3 ~@3>".pickRestart({
  A: "[~@12 e5@2 ~@4 e5@9 ~@3 e5@6 d5@2 ~@4 d5@15 ~@3 e5@2 ~@4 e5@9 ~@3 e5@6 d5@2 ~@4 d5@18 e5@2 ~@4 e5@10 ~ e5@6 ~ d5@11 b4@12 ~ b4 ~@11]/7",
  B: "g#4", C: "~@6 e5@5 ~", D: "d5@10 ~@2 c5@11 ~", E: "d5@9 ~@3 e5@10 ~@2", F: "d5@9 ~@3 c5@11 ~", G: "d5@5 ~@7",
  H: "[~@11 e5@2 ~@4 e5@9 ~@3 e5@6 d5@2 ~@4 d5@15 ~@3 e5@2 ~@4 e5@9 ~@3 e5@6 d5@2 ~@4 d5@18 e5@2 ~@4 e5@10 ~ e5@6 ~ d5@11 b4@12 ~ b4 ~@11 g#4@25]/8",
  I: "[~@11 e5@10 ~@2 d5@10 ~@2 c5@11 ~ d5@9 ~@3 e5@10 ~@2 d5@10 ~@2 c5@11 ~ d5@9 ~@3 e5@10 ~@2 d5@9 ~@3 c5@11 ~ d5@10 ~@2 e5@10 ~@2 d5@10 ~@2 c5@11 ~ d5]/8",
  J: "[~@11 e5@10 ~@2 d5@10 ~@2 c5@11 ~ d5@9 ~@16]/3",
})).s("gm_flute").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~ A B@5 C ~@31 D E ~ D E@5 F ~@21 G H ~ G@10 ~@4>".pickRestart({
  A: "~@13 x ~@10", B: "~ x ~@11 x ~@10", C: "~ x ~@22", D: "~ x", E: "x!2", F: "x", G: "~@11 x ~@11 x",
  H: "~@11 x ~@12",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct("<~ A B@5 C ~@31 D E ~ D E@5 F ~@21 G H ~ G H@9 I ~@3>".pickRestart({
  A: "~@19 x ~@4", B: "~@7 x ~@11 x ~@4", C: "~@7 x ~@16", D: "~@3 x", E: "~ x ~ x", F: "~ x ~@2", G: "~@17 x ~@6",
  H: "~@5 x ~@11 x ~@6", I: "~@5 x ~@18",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~ A B@5 C ~@31 D E ~ D E@5 F ~@21 G H ~ G I@9 J ~@3>".pickRestart({
  A: "~@13 x ~@5 x ~@4", B: "~ x ~@5 x ~@5 x ~@5 x ~@4", C: "~ x ~@5 x ~@16", D: "~@2 x!2", E: "x!4", F: "x!2 ~@2",
  G: "~@11 x ~@5 x ~@5 x", H: "~@5 x ~@5 x ~@5 x ~@6", I: "~@5 x ~@5 x ~@5 x ~@5 x", J: "~@5 x ~@18",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct("<~ A@6 ~@35 B@6 ~@25 C@10 ~ D@2 ~>".pickRestart({
  A: "~@13 x ~@10", B: "~ x", C: "~@11 x ~@12", D: "~@17 x ~@6",
})).gain(0.8)

stack(
  piano, string_ensemble_1, string_ensemble_1_soft, timpani, timpani_soft, string_ensemble_1_2,
  string_ensemble_1_soft_2, electric_guitar_clean, bass, bass_soft, orchestral_harp, flute, kick, snare, hihat, crash
)

More by Battisti