Strudelify

Kiki's Delivery Service - On a Clear Day

Joe Hisaishi

KeyE♭ majorTempo120 bpm
0:00/0:00
// Kiki's Delivery Service - On a Clear Day — Joe Hisaishi
// 120 bpm, 3/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 1 "Flute I & II" named as a pipe, played on flute (its pizzicato strings patch is not one); ch 2 "Oboe I & II" named as a reed, played on oboe (its tremolo strings patch is not one); ch 3 "B♭ Clarinet I & II" named as a reed, played on clarinet (its viola patch is not one); ch 4 "Bassoon" named as a reed, played on bassoon (its pizzicato strings patch is not one); ch 5 "Horn in F" named as a brass, played on brass section (its tremolo strings patch is not one); ch 6 "B♭ Trumpet" named as a brass, played on trumpet (its cello patch is not one); ch 8 "Trombone" named as a brass, played on trombone (its tremolo strings patch is not one); ch 9 "Tuba" named as a brass, played on tuba (its contrabass patch is not one); ch 11 "Vibraphone" named as a mallet, played on vibraphone (its acoustic bass patch is not one); ch 12 "Xylophone" named as a mallet, played on xylophone (its tremolo strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5339437; license: https://creativecommons.org/publicdomain/zero/1.0/
// 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(120/3)

// 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.

// other · flute · "Flute I & II"
const flute = note(`<
  A B C@2 D E F@2 ~@4 G H I J ~@8 K ~ L ~ M N O P Q R S T U V W@2 ~@5 X Y Z ~@15 P Q R S T U V W@2 ~@8 AA AB AC AD@2
>`.pickRestart({
  A: "bb5", B: "a5@11 c6@5", C: "[bb5@31 ~]/2", D: "g5", E: "gb5@11 ab5@5", F: "[g5@31 ~]/2", G: "g5@11 f5@5",
  H: "f5@11 c5@5", I: "f5@15 ~", J: "f5@5 g5@5 ~ ab5@5",
  K: "~@3 [ab5,c6]@2 [g5,bb5]@3 [f5,ab5]@3 [eb5,g5]@2 [f5,ab5]@3", L: "~@3 bb5@2 ab5@3 g5@8",
  M: "~@3 bb5 ~@4 bb5 ~@4 bb5 ~@2, g5@5 g5@5 ~ g5@5", N: "f5@5 d5@5 ~ f5@5",
  O: "~@5 g5 ~@2 bb5 ~@2 g5 ~ bb5 ~@2, eb5@15 ~", P: "g5 eb5 ~ f5 g5 ab5 ~ f5 g5 ab5 ~ bb5 g5 ab5 ~ bb5",
  Q: "c6@3 c6@2 c6@8 c6@3", R: "c6 c6@6 ~ c6@3 d6@2 c6@3, ~ d6 ~@14", S: "bb5@15 ~", T: "g5@7 ~",
  U: "ab5@3 ab5@2 ab5@8 ab5@3", V: "ab5@8 ab5@3 bb5@2 ab5@3", W: "[g5@29 ~@3]/2", X: "~@5 eb5@3 g5@3 bb5@2 ab5@3",
  Y: "g5@3 ab5@2 g5@3 f5@3 eb5@2 d5@3", Z: "c6 ~@4 bb5@10 ~", AA: "eb6@13 ~ d6@2", AB: "~ eb6@15", AC: "~ eb6@7",
  AD: "[~@2 d6@3 eb6@20 ~@7]/2",
})).s("gm_flute").gain(0.4)

// other · oboe · "Oboe I & II"
const oboe = note(`<
  ~@8 A B A C ~@3 C ~@4 D ~ E F G B H A I J I K L M I N O P Q@2 R S T S U V W X Y Z Y AA I AB AC@2 A B H ~ I AD AE K L M
  I N O P Q@2 AF AG I AH O AI I AJ AK AL@2 AM@2
>`.pickRestart({
  A: "eb5", B: "d5@11 f5@5", C: "d5@5 eb5@5 ~ f5@5", D: "~@5 g5 ~@2 g5 ~@2 g5 ~ g5 ~@2",
  E: "g5 ~@2 g5 ~ g5 ~@2 g5 ~@2 g5 ~ g5 ~@2", F: "d5 ~@4 d5 ~@2 g5 ~@2 d5 ~ g5 ~@2", G: "eb6@5 ~@11", H: "eb5@11 g5@5",
  I: "g5", J: "ab5", K: "eb5 c5 ~ d5 eb5 f5 ~ d5 eb5 f5 ~ g5 eb5 f5 ~ g5", L: "ab5@3 ab5@2 ab5@8 ab5@3",
  M: "ab5 ab5@7 ab5@3 bb5@2 ab5@3, ~ bb5 ~@14", N: "eb5@15 ~", O: "f5@3 f5@2 f5@8 f5@3", P: "f5@8 f5@3 g5@2 f5@3",
  Q: "[eb5@31 ~]/2", R: "eb5@3 eb5@2 eb5@5 ~ g5@2 f5@3",
  S: "g5 [g5,ab5] ab5 [g5,ab5] g5 [g5,ab5] ab5 [g5,ab5] g5 [g5,ab5] ab5 [g5,ab5] g5 [g5,ab5] ab5 [g5,ab5]", // Abmaj7
  T: "~@5 c5@3 eb5@3 g5@2 f5@3", U: "[f4,f5]@3 [f4,f5]@2 [f4,f5]@8 [f4,f5]@3", V: "[f4,f5]@5 [eb4,eb5]@5 ~ [f4,f5]@5",
  W: "[g4,g5]", X: "f5 ~@4 f5@11", Y: "bb5", Z: "a5@11 c6!5", AA: "f5@5 eb5@5 ~ d5 eb5 f5@3", AB: "gb5@11 ab5@5",
  AC: "[~@16 d5@5 c5@5 ~ g5@4 [f5,g5], g5@27 ~@5]/2", AD: "f5 [f5,g5] g5 [f5,g5] f5 d5@5 ~ f5@5, ~@5 g5 ~@10",
  AE: "[eb5,g5]", AF: "eb5@3 eb5@2 eb5@5 ~ c5@5", AG: "eb5@4 f5 d5@5 ~ eb5@5, ~@5 eb5 ~@10", AH: "c5@5 d5@5 ~ eb5@5",
  AI: "f5@4 g5 eb5@5 ~ f5@5, ~@5 f5 ~@10", AJ: "f5", AK: "~@6 g4@2 bb4@3 eb5@3 d5@2",
  AL: "[~ eb5@17 ~@6 g4@3 bb4@3 eb5@2]/2", AM: "[~@2 d5@3 eb5@21 ~@6]/2",
})).s("gm_oboe").gain(0.3)

// other · clarinet · "B♭ Clarinet I & II"
const clarinet = note(`<
  ~@15 A ~@12 B C D E F@2 G@2 F@3 H I J K L M N O P ~@15 E F@2 G@2 F@3 H Q@6 R Q ~@5
>`.pickRestart({
  A: "[eb4,bb4]@5 [eb4,bb4]@5 ~ [d4,bb4,d5]@5", B: "g5@3 bb5@2 g5@3 bb5@3 g5@2 bb5@3", C: "ab5@5 d5@5 ~ ab5@5", D: "g5",
  E: "bb4 g4 ~ ab4 bb4 c5 ~ ab4 bb4 c5 ~ d5 bb4 c5 ~ d5", F: "~@5 eb4@3 ~@3 eb4@3 ~@2", G: "~@5 g4@3 ~@3 g4@3 ~@2",
  H: "~@5 f4@3 eb4@3 d4@2 f4@3", I: "[eb4,eb5]@3 [eb4,eb5]@2 [eb4,eb5]@8 [eb4,eb5]@3",
  J: "[eb4,eb5]@5 [d4,d5]@5 ~ [eb4,eb5]@5", K: "[g4,g5]", L: "[c4,c5]@5 [d4,d5]@5 ~ [eb4,eb5]@5",
  M: "f4@3 f4@2 f4@8 f4@3", N: "f4@5 eb4@5 ~ f4@5", O: "g4@11 [f4,g4] ~@4", P: "[f5,ab5] ~@4 [f5,ab5]@11",
  Q: "~@5 c4 ~@5 c4 ~@4", R: "~@5 [c4,d4] ~@5 [c4,d4] ~@4",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet I & II" · soft notes
const clarinet_soft = note(`<
  A@3 B A@3 B A B A@2 C@3 ~ A@3 D A@3 B E D F G H D H ~@17 A@3 B A@3 B E D F G H D H ~@17 I J K L@2
>`.pickRestart({
  A: "~@5 eb4@3 ~@3 eb4@3 ~@2", B: "~@5 d4@3 ~@3 d4@3 ~@2", C: "~@5 c4@3 ~@3 c4@3 ~@2",
  D: "~@5 [d4,f4]@3 ~@3 [d4,f4]@3 ~@2", E: "~@5 [eb4,ab4]@3 ~@3 [eb4,ab4]@3 ~@2",
  F: "~@5 [bb3,g4]@3 ~@3 [bb3,g4]@3 ~@2", G: "[d4,bb4]@5 [eb4,bb4]@5 ~ [f4,ab4]@5",
  H: "~@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2", I: "~@6 [eb4,g4]@3 ~@2 [eb4,g4]@3 ~@2",
  J: "~@6 [eb4,gb4]@3 ~@3 [eb4,gb4]@3 ~", K: "~@8 [eb4,g4]@3 ~@3 [eb4,g4]@2", L: "[~@5 [bb3,g4,bb4]@21 ~@6]/2",
})).s("gm_clarinet").gain(0.15)

// other · bassoon
const bassoon = note(`<
  ~@15 A ~@15 B C@2 D@2 C@2 D@2 E F G H I J K L ~@15 B C@2 D@2 C@2 D@2 E F G H I J M F ~@5
>`.pickRestart({
  A: "bb2@5 bb2@5 ~ bb2@5", B: "eb2@5 f2@5 ~ g2@5", C: "ab2@5 ~@11", D: "eb2@5 ~@11", E: "c3", F: "bb2", G: "a2",
  H: "ab2@11 g2@5", I: "f2", J: "f2@5 ab2@5 ~ f2@5", K: "g2@11 f4 ~@4", L: "c3 ~@4 bb2@11", M: "g2",
})).s("gm_bassoon").gain(0.25)

// other · bassoon · soft notes
const bassoon_soft = note("<A@3 B C@3 D E@2 F G H@2 I ~ A@3 B C@3 D E@2 F J D@2 G ~@49 K L M N@2>".pickRestart({
  A: "eb3@5 ~@11", B: "d3@5 ~@11", C: "c3@5 ~@11", D: "bb2@5 ~@11", E: "ab2@5 ~@11", F: "g2@5 ~@11", G: "eb2@5 ~@11",
  H: "f2@5 ~@11", I: "c4", J: "f2@5 g2@5 ~ ab2@5", K: "eb3@3 ~@5", L: "~ eb3@6 ~@9", M: "~ eb3@3 ~@3 bb3",
  N: "[~@5 eb4@21 ~@6]/2",
})).s("gm_bassoon").gain(0.15)

// other · brass section · "Horn in F"
const brass_section = note(`<
  ~@12 A@3 B ~@11 C D E F G H I J K L M N@2 ~@4 O P Q R ~@15 G H S F T U V W X Y ~@12
>`.pickRestart({
  A: "c4", B: "f4@5 g4@5 ~ ab4@5", C: "bb4@5 bb4@5 ~ ab4@5", D: "g4@3 bb4@2 g4@3 bb4@3 g4@2 bb4@3",
  E: "ab4@5 d4@5 ~ ab4@5", F: "g4", G: "g4@5 ab4@5 ~ bb4@5", H: "c5@3 c5@2 c5@8 c5@3", I: "c5@8 c5@3 d5@2 c5@3",
  J: "bb4", K: "g4@15 ~", L: "ab4@3 ab4@2 ab4@8 ab4@3", M: "ab4@8 ab4@3 bb4@2 ab4@3", N: "[g4@31 ~]/2",
  O: "f4@3 f4@2 f4@8 f4@3", P: "f4@5 eb4@5 ~ f4@5", Q: "g4@11 g4 ~@4", R: "ab4 ~@4 ab4@11", S: "c5 ~",
  T: "c5@3 bb4@2 ab4@3 g4@3 f4@2 eb4@3", U: "~@3 c5@3 ~@7 c5@3", V: "c5@5 ~@11", W: "~@11 c5@2 bb4@3",
  X: "ab4@3 g4@2 f4@3 eb4@3 d4@2 f4@3", Y: "eb4@3 eb4@3 ~@10",
})).s("gm_brass_section").gain(0.3)

// other · brass section · "Horn in F" · soft notes
const brass_section_soft = note("<~@80 A B C D@2>".pickRestart({
  A: "~@6 eb4@3 ~@2 eb4@3 ~@2", B: "~@6 eb4@3 ~@3 eb4@3 ~", C: "~@8 eb4@3 ~@3 eb4@2", D: "[~@5 bb3@21 ~@6]/2",
})).s("gm_brass_section").gain(0.15)

// chords · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~@15 A ~@4 B ~ C D ~@4 E F G H I J K L M N O@2 P Q R S T@2 U V W X W Y Z@3 AA AB AC AD AE AA@2 W H AF AG AH AI AJ AK
  AL AM AN AO AP AQ AR@2 AS AT AU AV@2 AW@2
>`.pickRestart({
  A: "[bb2,d4]@5 [bb2,eb4]@5 ~ [bb2,f4]@5", B: "~@5 g5 ~@2 g5 ~@2 g5 ~ g5 ~@2",
  C: "g5 ~@2 g5 ~ g5 ~@2 g5 ~@2 g5 ~ g5 ~@2", D: "d5 ~@4 d5 ~@2 d5 ~@2 d5 ~ d5 ~@2", E: "~@5 eb5@3 f5@3 g5@2 bb5@3",
  F: "ab5@5 d5@5 ~ ab5@2 bb5@3", G: "[eb5,g5]", H: "[eb3,eb4]@5 [f3,f4]@5 ~ [g3,g4]@5",
  I: "ab4@3 ab4@2 c4@3 ~@3 c4@2 ab4@3, ab2@8 ~@3 ab3 ~ eb3 ~@2, ~@5 ab4@8 ~@3",
  J: "eb3@5 c4@3 ab4@3 [c4,bb4]@2 ab4@3, [ab2,ab4]@8 ~@3 ab3@5", K: "eb3@5 bb3@3 ~@3 [eb2,bb3]@3 ~@2, g4, eb2@11 ~@5",
  L: "eb3@5 bb3@3 ~@3 [eb2,bb3]@4 ~, eb4@15 ~, eb2@11 ~@5", // Eb5
  M: "[ab2,eb3,f4]@3 [eb3,f4]@2 ab3@3 eb3 ~@2 ab3@2 f4@3, ~@5 f4@8 eb3 ~@2", // Fm7 Ebsus2
  N: "eb3@5 ab3@3 f4@3 [ab3,g4]@2 f4@3, [ab2,f4]@8 ~@5 eb3 ~@2", // Abmaj7 Db
  O: "[eb3@5 bb3@3 ~@3 [eb2,bb3]@3 ~@2 eb3@5 bb3@3 ~@3 [d2,bb3]@3 ~@2, eb4@31 ~, eb2@11 ~@5 eb2@11 ~@5]/2", // Eb5 Gm
  P: "eb5@3 eb5@2 eb5@5 ~ [c4,g5]@2 f5@3, c3, ~@5 c4@3 ~@8", Q: "~@5 g3@3 ~@3 g3@3 ~@2, [bb2,g5]",
  R: "~@5 [g3,c5]@3 eb5@3 [g3,g5]@2 f5@3, a2", S: "~@5 ab3@3 ~@3 g2@5, g5, ab2@11 g3@3 ~@2",
  T: "[f4@3 f4@2 f3@3 ~@3 f3@2 f4@3 f4@5 [ab2,ab3,eb4]@5 ~ [f2,f3,f4]@5, f2@21 ~@11, ~@5 f4@8 ~@19]/2", // Ab5 F
  U: "~@5 g3@5 ~ g3@5, [g2,g4]", V: "[c3,c5] ~@4 [bb2,bb4]@11", W: "eb3@5 bb3@3 ~@3 bb3@3 ~@2",
  X: "eb3@5 c4@3 ~@3 c4@3 ~@2", Y: "d3@5 bb3@3 ~@3 bb3@3 ~@2", Z: "c3@5 c4@3 ~@3 c4@3 ~@2",
  AA: "bb2@5 bb3@3 ~@3 bb3@3 ~@2", AB: "ab2@5 c4@3 ~@3 c4@3 ~@2", AC: "ab2@5 b3@3 ~@3 b3@3 ~@2",
  AD: "g2@5 eb3@3 ~@3 eb3@3 ~@2", AE: "f2@5 g2@5 ~ ab2@5",
  AF: "c5@3 c5@2 c4@3 eb3 ~@2 c4@2 c5@3, ab2@5 c5@8 ~@3, ~@5 ab3 ~@5 ab3 ~ eb3 ~@2",
  AG: "eb3@5 c4@3 ~@3 c4@2 eb3 ~@2, [ab2,c5]@8 ~@3 ab3 ~@4", // Ab
  AH: "[eb2,eb3]@5 bb3@3 bb2 ~@2 bb3@2 bb2 ~@2, g4, ~@5 eb3 ~@5 eb3 ~@4", // Eb
  AI: "eb3@5 bb3@3 ~@3 [eb2,bb3]@4 ~, g4@15 ~, eb2@11 ~@5", // Eb5
  AJ: "[ab2,eb3]@3 [eb3,c5]@2 ab3@3 eb3 ~@2 ab3@2 c5@3, ~@13 eb3 ~@2", AK: "[eb3,c5]@5 ab3@3 ~@3 ab3@2 eb3 ~@2, ab2 ~",
  AL: "[eb2,eb3]@5 bb3@3 bb2 ~@2 bb3@2 bb2 ~@2, g4, ~@5 g3 ~@5 g3 ~@4", // Eb
  AM: "eb3@5 bb3@3 ~@3 [d2,bb3]@3 ~@2, g4@15 ~, eb2@11 ~@5", AN: "eb4@3 eb4@2 c4@3 ~@3 c4@3 ~@2, c3",
  AO: "~@5 g3@3 ~@3 g3@3 ~@2, bb2", AP: "~@5 g3@3 ~@3 g3@3 ~@2, a2", AQ: "~@5 ab3@3 ~@3 g2@5, ab2@11 g3@3 ~@2",
  AR: "[~@5 f3@3 ~@3 f3@3 ~@7 [ab2,ab3]@5 ~ [f2,f3]@5, f2@21 ~@11]/2", AS: "~@5 g3@5 ~ g3@5, g2", AT: "bb2",
  AU: "~@6 g4@2 bb4@3 eb5@3 d5@2", AV: "[~ eb5@17 ~@6 g4@3 bb4@3 eb5@2]/2", AW: "[~@2 d5@3 eb5@21 ~@6]/2",
})).s("gm_trumpet").gain(0.25)

// chords · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note("<A B A C D@3 E F G H I J@2 K ~ A B A C D@3 E F G L M E@2 A ~@49 N O P Q@2>".pickRestart({
  A: "eb3@5 bb3@3 ~@3 bb3@3 ~@2", B: "eb3@5 c4@3 ~@3 c4@3 ~@2", C: "d3@5 bb3@3 ~@3 bb3@3 ~@2",
  D: "c3@5 c4@3 ~@3 c4@3 ~@2", E: "bb2@5 bb3@3 ~@3 bb3@3 ~@2", F: "ab2@5 c4@3 ~@3 c4@3 ~@2",
  G: "ab2@5 b3@3 ~@3 b3@3 ~@2", H: "g2@5 bb3@3 ~@3 bb3@3 ~@2", I: "eb2@5 bb3@3 ~@3 bb3@3 ~@2",
  J: "f2@5 a3@3 ~@3 a3@3 ~@2", K: "bb2@5 c4@3 ~@3 c4@3 ~@2", L: "g2@5 eb3@3 ~@3 eb3@3 ~@2", M: "f2@5 g2@5 ~ ab2@5",
  N: "eb3@6 bb3@3 ~@2 bb3@3 ~@2", O: "~ eb3@5 c4@3 ~@3 c4@3 ~", P: "~@2 eb3@6 bb3@3 ~@3 bb3@2", Q: "[~@5 g3@21 ~@6]/2",
})).s("gm_trumpet").gain(0.15)

// other · trombone
const trombone = note("<~@15 A ~@15 B C@2 D@2 E@2 D@2 F G H I J K H L ~@15 B C@2 D@2 E@2 D@2 M@8 ~@5>".pickRestart({
  A: "bb3@5 bb3@5 ~ bb3@5", B: "bb3@5 c4@5 ~ d4@5", C: "~@5 c4@3 ~@3 c4@3 ~@2", D: "~@5 bb3@3 ~@3 bb3@3 ~@2",
  E: "~@5 ab3@3 ~@3 ab3@3 ~@2", F: "eb4@3 eb4@2 eb4@8 eb4@3", G: "eb4@5 d4@5 ~ eb4@5", H: "g4", I: "c4@5 d4@5 ~ eb4@5",
  J: "f4@3 f4@2 f4@8 f4@3", K: "f4@5 eb4@5 ~ f4@5", L: "f4 ~@4 f4@11", M: "~@5 c4 ~@5 c4 ~@4",
})).s("gm_trombone").gain(0.3)

// other · trombone · soft notes
const trombone_soft = note("<~@28 A B C ~@49 D E F G@2>".pickRestart({
  A: "g4@3 bb4@2 g4@3 bb4@3 g4@2 bb4@3", B: "ab4@5 d4@5 ~ ab4@5", C: "g4", D: "~@6 bb3@3 ~@2 bb3@3 ~@2",
  E: "~@6 c4@3 ~@3 c4@3 ~", F: "~@8 bb3@3 ~@3 bb3@2", G: "[~@5 g3@21 ~@6]/2",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass = note(`<
  ~@15 A ~@15 B C@2 D@2 E@2 D F G H@2 I J K L M ~@11 N O@2 P B C@2 D@2 E@2 D F G H@2 I J K L Q ~@5
>`.pickRestart({
  A: "[bb1,bb2]@5 [bb1,bb2]@5 ~ [bb1,bb2]@5", B: "eb2@5 f2@5 ~ g2@5", C: "ab2@5 ab3@3 ~@3 ab3@3 ~@2",
  D: "eb2@5 g2@3 ~@3 g2@3 ~@2", E: "ab2@5 eb3@3 ~@3 eb3@3 ~@2", F: "eb2@5 g2@3 ~@3 g2@5", G: "~@5 g3 ~@5 g3 ~@4, c3",
  H: "~@5 g3 ~@5 g3 ~@4", I: "~@5 ab3 ~@5 g3 ~@4", J: "~@5 f3 ~@5 f3 ~@4", K: "~@5 ab2@5 ~ f2@5, ~@5 ab3 ~@5 f3 ~@4",
  L: "g2", M: "[bb2,c3] ~@4 bb2@11", N: "f2@5 g2@5 ~ ab2@5", O: "bb2@5 ~@11", P: "eb2@5 ~@11", Q: "bb2",
})).s("gm_tuba").gain(0.25)

// bass · tuba · soft notes
const bass_soft = note("<A@3 B C@3 D E@2 F G H@2 I ~ A@3 B C@3 D E@2 F J D@2 G ~@49 K L M N@2>".pickRestart({
  A: "eb3@5 ~@11", B: "d3@5 ~@11", C: "c3@5 ~@11", D: "bb2@5 ~@11", E: "ab2@5 ~@11", F: "g2@5 ~@11", G: "eb2@5 ~@11",
  H: "f2@5 ~@11", I: "c4", J: "f2@5 g2@5 ~ ab2@5", K: "eb3@3 ~@5", L: "~ eb3@6 ~@9", M: "~ eb3@3 ~@3 [bb2,bb3]",
  N: "[~@5 [eb2,eb3]@21 ~@6]/2", // Eb
})).s("gm_tuba").gain(0.15)

// chords · vibraphone
const vibraphone = note("<~@41 A B C D@2 ~@18 E@2 F G H@2 G I J K L M N@2 O P ~@5>".pickRestart({
  A: "bb2", B: "a2", C: "ab2@11 g2@5", D: "[f2@21 ~@11]/2", E: "~@5 [c4,eb4] ~@5 [c4,eb4] ~@4",
  F: "~@5 [bb3,g4] ~@5 [bb3,g4] ~@4", G: "~@5 [bb3,eb4] ~@5 [bb3,eb4] ~@4", H: "~@5 [ab3,eb4] ~@5 [ab3,eb4] ~@4",
  I: "~@5 [bb3,d4] ~@5 [bb3,d4] ~@4", J: "c4 ~@4 c4 ~@5 c4 ~@4", K: "bb3 ~@4 [g3,c4] ~@5 [g3,c4] ~@4, bb2",
  L: "a3 ~@4 [g3,c4] ~@5 [g3,c4] ~@4, a2", M: "ab3 ~@4 [ab3,c4] ~@5 [g3,c4] ~@4, ab2@11 g2@5",
  N: "[f3 ~@4 [f3,c4] ~@5 [f3,c4] ~@4 f3 ~@4 [ab3,c4] ~@5 [f3,c4] ~@4, f2@21 ~@11]/2", // F5 Ab F5
  O: "g3 ~@4 [g3,d4] ~@5 [g3,d4] ~@4", P: "bb3 ~@4 c4 ~@5 c4 ~@4",
})).s("gm_vibraphone").gain(0.3)

// chords · vibraphone · soft notes
const vibraphone_soft = note(`<
  A@3 B C@3 D E@2 F G H@2 I ~ A@3 B C@3 D E@2 F ~@21 A@3 B C@3 D E@2 F ~@21 J K L ~@2
>`.pickRestart({
  A: "eb3@5 ~@11", B: "d3@5 ~@11", C: "c3@5 ~@11", D: "bb2@5 ~@11", E: "ab2@5 ~@11", F: "g2@5 ~@11", G: "eb2@5 ~@11",
  H: "f2@5 ~@11", I: "bb1@5 ~@11", J: "eb3@3 ~@5", K: "~ eb3@6 ~@9", L: "~ eb3@3 ~@4",
})).s("gm_vibraphone").gain(0.15)

// other · xylophone
const xylophone = note("<~@28 A ~ B ~ C D E F G H I J ~@45>".pickRestart({
  A: "~@3 bb5 ~ g5 ~@2 bb5 ~@2 g5 ~ bb5 ~@2", B: "~@5 g5 ~@2 bb5 ~@2 g5 ~ bb5 ~@2",
  C: "c7@3 bb6@2 ab6@3 g6@3 f6@2 eb6@3", D: "d6@3 c6@2 bb5@3 ab5@3 d6@2 c6@3", E: "bb6@3 ab6@2 g6@3 f6@3 eb6@2 d6@3",
  F: "c6@3 bb5@2 ab5@3 g5@3 f5@2 eb5@3", G: "ab6@3 g6@2 f6@3 eb6@3 d6@2 c6@3", H: "bb5@3 ab5@2 g5@3 f5@3 bb5@2 ab5@3",
  I: "~@3 f6@2 eb6@3 d6@3 c6@2 bb5@3", J: "ab5@3 g5@2 f5@3 eb5@3 d5@2 f5@3",
})).s("gm_xylophone").gain(0.3)

// other · violin · "Violin II"
// … 32 more lines

More by Joe Hisaishi