Strudelify

Sentimentale

Matia Bazar

KeyE majorTempo105 bpm
0:00/0:00
// Sentimentale — Matia Bazar
// 105 bpm, 4/4, key E 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.
setcpm(105/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 · fretless bass
const bass = note(`<
  A B@2 C@2 D@2 E F G H I J K L E F G H I J K M N J O P Q R S T U V W X Y Z AA AB AC AD AE AF AC AG AH Z AI AJ@2 AK@2
  AL@2 E F G H I J K M N J O P Q R AM AN AH AO W X Y Z AA AB AA AB AC AD AE AF AC AG AH Z AI AJ@2 AK@2 AP AI AJ@2 AK@2
  AP AI AJ@2 AK@2 AP AI AJ@2 AK@2 AQ@4
>`.pickRestart({
  A: "a#1", B: "[a1@7 g#1@9]/2", C: "[c#2@7 ~ c#2@2 b1@2 c#2@2 f#1@9 ~ g#1@8]/2", D: "[d2@7 c#2@9]/2", E: "e2",
  F: "d#2", G: "d2", H: "c#2@3 g#2@3 g#1@2", I: "f#1@2 c#2 f#2@5", J: "a1@3 a2@5", K: "e1 g#1", L: "f#2 f2", M: "a1 b1",
  N: "f#1@3 f#2@5", O: "e1@3 e2", P: "d#2@3 b1@5", Q: "f#1@11 ~ f#1@2 g#1@2", R: "a1@3 a2@2 b2 c3@2", S: "e1@2 ~ e1@5",
  T: "c#2@2 ~ c#1@5", U: "a1@5 ~ a1@10", V: "b1@5 ~ b1@10", W: "e1@4 ~@2 e1 ~ e1@7 ~", X: "c#1@4 ~@2 c#1 ~ c#1@8",
  Y: "a1@4 ~@2 a1 ~ a1@7 ~", Z: "b1@4 ~@2 b1 ~ b1@8", AA: "f#1@4 ~@2 f#1 ~ f#1@8", AB: "g#1@5 ~ g#1 ~ g#1@7 ~",
  AC: "e1@4 ~@2 e1 ~ e1@8", AD: "c#2@5 ~ c#2 ~ c#1@8", AE: "c2@4 ~@2 c2 ~ c2@8", AF: "b1@5 ~ b1 ~ b1 ~ b1@6",
  AG: "c#1@5 ~ c#2 ~ c#2@7 ~", AH: "a1@4 ~@2 a1 ~ a1@8", AI: "a#1@4 ~@2 a#1 ~ a#1@7 ~",
  AJ: "[a1@4 ~@2 a1 ~ a1@5 ~ g#1@6 ~@2 g#1 ~ g#1@8]/2", AK: "[c#1@4 c#2 ~ c#2 ~ c#1@4 c#2 ~ f#1@6 ~@2 f#1 ~ g#1@7 ~]/2",
  AL: "[d1@5 ~ d2 ~ d1@4 d2 ~ c#2@8 c#3@8 ~@2]/2", AM: "e1@2 ~ e2 e1@4", AN: "c#1@5 ~ c#2@2 c#1@8",
  AO: "b1@5 ~ b1 ~ b1@8", AP: "d1@4 a1@2 f#2@2 ~@2 e2@5 ~", AQ: "[d1@4 a1@2 f#2@2 ~@2 e2@2 b1@2 e1@39 ~@11]/4",
})).s("gm_fretless_bass").gain(0.56)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@7 ~@12 B@2 C D E@2 F G H@6 I@3 J K L@5 M@3 J N@7 ~@4 B@2 C D E@2 F G H@6 I@3 J K O K P@8 J Q@6 R@6 Q@6 S@6 T@3
>`.pickRestart({
  A: "[c#4@30 ~@18 [d#4,f#4]@4 [c#4,g#4]@6 [b3,d#4,f#4]@4 [a3,c#4,e4]@10 [b3,d#4,f#4]@7 [f#3,a3,c4]@14 [b3,f#4]@19, [g#3,e4]@3 ~@4, ~@30 b3@22 e4@5 ~@22 e4@33]/7", // D#m C#5 B A B F#dim B5 C#m
  B: "[f#4@15 c5@16 ~, a4]/2", C: "e4 d#4, b3", D: "[c#4,e4] [b3,d#4]", E: "[c#4 c4, a4]/2", F: "[e4,g#4]",
  G: "[d#4,b4]", H: "[f#4 ~ b3 ~@2 [d#4,f#4], a4 g#3 a3, ~ e4@4 ~, ~@3 c#4@2 ~]/6", I: "[[b3,e4] [e3,c#4]@2, g#3]/3",
  J: "[f#3,b3,d#4]", K: "[a3,c#4,f#4]", L: "[d#4 e3 c#4 g3 [f#3,d#4], g#3@3 b3@2, b3@2 e4@2 ~]/5",
  M: "[e3 ~ e3, [g#3,e4], ~ c#4@2]/3", // C#m
  N: "[a#2@16 a2@14 g#2@18 [d#4,f#4]@4 [c#4,e4,g#4]@6 [b3,d#4,f#4]@4 [f#2,a3,c#4]@10 [g#2,g#3,b3,d#4]@8 c4@13 [g#3,b3]@18 ~, [g#3,e4]@48 c#3@10 ~@4 f#3@31 ~@19, c#4@15 b3@11 ~@5 e4@25]/7", // D#m C#m B F#m G#m C#m
  O: "[g#3,b3,d#4]", P: "[d#4 e3 c#4 g3 [f#3,d#4] e3 ~ e3, g#3@3 b3@3 c#4@2, b3@2 e4@2 ~ [g#3,e4]@3]/8",
  Q: "[a#2@8 a2@7 g#2@9 [d#4,f#4]@2 [c#4,e4,g#4]@3 [b3,d#4,f#4]@2 [f#2,a3,c#4]@5 [g#2,g#3,b3,d#4]@4 c4@8, [g#3,e4]@24 c#3@5 ~@2 [f#3,e4]@17, c#4@15 b3@11 ~@22]/6", // D#m C#m B F#m G#m C#m F#7
  R: "[a#2@8 a2@7 g#2@9 [d#4,f#4]@2 [c#4,e4,g#4]@3 [b3,d#4,f#4]@2 [f#2,a3,c#4]@5 [g#2,g#3,b3,d#4]@4 c4@8, [g#3,e4]@48 c#3@10 ~@4 [f#3,e4]@33 ~, c#4@15 b3@11 ~@22]/6", // D#m C#m B F#m G#m C#m F#7
  S: "[a#2@16 a2@14 g#2@18 [d#4,f#4]@4 [c#4,e4,g#4]@6 [b3,d#4,f#4]@4 [f#2,a3,c#4,e4]@10 [g#2,g#3,b3,d#4]@8 [c4,e4]@15 ~, [g#3,e4]@48 c#3@10 ~@4 f#3@33 ~, c#4@15 b3@11 ~@22]/6", // D#m C#m B F#m7 G#m C C#m
  T: "[[e3,g#3,b3]@37 ~@11]/3", // E
})).s("gm_synth_strings_1").gain(0.25).pan(0.6)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@15 A B C D E F G H I J K I J L M N O M P Q R P S T U@3 V@2 W@2 X Y@5 Z@2 G AA AB@3 F G H I J AC AD J AE M N O M P Q
  R P S T S T U@3 V@2 W@2 X AF@5 N AG@3 AH@2 AI Y@5 N AJ AK@4 AL@4
>`.pickRestart({
  A: "g#3", B: "g3", C: "f#3", D: "f3", E: "a3", F: "c4", G: "b3", H: "c#4 d#4", I: "f#4", J: "a4", K: "g#4", L: "c5",
  M: "b4", N: "e5", O: "c#5", P: "b5", Q: "e6", R: "c#6", S: "c#6 f#6", T: "d#6 g#6", U: "[e6@9 d6 c6@2]/3", V: "b5/2",
  W: "[e5,e6]/2", X: "[b4,b5] [g#4,g#5]@2 [b4,b5] [g#4,g#5]@2 [f#4,f#5]@2",
  Y: "[e5@24 f#5@6 ~@18 f#5@4 g#5@6 f#5@3 e5@10 ~ d#5@8, ~@15 b4@17 ~@8]/5", Z: "e5/2", AA: "a#3", AB: "[b3@2 c#4]/3",
  AC: "g#4 e4", AD: "f#4@3 g#4", AE: "c5@3 ~", AF: "[e5@12 f#5@3 ~@9 f#5@2 g#5@3 f#5@2 e5@5 d#5@4, ~@15 b4@17 ~@8]/5",
  AG: "[e6@4 f#6 b5@3]/3", AH: "[c#6@3 e6@4 c#6@5 d#6@4]/2", AI: "e6@15 ~", AJ: "e5 ~@15",
  AK: "[~@8 f#5@6 ~@18 f#5@4 g#5@6 f#5@3 e5@10 ~ d#5@8, ~@7 b4@17 ~@8]/4", AL: "[e5@53 ~@11]/4",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.7)

// chords · epiano2
const epiano2 = note("<~@23 A B ~@2 C D ~@33 A B ~@2 C D ~@47>".pickRestart({
  A: "~ [a3,f#4] [b3,g#4] [c#4,a4]@5", B: "~ [c4,a4] [d4,b4] [e4,c5]@5", C: "~ [a3,f#4] b3 [c#4,a4]@5, ~@4 g#4 ~@11",
  D: "[c4,a4] [d4,b4] [e4,c5]@6", // F G C
})).s("gm_epiano2").gain(0.51).pan(0.7)

// other · lead 1 square
const lead_1_square = note(`<
  A B C D E F@2 ~@20 G H ~@18 A B C D E F@2 ~@12 G H ~@20 A B C D E I@2 B C D E I@2 B C D E I@2 B C D E F@2 ~@2
>`.pickRestart({
  A: "~ e4 g#4 c#5 d#5 c#5 g#4 e4", B: "d#5!2 c#5@4 ~@2", C: "~ b4 e5 g#5 f#5 e5 b4 g#4", D: "f#5 ~ f#5@2 e5@6 ~@6",
  E: "~ e5 d#5 e5 d#5@2 b4 g#4", F: "[f#4@2 g#4@2 e4@27 ~]/2", G: "~@2 c#4@2 d#4@2 e4@9 ~", H: "e4@2 f#4@2 g4@11 ~",
  I: "[f#4@2 g#4@2 e4@14 e4@2 g#4@2 c#5@2 d#5@2 c#5@2 g#4@2 e4 ~]/2",
})).s("gm_lead_1_square").gain(0.44)

// chords · piano
const piano = note(`<
  ~@5 A@2 B C D E F@2 G H I J K L M N O P Q R S T ~@2 U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN@2 AO@2 AP AQ
  I J K L M N O P Q R S T ~@2 U V W X Y Z AA AB AC AD AC AD AE AF AG AH AI AJ AK AL AR AN@2 AS@2 AT AM AN@2 AO@2 AT AM
  AN@2 AO@2 AT AM AN@2 AO@2 AU@2 ~@2
>`.pickRestart({
  A: "[~@4 f#4@2 g#4@4 a4@4 [e4,b4]@4 a4@3 ~ [e4,g#4]@3 ~ [e4,a4]@5 ~, ~@18 e4 ~@13]/2", B: "~ g#3@3, e2, ~ b2@7",
  C: "~@3 d#3@5, d#2, ~ a#2@7, ~ c#3 ~@2", D: "~ d3, d2, ~ d3@3 ~@4, ~ f#3@3, ~@3 b3@5",
  E: "~@3 c#3, c#2, ~@2 c#3@9 ~@5, ~ f3@3, ~@3 b3@5",
  F: "[~@4 c#3@2 f#3@2 f#3@7 ~ e4@4 ~@4 a4@8, f#2@15 ~ a2@16, a4@9 ~@7 a4@7 ~@9, ~@4 c#4@11 c4@3 ~@2 c4@12, ~@6 c#3@9 ~@7 e4@10]/2",
  G: "[b3,e4,g#4]@7 ~ [d#4,g#4,b4]@8", H: "[f#3,a3,c#4]@7 ~ [f3,a3,c4]@8", I: "~@3 [g#3,c#4]@5, e2, ~ b2@7, ~ e3@3",
  J: "~@6 [g3,a#3,d#4]@9 ~, d#2@15 ~, ~ a#2@5 ~@2, ~@4 c#3@11 ~", // D#
  K: "~@3 [f#3,b3] ~ f#3 ~ f#3, d2, ~ a2@7, ~@2 d3@3 ~ d3@2, ~ a3", L: "~@2 g#2@2 ~@2 b3@6 c#3@3 ~, c#2@3 f3@5, ~ b2@3",
  M: "a4@5 ~ [f#3,a3]@6 [a3,c#4]@4, f#4, c#4@3 ~", N: "a4@3 a3@3 [c4,e4]@2, [c4,e4]@11 ~@5",
  O: "[e3,b3,e4,g#4] [b3,d#4,g#4,b4]", P: "[c#4,e4,a4]@7 ~ [f#3,b3,d#4]@8", Q: "~@3 [a3,c#4]@5, ~ f#2@7, ~ f#3@3",
  R: "~@3 [e4,c5]@5, [a2,e3]@15 ~, ~@4 a3@11 ~", S: "[e3,b3,g#4]@15 ~", T: "~@8 a4@3 ~ g#4@3 ~",
  U: "[e3,g#3]@5 ~ [e3,g#3,b3]@9 ~", V: "[c#3,g#3]@4 e3 ~ [e3,g#3,c#4]@4 c#3@2 [e3,g#3]@3 ~, e3@3 ~@13",
  W: "[e3,g#3,c#4]@2 ~ [e3,g#3,c#4]@2 ~ [e3,g#3,c#4]@2, ~@4 a2@5 ~ a2@6", // C#m
  X: "[b2,b3,d#4]@6 [d#4,f#4]@2 [b3,d#4,f#4]@7 ~, f#3@4 ~@2 b3 ~@9", // B D#m B
  Y: "[g#3,b3]@4 e3 ~ [g#3,b3,e4]@4 ~@2 [g#3,b3,e4]@4, e2@8 ~@2 e2@5 ~, e3@3 ~@13", // G#m E
  Z: "[e3,g#3,c#4]@2 ~ [g#3,c#4,e4]@2 c#3 [e3,g#3,c#4]@2, ~@4 c#3@5 ~@7", // C#m
  AA: "[e3,g#3]@2 a2 [g#3,c#4,e4]@2 a2 [e3,g#3,c#4]@2, c#4 ~@15", // E C#m
  AB: "[b2,b3,d#4,g#4]@5 ~ [b3,d#4,f#4,b4] ~ b3@3 ~ b3@3 ~, ~@8 [d#4,f#4,b4]@7 ~", // G#m B
  AC: "[a3,c#4,f#4]@2 ~ [a3,c#4,f#4]@2 ~ [a3,c#4,f#4]@2, ~@4 f#3@5 ~ f#3@5 ~", // F#m
  AD: "[g#3,d#4,g#4]@4 b3 ~ b3@4 g#3@2 [b3,b4]@4, b3@2 ~@3 g#3@2 ~@9, ~@6 [d#4,g#4]@9 ~", // G#5 B G#5
  AE: "[b3,e4,g#4]@2 ~ b3@2 ~ b3@2, ~@4 e3@5 ~ e3@6, ~@3 [e4,g#4]@5", // E
  AF: "[g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@2 c#3 [g#3,c#4,e4]@2, ~ c#3 ~@2", // C#m
  AG: "g3@2 ~ [g3,g4]@2 ~ [g3,b3,e4]@2, [b3,e4]@11 ~@5, ~@2 c3@2 ~ c3@3", // G Em E5
  AH: "~ [b3,d#4,g#4]@2 ~ [b3,g#4]@2 [b3,f#4]@2, b2@2 ~ b2@2 ~@3, ~ d#4", // G#m E B5
  AI: "e2@4 ~@2 e2 ~@3 [g#3,b3,e4]@6, ~ [g#3,b3,e4] e2 ~", AJ: "c#3@2 [g#3,c#4,e4]@2 ~ [e4,g#4,c#5]@3, ~@8 c#3@7 ~",
  AK: "[c#4,e4]@4 g#3 ~ [g#3,e4]@4 ~@2 [g#3,e4]@4, a2@4 ~ a2@3, g#3@3 ~@3 c#4@10", // C#m
  AL: "[b3,d#4,g#4]@5 ~ [b3,d#4,g#4]@4 ~@2 [b3,d#4,f#4]@3 ~, b2@9 ~ b2@5 ~", // G#m B
  AM: "~@2 a#2 [a#3,c#4,e4], a#2@7 ~@9, ~@4 [a#3,c#4,e4]@7 ~@5", // A#dim
  AN: "[a2@4 [g#3,c#4,e4]@7 ~ [g#3,c#4,e4] ~ [e3,g#3,b3]@5 ~ [e3,g#3,b3]@7 ~ [e3,g#3,b3]@4]/2", // C#m E
  AO: "[[b3,d#4,f#4]@4 [c#4,e4,g#4]@4 ~@2 [b3,d#4,f#4]@3 ~ [f#3,a3,e4]@10 [g#3,b3,f#4]@7 ~, ~@4 c#3@3 ~ c#3@4 ~@20]/2", // B C#m B F#m7 G#m7
  AP: "[c4,e4,f#4,a4]@5 ~ [c4,e4,g#4]@3 ~ [c4,e4,a4]@3 ~ [b3,e4,f#4,b4]@2", // F#m7b5 Caug Am Bsus4
  AQ: "~@2 [b3,e4,f#4,a4]@3 ~ [b3,e4,g#4]@3 ~ [e4,a4]@4 ~@2, ~@5 b3 ~@2", AR: "a#2 [a#3,c#4,e4] a#2 [a#3,c#4,e4]",
  AS: "[[b3,d#4,f#4]@4 [c#4,e4,g#4]@4 ~@2 [b3,d#4,f#4]@3 ~ [f#3,a3,e4]@10 [g#3,b3,f#4]@7 ~, ~@2 c#3 ~@5]/2", // B C#m B F#m7 G#m7
  AT: "[c4,e4,f#4,a4]@5 ~ [c4,e4,g#4]@3 ~ [c4,e4,a4]@5 ~", // F#m7b5 Caug Am
  AU: "[[c4,e4,f#4,a4]@5 ~ [c4,e4,g#4]@3 ~ [c4,e4,a4]@4 [b3,b4]@18, ~@14 e4 ~@17]/2", // F#m7b5 Caug Am B
})).s("gm_piano").gain(0.47).pan(0.7)

// chords · pan flute
const pan_flute = note(`<
  ~@7 A ~ B C D E ~ F A G B C D E ~ F ~@6 H@3 I ~@21 A G B C D E ~ F ~@6 H@3 I ~@43
>`.pickRestart({
  A: "[e5,b5] ~ [e5,b5] ~@13", B: "[f#5,b5] ~ [f#5,b5] ~ [d5,f#5] ~@11",
  C: "[f5,b5] ~ [f5,b5] ~ [b4,c#5] ~ [b4,c#5] ~ [f5,b5] ~ [f5,b5] ~ [b4,c#5] ~ [a4,c#5] ~", // Fdim Bsus2 Fdim Bsus2 A
  D: "[f#5,a5] ~ [f#5,a5] ~ c#5 ~@11", E: "~@8 [e5,a5] ~ [e5,a5] ~ c5 ~ c5 ~",
  F: "~@2 c#5 ~ [e5,a5] ~ [e5,a5] ~ [c5,a5] ~ [c5,a5] ~ [c5,a5] ~ [c5,a5] ~", // A5 F
  G: "[d#5,a#5] ~ [d#5,a#5] ~ [c#5,d#5] ~ [c#5,d#5] ~@9", H: "~@2 [e5,b5] ~ [e5,b5] ~ [e5,b5] ~@9",
  I: "~@2 [d#5,b5] ~ [d#5,b5] ~ [d#5,b5] ~@9", // G#m
})).s("gm_pan_flute").gain(0.2).pan(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@29 A B C@2 D@2 E F E G H@2 I J D K L M N O@2 P@3 ~@15 A B C@2 D@2 E F E G E G H@2 I J D K L M N Q@2 P@3 R Q@2 P@3 R
  S@2 P@3 R T@2 U@4 ~@2
>`.pickRestart({
  A: "[e3,g#3,b3,e4]@11 ~@5", B: "[c#3,g#3,b3,e4]@13 ~@3",
  C: "[[a3,c#4,e4]@14 ~@2 [f#3,b3,d#4]@11 ~@5, ~@15 d#3@12 ~@5]/2", D: "[b3,e4]@3 ~ [b3,e4] ~ [b3,e4]@3 ~ [b3,e4]@5 ~",
  E: "[a3,c#4]@3 ~ [a3,c#4] ~ [a3,c#4]@2 ~@2 [a3,c#4]@5 ~", F: "[b3,d#4]@3 ~ [b3,d#4] ~ [b3,d#4]@2 ~@2 [b3,d#4]@4 ~@2",
  G: "[b3,d#4]@3 ~ [b3,d#4] ~ [b3,d#4]@3 ~ [b3,d#4]@5 ~", // B
  H: "[[b3,e4]@3 ~ [b3,e4] ~ [b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@5 ~ [b3,e4] ~ [b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4] ~]/2", // E5
  I: "[c4,e4]@3 ~ [c4,e4] ~ [c4,e4]@3 ~ [c4,e4]@5 ~", J: "[b3,d#4]@3 ~ [b3,d#4] ~ [b3,d#4]@5 ~ [b3,d#4]@4",
  K: "[b3,e4]@3 ~ [b3,e4] ~ [b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@2", // E5
  L: "[a3,c#4]@3 ~ [a3,c#4] ~ [a3,c#4]@3 ~ [a3,c#4]@3 ~ [a3,c#4]@2", // A
  M: "[b3,d#4]@3 ~ [b3,d#4] ~ [b3,d#4]@3 ~ [b3,d#4]@3 ~ [b3,d#4] ~", N: "[a#3,c#4,e4]@15 ~",
  O: "[[c#4,e4,g#4]@4 ~@6 c#4@3 ~ [e3,g#3,b3]@8 ~@6 b3@3 ~, ~@6 g#4@7 ~@11 e3@7 ~, ~@26 g#3@5 ~]/2", // C#m E
  P: "[[d#4,f#4]@4 [e4,g#4]@6 [d#4,f#4]@4 [c#4,e4]@9 ~ [b3,d#4]@7 ~ f#4@5 ~ [a3,c4,f#4]@8 ~@2, ~@31 [a3,c4]@6 ~@11]/3", // D#m E D#m C#m B F#dim Am
  Q: "[[c#4,e4,g#4]@4 ~@6 c#4@4 [e3,g#3,b3]@9 ~@5 b3@3 ~, ~@6 g#4@8 ~@10 e3@7 ~, ~@26 g#3@5 ~]/2", R: "e4@15 ~",
  S: "[[c#4,e4,g#4]@4 ~@11 b3@8 ~@5 b3@3 ~, ~@3 g#4@5 ~@8, ~@10 c#4@6 ~@10 g#3@5 ~, ~@14 [e3,g#3]@9 ~ e3@7 ~]/2", // C#m E
  T: "[[c#4,e4,g#4]@4 ~@6 c#4@4 ~ b3@8 ~@5 b3@3 ~, ~@6 g#4@7 ~ [e3,g#3]@9 ~ e3@7 ~, ~@26 g#3@5 ~]/2", // C#m E
  U: "[[d#4,f#4]@4 [e4,g#4]@6 [d#4,f#4]@4 [c#4,e4]@9 ~ [b3,d#4]@7 ~ f#4@5 ~ [a3,c4,f#4]@8 ~@2 [b3,e4]@16, ~@31 [a3,c4]@6 ~@10 e3@17, ~@47 g#3@15 ~@2]/4", // D#m E D#m C#m B F#dim E5 Am
})).s("gm_acoustic_guitar_steel").gain(0.21).pan(0.3)

// other · pizzicato strings
const pizzicato_strings = note("<~@37 A B ~@37 A B A B ~@35>".pickRestart({
  A: "f#4 ~ c#5 ~ f#5 ~ a5 ~ f#5 ~@7", B: "g#4 ~ d#5 ~ g#5 ~ b5 ~@9",
})).s("gm_pizzicato_strings").gain(0.32).pan(0.8)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@28 A@8 B@2 C@3 D@6 E@7 ~@13 F@8 B@2 G H@4 I@5 J@4 K@12 L@6 M@6>".pickRestart({
  A: "[~@15 b4@16 ~ c#4@31 ~ d#4@16 ~@16 c#4@32, ~@15 g#4@64 ~ [e4,g#4]@48, ~@15 e4@48 b3@33 ~@32]/8", // E
  B: "[[b3,d#4]@15 a4@9 c#4@8, ~@15 f#4@17]/2", C: "[[d#4,b4]@15 b3@16 b4@16 g4, g#4@47 ~, ~@5 e4@11]/3",
  D: "[~@15 [d#4,f#4,b4]@16 ~@16 b4@16 [a4,c#5]@16 [d#4,f#4,b4]@17, ~@31 e4@48 ~@17, ~@31 g#4@32 ~@33]/6", // B A B
  E: "[c#4@16 ~@31 [d#4,f#4]@4 [c#4,e4,g#4]@6 [b3,d#4,f#4]@4 [c#4,a4]@10 [b3,g#4]@8 [f#3,a3]@14 [g#4,b4]@19, [e4,g#4]@47 ~@14 e4@18 e4@33, ~@16 b3@35 ~@61]/7", // D#m C#m B F#m E F#m G#m E
  F: "[~@15 b4@17 c#4@31 ~ d#4@16 ~@16 c#4@32, ~@15 g#4@64 ~ [e4,g#4]@48, ~@15 e4@48 b3@33 ~@32]/8", // E
  G: "[d#4,g#4,b4]@15 [f#4,a4]", H: "[~@8 c#4@7 [d#4,b4]@15 b3@16 b4@16 g4@2, ~@15 g#4@47 ~@2, ~@15 e4@17]/4",
  I: "[~@15 [d#4,f#4,b4]@16 ~@16 b4@16 [a4,c#5]@16 [d#4,f#4,b4], ~@31 e4@48 ~, ~@31 g#4@32 ~@17]/5", // B A B
  J: "[~@15 c#4@30 b3@18 [d#4,f#4], ~@15 [e4,g#4]@48 ~]/4", // D#m E
  K: "[~@3 [c#4,e4,g#4]@6 [b3,d#4,f#4]@4 [c#4,a4]@10 [b3,g#4]@8 [f#3,a3]@16 c#4@15 ~@2 b3@31 [d#4,f#4], ~@13 e4@82 ~, ~@47 g#4@48 ~]/6", // C#m B F#m E F#m D#m
  L: "[~@3 [c#4,e4,g#4]@6 [b3,d#4,f#4]@4 [c#4,a4]@10 [b3,g#4]@8 [f#3,a3]@16 c#4@17 b3@31 [d#4,f#4], ~@13 e4@82 ~, ~@47 g#4@48 ~]/6", // C#m B F#m E F#m D#m
  M: "[~@3 [c#4,e4,g#4]@6 [b3,d#4,f#4]@4 [c#4,a4]@10 [b3,g#4]@8 [f#3,a3]@16 [e3,b3,e5,b5]@38 ~@11, ~@13 e4@34 ~@49]/6", // C#m B F#m E F#m E5
})).s("gm_string_ensemble_2").gain(0.18).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@7 A@21 B C@4 D@9 E D@11 A@13 B D@15 E D@13 F D@14 G ~@2>".pickRestart({
  A: "~@3 x ~@3 x", B: "~@3 x ~ x ~@2", C: "x ~@2 x ~@4", D: "x ~@2 x!2 ~@3", E: "x ~@2 x!3 ~@2", F: "x ~@2 x!3 ~ x",
  G: "x",
})).gain(0.44)

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

// drums · low tom
const low_tom = s("lt").struct("<~@46 A ~@6 B ~@33 A ~@5 C ~@17 D ~@3>".pickRestart({
  A: "~@5 x!3", B: "~@4 x!2 ~@2", C: "~@5 x ~ x", D: "~@15 x",
})).gain(0.36)

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

// … 45 more lines

More by Matia Bazar