Strudelify

Ave Maria

Zero

KeyF♯ majorTempo106 bpm
0:00/0:00
// Ave Maria — Zero
// 106 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 172 bars on a 16-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@2 B@4 C D E@2 B@4 C F G H E@2 I@2 J@3 ~@62 K@2 L@4 M F G H E@2 I@2 N@2 ~@69>".pickRestart({
  A: "[b3@3 ~@3 b3@4 f#3@2 ~ b3@3 b3@3 ~@3 b3@4 f#3@2 ~ b3@3, b1@15 ~ b1@14 ~@2, ~@3 f#3@2 b2@13 ~ f#3@2 b2@11, ~@4 f#2@7 ~ f#2@7 ~ f#2@7 ~ f#2@4]/2",
  B: "[b3@3 ~@3 b3@4 f#3@2 ~ b3@3 b3@3 ~@3 b3@4 f#3@2 ~ b3@3 b3@3 ~@3 b3@4 f#3@2 ~ b3@3 b3@3 ~@3 b3@4 f#3@2 ~ b3@3, e1@15 ~ e1@15 ~@5 f#2@7 ~ f#2@7 ~ f#2@7 ~ f#2@4, ~@3 f#3@2 b2@15 e2@7 ~ e2@4 b1@15 ~ b1@14 ~@2, ~@4 e2@7 ~ e2@7 f#3@2 b2@13 ~ f#3@2 b2@13 ~ f#3@2 b2@11]/4",
  C: "b3@3 ~ e2 ~ b3@4 f#3@2 ~ b3@3, e1@15 ~, ~@3 f#3@2 e2@6 ~ e2@4",
  D: "b3@3 ~ e2 ~ b3@4 f#3@2 ~ b3@3, e1, ~@3 f#3@2 e2@6 ~ e2@2 ~@2",
  E: "[b3@3 ~@3 b3@4 f#3@2 ~ b3@3 b3@3 ~@2 b2 b3@4 f#3@2 ~ b3@3, b1@15 ~ b1@15 ~, ~@3 f#3@2 b2@15 f#2@7 ~ f#2@4, ~@4 f#2@8 f#2@7 f#3@3 b2@6 ~@4]/2",
  F: "b3@3 ~ e2 ~ b3@4 g#3@2 ~ b3@3, e1, ~@3 g#3@2 e2@6 ~ e2@2 ~@2",
  G: "c#4@3 ~ f#2 ~ c#4@4 a#3@2 ~ c#4@2 ~, f#1, ~@3 a#3@2 f#2@6 ~ f#2@2 ~@2",
  H: "c#4@3 ~ f#2 ~ c#4@4 a#3@2 ~ c#4@3, f#1, ~@3 a#3@2 f#2@6 ~ f#2@2 ~@2",
  I: "[c#4@3 ~@3 c#4@4 g#3@2 ~ c#4@3 c#4@3 ~@2 c#3 c#4@4 b2@2 ~ c#4@3, c#2@15 ~ c#2@15 ~, ~@3 g#3@2 c#3@15 g#2@7 ~ g#2@4, ~@4 g#2@8 g#2@7 b2@3 c#3@6 ~@4]/2",
  J: "[f#4@3 ~@3 f#4@4 f#3@2 ~ f#4@3 f#3@3 ~@3 b3@4 f#3@2 ~ c#4@3 ~@16, f#1@15 ~ f#1@15 ~@17, ~@3 f#3@2 c#3@15 f#2@7 ~ f#2@4 ~@16, ~@4 f#2@7 ~ f#2@7 f#4@2 c#3@13 ~@14]/3",
  K: "[b4@3 ~@3 b4@4 f#4@2 ~ b4@3 b4@3 ~@2 b3 b4@4 f#4@2 ~ b4@3, b2@15 ~ b2@15 ~, ~@3 f#4@2 b3@15 f#3@7 ~ f#3@4, ~@4 f#3@8 f#3@7 f#4@3 b3@6 ~@4]/2",
  L: "[b4@3 ~@3 b4@4 f#4@2 ~ b4@3 b4@3 ~@3 b4@4 f#4@2 ~ b4@3 b4@3 ~@3 b4@4 f#4@2 ~ b4@3 b4@3 ~@3 b4@4 f#4@2 ~ b4@3, e2@15 ~ e2@15 ~@5 f#3@7 ~ f#3@7 ~ f#3@7 ~ f#3@4, ~@3 f#4@2 b3@15 e3@7 ~ e3@4 b2@15 ~ b2@14 ~@2, ~@4 e3@7 ~ e3@7 f#4@2 b3@13 ~ f#4@2 b3@13 ~ f#4@2 b3@11]/4",
  M: "b4@3 ~ e3 ~ b4@4 f#4@2 ~ b4@3, e2@15 ~, ~@3 f#4@2 e3@6 ~ e3@4",
  N: "[f#4@3 ~@3 f#4@4 f#3@2 ~ f#4@3 ~@16, f#1@15 ~@17, ~@3 f#3@2 c#3@15 ~@12, ~@4 f#2@7 ~ f#2@7 ~@13]/2",
})).s("gm_piano").gain(0.56)

// bass · fretless bass
const bass = note(`<
  A@2 B C D E C F G@2 H@2 A@2 C@2 I J E@2 K L M N A@2 B O E P C O A@2 B O E P Q@2 R M C S@2 C T U B@2 V B@2 W X Y J Z
  AA@2 AB AC AD AE AF AG AH AI AJ AK AL@2 AM AN AO AP AQ AR AS A@2 B O E P C O A@2 B O E P C@2 I J E@2 K L M AT AU@2 M
  AV L AW AX@2 AY AZ J BA@2 J BB BC M@2 BD M@2 BE BF BG BH BI BJ BK AR BL BM BN BO BP BQ BR BS BT@2 BU BV BW BX BY@2 BZ
  CA CB CC CD CE CF CG BZ CA CB CC CD CE CH@6 ~@4
>`.pickRestart({
  A: "b1/2", B: "e1@15 ~", C: "e1", D: "b1@15 ~", E: "b1", F: "e1@13 ~ f#1 g#1", G: "[b1@31 ~]/2", H: "e1/2",
  I: "f#1@13 ~ f#1@2", J: "f#1", K: "c#2@12 c#2@3 ~", L: "c#2", M: "f#1@15 ~", N: "f#1@13 ~ f#1 g#1",
  O: "e1@14 f#1 g#1", P: "b1@15 b1", Q: "[e1@25 ~ e1 ~ f#1@4]/2", R: "g#1",
  S: "[e1@13 b0 e1 ~ f#1@4 ~@2 f#1@10, ~@15 b0@2 ~@15]/2", T: "d#1@14 f#1 d#1", U: "g#1@6 g#0 g#1 f#1@6 g#1 f#1",
  V: "d#1@15 ~", W: "d#1", X: "c#1@7 ~", Y: "f#1@15 f#1", Z: "f#1@6 f#1@8 f#1!2",
  AA: "[f#1 f#1@3 f#1@2 f#1 f#1@2 ~ f#1!2 ~@2 f#1 ~ g#1@5 ~ g#1@7 ~ g#1 g1, ~@15 f#1@2 ~@15]/2",
  AB: "f#1@5 ~ f#1@5 ~ f#1@4", AC: "e1@5 ~ e1@9 e1", AD: "e1@3 e1@4 ~", AE: "d#1@6 d#1@9 ~",
  AF: "d#1@5 ~ d#1@8 f#1 d#1", AG: "g#1@4 ~@2 g#1@7 d#1 f#1 d#1", AH: "g#1@5 ~ g#1@2 d#1@5 ~ d#1@2",
  AI: "c#1@5 ~ c#1@8 ~ g#1", AJ: "c#1@5 ~ c#1@6 ~ c#1 e1 c#1", AK: "f#1@5 ~ f#1@8 ~ f#1",
  AL: "[b0@5 ~ b0@9 ~ e1@14 ~@2, ~@15 b0@9 ~@8]/2", AM: "e1@5 ~ e1@10", AN: "a1@5 ~ a1@8 e1 f#1", AO: "a1@5 ~ a1@9 ~",
  AP: "g#1@5 ~ g#1@7 ~ g#1 d#1", AQ: "g1@5 ~ g1@10", AR: "f#1@5 ~ f#1@9 f#1", AS: "f#1@3 f#1 f#1@4", AT: "f#1@3 g#1@5",
  AU: "c#2/2", AV: "f#1@14 g#1 a#1", AW: "c#2@15 c#2", AX: "[f#1@25 ~ f#1 ~ g#1@4]/2", AY: "a#1", AZ: "g#1@15 ~",
  BA: "[f#1@13 c#1 f#1 ~ g#1@4 ~@2 g#1@10, ~@15 c#1@2 ~@15]/2", BB: "f1@14 a2 f1", BC: "a#1@6 a#0 a#1 g#1@6 a#1 g#1",
  BD: "f1@15 ~", BE: "f1", BF: "d#1@7 ~", BG: "g#1@4 ~@2 g#1@4 d#1!2 g#1@4", BH: "c#1@15 ~", BI: "c#1 c1",
  BJ: "a#1@5 ~ a#1@7 ~ a#1 a1", BK: "g#1@5 ~ g#1@5 ~ g#1@4", BL: "f#1@3 f#1@4 ~", BM: "f1@6 f1@9 ~",
  BN: "f1@5 ~ f1@8 g#1 f1", BO: "a#1@4 ~@2 a#1@7 f1 g#1 f1", BP: "a#1@5 ~ a#1@2 f1@5 ~ f1@2", BQ: "d#1@5 ~ d#1@8 ~ a#1",
  BR: "d#1@5 ~ d#1@6 ~ d#1 f#1 d#1", BS: "g#1@5 ~ g#1@8 ~ g#1", BT: "[c#1@5 ~ c#1@9 ~ f#1@14 ~@2, ~@15 c#1@9 ~@8]/2",
  BU: "f#1@5 ~ f#1@10", BV: "b1@5 ~ b1@8 f#1 g#1", BW: "b1@5 ~ b1@9 ~", BX: "a1@5 ~ a1@10",
  BY: "[g#1@5 ~ g#1@9 ~ c#1@4 ~@2 c#1@8 c#2 d#2, ~@15 g#1@9 ~@8]/2", BZ: "c#2@3 c#1@7 f1@6", CA: "f#1@5 ~ f#1@4 c#1@6",
  CB: "f#1 g#1", CC: "c#1@5 ~ c#1@8 c#2 d#2", CD: "c#2@3 c#1@2 f1@3", CE: "f#1@5 ~ f#1@6 c#1@4", CF: "f#1@7 ~ g#1@8",
  CG: "c#1@4 ~@2 c#1@8 c#2 d#2", CH: "[f#1@8 ~ g#1@12 [c#1,c#2]@60 ~@15]/6",
})).s("gm_fretless_bass").gain(0.66)

// chords · kalimba
const kalimba = note(`<
  ~@23 A B C D E F G H I B C D E F G H J K L M N O P Q R S T U V W X Y Z AA AB AC ~@20 B C D E F G H I B C D E F G H ~@8
  AA AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ@8 ~@39
>`.pickRestart({
  A: "~@14 f#3 g#3", B: "[b2,f#3,b3] [f#3,b3] ~ [b2,f#3,b3] ~ b2 [b2,f#3,b3] ~@2 [b2,c3,f#3,b3] ~@2 b2!2 f#3 [b2,g#3]",
  C: "[b2,b3] [b2,f#3,b3] ~ [b2,f#3] [f#3,b3] b2!2 [f#3,b3] ~ [b2,f#3,b3] ~ b2!3 f#3 [f#3,b3]", // B B5
  D: "[e2,e3,g#3]!2 ~ e2 [e3,g#3] e2!2 [e2,e3,g#3] ~ e2!5 ~ [e2,g#3]", // E
  E: "[e2,g#3] [e2,e3,g#3]!3 ~@2 [b2,g#3] [e3,g#3] ~ b2 [e3,g#3] b2 e2!2 f#3 [e2,g#3]", // E
  F: "b2!2 ~ b2 f#3 b2!2 [f#3,b3] ~ b2 [f#3,b3] b2!3 f#3 [b2,g#3]", // B5 E
  G: "[b2,f#3] [b2,f#3,b3] ~ b2 [f#3,b3] b2!2 [b2,f#3,b3] ~ [b2,b3] [f#3,b3] ~ b2!2 [f#3,b3]!2", // B5 B B5
  H: "[e2,e3,g#3]!2 ~ e2 e3 e2!2 [e3,g#3]@2 e2 [e3,g#3] e2!3 e3 e2, ~@2 g#3 ~@5", // E
  I: "[e2,e3,g#3]!2 ~ [e2,e3,g#3] [e3,g#3] e2!2 [e3,g#3] ~ e2 ~ [e2,e3,g#3]!3 ~@2", // E
  J: "[e2,e3,g#3]!2 ~ [e2,e3,g#3] [e3,g#3] e2!2 [e3,g#3] ~ e2 ~ [f#2,g#3,a#3] [f#2,f#3,a#3]!2 ~@2", // E F#
  K: "[g#3,b3] g#3 [g#3,b3]!2 g#3 ~ [g#3,b3] g#3 ~ g#3 [g#3,b3] ~ [g#3,b3]!2 ~ [g#3,b3]", // G#m
  L: "[f#3,g#3,b3] f#3 a#3 f#3!2 [f#3,a#3] f#3!2 [f#3,a#3] f#3 [f#3,a#3]!2 f#3!2 [f#3,a#3]!2", // G#m7 F#
  M: "e3 ~ [e3,g#3] e3!2 [e3,g#3] e3!2 [e3,g#3] e3!2 [e3,g#3] e3!2 [e3,g#3] e3", // E
  N: "e3 [e3,g#3] e3 [e3,g#3]!3 e3 [e3,g#3]!3 e3 [e3,g#3]!2 e3 [e3,g#3]!2", // E
  O: "[f#3,a#3]!4 f#3 [f#3,a#3] f#3 [f#3,a#3] [e3,f#3,g#3,a#3] f#3 [e3,f#3,g#3] [e3,f#3,g#3,a#3] f#3 [e3,f#3,g#3] [f#3,a#3]!2", // F# F#7 E F#7 E F#
  P: "f#3 [e3,g#3] ~ e3 [e3,g#3] ~ [e3,g#3]!2 ~ e3 [e3,g#3]!4 e3 [e3,g#3]", // E
  Q: "[d#3,f#3] d#3 [d#3,f#3] d#3!2 [d#3,f#3] d#3!2 [d#3,f#3] d#3 [d#3,f#3]!4 d#3 [d#3,f#3]", // D#m
  R: "[g#3,b3,d#4]!2 ~ g#3 [g#3,b3,d#4] ~ g#3 [g#3,b3,d#4] g#3 [g#3,b3,d#4]!2 [b3,d#4] [f#3,b3,d#4]!2 ~ f#3", // G#m B
  S: "[e3,b3,e4]!2 e3 [e3,b3,e4] e3 ~ [e3,b3,e4]!3 e3!2 [b3,e4] [e3,b3,e4]!4", // E5
  T: "e3!4 [e3,b3,e4] ~ [e3,b3,e4]!2 e3 [e3,b3,e4] e3 [b3,e4] [e3,b3,e4]!2 [b3,e4] e3", // E5
  U: "[d#3,b3,d#4]!2 d#3 [d#3,b3,d#4] [d#3,e3] ~ [d#3,b3,d#4]!2 ~ [d#3,b3,d#4] d#3 ~ [d#3,b3,d#4]!2 d#3 [d#3,b3,d#4]", // G#m Emaj7 G#m
  V: "[e3,b3,e4]!2 ~ [e3,b3,e4] e3 [b3,e4] [e3,b3,e4] e3 ~ e3 [e3,b3,e4] [b3,e4] [e3,b3,e4]!4", // E5
  W: "e3 [e3,b3,e4] e3!2 [e3,b3,e4] ~ [e3,b3,e4]!2 e3 [e3,b3,e4] e3 [b3,e4] [e3,b3,e4]!2 e3 [e3,b3,e4]", // E5
  X: "[d#3,b3,d#4]!2 d#3!2 [d#3,b3,d#4] ~ [d#3,b3,d#4]!2 d#3 [d#3,b3,d#4] d#3 d#4 [d#3,b3,d#4]!2 d#3 [d#3,b3,d#4]", // G#m
  Y: "[c#3,c#4,e4] c#3 [c#4,e4] [c#3,c#4,e4] c#3 [c#4,e4] c#3!2 [c#3,c#4,e4] c#3!2 [c#4,e4] c#3!2 [c#3,c#4,e4]!2", // C#m
  Z: "f#3!2 [f#3,c#4,f#4] f#3!2 [c#4,f#4] [f#3,c#4,f#4]!2 ~ f#3 [f#3,c#4,f#4] [c#4,f#4] f#3 [f#3,c#4,f#4] f#3!2", // F#5
  AA: "f#3 [f#3,c#4,f#4]!4 ~ [f#3,f#4] [f#3,c#4,f#4] ~ [f#3,c#4,f#4] f#3!2 [f#3,c#4,f#4]!2 ~ [f#3,c#4,f#4]", // F#5 F# F#5
  AB: "f#3 [c#4,f#4] f#3 [f#3,c#4,f#4]!2 ~ f#3 [f#3,c#4,f#4] ~ [f#3,c#4,f#4] f#3 ~ [f#3,c#4,f#4]!2 ~ [f#3,c#4,f#4]", // F#5
  AC: "[f#3,c#4,f#4]!2 ~ f#3 [f#3,c#4,f#4] ~ [f#3,c#4,f#4]!2 ~ [f#3,c#4,f#4]!2 [c#4,f#4] [f#3,c#4,f#4]!2 [c#4,f#4]!2", // F#5
  AD: "[c#3,g#3,c#4] [g#3,c#4] ~ [c#3,g#3,c#4] ~ c#3 [c#3,g#3,c#4] ~@2 [c#3,d3,g#3,c#4] ~@2 c#3!2 g#3 [c#3,a#3]", // C#5 C# F#
  AE: "[c#3,c#4] [c#3,g#3,c#4] ~ [c#3,g#3] [g#3,c#4] c#3!2 [g#3,c#4] ~ [c#3,g#3,c#4] ~ c#3!3 g#3 [g#3,c#4]", // C# C#5
  AF: "[f#2,f#3,a#3]!2 ~ f#2 [f#3,a#3] f#2!2 [f#2,f#3,a#3] ~ f#2!5 ~ [f#2,a#3]", // F#
  AG: "[f#2,a#3] [f#2,f#3,a#3]!3 ~@2 [c#3,a#3] [f#3,a#3] ~ c#3 [f#3,a#3] c#3 f#2!2 g#3 [f#2,a#3]", // F#
  AH: "c#3!2 ~ c#3 g#3 c#3!2 [g#3,c#4] ~ c#3 [g#3,c#4] c#3!3 g#3 [c#3,a#3]", // C#5 F#
  AI: "[c#3,g#3] [c#3,g#3,c#4] ~ c#3 [g#3,c#4] c#3!2 [c#3,g#3,c#4] ~ [c#3,c#4] [g#3,c#4] ~ c#3!2 [g#3,c#4]!2", // C#5 C# C#5
  AJ: "[f#2,f#3,a#3]!2 ~ f#2 f#3 f#2!2 [f#3,a#3]@2 f#2 [f#3,a#3] f#2!3 f#3 f#2, ~@2 a#3 ~@5", // F#
  AK: "[f#2,f#3,a#3]!2 ~ [f#2,f#3,a#3] [f#3,a#3] f#2!2 [f#3,a#3] ~ f#2 ~ [g#2,a#3,c4] [g#2,g#3,c4]!2 ~@2", // F# G#
  AL: "[a#3,c#4] a#3 [a#3,c#4]!2 a#3 ~ [a#3,c#4] a#3 ~ a#3 [a#3,c#4] ~ [a#3,c#4]!2 ~ [a#3,c#4]", // A#m
  AM: "[g#3,a#3,c#4] g#3 c4 g#3!2 [g#3,c4] g#3!2 [g#3,c4] g#3 [g#3,c4]!2 g#3!2 [g#3,c4]!2", // A#m7 G#
  AN: "f#3 ~ [f#3,a#3] f#3!2 [f#3,a#3] f#3!2 [f#3,a#3] f#3!2 [f#3,a#3] f#3!2 [f#3,a#3] f#3", // F#
  AO: "f#3 [f#3,a#3] f#3 [f#3,a#3]!3 f#3 [f#3,a#3]!3 f#3 [f#3,a#3]!2 f#3 [f#3,a#3]!2", // F#
  AP: "[g#3,c4]!4 g#3 [g#3,c4] g#3 [g#3,c4] [f#3,g#3,a#3,c4] g#3 [f#3,g#3,a#3] [f#3,g#3,a#3,c4] g#3 [f#3,g#3,a#3] [g#3,c4]!2", // G# G#7 F# G#7 F# G#
  AQ: "g#3 [f#3,a#3] ~ f#3 [f#3,a#3] ~ [f#3,a#3]!2 ~ f#3 [f#3,a#3]!4 f#3 [f#3,a#3]", // F#
  AR: "[f3,g#3] f3 [f3,g#3] f3!2 [f3,g#3] f3!2 [f3,g#3] f3 [f3,g#3]!4 f3 [f3,g#3]", // Fm
  AS: "[a#3,c#4,f4]!2 ~ a#3 [a#3,c#4,f4] ~ a#3 [a#3,c#4,f4] a#3 [a#3,c#4,f4]!2 [c#4,f4] [g#3,c#4,f4]!2 ~ g#3", // A#m C#
  AT: "[f#3,c#4,f#4]!2 f#3 [f#3,c#4,f#4] f#3 ~ [f#3,c#4,f#4]!3 f#3!2 [c#4,f#4] [f#3,c#4,f#4]!4", // F#5
  AU: "f#3!4 [f#3,c#4,f#4] ~ [f#3,c#4,f#4]!2 f#3 [f#3,c#4,f#4] f#3 [c#4,f#4] [f#3,c#4,f#4]!2 [c#4,f#4] f#3", // F#5
  AV: "[f3,c#4,f4]!2 f3 [f3,c#4,f4] [f3,f#3] ~ [f3,c#4,f4]!2 ~ [f3,c#4,f4] f3 ~ [f3,c#4,f4]!2 f3 [f3,c#4,f4]", // C# F#maj7 C#
  AW: "[f#3,c#4,f#4]!2 ~ [f#3,c#4,f#4] f#3 [c#4,f#4] [f#3,c#4,f#4] f#3 ~ f#3 [f#3,c#4,f#4] [c#4,f#4] [f#3,c#4,f#4]!4", // F#5
  AX: "f#3 [f#3,c#4,f#4] f#3!2 [f#3,c#4,f#4] ~ [f#3,c#4,f#4]!2 f#3 [f#3,c#4,f#4] f#3 [c#4,f#4] [f#3,c#4,f#4]!2 f#3 [f#3,c#4,f#4]", // F#5
  AY: "[f3,c#4,f4]!2 f3!2 [f3,c#4,f4] ~ [f3,c#4,f4]!2 f3 [f3,c#4,f4] f3 f4 [f3,c#4,f4]!2 f3 [f3,c#4,f4]", // C#
  AZ: "[[d#3,d#4,f#4] d#3 [d#4,f#4] [d#3,d#4,f#4] d#3 [d#4,f#4] d#3!2 [d#3,d#4,f#4] d#3!2 [d#4,f#4] d#3!2 [d#3,d#4,f#4] [d#3,d#4,f#4]@113]/8", // D#m
})).s("gm_kalimba").gain(0.39)

// chords · kalimba · soft notes
const kalimba_soft = note(`<
  ~@24 A B C D E F G H A B C D E F G H ~@17 I ~@21 A B C D E F G H A B C D E F G ~@9 J K L M N O P Q ~@61
>`.pickRestart({
  A: "~ b2 ~@3 b3 ~@5 b2 ~@4", B: "~@4 b2 ~@9 b3 ~", C: "~@14 [e3,g#3] e3", D: "e3 ~@4 e2 e3 ~@7 e2 ~",
  E: "~@4 b3 ~@2 b2 ~@8", F: "~@3 b3 ~@5 f#3 ~ b2 ~@4", G: "~@9 [e3,g#3] ~@4 g#3 [e3,g#3]", H: "~@9 [e3,g#3]!2 ~@5",
  I: "~ f#3 ~@4 f#4 ~@9", J: "~ c#3 ~@3 c#4 ~@5 c#3 ~@4", K: "~@4 c#3 ~@9 c#4 ~", L: "~@14 [f#3,a#3] f#3",
  M: "f#3 ~@4 f#2 f#3 ~@7 f#2 ~", N: "~@4 c#4 ~@2 c#3 ~@8", O: "~@3 c#4 ~@5 g#3 ~ c#3 ~@4",
  P: "~@9 [f#3,a#3] ~@4 a#3 [f#3,a#3]", Q: "~@9 [f#3,a#3]!2 ~@5",
})).s("gm_kalimba").gain(0.2)

// other · french horn
const french_horn = note(`<
  ~@2 A@6 ~ B@3 C@2 D@2 E@2 C@2 F@2 G@2 ~@2 H@8 ~@47 H@8 ~@6 E@2 C@2 F@2 G@2 ~@69
>`.pickRestart({
  A: "f#4/6", B: "[f#3@20 b3@3 c#4]/3", C: "b3/2", D: "g#3/2", E: "a#3/2", F: "c#4/2", G: "f#3/2", H: "f#4/8",
})).s("gm_french_horn").gain(0.18)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@42 A B C@3 D ~ E F G@2 H I J@4 K@2 L@2 M@2 N@2 O@2 P Q R@2 S@2 T@2 U@2 ~@34 V W X@3 Y@3 Z@3 AA AB ~@3 AC@2 AD@2 AE@2
  AF@2 AG@2 AH AI AJ@2 AK@2 AL AM AN@2 AO@2 AN@2 AO@2 AP@2 AO@2 AN@2 AQ@3 ~@8
>`.pickRestart({
  A: "~ g#4@3", B: "c#5", C: "[~@39 b5@5 f#5@4, f#4 f#4, ~ c#5@3, ~@6 f#5@7 ~@3]/3", D: "[b4,g#5]@7 b4@9, g#4",
  E: "~ a#4", F: "b4@5 ~ f#5@2", G: "[e5@14 d#5 b4@2 g#4@11 b4@4]/2", H: "f#4@3 b4", I: "e4", J: "f#4/4",
  K: "[~ [g#3,b3]@31]/2", L: "[[c#3,e3]@31 ~]/2", M: "[g3@7 ~ g#3@8 g3@16, [d#3,a#3]]/2",
  N: "[[g#2,g#3,b3]@3 [f#2,f#3,a#3]]/2", O: "[f3,g#3,b3]/2", P: "[f#3,b3]", Q: "[d#3,f#3,a3]",
  R: "[f#3@3 e3@13, [g#3,b3]]/2", S: "[c#3,e3,a3]/2", T: "[[e3,g#3] [e2,e3,g3], c#3]/2",
  U: "[b3@15 ~@9 c#3@8, f#3, c#3@23 ~@9, ~ a#3]/2", V: "~ a#4@3", W: "d#5",
  X: "[~@5 c6@3, g#4 ~, ~ d#5@3, ~@6 g#5@7 ~@3]/3",
  Y: "[c#6@4 f5@3 ~ a#5@4 c6@4 c#6@24 [c5,a#5]@8, a#4 ~@2, ~@7 c#5@33 ~@8]/3", // C7
  Z: "[g#5@12 ~@4 f#5@14 f5 c#5@2 a#4@11 c#5@4, c#5@5 ~ g#5@6 ~@12]/3", AA: "g#4@3 c#5", AB: "f#4",
  AC: "[~ [a#3,c#4]@31]/2", AD: "[[d#3,f#3]@31 ~]/2", AE: "[a3@7 ~ a#3@8 a3@16, [f3,c4]]/2",
  AF: "[[a#2,a#3,c#4]@3 [g#2,g#3,c4]]/2", AG: "[g3,a#3,c#4]/2", AH: "[g#3,c#4]", AI: "[f3,g#3,b3]",
  AJ: "[g#3@3 f#3@13, [a#3,c#4]]/2", AK: "[d#3,f#3,b3]/2", AL: "[f#2,f#3,a3]", AM: "[d#3,g#3]",
  AN: "[[c#4,f4,f5]@3 [g#3,d#4,d#5]]/2", AO: "[[f#3,c#4,c#5]@3 [g#3,d#4,d#5]]/2", AP: "[[c#4,f4]@3 [g#3,d#4,d#5]]/2",
  AQ: "[[f#3,c#4,c#5]@25 [g#3,d#4,d#5]@12 ~@11]/3", // F#5 G#5
})).s("gm_string_ensemble_2").gain(0.64)

// chords · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~ A@4 B@3 ~@8 C@2 D@6 E@8 F@8 G H I J@4 K@3 L@5 ~ M@5 N@2 O@2 P@2 Q@2 R S T@2 U@2 V W X@2 E@8 Y@8 C@2 Z@5 AA AB@8 AC
  AD AE AF@4 AG@3 AH@5 AI@3 AJ@2 AK@2 AL@2 AM@2 AN@2 AO AP AQ@2 AR@2 AS AT AU@2 AV@2 AU@2 AV@2 AW@2 AX@2 AY@2 AZ@6 ~@5
>`.pickRestart({
  A: "[f#3,b3]/4", B: "[~ f#4 b3@4, f#3, b3 ~@2]/3", C: "[~ c#4, a#3]/2",
  D: "[e4@6 ~@16 f#4@9 ~@33 b3@16 ~@10 b4@6, b3@31 ~ c#4@32 f#3@32, f#4@22 ~@9 g#4@16 ~ c#5@42 ~@6, ~@6 d#4@25 ~@49 a#3@16]/6",
  E: "[~ b3@3, b4, ~ f#4@7]/8", F: "[f#4@2 f#4@2 b3@4 ~@6 [g#3,b3] [f#3,a#3,c#4], b4@31 ~, b3 ~@3]/8", G: "~ g#3",
  H: "a#3", I: "d#4", J: "c#4/4", K: "[b3@5 a#3]/3", L: "[b3@13 ~@3]/5",
  M: "[[f#3,c#4,f#4,c#5]@3 ~ b5, ~@3 [b4,d#5,g#5]@2]/5", N: "[c#5,e5,g#5,c#6]/2", O: "[a#5 d#5@3, [g4,a#4]]/2",
  P: "[~ g#4@2 [f#4,c#5,f#5,a#5], [b4,d#5,g#5]@3 ~]/2", Q: "[c#4,f4,g#4,b4,d#5]/2", R: "[c#4,f#4,b4]",
  S: "[b3,d#4,f#4,a4]", T: "[e4,g#4,b4]/2", U: "[[c#4,e4] [c#4,e4], [b3,a4]]/2", V: "[c#4,e4,g#4,c#5]",
  W: "[g3,c#4,e4,g4,b4]", X: "[b4 [f#4,a#4], [f#3,c#4,e4]]/2", Y: "[f#4 f#4 b3@2 ~@4, b4@31 ~, b3 ~@3]/8",
  Z: "[e4@6 ~@16 f#4@9 ~@33 [f#3,b3]@16, b3@31 ~ c#4@32 ~@16, f#4@22 ~@9 g#4@16 ~ c#5@32, ~@6 d#4@25 ~@49]/5", // B5
  AA: "[f#3,c#4,f#4,c#5]", AB: "[g#4@2 g#4@2 c#4@4 ~@6 [a#3,c#4] [g#3,c4,d#4], c#5@31 ~, c#4 ~@3]/8", AC: "~ a#3",
  AD: "c4", AE: "f4", AF: "[~@7 a4, d#4]/4", AG: "[c#4@5 c4, a#4@7 ~@17]/3",
  AH: "[~@14 g#5@2 g#5@2 a#5@2 f#5@11 ~@49, c#4@13 ~@3]/5",
  AI: "[[f#3,f4]@4 [g#3,d#4]@4 f3@11 ~ [d#3,g#3,c4]@4, g#4, [g#2,c#4] c#4 ~, ~@2 g#3 ~@3]/3", // F#maj7 G#5 G# C#5
  AJ: "[~ c#6, [c#5,f5,a#5]]/2", AK: "[d#5,f#5,a#5,d#6]/2", AL: "[c6 f5@3, [a4,c5]]/2",
  AM: "[~ a#4@2 [g#4,d#5,g#5,c6], [c#5,f5,a#5]@3 ~]/2", AN: "[d#4,g4,a#4,c#5,f5]/2", AO: "[d#4,g#4,c#5]",
  AP: "[c#4,f4,g#4,b4]", AQ: "[f#4,a#4,c#5]/2", AR: "[[d#4,f#4] [d#4,f#4], [c#4,b4]]/2", AS: "[a3,d#4,f#4,a4,c#5]",
  AT: "[g#3,d#4,f#4]", AU: "[c#2,c#5,f5,g#5,c#6]/2", AV: "[[f#2,c#4,f#4,a#4]@24 [g#2,d#4,g#4,c5]@7 ~]/2",
  AW: "[c#2,c#5,f5,g#5]/2", AX: "[[f#2,f#3,c#4,f#4,a#4]@24 [g#2,g#3,d#4,g#4,c5]@7 ~]/2",
  AY: "[c#2,c#3,c#5,f5,g#5,c#6]/2", AZ: "[[f#2,f#3,c#4,f#4,a#4]@25 [g#2,g#3,d#4,g#4,c5]@11 ~ [c#2,f5,g#5,c#6]@59]/6",
})).s("gm_string_ensemble_2").gain(0.4)

// chords · string ensemble 2
const string_ensemble_2_3 = note(`<
  ~@40 A@2 B@2 C@4 D@6 E@7 F@2 G@2 H@2 I J K@4 L@2 M N O P ~@23 Q R S@3 T@2 U@2 V@2 W@2 X@4 Y@6 Z ~@2 AA AB@2 AC@2 AD@2
  AE@2 AF AG AH@4 AI@2 AJ AK ~@8 AL AM AN AO AL AM AN AP@2 ~@8
>`.pickRestart({
  A: "[[g#3,b3]@15 ~ [f#3,a#3]@16, d#3]/2", B: "[[e3,g#3,b3]@31 ~]/2",
  C: "[f#3@15 ~ e3@15 ~ f#3@15 ~ [g#3,b3]@16, a#3@47 ~@17, c#3@15 ~ d#3@16]/4", // G#m
  D: "[[g#3,b3]@16 ~@8 [c#3,a#3]@7 ~ d#3@15 ~ [e3,g#3]@31 ~ [d#3,f#3]@15 ~, e3@23 ~ f#3@23 ~@49, ~@32 b3@63 ~]/6", // G#m F# E D#m
  E: "[[e3,g#3]@16 ~@24 f#4@6 ~ f#4 ~ c#5@8 f#4@4 ~ [c#5,f#5]@2 f#5@10 ~@5 f#6 d#6@32, c#3@79 ~@33, ~ f#3@4 ~@2, ~@38 c#4@8 c#4@8 ~@7 f#4@3 ~@10 c#5@2 c#6@2 c#6@2 ~@32, ~@75 f#5@2 f#5@9 ~@26]/7", // E F#5
  F: "[~@3 [g#5,g#6]@13, c#6]/2", G: "[~@5 d#6@3, a#5, ~@3 d#5@13]/2",
  H: "[g#5@18 d#5@2 g#5@2 b5@2 a#5@3 f#5@3 d#5@2, b5@5 ~@3]/2", I: "~ d#5@3 ~@12", J: "~@13 d#6@3",
  K: "[d#6@6 c#6@20 ~@6 f#6@6 ~@5 f#5@9 e5@12, ~@13 b5@6 b5@7 ~@6]/4", L: "[~@6 e5@7 ~@5 a5@14, b5@13 b5@19]/2",
  M: "e6@3 b5@5", N: "c#6@5 ~ e5@10", O: "f#5@3 b4@5", P: "c#5@3 [f#4,a#4]@5", Q: "~@5 a#5@3, ~@3 c#4@5, ~ f#4",
  R: "g#5", S: "[~@16 c#6@15 ~ c#6@11 g#5@5, c#5]/3", T: "[~@24 g#5@7 ~, c#5]/2",
  U: "[f#5@2 ~@4 c#6 c6, c#6@21 ~@11, ~@8 c#5@21 ~@3]/2", V: "[[a#3,c#4]@15 ~ [g#3,c4]@16, f3, c#6@15 ~]/2",
  W: "[a#5@15 ~ a#5@8 d#6@4 a#5@4, [f#3,a#3,c#4]@31 ~]/2", // F#
  X: "[g#3@15 ~ f#3@15 ~ g#3@8 a3@8 [a#3,c#4]@16, c4@47 ~@17, d#3@15 ~ f3@16, g#5@21 ~@43]/4", // A#m
  Y: "[[a#3,c#4]@16 ~@8 [d#3,c4]@7 ~ f3@14 g#5 ~ g#5@2 a#5@2 f#5@11 ~@17 [f3,g#3]@15 ~, f#3@23 ~ g#3@23 ~ [f#3,a#3]@31 ~@17, ~@32 c#4@63 ~]/6", // A#m Cm Fm F#
// … 174 more lines

More by Zero