Strudelify
Primavera a Sarajevo cover art

Gli occhi del musicista

Primavera a Sarajevo

Ruggeri

KeyF♯ minorTempo129 bpm
0:00/0:00
// Primavera a Sarajevo — Ruggeri
// 129 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 119 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(129/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, A@4 for four bars: edit a riff to change every repeat.

// other · viola
const viola = note("<~@38 A B C D E@2 F G ~@69 H ~@3>".pickRestart({
  A: "~ f#4@6 a4@6 g#4@6 a4@4 ~", B: "~ f#4@6 a4@6 g#4@6 ~@5", C: "~ f#4@11 ~ d4@6 f#4@5",
  D: "~ f4@6 b3@6 g#3@5 ~ g#3@5", E: "~ c#4@6 b3@6 c4@5 ~@6", F: "~ c#4@5 ~ b3@6 c#4@5 ~ c#3@5",
  G: "~ f#3@6 f#3 ~@2 f#3 ~@2 f#3 ~@10", H: "~@4 f#4 ~@2 a4 ~@2 c#5@2 ~ f#5@3 ~@8",
})).s("gm_viola").gain(0.41).pan(0.7)

// other · viola
const viola_2 = note("<~@38 A@2 B C D@2 E F ~@29 G@2 H I ~@2 J K ~@15 L M ~@19>".pickRestart({
  A: "~ f#4@6 c#5@6 c5@6 c#5@4 ~", B: "~ f#4@6 a4@6 b4@10 ~", C: "~ g#4@6 d4@6 c#4@6 f4@5", D: "~ f4@12 f#4@6 a4@4 ~",
  E: "~ f4@9 d5@3 c#5@6 c#4@5", F: "~ f#4@3 g#4 ~@2 a4 ~@2 g#4 ~@2 f#4 ~@10",
  G: "~@7 a4@6 g#4@6 [a4,c#5]@5, ~ c#5@18 ~@5", H: "~ f#4@11 e4 d#4@11", I: "~@7 d4@6 c#4@10 ~, ~ f4@12 ~@11",
  J: "~ c#4@6 b3@6 a3@5 ~ g#3@5", K: "~ f#3@7 ~@16", L: "~ c#4@12 d4@11", M: "~ e4@12 c#4@11",
})).s("gm_viola").gain(0.34).pan(0.3)

// chords · trombone
const trombone = note("<~@55 A B C D A E F G A H I J ~@25 A B C D A K F G A B C D A H I J ~@11>".pickRestart({
  A: "~@4 [a3,c#4] ~@5 [a3,c#4] ~@5 [a3,c#4] ~@5 [a3,d4] ~", B: "~@4 [g#3,b3] ~@5 [g#3,b3] ~@5 [g#3,b3] ~@7",
  C: "~@4 [c#4,f#4] ~@5 [c#4,f#4] ~@5 [c#4,f#4] ~@5 [c#4,f#4] ~", // F#5
  D: "~@4 [c#4,f4] ~@5 [c#4,f4] ~@5 f4@3 f#4@3 [c#4,f4] ~, ~@16 c#4 ~@7", // C#
  E: "~@4 [g#3,b3] ~@5 [g#3,b3] ~@5 e4@3 d#4@3 e4@2, ~@16 g#3 ~@5 g#3 ~", // G#m
  F: "~@4 [c#4,f#4] ~@5 [c#4,f#4] ~@5 [d4,f#4] ~@5 [d4,f#4] ~", // F#5 D
  G: "~@4 [e4,g#4] ~@5 [e4,g#4] ~@5 [c#4,f4] ~@5 [c#4,f4] ~", // E C#
  H: "~@4 [g#3,b3] ~@5 [g#3,b3] ~@5 e4@3 g#4@3 e4@2, ~@16 g#3 ~@5 g#3 ~", // G#m
  I: "~@4 [c#4,f4] ~@5 [c#4,f4] ~@5 [c#4,f4] ~@5 [c#4,f4] ~", J: "~@4 [c#4,f#4] ~@5 [c#4,f#4] ~@2 [c#4,f#4] ~@10",
  K: "~@4 [g#3,b3] e4 ~@4 [g#3,b3] ~@5 e4@3 ~@3 e4@2, ~@7 e4@8 ~ g#3 ~@5 g#3 ~", // G#m
})).s("gm_trombone").gain(0.47).pan(0.3)

// other · trombone
const trombone_2 = note(`<
  A B C D A B C E ~@38 F G F H I J K L@2 M N O P M Q R S M Q T U A B C D A B C E ~@8 F G F H I V K L@2 M N O P M Q R S M
  N O P M Q T U A B C D A B C E W@2 ~
>`.pickRestart({
  A: "~ f#4@3 f4 ~@2 e4 ~@2 d#4 ~@2 f#4@3 f4 ~@2 e4 ~@2 d#4 ~", B: "~ d4@11 ~ c#4@8 ~@3",
  C: "~ c#4@3 c4 ~@2 b3 ~@2 a3 ~@2 c#4@3 c4 ~@2 b3 ~@2 a3 ~", D: "~ g#3@15 ~@8", E: "~ f#3@15 ~@8",
  F: "~ e3@10 ~@2 g#3@4 ~@2 b3@4 ~", G: "~ a3@8 ~ e3 ~@2 c#3@2 ~ b2@2 ~ a2 ~@2 e3 ~",
  H: "~ a3@8 ~ e3 ~@2 c#3@2 ~ b2@2 ~ a2 ~@2 c#3 ~", I: "~ c#3@9 ~@3 b2@4 ~@2 c#3@4 ~", J: "~ d3@10 ~@2 b2@8 ~@3",
  K: "~ c#3@6 f#3@6 c#3@5 ~ g#3@5", L: "[~ f#3@5 ~ c#3@4 ~@2 f#2@24 ~@6 e3@5]/2", M: "~ a3@12 ~@6 e3@5",
  N: "~ g#3@5 ~ e3 ~@2 b2 ~@2 e3@6 f3@4 ~", O: "~ f#3@5 ~ c#3@3 ~@3 a3@4 ~@2 f#3@4 ~", P: "~ g#3@17 ~ c#3@4 ~",
  Q: "~ g#3@5 ~ e3 ~@2 b2 ~@2 e3@6 g#3@4 ~", R: "~ f#3@5 ~ g#3@3 a3@2 ~ d3@6 a3@4 ~",
  S: "~ e3@5 ~ g#3@6 g#3@3 f#3 ~@2 f3 ~@2 c#3@2", T: "~ f3@22 ~", U: "~ f#3@11 ~@12",
  V: "~ d3@8 ~ c#3 ~@2 b2@3 ~@3 c#3 ~@2 d3@2", W: "[~ f#2@37 ~@10, ~ c5@29 ~@18]/2",
})).s("gm_trombone").gain(0.54).pan(0.6)

// other · trombone
const trombone_3 = note("<A B C D A B C E ~@59 A B C D A B C E ~@33 A B C D A B C E F@2 ~>".pickRestart({
  A: "~ f#3@3 f3 ~@2 e3 ~@2 d#3 ~@2 f#3@3 f3 ~@2 e3 ~@2 d#3 ~", B: "~ d3@11 ~ c#3@8 ~@3",
  C: "~ c#3@3 c3 ~@2 b2 ~@2 a2 ~@2 c#3@3 c3 ~@2 b2 ~@2 a2 ~", D: "~ g#2@15 ~@8", E: "~ f#2@15 ~@8",
  F: "[~ c4@39 ~@8]/2",
})).s("gm_trombone").gain(0.45).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@2 B C D E F G A@2 B C H@2 C I J K J K E L M N O ~@13 A@2 B C H@2 C I J K J K E L M N O ~@12 A@2 B C D E F G ~@4 P@2
  Q R J K J K E L M N O ~@7 S ~@8 T@2 U C D E F G ~@3
>`.pickRestart({
  A: "~@4 [c#4,f#4] ~@5 [c#4,f#4]@2 ~@4 [c#4,f#4] ~@5 [c#4,f#4] ~", // F#5
  B: "~@4 [a3,c#4,f#4]@2 ~@4 [a3,c#4,f#4]@2 ~@4 [b3,f4,g#4] ~@5 [b3,f4,g#4] ~", // F#m Fdim
  C: "~@4 [f4,g#4,c#5] ~@5 [f4,g#4,c#5] ~@5 [f4,g#4,c#5] ~@5 [f4,g#4,c#5] ~", // C#
  D: "~@2 [f#4,a4,d5] ~@2 [f#4,a4,d5] ~@2 [f#4,a4,d5] ~@2 [f#4,a4,d5]", // D
  E: "~@2 [f4,g#4,c#5] ~@2 [f4,g#4,c#5] ~@2 [f4,g#4,c#5] ~@2 [f4,g#4,c#5]", // C#
  F: "~@2 [d#4,f#4,b4] ~@2 [d#4,f#4,b4] ~@2 [f4,g#4,c#5] ~@2 [f4,g#4,c#5]", // B C#
  G: "~@4 [a3,c#4,f#4]@3 ~@3 [a3,c#4,f#4]@2 ~ [a3,c#4,f#4]@3 ~@8", // F#m
  H: "~@4 [f4,g#4,c#5] ~@5 [f4,g#4,c#5] ~@5 [f#4,a4,d5] ~@5 [f#4,a4,d5] ~", // C# D
  I: "~@4 [a3,c#4,f#4]@2 ~@4 [a3,c#4,f#4]@3 [a3,c#4,f#4]@3 ~@8", // F#m
  J: "~@4 [b3,e4,g#4]@2 ~@4 [b3,e4,g#4]@2 ~@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~", // E
  K: "~@4 [c#4,e4,a4]@2 ~@4 [c#4,e4,a4] ~@5 [c#4,e4,a4] ~@5 [c#4,e4,a4]@2", // A
  L: "~@4 [f#4,a4,d5] ~@5 [f#4,a4,d5]@2 ~@4 [d4,f#4,b4]@2 ~@4 [d4,f#4,b4]@2", // D Bm
  M: "~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [f4,g#4,c#5] ~@2 [f4,g#4,c#5]", // F#m C#
  N: "~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4]", // F#m
  O: "~@4 [a3,c#4,f#4]@2 ~@4 [a3,c#4,f#4]@3 [a3,c#4,f#4]@2 ~@4 [b3,e4]@5, ~@3 g#3", // F#m E5
  P: "~ [g#3,c#4,f4]@12 [a3,d4,f#4]@11", Q: "~ [g#3,c#4,f4]@12 [a3,d4,f#4]@6 [g#3,c#4,f4]@5",
  R: "~ f#4@6 c#4@3 a3@3 f#3@4 ~@7", S: "~@13 g#5 ~@2 f#5 ~@2 f5@2 ~ [g#4,c#5]@2",
  T: "~@4 [f#4,c#5] ~@5 [f#4,c#5]@2 ~@4 [f#4,c#5] ~@5 [f#4,c#5] ~", // F#5
  U: "~@2 [f#4,a4,c#5] ~@2 [f#4,a4,c#5] ~@2 [b3,d#4,g#4] ~@2 [b3,d#4,g#4]", // F#m G#m
})).s("gm_electric_guitar_clean").gain(0.39)

// bass · acoustic bass
const bass = note(`<
  A@2 B C D E F G H@2 B C I@2 J K L M L N J O P Q R S T U C S T V W S X E Y Z H@2 B C I@2 J K L M L N J O P Q AA S T U C
  S T V W S X E Y A@2 B C D E F G AB@2 AC AD AE@2 AF AG L M L N J O P Q AH S T U C S T V W S T U C S X E Y A@2 B C D E F
  G AI@2 ~
>`.pickRestart({
  A: "~ f#2@4 ~@2 c#2@4 ~@2 f#2@5 ~ a2@2 ~ c#3@2", B: "~ f#2@4 ~@2 c#2@2 ~ f#2 ~@2 g#2@5 ~ g#1@4 ~",
  C: "~ c#2@5 ~ g#1@4 ~@2 c#2@4 ~@2 g#1@2 ~ c#2@2", D: "~ d2@4 ~@2 a1@4 ~@2 d1@5 ~ a1@2 ~ d2@2",
  E: "~ c#2@4 ~@2 g#1@4 ~@2 c#2@5 ~ g#1@5", F: "~ b1@4 ~@2 f#1@4 ~@2 c#2@5 ~ g#1@5", G: "~ f#1@5 ~ c#1@4 ~@2 f#1@5 ~@6",
  H: "~ f#2@4 ~@2 c#2@4 ~@2 f#2@5 ~ c#2@5", I: "~ c#2@4 ~@2 g#1@3 c#2@3 d1@5 ~ a1@2 ~ d2@2",
  J: "~ c#2@4 ~@2 g#1@4 ~@2 c#2@5 ~ g#1@3 c#2@2", K: "~ f#1@5 ~ c#2@4 ~@2 f#1@5 ~@6",
  L: "~ e2@4 ~@2 b1@4 ~@2 e2@5 ~ e2@2 ~ f#2@2", M: "~ a2@5 ~ e2@4 ~@2 a1@5 ~ g#2@2 ~ f#2@2",
  N: "~ a2@5 ~ e2@4 ~@2 a1@5 ~ e2@2 ~ b1@2", O: "~ d2@5 ~ a1@4 ~@2 b1@4 ~@2 f#1@5",
  P: "~ f#1@4 ~@2 c#2@2 ~ g#1@2 ~ c#2@5 ~ g#1@4 ~", Q: "~ f#1@5 ~ c#2@4 ~@2 f#1@4 ~@2 c#2@5",
  R: "~ f#1@5 ~ c#2@4 ~@2 f#1@3 ~@3 e2@5", S: "~ a2@4 ~@2 e2@4 ~@2 a2@5 ~ g#2@2 ~ f#2@2",
  T: "~ e2@5 ~ b1@4 ~@2 e2@4 ~@2 f#2@2 ~ f2@2", U: "~ f#2@4 ~@2 c#2@4 ~@2 f#2@5 ~ c#2@2 ~ f#2@2",
  V: "~ f#2@4 ~@2 c#2@4 ~@2 d2@5 ~ a1@4 ~", W: "~ e2@5 ~ b1@4 ~@2 c#2@5 ~ g#1@4 ~",
  X: "~ e2@5 ~ b1@4 ~@2 e2@5 ~ b2@4 ~", Y: "~ f#1@5 ~ c#2@4 ~@2 f#1@2 ~@9", Z: "~ f#1@5 ~ c#2@4 ~@2 f#2@2 ~@9",
  AA: "~ f#2@3 f2@3 e2@3 c#2@3 f#1@3 ~@3 e2@5", AB: "~ f#2@21 ~@2", AC: "~ f#2@12 g#2@11", AD: "~ c#2@23",
  AE: "~ c#2@12 d2@11", AF: "~ c#2@12 d2@6 c#2@5", AG: "~ f#2@5 ~ c#2@6 f#2@3 ~@8", AH: "~ f#2@5 ~ c#2@4 ~@2 f#2@4 ~@7",
  AI: "[~ f#1@47]/2",
})).s("gm_acoustic_bass").gain(0.54)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~@25 A B C D A B E F G B H I@2 ~@17 A B C D A B E F G B H I ~@11 J ~@13 A B C D A B K L A B C D G B H I ~@8 M@2 ~
>`.pickRestart({
  A: "~@7 e4@6 ~@6 a4@3 ~@2, ~ a4@18 ~@5, ~@13 c#4@9 ~@2", B: "~@7 e4@6 ~@6 g#4@3 ~@2, ~ g#4@17 ~@6, ~@13 b3@9 ~@2",
  C: "~@7 c#4@6 ~@6 f#4@3 ~@2, ~ f#4@17 ~@6, ~@13 a3@9 ~@2", D: "~@7 c#4@6 g#3@6 c#4@5, ~ f4@16 ~@7",
  E: "~ [c#4,f#4]@10 ~@2 f#4@11, a3@11 a3@12 ~, ~@12 d4@11 ~", // F#5
  F: "~@2 g#4@11 [g#3,c#4,f4]@11, b3@13 ~@11, ~ e4@12 ~@11", G: "~@7 e4@6 ~@6 a4@3 ~@2, ~ a4@17 ~@6, ~@13 c#4@9 ~@2",
  H: "~@7 c#4@6 ~@6 f4@3 ~@2, ~ f4@16 ~@7, ~@13 g#3@9 ~@2", I: "~@7 c#4@6 a3 ~@10, ~ f#4@13 ~@10", J: "~@7 b4@6 c#5@11",
  K: "~ [c#4,f#4]@12 [d4,f#4]@11", L: "~ [e4,g#4]@12 [c#4,f4]@11", M: "[~ [a3,c4,d#4]@46 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.56).pan(0.4)

// chords · piano
const piano = note(`<
  A@2 B C D E F G H@2 B I J K L M N O P Q R S T U V@2 W X Y Z W AA AB Z AC AD AE AF H@2 B I J K L M N O P Q R S T U V@2
  W X Y Z W AA AB Z AC AD AE A@2 B C D E F G ~@8 N O P Q R S T U V@2 W X Y Z W AA AB Z W X Y Z AC AD AE A@2 B C D E F G
  AG@3
>`.pickRestart({
  A: "~ f#2@3 [c#3,f#3,a3]@2 ~ c#2@3 [c#3,f#3,a3]@2 ~@4 [c#3,f#3,a3]@2 ~ a2 ~@2 [c#3,f#3,a3]@2, ~@13 f#2@5 ~@6", // F#m
  B: "~ f#2@3 [c#3,f#3,a3]@2 ~ c#2@2 ~ [c#3,f#3,a3]@2 ~@4 [f#3,b3]@2 ~ g#1@3 [f#3,b3]@2, ~@10 f#2 ~@2 g#2@5 ~@6", // F#m B5
  C: "~@4 [c#3,f3]@2 ~ g#1@3 [c#3,f3]@2 ~ c#2@3 [c#3,f3]@2 ~ g#2@3 [c#2,c#3,f3]@2, ~ c#2@5 ~@18", // C#
  D: "~ d2@3 [f#3,a3]@2 ~ a2@3 [f#3,a3]@2 ~@4 [f#3,a3]@2 ~ a2@2 ~ [d3,f#3]@2, ~@13 d2@5 ~@4 a3 ~", // F#m D
  E: "~@4 [f3,g#3]@2 ~ g#2@3 [f3,g#3]@2 ~@4 [f3,g#3]@2 ~ g#2@3 f3@2, ~ c#3@5 ~@7 c#3@5 ~@4 g#3 ~", // Fm
  F: "~ b2@3 [d#3,f#3]@2 ~ f#2@3 [d#3,f#3]@2 ~@4 [f3,g#3]@2 ~@4 [f3,g#3]@2, ~@13 c#3@5 ~ g#2@5", // D#m Fm
  G: "~@4 [f#3,a3]@3 c#2@3 f#3@2 ~ [f#3,a3]@2 ~@9, ~ f#2@5 ~@4 a3 ~@2 f#2@5 ~@6", // F#m
  H: "~ f#2@3 [c#3,f#3,a3]@2 ~ c#2@3 [c#3,f#3,a3]@2 ~@4 [c#3,f#3,a3]@2 ~ c#2@3 [c#3,f#3,a3]@2, ~@13 f#2@5 ~@6", // F#m
  I: "~@4 [c#3,f3]@2 ~ g#1@3 [c#3,f3]@2 ~ c#1@3 [c#3,f3]@2 ~ g#2@3 [c#3,f3]@2, ~ c#2@5 ~@18", // C#
  J: "~ c#2@3 [g#3,c#4]@3 g#2@3 [c#3,g#3,c#4]@3 ~@3 [a3,d4]@3 a2@2 ~ [d3,a3,d4]@2, ~@13 d2@5 ~@6", // C#5 D5
  K: "~@4 [g#3,c#4]@3 g#2@3 [c#3,g#3,c#4]@3 ~@3 [a3,d4]@3 a2@2 ~ [d3,a3,d4]@2, ~ c#3@5 ~@7 d2@5 ~@6", // C#5 D5
  L: "~ c#3@3 [g#3,c#4]@2 ~ g#2@3 [g#3,c#4]@2 ~@4 [g#3,c#4]@2 ~ g#2@3 [c#3,g#3,c#4]@2, ~@13 c#3@5 ~@6", // C#5
  M: "~@4 [f#3,a3]@3 c#3@3 [f#3,a3] ~@2 [f#3,a3]@3 ~@8, ~ f#2@5 ~@7 f#2@5 ~@6", // F#m
  N: "~ e3@3 [g#3,b3]@3 b2@3 [g#3,b3]@2 ~@4 [g#3,b3]@2 ~ e3@2 ~ [f#3,g#3,b3]@2, ~@13 e3@5 ~@6", // G#m G#m7
  O: "~ a3@3 [a3,c#4]@2 ~ e3@3 [a3,c#4]@2 ~@4 [a3,c#4]@2 ~ g#3@2 ~ [f#3,a3,c#4]@2, ~@13 a2@5 ~@6", // A F#m
  P: "~ e3@3 [g#3,b3]@2 ~ b2@3 [g#3,b3]@2 ~@4 [g#3,b3]@2 ~ e3@2 ~ [f#3,b3]@2, ~@13 e3@5 ~@6", // G#m B5
  Q: "~@4 c#4@2 ~ e3@3 [a3,c#4]@2 ~@4 [a3,c#4]@2 ~ e3@2 ~ [b2,a3,c#4]@2, ~ a3@5 ~@7 a2@5 ~@6", // A F#m
  R: "~ c#2@3 [f3,g#3]@3 g#1@3 [f3,g#3]@2 ~@4 [f3,g#3]@2 ~ g#1@3 [c#2,f3,g#3]@2, ~@13 c#2@5 ~@6", // Fm C#
  S: "~@4 [f#3,a3]@2 ~ a1@3 [f#3,a3]@2 ~ b1@3 [b2,d3]@2 ~@4 [b2,d3]@2, ~ d2@5 ~@13 f#1@5", // F#m Bm
  T: "~ f#1@3 [f#3,a3]@2 ~ c#2@2 ~ [g#1,f#3,a3]@2 ~@4 [f3,g#3]@2 ~ g#1@3 [f3,g#3]@2, ~@13 c#2@5 ~@6", // F#m D Fm
  U: "~@4 [f#3,a3]@2 ~ c#2@3 [f#3,a3]@2 ~ f#1@3 [f#3,a3]@2 ~@4 [f#3,a3]@2, ~ f#1@5 ~@13 c#2@5", // F#m
  V: "[~@4 [f#3,a3]@2 ~ c#2@3 [f#3,a3]@2 ~ [f#1,c#3,f#3,a3]@3 ~@3 [e2,e3]@6 a2@3 [a3,c#4]@2 ~ e2@3 [a3,c#4]@2 ~@4 [a3,c#4]@2 ~ g#2@2 ~ [f#2,a3,c#4]@2, ~ f#1@5 ~@31 a2@5 ~@6]/2", // F#m E A F#m
  W: "~@4 [g#3,b3]@2 ~ b1@3 [g#3,b3]@2 ~ e2@3 [g#3,b3]@2 ~ f#2@2 ~ f2@2, ~ e2@5 ~@18", // G#m
  X: "~ f#2@3 [a3,c#4]@2 ~ c#2@3 [a3,c#4]@2 ~@4 [a3,c#4]@3 c#2@2 ~ [f#2,a3,c#4]@2, ~@13 f#2@5 ~@6", // A F#m
  Y: "~@4 [f3,g#3,c#4]@2 ~ g#1@3 [f3,g#3,c#4]@2 ~ c#2@3 [f3,g#3,c#4]@2 ~ g#1@2 ~ [c#2,f3,g#3,c#4]@2, ~ c#2@5 ~@18", // C#
  Z: "~ a2@3 [a3,c#4]@2 ~ e2@3 [a3,c#4]@2 ~@4 [a3,c#4]@2 ~ g#2@2 ~ [f#2,a3,c#4]@2, ~@13 a2@5 ~@6", // A F#m
  AA: "~ f#2@3 [a3,c#4]@2 ~ c#2@3 [a3,c#4]@2 ~@4 [f#3,a3,d4]@2 ~ a1@3 [f#3,a3,d4]@2, ~@13 d2@5 ~@6", // A D
  AB: "~@4 [e3,g#3,b3]@3 b1@3 [e3,g#3,b3]@3 ~@3 [f3,g#3,c#4]@3 g#1@3 [f3,g#3,c#4]@2, ~ e2@5 ~@7 c#2@5 ~@6", // E C#
  AC: "~@4 [g#3,b3]@2 ~ b1@3 [g#3,b3]@2 ~@4 [g#3,b3]@2 ~ b2@2 ~ [c#2,g#3,b3]@2, ~ e2@5 ~@7 e2@5 ~@6", // G#m C#7
  AD: "~ c#2@3 [f3,g#3,c#4]@2 ~ g#1@3 [f3,g#3,c#4]@2 ~@4 [f3,g#3,c#4]@2 ~@4 [f3,g#3,c#4]@2, ~@13 c#2@5 ~ g#1@5", // C#
  AE: "~@4 [f#3,a3,c#4]@2 ~ c#2@3 [f#3,a3,c#4]@2 ~ [f#1,f#3,a3,c#4]@2 ~@9, ~ f#1@5 ~@18", // F#m
  AF: "~@4 [f#3,a3,c#4]@2 ~ c#2@3 [f#3,a3,c#4]@2 ~ [f#2,f#3,a3,c#4]@2 ~@9, ~ f#1@5 ~@18", // F#m
  AG: "[~ [a3,c4,d#4]@46 ~@25, ~ f#2@48 ~@23]/3", // Adim
})).s("gm_piano").gain(0.45).pan(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@75 A B C D E@2 F G H I H I J K L M@2 N O P@2 N O Q R N O P@2 N O S T ~@11
>`.pickRestart({
  A: "~ [f#2,c#4,f#4]@22 ~", B: "~ [f#2,c#4,f#4]@23", C: "~ f#4@6 a4@6 b4@10 ~, ~ f#2@13 ~@10", D: "~ c#3@23",
  E: "~ [c#2,c#4,f4]@12 [d4,f#4]@9 ~@2, ~@13 d2@11", F: "~ c#3@10 ~@13", G: "~ f#3@5 ~ c#3@5 ~ f#2@7 ~@4",
  H: "~ [e4,g#4]@23", I: "~@7 c#5@16 ~, ~ [e4,a4]@23", J: "~ [c#5,f5]@23", K: "~ [d5,f#5]@12 [d4,b4]@11",
  L: "~ c#5@12 g#4@11, ~ c#4@23, ~@13 c#5 ~@10", M: "[~ [c#5,f#5]@37 ~@5 [e4,g#4]@5]/2",
  N: "~ c#5@12 e5@6 a5@5, ~ a4@9 ~@14", O: "~ g#5@11 ~ e5@11",
  P: "[~ f#5@6 c#5@6 a4@6 ~@3 c#4@3 g#4@12 f4@10 ~, ~ f#3@12 ~@6 f#4@6 ~@23]/2", Q: "~ [a4,c#5]@11 ~ [a4,d5]@11",
  R: "~ [b4,e5]@12 ~@11", S: "~ [f4,g#4,f5]@23", T: "~ [f#4,a4,f#5]@12 ~@11",
})).s("gm_string_ensemble_2").gain(0.44)

// chords · tremolo strings
const tremolo_strings = note("<~@75 A@3 B C D E F ~ G ~ G ~@12 H ~@19>".pickRestart({
  A: "[~ f#4@48 f#4@10 e4@2 g#2@6 b2@5, ~@61 d#4@11]/3",
  B: "~ f4@6 [b3,d4,b4]@6 ~@6 f5@5, ~ g#4@22 ~, ~@13 [g#3,c#4,c#5]@11", C: "~ f5@6 [b3,g#5]@6 [a3,f#5]@11",
  D: "~ f5@6 [b3,g#5]@6 ~@6 a4@5, ~@13 [a3,f#5]@10 ~", E: "~@7 d5@6 [d3,c#5]@5 ~ [c#3,f5]@5, ~ [c#3,b4]@10 ~@13",
  F: "~ f#3@3 g#4 ~@2 [c#3,c#4]@3 a3@2 ~ f#5@6 ~@5, ~ f#5@5 ~ a4 ~@2 c#5 ~@2 f#3@4 ~@7", G: "~ a4@3 b4@3 ~@17",
  H: "~@13 g#5 ~@2 f#5 ~@2 f5@2 ~ c#5@2",
})).s("gm_tremolo_strings").gain(0.44)

// drums · kick
const kick = s("bd").struct(`<
  A@26 B A@3 B A@3 B A@7 C@2 A@12 B A@3 B A@3 B A@5 B A@4 D ~@7 A@10 B A@3 B A@3 B A@3 B A@10 D ~@2
>`.pickRestart({
  A: "~ x ~@11 x ~@10", B: "~ x ~@11 x ~@8 x ~", C: "~ x ~@8 x ~@2 x ~@10", D: "~ x ~@22",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct("<A@7 B A@16 B A@29 B A@19 B ~@8 A@8 B A@7 C A@15 B ~@3>".pickRestart({
  A: "~@7 x ~@11 x ~@4", B: "~@7 x ~@16", C: "~@7 x ~@8 x ~@2 x ~@4",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@3 C B@2 D A E@2 B E@3 D A E@3 A E@3 D C B@2 F C B@3 C B@2 D G A E@2 B E@3 D A E@3 A E@3 D C B@2 F C B@3 C B@2 D A
// … 44 more lines

More by Ruggeri