Strudelify

Bonetrousle

Toby Fox

KeyE♭ majorTempo150 bpm
0:00/0:00
// Bonetrousle — Toby Fox
// 150 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2744066; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(150/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · vibraphone
const vibraphone = note("<~@20 A@4 B C D E F G H I J K D L M G N O P Q R S ~@3 T>".pickRestart({
  A: "~ g5 ~ a5 ~ g5 ~ gb5", B: "~ c5 g5 c6 eb6 ~ c6 ~", C: "b5 c6 d6 ~ c6 g5 eb5 c5", D: "d5 eb5 gb5 ~ g5 eb5 c5 g4",
  E: "b4 c5 d5 ~ c5@2 ~@2", F: "~@2 c5@2 g5@2 c6@2 eb6@2 ~ g5 bb5@2 ~@2, ~@12 a5 ~@3", G: "a5 g5 a5 ~ bb5 g5 eb5 c5",
  H: "b5 c6 d6 ~ eb6 c6 g5 eb5", I: "b5@2 a5@2 b5 [a5,b5]!2 ~ c6@4 ~@4", J: "~ eb5 c5!2 eb5 ~ ab5 ~",
  K: "g5 f5 g5 ~ c6 g5 eb5 c5", L: "b4 c5 d5 ~ c5 ~@3", M: "~ c4 g4 c5 eb5 ~ bb5 ~", N: "b4 c5 d5 ~ eb5 c5 g4 eb4",
  O: "b4@2 a4@2 b4 [a4,b4]!2 ~ c5@4 ~@4", P: "~ f5 ab5 c6 f6 ~ c6 ~", Q: "b5 c6 d6 ~ b5 g5 b5 d6",
  R: "eb6@2 ~ f6 d6@2 c6@2 c6@2 ~@2 bb5@2 ab5@2, ~@4 eb6 ~@11", S: "g5@2 ~ ab5 f5@2 ab5@2 g5@2 ~@6, ~@4 g5 ~@11",
  T: "~@3 [c5,c6]", // C
})).s("gm_vibraphone").gain(0.4)

// chords · marimba
const marimba = note("<A@11 B C D E F C D G H I@4 ~@3 J K ~@2 L M I@6 N C D E F C D G O>".pickRestart({
  A: "~ [eb4,g4] ~ [gb4,a4] ~ [eb4,g4] ~ [d4,gb4], c4!4", B: "~ [eb4,g4] ~ [gb4,a4] ~ [eb4,g4] g3@2, c4!3 ~",
  C: "~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5] ~ [ab4,c5], f3 c3 f3 c3", // Ab
  D: "~ [bb4,d5] ~ [bb4,d5] ~ [bb4,d5] ~ [bb4,d5], g3 d3 g3 d3", // Bb
  E: "~ [c5,eb5] ~ [c5,eb5] ~ [c5,eb5] ~ [c5,eb5], ab3 eb3 ab3 f3", // Cm
  F: "~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4], eb3 bb2 eb3 bb2", G: "~ [c5,eb5] ~ [c5,eb5] ab3@2 ~@2, ab3 eb3 ~@2",
  H: "f3@4 d3@3 [d5,f5] [g3,eb5,g5]@2 [f3,d5,f5]@2 [eb3,c5,eb5]@2 [d3,d5]@2", // Dm Cm Dm Cm D
  I: "~ [eb4,g4] ~ [gb4,a4] ~ [eb4,g4] ~ [d4,gb4], c3!4", J: "~@3 [d3,g3,g4,d5]", K: "[c3,g3,g4,c5] ~@3",
  L: "~@4 g4 c5 eb5 d5, ~@3 g3", M: "c5 [eb4,g4] ~ [gb4,a4] ~ [eb4,g4] ~ [d4,gb4], c3!4",
  N: "~ [eb4,g4] ~ [gb4,a4] ~ [eb4,g4] g3@2, c3!3 ~", O: "g2 b2 c3 [c4,c6]",
})).s("gm_marimba").gain(0.3)

// other · glockenspiel
const glockenspiel = note("<A@4 B C D E F G H I ~@6 J K ~@12 B C D E F G H I L M N O ~@3 P>".pickRestart({
  A: "~ c7 ~ d7 ~ c7 ~ b6", B: "~ c6 g6 c7 eb7 ~ c7 ~", C: "b6 c7 d7 ~ c7 g6 eb6 c6", D: "d6 eb6 gb6 ~ g6 eb6 c6 g5",
  E: "b5 c6 d6 ~ c6@2 ~@2", F: "~ c6 g6 c7 eb7 ~ bb6 ~", G: "a6 g6 a6 ~ bb6 g7 eb7 c7", H: "b6 c7 d7@2 eb7 c7 g6 eb6",
  I: "b6 a6 b6 ~ c7 ~@3", J: "~@6 d7 eb7", K: "d7 c7 b6 ab6 g6 ~@3", L: "~ f6 ab6 c7 f7 ~ c7 ~",
  M: "b6 c7 d7 ~ b6 g6 b6 d7", N: "eb7@2 ~ f7 d7@2 c7@2 c8@2 ~@2 bb7@2 ab7@2, ~@4 eb7 ~@11",
  O: "g7@2 ~ ab7 f7@2 ab7@2 g7@2 ~@6, ~@4 g7 ~@11", P: "~@3 [c7,c8]",
})).s("gm_glockenspiel").gain(0.3)

// other · glockenspiel · soft notes
const glockenspiel_soft = note("<~@24 A B C D E F G H ~@16>".pickRestart({
  A: "~ c6 g6 c7 eb7 ~ c7 ~", B: "b6 c7 d7 ~ c7 g6 eb6 c6", C: "d6 eb6 gb6 ~ g6 eb6 c6 g5", D: "b5 c6 d6 ~ c6@2 ~@2",
  E: "~ c6 g6 c7 eb7 ~ bb6 ~", F: "a6 g6 a6 ~ bb6 g7 eb7 c7", G: "b6 c7 d7@2 eb7 c7 g6 eb6", H: "b6 a6 b6 ~ c7 ~@3",
})).s("gm_glockenspiel").gain(0.2)

stack(vibraphone, marimba, glockenspiel, glockenspiel_soft)

More by Toby Fox