Strudelify
KeyG majorTempo80 bpm
0:00/0:00
// Ballin — Rickeytherealis
// 80 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 "Horn in F" french horn (copy of ch 3 "Alto Saxophone" alto sax); ch 8 "Mellophone" french horn (copy of ch 3 "Alto Saxophone" alto sax); ch 4 "Tenor Saxophone" tenor sax (copy of ch 9 "Baritone Horn" french horn); ch 11 "Euphonium (Treble Clef)" tuba (copy of ch 9 "Baritone Horn" french horn); ch 14 "Sousaphone" tuba (copy of ch 12 "Tuba" tuba)
// note: Transcription provider: pdmx. https://musescore.com/score/5918899; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 38 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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("<A B C D E F G H I J ~@3 J ~@14 A B C D E F G H I J>".pickRestart({
  A: "~@11 b5!3 b5@2", B: "c6@3 b5 a5@3 g5 b5@2 ~ d6!4 b5", C: "~ d6!3 b5 d6!2 b5 e6@2 ~ d6!5",
  D: "e6@3 b5 a5@3 g5 g5@2 ~ d6!5", E: "e6@3 b5 a5@3 ~@2 c6!3 b5 a5!2 g5", F: "a5@2 a5 g5 a5@2 b5@2 ~ c6@2 b5!4 g5",
  G: "a5@2 a5 g5 d6@2 b5@2 ~ c6!4 b5!2 g5", H: "a5@2 a5 g5 d6@2 b5@2 ~ d6!2 e6 ~ b5!2 a5",
  I: "~ a5!2 g5 d6@2 b5@2 ~@4 [b5,b6] [a5,a6] ~ [g5,g6]", J: "[a5,a6] ~@3",
})).s("gm_flute").gain(0.5)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<A B C D E F G H I J ~@3 J ~@14 A B C D E F G H I J>".pickRestart({
  A: "~@11 b4!3 b4@2", B: "c5@3 b4 a4@3 g4 b4@2 ~ d5!4 b4", C: "~ d5!3 b4 d5!2 b4 e5@2 ~ d5!5",
  D: "e5@3 b4 a4@3 g4 g4@2 ~ d5!5", E: "e5@3 b4 a4@3 ~@2 c5!3 b4 a4!2 g4", F: "a4@2 a4 g4 a4@2 b4@2 ~ c5@2 b4!4 g4",
  G: "a4@2 a4 g4 d5@2 b4@2 ~ c5!4 b4!2 g4", H: "a4@2 a4 g4 d5@2 b4@2 ~ d5!2 e5 ~ b4!2 a4",
  I: "~ a4!2 g4 d5@2 b4@2 ~@4 [b4,b5] [a4,a5] ~ [g4,g5]", J: "a5 ~@3",
})).s("gm_clarinet").gain(0.5)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<A B@2 C D E@2 F G H ~@3 H ~@14 A B@2 C D E@2 F G H>".pickRestart({
  A: "~@11 b4!3 b4@2", B: "[a4@6 b4@6 c5@12 e5@2 ~@2 d5!4]/2", C: "e5@3 b4 a4@3 g4 g4@2 ~ d5!5",
  D: "e5@3 b4 a4@3 g4 g4@2 ~@2 b4 a4!2 g4", E: "[a4@6 g4@6 b4@12 ~ c5!4 b4!2 g4]/2",
  F: "a3@2 a3 g3 d4@2 b3@2 ~ d5!2 e5 ~ b4!2 a4", G: "~@4 d5@2 b4@2 ~@4 b4 c5 ~ c5", H: "[c5,e5] ~@3",
})).s("gm_alto_sax").gain(0.5)

// other · french horn · "Baritone Horn"
const french_horn = note("<A B C D E F G H I J ~@3 J ~@14 A B C D E F G H I J>".pickRestart({
  A: "~@11 b3!3 b3@2", B: "c4@3 b3 a3@3 g3 b3@2 ~ d4!4 b3", C: "~ d4!3 b3 d4!2 b3 e4@2 ~ d4!5",
  D: "e4@3 b3 a3@3 g3 g3@2 ~ d4!5", E: "e4@3 b3 a3@3 g3 g3@2 ~@3 b4 a4 g4", F: "a4@2 a4 g4 a4@2 g4@6 b3!3 g3",
  G: "a3@2 a3 g3 d4@2 b3@2 ~ c4!4 b3!2 g3", H: "a3@2 a3 g3 d4@2 b3@2 ~ d4!2 e4 ~ [b3,b4]!2 [a3,a4]",
  I: "~ a4!2 g4 ~@8 [e4,b4] [f4,a4] ~ g4", J: "[a3,a4] ~@3",
})).s("gm_french_horn").gain(0.5)

// chords · trombone
const trombone = note("<~ A@2 B@2 C@2 D@2 E ~@3 E ~@3 A@2 B@2 A@2 B@2 ~@4 A@2 B@2 C@2 D@2 E>".pickRestart({
  A: "[[a3,c4,e4]@3 [g3,b3,d4]@3 [g3,c4,e4]@6 ~@2 [g3,b3,d4]@2]/2", // Am G C G
  B: "[[a3,c4,e4]@6 [g3,b3,d4]@6 [g3,b3,d4]@12 ~@4 [g3,b3,d4] [g3,c4,e4] ~ [g3,b3,d4]]/2", // Am G C G
  C: "[[a3,c4,e4]@3 [g3,b3,d4]@3 [g3,b3,e4]@6 ~@2 [g3,b3,d4]@2]/2", // Am G Em G
  D: "[[a3,c4,e4]@6 [g3,b3,d4]@6 [g3,b3,d4]@8 ~@8 [a3,c4,e4] [g3,b3,e4] ~ [a3,c4,e4]]/2", E: "[a3,c4,e4] ~@3",
})).s("gm_trombone").gain(0.5)

// bass · tuba
const bass = note("<~ A@2 B@2 C D E F C G E H C G E H C G E H C G E H C G E H ~@4 I G J K L>".pickRestart({
  A: "[[a1,a2]@3 [b1,b2]@3 [c2,c3]@6 ~@4]/2", B: "[[c2,c3]@6 [b1,b2]@6 [g1,g2]@12 ~@4 e3 [c3,d3] [f2,g2,a2,b2] e2]/2",
  C: "a2@2 ~ a2@2 ~ b2@2 ~@2 a2 b2 c3@2 ~@2", D: "~@5 a2 b2@2 c3@2 ~@2 b2 ~ b2@2",
  E: "a2@2 ~ a2@2 ~ b2@2 ~@2 b2 a2 g2@2 ~@2", F: "~@6 e2@2 a2 b2 ~ a2 ~ g2@2 ~",
  G: "c3@2 ~@3 a2 b2@2 c3@2 ~@2 b2 ~ b2@2", H: "g2@2 ~@4 e2@2 a2 b2 ~ a2 ~ g2@2 ~",
  I: "a3@2 ~ a3@2 ~ b3@2 ~@2 a2 b2 c3@2 ~@2", J: "a3@2 ~ a3@2 ~ b3@2 ~@2 b3 a3 g3@2 ~@2",
  K: "g3@2 ~@4 e3@2 a3 b3 ~ a3 ~ g3@2 ~", L: "a3 ~@3",
})).s("gm_tuba").gain(0.5)

// drums · kick
const kick = s("bd").struct("<~@5 A B A C A B A C A B A C A B A C A B A C A B A C ~@4 A B A C D>".pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x!3 ~@3", B: "x ~@2 x ~ x!2 ~ x ~@3 x ~ x ~", C: "x ~@2 x ~@2 x ~ x!2 ~ x ~ x ~@2", D: "x",
})).gain(0.5)

stack(flute, clarinet, alto_sax, french_horn, trombone, bass, kick)

More by Rickeytherealis