Strudelify

Song of Healing

Koji Kondo

KeyA minorTempo80 bpm
0:00/0:00
// Song of Healing — Koji Kondo
// 80 bpm, 3/4, key A minor. 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" named as a pipe, played on flute (its guitar harmonics patch is not one); ch 2 "B♭ Clarinet" named as a reed, played on clarinet (its distortion guitar patch is not one); ch 3 "Alto Saxophone" named as a reed, played on alto sax (its overdriven guitar patch is not one); ch 4 "Accordion" named as an organ, played on accordion (its electric guitar muted patch is not one); ch 5 "B♭ Trumpet" named as a brass, played on trumpet (its electric guitar jazz patch is not one); ch 7 "Glockenspiel" named as a mallet, played on glockenspiel (its slap bass 1 patch is not one); ch 9 "Piano" named as a piano, played on piano (its violin patch is not one); ch 11 "Organ" named as an organ, played on drawbar organ (its pizzicato strings patch is not one); ch 13 "Acoustic Guitar" named as a guitar, played on acoustic guitar steel (its cello patch is not one)
// note: duplicate parts dropped: ch 3 "Alto Saxophone" alto sax (copy of ch 2 "B♭ Clarinet" clarinet); ch 11 "Organ" drawbar organ (copy of ch 4 "Accordion" accordion)
// note: Transcription provider: pdmx. https://musescore.com/score/5829888; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 76 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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
const flute = note(`<
  ~@18 A@2 B C A@2 D E ~@4 F G H I J K L M N O P Q@2 ~@8 A@2 B C A@2 D E ~@4 F G H I J K L M N O P Q@2
>`.pickRestart({
  A: "f5 c5 b4", B: "f5@2 e5@2 b4 a4", C: "b4@23 ~", D: "f5 e5 [e5,b5]", E: "[e5,g5]@23 ~", F: "a4 d5 f5 d5 a#5 d5",
  G: "a4 d5 f5 d5 a#5@2", H: "f4 c5 e5 c5 a5 e5", I: "f4 c5 e5 c5 a5@2", J: "a#4 f5 a#5 f5 d6 a5",
  K: "a#4 f5 a#5 f5 d6@2", L: "a4 e5 a5 e5 c6 e5", M: "a4 e5 g5 e5 c6@2", N: "b4 f5 a5 f5 d6 f5",
  O: "b4 g5 b5 f5 d6 f5", P: "b4 f5 a5 f5 d6 a5", Q: "[e5@8 b5@8 e6@23 ~@9]/2",
})).s("gm_flute").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<~@30 A B C D E F G H I J K L@2 ~@20 A B C D E F G H I J K L@2>".pickRestart({
  A: "a3 d4 f4 d4 a#4 d4", B: "a3 d4 f4 d4 a#4@2", C: "f3 c4 e4 c4 a4 e4", D: "f3 c4 e4 c4 a4@2",
  E: "a#3 f4 a#4 f4 d5 a4", F: "a#3 f4 a#4 f4 d5@2", G: "a3 e4 a4 e4 c5 e4", H: "a3 e4 g4 e4 c5@2",
  I: "b3 f4 a4 f4 d5 f4", J: "b3 g4 b4 f4 d5 f4", K: "b3 f4 a4 f4 d5 a4", L: "[e4 b4 e5@3 ~]/2",
})).s("gm_clarinet").gain(0.3)

// chords · accordion
const accordion = note(`<
  A@2 B@6 C@2 D@2 E F D@2 E F G@2 H I G@2 J K L M N O P Q R S T U V W X Y Z AA@2 D@2 E F D@2 E F G@2 H I G@2 J K L M N O
  P Q R S T U V W X Y Z AA@2
>`.pickRestart({
  A: "[~@7 [f4,b4]@3 [f4,a4]@3 [d4,f4]@3]/2", // Fdim F Dm
  B: "[[f4,b4]@9 [f4,a4]@9 [d4,f4]@9 [f4,b4]@9 ~ [f4,a4]@9 [b3,e4]@4 [b3,d4]@5 [b3,e4]@27 [f4,b4]@9 [f4,a4]@9 ~ [d4,f4]@9 [f4,b4]@9 [f4,a4]@9 [d4,f4]@9 [f4,b4]@7]/6", // Fdim F Dm Fdim F E5 Bm E5 …
  C: "[~@2 [f4,a4]@9 [b3,e4]@5 [b3,d4]@5 [b3,e4]@27]/2", D: "f2 ~@4 c3, [f4,b4] [f4,a4] [d4,f4], ~ c3@2 c3@2 ~",
  E: "f2 ~@3 [b3,e4] [c3,b3,d4], [f4,b4] [f4,a4] ~, ~ c3@2 c3@2 ~", F: "e2 b2@2 b2@2 b2, [b3,e4]",
  G: "d2 ~@4 a2, [d4,f4] [g3,c4] [g3,b3], ~ a2@2 a2@2 ~", // Dm C5 G
  H: "c2 ~@3 [f3,b3] [g2,f3,a3], [c4,f4] [b3,e4] ~, ~ g2@2 g2@2 ~", I: "c2 g2@2 g2@2 g2, [g3,b3]",
  J: "c2 ~@4 g2, [d4,f4] [b3,e4] [e4,b4], ~ g2@2 g2@2 ~", K: "c2 g2@2 g2@2 g2, [e4,g4]", L: "a#2 f3 a#3 f3 d4 f3",
  M: "a#2 f3 a#3 f3 d4@2", N: "a2 e3 a3 e3 c4 e3", O: "a2 e3 g3 e3 c4@2", P: "a2 d3 f3 d3 a#3 d3, [d4,f4]!3",
  Q: "a2 d3 f3 d3 [a#3,e4,a#4]@2, [e4,a#4]!2 ~", R: "f2 c3 e3 c3 a3 e3, [c4,e4] [c4,d4] [c4,a4]",
  S: "f2 c3 e3 c3 a3@2, [c4,e4]", T: "a#2 f3 a#3 f3 d4 a3, [f4,a4]!3", U: "a#2 f3 a#3 f3 [d4,a4,d5]@2, [a4,d5]!2 ~",
  V: "a2 e3 a3 e3 c4 e3, [e4,g4]!3", W: "a2 e3 g3 e3 c4@2, [e4,c5] [e4,g4]@2",
  X: "b2 f3 a3 f3 ~ f3, [d4,f4] [d4,g4] [d4,a4]", Y: "b2 g3 b3 f3 d4 f3, [f4,b4] [f4,c5] [f4,d5]",
  Z: "b2 f3 a3 f3 d4 a3, [f4,a4] [f4,b4] [f4,d5]", AA: "[e3 b3 e4@3 ~, e5, e4 ~@2]/2",
})).s("gm_accordion").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<~@26 A B C D E F G H I B C D J K L M@2 ~@16 A B C D E F G H I B C D J K L M@2>".pickRestart({
  A: "a#3 f4 a#4 f4 d5 f4", B: "a#3 f4 a#4 f4 d5@2", C: "a3 e4 a4 e4 c5 e4", D: "a3 e4 g4 e4 c5@2",
  E: "a3 d4 f4 d4 a#4 d4", F: "a3 d4 f4 d4 a#4@2", G: "f3 c4 e4 c4 a4 e4", H: "f3 c4 e4 c4 a4@2",
  I: "a#3 f4 a#4 f4 d5 a4", J: "b3 f4 a4 f4 d5 f4", K: "b3 g4 b4 f4 d5 f4", L: "b3 f4 a4 f4 d5 a4",
  M: "[e4 b4 e5@3 ~]/2",
})).s("gm_trumpet").gain(0.3)

// chords · glockenspiel
const glockenspiel = note(`<
  ~@26 A B C D E F G H A B C D I J K L@2 ~@16 A B C D E F G H A B C D I J K L@2
>`.pickRestart({
  A: "[f6,a6]!3", B: "[a6,d7]!3", C: "[e6,g6]!3", D: "[e6,c7] [e6,g6]@2", E: "[d6,f6]!3", F: "[e6,a#6]!3",
  G: "[c6,e6] [c6,d6] [c6,a6]", H: "[c6,e6]", I: "[d6,f6] [d6,g6] [d6,a6]", J: "[f6,b6] [f6,c7] [f6,d7]",
  K: "[f6,a6] [f6,b6] [f6,d7]", L: "[e7, e6 ~]/2",
})).s("gm_glockenspiel").gain(0.3)

// chords · piano
const piano = note(`<
  ~@18 A@2 B C A@2 D E F G H I J K L M N O P Q R S T U@2 ~@8 A@2 B C A@2 D E F G H I J K L M N O P Q R S T U@2
>`.pickRestart({
  A: "d2 ~@4 a2, f4, ~ a2@2 a2@2 ~, ~ c4 b3", B: "c2 ~@3 b3 [g2,a3], [e4,f4] e4 ~, ~ g2@2 g2@2 ~",
  C: "c2 g2@2 g2@2 g2, [b3,e4]", D: "c2 ~@4 g2, [e4,f4] e4 [e4,b4], ~ g2@2 g2@2 ~", E: "c2 g2@2 g2@2 g2, [e4,g4]",
  F: "a#2 f3 a#3 f3 d4 f3, [f4,a4]!3", G: "a#2 f3 a#3 f3 [d4,a4,d5]@2, [a4,d5]!2 ~", H: "a2 e3 a3 e3 c4 e3, [e4,g4]!3",
  I: "a2 e3 g3 e3 c4@2, [e4,c5]@8 [e4,g4]@15 ~", J: "[a2,a4] [d3,d5] [f3,f5] [d3,d5] [a#3,a#5] [d3,d5], [d4,f4]!3",
  K: "[a2,a4] [d3,d5] [f3,f5] [d3,d5] [a#3,e4,a#4,a#5]@2, [e4,a#4]!2 ~", // A D F D A#dim Edim
  L: "[f2,f4] [c3,c5] [e3,e5] [c3,c5] [a3,a5] [e3,e5], [c4,e4] [c4,d4] [c4,a4]", // F C E C A E C Csus2 …
  M: "[f2,f4] [c3,c5] [e3,e5] [c3,c5] [a3,a5]@2, [c4,e4]@23 ~", // F C E C A C
  N: "[a#2,a#4] [f3,f5] [a#3,a#5] [f3,f5] [d4,d6] [a3,a5], [f4,a4]!3", // A# F A# F D A F
  O: "[a#2,a#4] [f3,f5] [a#3,a#5] [f3,f5] [d4,a4,d5,d6]@2, [a4,d5]!2 ~", // A# F A# F D5
  P: "[a2,a4] [e3,e5] [a3,a5] [e3,e5] [c4,c6] [e3,e5], [e4,g4]!3", // A E A E C E Em
  Q: "[a2,a4] [e3,e5] [g3,g5] [e3,e5] [c4,c6]@2, [e4,c5]@8 [e4,g4]@15 ~", // A E G E C Em
  R: "[b2,b4] [f3,f5] [a3,a5] [f3,f5] d6 [f3,f5], [d4,f4] [d4,g4] [d4,a4]", // B F A F Dm G5 D5
  S: "b2 [g3,g5] [b3,b5] [f3,f5] [d4,d6] [f3,f5], [f4,b4] [f4,c5] [f4,d5]", // G B F D F Fdim F5 Dm
  T: "[b1,b3,f4] [f2,f4] [a2,f4,a4] [f2,f4] d3 [a2,a4], a4 b4 [f4,d5]", // Bdim F Dm F A Dm
  U: "[e2 [b2,b4] [e3,e5]@3 ~, e4@23 ~@25, e5 ~@2]/2", // B E
})).s("gm_piano").gain(0.3)

// other · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  ~@18 A@2 B@2 A@2 B@2 A C B@2 D E F G H I J K L M N O@2 ~@8 A@2 B@2 A@2 B@2 A C B@2 D E F G H I J K L M N O@2
>`.pickRestart({
  A: "f3", B: "e3", C: "a3", D: "a2 d3 f3 d3 a#3 d3", E: "a2 d3 f3 d3 a#3@2", F: "f2 c3 e3 c3 a3 e3",
  G: "f2 c3 e3 c3 a3@2", H: "a#2 f3 a#3 f3 d4 a3", I: "a#2 f3 a#3 f3 d4@2", J: "a2 e3 a3 e3 c4 e3",
  K: "a2 e3 g3 e3 c4@2", L: "b2 f3 a3 f3 d4 f3", M: "b2 g3 b3 f3 d4 f3", N: "b2 f3 a3 f3 d4 a3", O: "[e3 b3 e4@3 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.3)

// chords · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  ~@26 A B C D E F G H A B C D I J K L@2 ~@16 A B C D E F G H A B C D I J K L@2
>`.pickRestart({
  A: "[f4,a4]!3", B: "[a4,d5]!3", C: "[e4,g4]!3", D: "[e4,c5] [e4,g4]@2", E: "[d4,f4]!3", F: "[e4,a#4]!3",
  G: "[c4,e4] [c4,d4] [c4,a4]", H: "[c4,e4]", I: "[d4,f4] [d4,g4] [d4,a4]", J: "[f4,b4] [f4,c5] [f4,d5]",
  K: "[f4,a4] [f4,b4] [f4,d5]", L: "[e5, e4 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.3)

// bass · electric bass finger · "Electric Bass"
const bass = note("<~@30 A B C@2 D E B@2 A D@2 B ~@21 A B C@2 D E B@2 A D@2 B ~>".pickRestart({
  A: "d2", B: "e2", C: "c2", D: "f2", E: "a2",
})).s("gm_electric_bass_finger").gain(0.3)

stack(flute, clarinet, accordion, trumpet, glockenspiel, piano, acoustic_guitar_steel, electric_guitar_clean, bass)

More by Koji Kondo