Strudelify

A Song for Japan

Steven Verhelst

KeyB♭ majorTempo76 bpm
0:00/0:00
// A Song for Japan — Steven Verhelst
// 76 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4854493; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(76/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · trombone · "Tenor Trombone"
const trombone = note(`<
  ~@15 A B C D E F G H I ~@7 A J C K E L M ~ N O P Q R ~ S T U@2 ~@2 V W ~@3 X Y Z AA AB AC AD AE AF P Y AG AH AI AJ AK
  AL AM ~@7 AN AO AP@2 AQ ~ AR AS AT AU AV AW ~ AN AX AY AZ BA@2
>`.pickRestart({
  A: "~@3 f3", B: "d4@5 c4 d4 f3", C: "g3@3 g3", D: "eb4@5 d4 eb4 g3", E: "a3@5 a3 bb3 c4", F: "f4@5 eb4 d4 a3",
  G: "c4@2 d4 bb3@7 a3@2 bb3@2 d4@2", H: "g4@3 f4 eb4@2 bb3@2", I: "c4@3 ~", J: "d4@5 c4 f4 a3", K: "eb4@5 d4 g4 bb3",
  L: "f4@5 eb4 d4 c4", M: "c4@2 d4 bb3@5 ~@8", N: "~@3 d4", O: "a4 g4@2 f4", P: "c4@3 c4", Q: "eb4 gb4 f4 c4",
  R: "d4@3 ~", S: "~@7 d4", T: "d4@2 eb4 c4@7 c4@2 d4@2 bb3@2", U: "[f4@7 ~]/2", V: "~ ab3@2 c4@2 ab3 f3 eb3",
  W: "db3@3 ~", X: "~@3 c4", Y: "f4@3 c4", Z: "c4 bb3 a3 bb3", AA: "g4@3 bb3", AB: "d4 c4@2 c4", AC: "e4@3 c4",
  AD: "d4 c4 bb3 a3", AE: "g3 bb3 d4 f4", AF: "c4@8 ~@2 c4!2 c4@2 c4@2", AG: "c4 bb3@2 a3@2 bb3@2 c4",
  AH: "bb3 c4 d4 e4 f4 d4 c4 bb3", AI: "d4 c4@3 g3 a3 bb3 c4", AJ: "e4@3 d4 c4@2 g3@2", AK: "d4@4 d4 e4 d4 c4",
  AL: "eb4@2 d4 c4 bb3@4", AM: "c4", AN: "~@3 eb3", AO: "eb4@4 eb4@3 f4", AP: "[eb4@2 db4@2 ab4@6 f4@2 eb4@3 f4]/2",
  AQ: "eb4@3 ~", AR: "~@5 ab3 bb3 c4", AS: "eb4@3 f4 db4@4", AT: "f3 bb3@2 g3 c4@3 ~", AU: "~@6 f3 g3",
  AV: "c4 bb3@2 ab3", AW: "ab3@3 ~", AX: "ab3@5 g3 ab3 c4", AY: "db4 eb3", AZ: "eb3", BA: "c3",
})).s("gm_trombone").gain(0.3)

// other · trombone · "Tenor Trombone"
const trombone_2 = note(`<
  ~@16 A@2 B@2 C@2 D E ~@7 F G H I J K L ~ M N O P Q ~@2 R S@2 T U ~@5 V W X Y Z AA AB AC AD AE W AF AG AH AA AI AJ AK
  ~@7 AL AM AN AO AP AQ AR AS AT ~ AU AV ~@4 AW AX@2
>`.pickRestart({
  A: "bb3/2", B: "c4/2", C: "d4/2", D: "bb3", E: "a3@3 ~", F: "~@3 f3", G: "d4@5 c4 f4 a3", H: "g3@3 g3",
  I: "eb4@5 d4 g4 bb3", J: "a3@5 a3 bb3 c4", K: "f4@5 eb4 d4 c4", L: "c4@2 d4 bb3@5 ~@8", M: "~@3 d4", N: "d4",
  O: "g3@3 bb3", P: "a3@3 f3", Q: "bb2@3 ~", R: "g3 bb3@2 g3", S: "[c4@7 ~]/2", T: "~@7 f4", U: "f4@2 gb4 eb4@9 ~@4",
  V: "~@3 c4", W: "c4@3 a3", X: "f3@3 f3", Y: "d4@3 g3", Z: "g3@5 e3 f3 g3", AA: "c4@5 bb3 a3 e3",
  AB: "g3@2 a3 f3@7 e3@2 f3@2 c3@2", AC: "d3@3 f3 bb3@2 a3@2", AD: "g3@8 ~@2 f3!2 g3@2 f3@2", AE: "g3@3 c4",
  AF: "f3@12 d3 e3 ~ f3", AG: "g3 a3 bb3 c4 d4 bb3@2 g3", AH: "g3@4 a3 g3 ~ f3 f3@2 e3@2 f3@2 g3@2",
  AI: "g3@2 a3 f3@9 ~@2 g3@2", AJ: "bb3@2 bb3 ab3 gb3 f3 c3 bb3", AK: "a3", AL: "~@3 eb3", AM: "c4@5 bb3 c4 eb4",
  AN: "db4@2 db4 eb4", AO: "f4 db4@2 bb3", AP: "bb3 ab3@2 eb3", AQ: "c4@4 ab3@3 f4", AR: "eb4 db4 c4@2",
  AS: "f3 eb3 f3 bb3 f3@2 bb3 c4", AT: "db4@2 c4 bb3 eb3@3 ~", AU: "~ e3", AV: "eb3@3 ~", AW: "eb3", AX: "c3",
})).s("gm_trombone").gain(0.4)

// other · trombone · "Tenor Trombone"
const trombone_3 = note(`<
  ~@16 A B C A D E@2 F ~@7 G H@2 I@4 J K ~@3 L M N O P@2 ~@3 Q R S T@2 U V W X Y Z AA AB AC AD AE AF AG AH AI AJ A ~@7
  AK AL AM AN AO AP AQ AR AS AT@2 AU AV AW AV AW AX@2 AY
>`.pickRestart({
  A: "f3", B: "eb3", C: "g3", D: "a3", E: "g3/2", F: "f3@3 ~", G: "~@3 f3", H: "[c4 bb3 a3 f3@2 eb3@2 f3]/2",
  I: "[d4@2 c4@2 bb3@2 g3@4 f3@2 g3@2 a3@4 c4@2 bb3@2 a3@4 g3@3 a3 bb3 d4]/4", J: "g4@3 f4 eb4@2 bb3@2", K: "d4@3 ~",
  L: "c4 bb3 a3 f3", M: "d4@5 c4 d4 eb4", N: "f4@2 c4@2 bb3@2 ~ d4", O: "d4@2 eb4 c4@7 c4@2 d4@2 bb3@2",
  P: "[f4@7 ~]/2", Q: "~@7 eb4", R: "eb4@2 f4 db4@7 f3@2 bb3@2 db4@2", S: "db4@2 eb4 b3@11 bb3@2", T: "[bb3 a3@2 ~]/2",
  U: "g4 f4@2 e4@2 d4@2 c4", V: "c4 bb3 a3 bb3", W: "a4 g4@2 f4@2 e4@2 bb3", X: "d4 c4@2 c4",
  Y: "bb4 a4@2 g4@2 f4@2 e4", Z: "d4 c4 bb3 a3", AA: "c4 bb3@2 c4@2 d4@2 f4", AB: "~ g3 c4 d4@2 c4 g3 f4",
  AC: "e4@3 c4", AD: "a3@5 bb3 c4 e3", AE: "f3 g3 ~ a3 bb3 a3 ~ c4 bb3 a3 ~ f3 d3 e3 ~ f3", AF: "g3@3 a3 bb3@2 f3@2",
  AG: "g3@4 f3 e3 f3 g3", AH: "c4@2 a3 bb3 c4 d4 c4 bb3", AI: "a3@4 a3 bb3 ~ c4 bb3 c4 ~ a3 g3@2 f3@2",
  AJ: "g3@3 f3 f3@2 eb3@2", AK: "~@3 eb3", AL: "ab3 eb3 ~ f3 g3 ab3 ~ bb3 g3 bb3 ~ ab3 g3 f3 ~ eb3",
  AM: "f3 g3 ~ ab3 bb3 ab3 ~ bb3 c4 bb3 ~ ab3 bb3@2 c4@2", AN: "eb4 db4 c4 bb3 ab3 g3 f3 g3", AO: "g3@2 f3 eb3",
  AP: "f4 eb4 db4 c4 bb3 ab3 g3 ab3", AQ: "g3@2 ab3 g3 eb3@2 ~@2", AR: "db4 c4 bb3 f3", AS: "f3 bb3@2 g3 c4@2 ab3 bb3",
  AT: "[eb4@3 db4]/2", AU: "c4@3 ~", AV: "~ c4@3", AW: "db4", AX: "ab3", AY: "c3",
})).s("gm_trombone").gain(0.4)

// other · trombone · "Tenor Trombone"
const trombone_4 = note(`<
  ~@16 A B C D E F G H ~@7 I J K L M N O P Q ~@3 I R S T U@2 ~@3 V W X Y@2 Z AA AB AC AD AE@2 AF AG AH AI AJ AK AL AM AN
  AO ~@8 AP AQ@2 AR AS@2 ~ AT ~ AU AV AW AX AW AX G@2 C
>`.pickRestart({
  A: "bb2", B: "eb3 ~", C: "c3", D: "f3 eb3", E: "d3 f3", F: "g3 f3", G: "eb3", H: "f3@3 ~", I: "~@3 f3", J: "f3@3 d3",
  K: "bb2 eb3", L: "g3@3 eb3", M: "c3 f3", N: "f3@2 f3 d3", O: "d3@5 a3 bb3 d4", P: "d4@2 eb4 c4@9 bb3@4", Q: "a3@3 ~",
  R: "bb3@4 a3@3 bb3", S: "c4 a3@2 g3", T: "g3 bb3@2 g3", U: "[c4@7 ~]/2", V: "~@7 c4",
  W: "c4@3 bb3@7 f3@2 bb3@2 ab3@2", X: "gb3@3 f3 eb3 f3 gb3 bb3", Y: "[f3@3 ~]/2", Z: "c4@2 c4 f3", AA: "f3@3 f3",
  AB: "d4@2 d4 g3", AC: "g3@3 g3", AD: "e4@2 g3 bb3", AE: "[a3@2 g3 f3@2 a3 g3 bb3]/2", AF: "~ g3 c4 d4@2 c4 g3 f4",
  AG: "e4@3 c4", AH: "c4 a3 e4 a3", AI: "c4 bb3@2 a3@2 bb3@2 c4", AJ: "bb3@5 c4 d4 f4", AK: "e4@4 f3 e3 f3 g3",
  AL: "c4 a3 ~ bb3 c4 d4 ~ e4 c4@2 d4@2 c4@2 bb3@2", AM: "a3@4 a3 bb3 ~ c4 bb3 c4 ~ a3 g3@2 f3@2",
  AN: "g3@3 f3 f3@2 bb3@2", AO: "a3", AP: "c4@5 bb3 c4 eb4", AQ: "[eb4@2 db4@2 c4@6 db4@2 eb4@3 f4]/2", AR: "eb4@3 ~",
  AS: "[ab3@4 g3@2 db4 c4@3 bb3@2 ab3@2 ~@2]/2", AT: "db4@2 c4 bb3 ab3@3 ~", AU: "~ ab3", AV: "ab3@3 ~", AW: "~ ab3@3",
  AX: "ab3",
})).s("gm_trombone").gain(0.4)

// other · trombone · "Tenor Trombone"
const trombone_5 = note(`<
  ~@31 A B C D E F G H I ~@3 A J K L M N O ~@7 P Q R S T U V W X Y Z AA AB AC AD AE AF ~@8 AG AH AI AJ AK AL AM AN ~ AO
  AP AQ AF AQ AR AS@2 AT
>`.pickRestart({
  A: "~@3 f3", B: "f3@3 d3", C: "bb2 eb3", D: "g3@3 eb3", E: "c3 f3", F: "f3@2 f3 d3", G: "d3@3 f3", H: "c4 bb3@2 eb3",
  I: "a3@3 ~", J: "g3@4 f3@3 g3", K: "a3@2 f3 eb3 d3@4", L: "d3 g3@2 e3", M: "bb3", N: "a3@3 f3",
  O: "c4@2 db4 bb3@9 ~@4", P: "a3@2 g3 f3", Q: "d3@3 d3", R: "bb3@2 bb3 d3", S: "e3@3 e3", T: "c4@2 a2 c3",
  U: "d3 d3@2 d3", V: "d3 bb2", W: "c4@12 c4@2 c4!2", X: "c4@3 c4", Y: "a3 f3 c4 f3",
  Z: "f3 g3 ~ a3 bb3 a3 ~ c4 bb3 a3 ~ f3 d3 e3 ~ f3", AA: "bb3 c4 bb3 a3 g3@2 f3@2", AB: "g3@3 e3",
  AC: "e3@3 g3 f3 bb3 a3 e3", AD: "g3 f3@2 e3", AE: "eb3@2 bb3 ab3 gb3 f3 gb3@2", AF: "f3", AG: "ab3 eb3", AH: "f3 ab3",
  AI: "ab3@2 ab3 bb3", AJ: "g3@2 f3 ~", AK: "f3@2 g3 f3", AL: "eb3 g3 ab3 ~", AM: "~@6 bb3 ab3",
  AN: "g3@2 eb3@2 f3@3 ~", AO: "~ e3", AP: "eb3@3 ~", AQ: "~ eb3@3", AR: "db4", AS: "c3", AT: "ab2",
})).s("gm_trombone").gain(0.4)

// bass · trombone · "Bass Trombone"
const bass = note(`<
  ~@8 A B C D E F G H ~@16 I J K L M N O P ~@3 Q R S T U@2 ~@8 V W X Y Z AA AB AC AD AE W AF Y AG AH AI AJ ~@8 AK AL AM
  AN AO AP AQ AR ~@2 AS AT AU AT AV AU@3
>`.pickRestart({
  A: "~ bb2 ~ c3 db3 f3 ~ bb3 a3@2 gb3@2 f3@2 eb3@2", B: "eb3@2 f3 db3@7 db3@2 eb3@2 f3@2",
  C: "gb3@4 ab3@2 bb3@2 a3@3 bb3@2 c4@3", D: "f3@5 eb3 db3 c3", E: "eb3@2 f3 db3@2 eb3 f3 bb3",
  F: "a3@2 c4 f3@2 e3 f3 db4", G: "c4 bb3 f3 db3 bb2@2 c3@2", H: "f3 ~", I: "bb2@3 d3", J: "eb3@2 eb3 d3",
  K: "c3@3 eb3", L: "f3@2 f3 eb3", M: "d3@2 d3 f3", N: "g3@2 g3 f3", O: "eb3@4 bb2@3 c3", P: "d3@3 ~",
  Q: "~@4 bb2 c3 a2 bb2", R: "g2 f2 eb2 d2 eb2@2 eb3@2", S: "d3 a2@2 bb2 g2@2 f3@2", T: "e3@2 eb3 e3",
  U: "[f3 c4@2 bb3 f3@10 ~@2]/2", V: "f3 f3@2 a2", W: "bb2@2 bb2 a3", X: "g3 g3@2 bb2", Y: "c3@2 c3 bb3",
  Z: "a3@2 a2 c3", AA: "d3 d3@2 d3", AB: "d3 bb2", AC: "g3@12 g3@2 g3!2", AD: "g3@3 c4", AE: "f3@3 g3 a3@2 a2@2",
  AF: "g3@3 a3 bb3@2 bb2@2", AG: "a3@3 bb3 a3 g3 f3 c3", AH: "d3@2 d3 c3", AI: "bb2@2 bb3 ab3 gb3 f3 eb3@2", AJ: "f3",
  AK: "eb3 c3", AL: "db3 f3", AM: "f3@2 eb3 db3", AN: "c3@2 f3 eb3", AO: "db3@2 eb3 db3", AP: "c3 eb3 f3 ~",
  AQ: "~@3 f3", AR: "eb3@2 db3@2 c3@3 ~", AS: "ab2@3 ~", AT: "~ ab2@3", AU: "ab2", AV: "ab3",
})).s("gm_trombone").gain(0.3)

// bass · trombone · "Bass Trombone"
const bass_2 = note(`<
  ~@23 A B C D E F G H I J K L M N O P Q ~@3 R S T U V@2 ~@8 W X Y Z AA AB AC AD AE AF X AG Z AH AI AJ AK ~@8 AL AM AN
  AO AP AQ AR AS ~@2 AT ~ AU ~ AU AV@2 AW
>`.pickRestart({
  A: "~@3 f3", B: "bb2 f3 c4 bb3 eb4 d4 bb3 c4", C: "bb3 a3 f3 eb3 f3@2 bb3 a3", D: "g3@2 f3@2 eb3@2 d3 a2",
  E: "g2@8 g3@2 f3@2 eb3 d3 ~ bb2", F: "eb2@4 f2@2 c3 f3", G: "a3 bb3 d3 eb2@3 ~@2", H: "~ d3 eb3 f3 c4@4",
  I: "f2 c3 g3 f3@3 ~@2", J: "bb1@3 d2", K: "eb2@2 eb2 d2", L: "c2@3 eb2", M: "f2@2 f2 eb2", N: "d2@2 d2 f2",
  O: "g2@2 g2 f2", P: "eb2@4 bb1@3 c2", Q: "d2@3 ~", R: "~@4 bb1 c2 a1 bb1", S: "g1 f2 eb2 d2 eb2@2 eb2@2",
  T: "d2 a1@2 bb1 g1@2 f2@2", U: "e2@2 eb2 e2", V: "[f2 c3@2 bb2 f3@10 ~@2]/2", W: "f2 f2@2 a1", X: "bb1@2 bb2 a2",
  Y: "g2 g2@2 bb1", Z: "c2@2 c3 bb2", AA: "a2@2 a1 c2", AB: "d2 d2@2 d2", AC: "g2 bb2", AD: "c3@12 c3@2 c3!2",
  AE: "c3@3 c3", AF: "f2@3 g2 a2@2 a1@2", AG: "g2@3 a2 bb2@2 bb1@2", AH: "a2@3 bb2 a2 g2 f2 c2", AI: "d2@2 d2 c2",
  AJ: "bb1@2 bb2 ab2 gb2 f2 eb2@2", AK: "f2", AL: "eb2 c2", AM: "db2 f2", AN: "f2@2 eb2 db2", AO: "c2@2 f2 eb2",
  AP: "db2@2 eb2 db2", AQ: "c2 eb2 f2 ~", AR: "~@6 bb2 ab2", AS: "g2@2 eb2@2 f2@3 ~", AT: "ab1@3 ~", AU: "~ ab2",
  AV: "ab2", AW: "ab1",
})).s("gm_trombone").gain(0.3)

stack(trombone, trombone_2, trombone_3, trombone_4, trombone_5, bass, bass_2)

More by Steven Verhelst