Strudelify
KeyG majorTempo80 bpm
0:00/0:00
// trip — Rickey C Battle Jr Curtis Trotter
// 80 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 "B♭ Trumpet" trumpet (copy of ch 2 "B♭ Clarinet" clarinet); 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 11 "Baritone Horn" french horn (copy of ch 4 "Tenor Saxophone" tenor sax); ch 12 "Euphonium" tuba (copy of ch 4 "Tenor Saxophone" tenor sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5290001; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 45 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/4)

// 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 · piccolo
const piccolo = note("<~@7 A@3 B@2 C ~@3 D ~@2 E F G H I J ~@7 K L M N O P O Q O R O S T>".pickRestart({
  A: "[~@9 b5 d6 b5 d6 e6 f#6 f#6@2 e6!2 b5 d6@2 b5@2 ~ b5!3 d6 e6 f#6 f#6@2 e6!2 b5 d6@2 b5@2 ~@8]/3",
  B: "[~@9 d6 a6!2 f#6 e6 d6 f#6@2 e6!2 b5 [b5,b6]@2 [a#5,c#6,c#7]@4 ~@2 [c#6,a#6]@4]/2", C: "[d6,f#6,b6,d7,f#7] ~@3",
  D: "[f#6,b6,d7,b7] ~@3", E: "~@12 b5!2 d6 e6",
  F: "[d6,f#6] ~ [d6,f#6] ~ [d6,f#6] ~ [d6,f#6]@2 [d6,f#6] ~ [d6,f#6] ~ [d6,f#6] ~ [d6,f#6]@2", // D
  G: "[d6,f#6] ~ [d6,f#6] ~ [d6,f#6] ~ [d6,f#6] ~ [d6,f#6] ~ e6 ~ a6@2 a6 f#6", H: "e6 ~@6 d6",
  I: "f#6@2 d6 b5 d6 b5 c#6@2 ~@4 b5!2 c#6 e6", J: "[f#6,b6,d7,f#7] ~@3",
  K: "f#6 ~ f#6 ~ f#6 ~ f#6@2 f#6 ~ f#6 ~ f#6 ~ f#6@2", L: "~@2 f#6@2 g6@2 f#6@2 f#6@2 f#6@2 a6@2 a6 f#6",
  M: "~@2 f#6 ~ f#6 ~ f#6@2 f#6 ~ f#6 ~ f#6 ~ f#6@2", N: "~ e6 d6@2 e6 d6 b5 d6 b5@4 ~@4",
  O: "~@2 d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 e6 f#6!2", P: "~@2 b6@2 b6 g6 a6@2 f#6@2 e6@4 d6 b5", Q: "~@3 e6@4 ~",
  R: "~@3 [a6,c#7]", S: "~@8 [a6,a7]@3 [g6,g7] [f#6,f#7] ~@3, ~@3 e7",
  T: "~@3 [g5,b5,d6] [b5,d6,f#6]@6 ~@2 [f#5,b5,d6,b6]@2 [f#5,b5,d6,b6]@2, ~@4 [a5,c6,e6] ~@11", // G Bm Am
})).s("gm_piccolo").gain(0.5)

// other · piccolo · soft notes
const piccolo_soft = note("<A B C D E F G H ~@37>".pickRestart({
  A: "b5@3 b5 c#6 d6 g5@8 ~ e5", B: "g5@3 ~ f#6@2 e6@2, f#5 ~@15", C: "d6@3 d6@4 ~", D: "[b5,d6]@3 [c#6,e6]@4 ~",
  E: "f#6@6 [g5,b5]@6 ~@3 g5", F: "[b5,d6]@3 [c#6,e6]@4 ~, a5 ~@15", G: "f#5@6 [g5,b5]@6 ~@3 e5",
  H: "[g5,b5]@3 ~@5, f#5 ~@15", // G
})).s("gm_piccolo").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<~@7 A@3 B@2 C ~@3 D ~@2 E F G H I J ~@7 K L M N O P O Q O R O S T>".pickRestart({
  A: "[~@9 b4 d5 b4 d5 e5 f#5 f#5@2 e5!2 b4 d5@2 b4@2 ~ b4!3 d5 e5 f#5 f#5@2 e5!2 b4 d5@2 b4@2 ~@8]/3",
  B: "[~@9 d5 a5!2 f#5 e5 d5 f#5@2 e5!2 b4 [b4,b5]@2 [a#4,c#5,c#6]@4 ~@2 [c#5,a#5]@4]/2", C: "[d5,f#5,b5,d6,f#6] ~@3",
  D: "[f#5,b5,d6,b6] ~@3", E: "~@12 b4!2 d5 e5",
  F: "[d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5]@2 [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5]@2", // D
  G: "[d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ e5 ~ a5@2 a5 f#5", H: "e5 ~@6 d5",
  I: "f#5@2 d5 b4 d5 b4 c#5@2 ~@4 b4!2 c#5 e5", J: "[f#5,b5,d6,f#6] ~@3",
  K: "f#5 ~ f#5 ~ f#5 ~ f#5@2 f#5 ~ f#5 ~ f#5 ~ f#5@2", L: "~@2 f#5@2 g5@2 f#5@2 f#5@2 f#5@2 a5@2 a5 f#5",
  M: "~@2 f#5 ~ f#5 ~ f#5@2 f#5 ~ f#5 ~ f#5 ~ f#5@2", N: "~ e5 d5@2 e5 d5 b4 d5 b4@4 ~@4",
  O: "~@2 d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 e5 f#5!2", P: "~@2 b5@2 b5 g5 a5@2 f#5@2 e5@4 d5 b4", Q: "~@3 e5@4 ~",
  R: "~@3 [a5,c#6]", S: "~@8 [a4,a5]@3 g5 [e5,e6]@4, ~@12 f#5 ~@3",
  T: "~@3 [g5,b5,d6] [b5,d6,f#6]@6 ~@2 [f#5,b5,d6,b6]@2 [f#5,b5,d6,b6]@2, ~@4 [a5,c6,e6] ~@11", // G Bm Am
})).s("gm_clarinet").gain(0.5)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<A B C D E F G H ~@37>".pickRestart({
  A: "b4@3 b4 c#5 d5 g4@8 ~ e4", B: "g4@3 ~ f#5@2 e5@2, f#4 ~@15", C: "d5@3 d5@4 ~", D: "[b4,d5]@3 [c#5,e5]@4 ~",
  E: "f#5@6 [g4,b4]@6 ~@3 g4", F: "[b4,d5]@3 [c#5,e5]@4 ~, a4 ~@15", G: "f#4@6 [g4,b4]@6 ~@3 e4",
  H: "[g4,b4]@3 ~@5, f#4 ~@15", // G
})).s("gm_clarinet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@7 A@4 B C ~@3 D ~@3 E F G H I ~@6 J K L M N O P Q R S T Q U V>".pickRestart({
  A: "[~@9 b4 d5 b4 d5 e5 f#5 f#5@2 e5!2 b4 d5@2 b4@2 ~ b4!3 d5 e5 f#5 f#5@2 e5!2 b4 d5@2 b4@2 ~ d4 a4!2 f#4 e4 d4 f#4@2 e4!2 b3 d4@2 b3@2 ~ d4 a4!2 f#4 e4 d4 ~]/4",
  B: "b4@2 d5@2 b4@2 c#5@2 f#5@3 e5 [c#5,a#5]@4, ~@8 f5 ~@3 d5 ~@3", C: "[b4,d5,f#5,b5] ~@3", D: "[d5,f#5,b5] ~@3",
  E: "[b4,d5,f#5]@3 [g4,b4,d5]@4 ~", F: "[g4,b4,d5]@3 [f#4,a4,c#5]@4 ~", G: "~@7 d5",
  H: "f#5@2 d5 b4 d5 b4 c#5@2 e5@2 e5 f#5 ~@4", I: "[b4,d5,f#5] ~@3", J: "~@9 b4 d5 b4 d5 e5 f#5!2",
  K: "f#4 ~ f#4 ~ f#4 ~ f#4@2 ~@4 [a4,a5]@3 [g4,g5]", L: "[e4,e5]@2 g5 f#5@2 ~@3, [f#4,f#5] ~@15",
  M: "~@2 f#5 ~ f#5 ~ f#5@2 f#5 ~ f#5 ~ f#5 ~ f#5@2", N: "~ e5 d5@2 e5 d5 b4 d5 b4@4 [b4,d5,f#5]@4",
  O: "~ f#5 f#5@2 [b4,d5]@3 ~", P: "b4@2 d5@2 b4@2 c#5@4 e5@4 d5 b4", Q: "~@2 d5 ~ d5 ~ d5 ~ d5 ~ d5 ~@5",
  R: "f#5@2 e5@2 d5@2 c#5@8 d5 b4", S: "~@14 d5 e5", T: "f#5!2 e5 f#5!2 d5 e5 d5@4 ~@5",
  U: "b4@6 ~@2 [a4,a5]@3 g5 e5@4, ~@12 f#5 ~@3", // A
  V: "~@3 [g4,b4,d5] [f#4,b4,d5,f#5]@6 ~@2 [b4,d5,f#5,b5]@2 [b4,d5,f#5,b5]@2, ~@4 [a4,c5,e5] ~@11", // G Bm Am
})).s("gm_alto_sax").gain(0.5)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note("<A B C D E F G H ~@37>".pickRestart({
  A: "b4@3 b4 c#5 d5 g4@8 ~ e4", B: "g4@3 ~ f#5@2 e5@2, f#4 ~@15", C: "d5@3 d5@4 ~", D: "[b4,d5]@3 [c#5,e5]@4 ~",
  E: "f#4@6 [g4,b4]@6 ~@3 g4", F: "[b4,d5]@3 [c#5,e5]@4 ~, a4 ~@15", G: "f#4@6 [g4,b4]@6 ~@3 e4",
  H: "[g4,b4]@3 ~@5, f#4 ~@15", // G
})).s("gm_alto_sax").gain(0.3)

// chords · trombone
const trombone = note("<~@3 A@5 B C B D E ~@3 E ~@3 F C F C E ~@7 B C B C B C B C B G B C H>".pickRestart({
  A: "[~@12 f#3!3 c#4@2 c#4!2 [c4,d4] c#4@2 a3@2 ~@3 f#3!4 a3@2 g3 f#3 e3 f#3@2 a3@2 ~@3 f#3!4 c#4@2 c#4!2 [c4,d4] c#4@2 a3@2 ~@3 f#3!4 a3@2 g3 f#3 e3 f#3@2 a3@2 ~@8, ~@15 c4 ~@31 c4 ~@32]/5", // Csus2
  B: "[f#3,b3,d4]@3 [g3,b3,d4]@4 ~", C: "[g3,b3,d4]@3 [f#3,a3,c#4]@4 ~", D: "[g3,b3,d4]@3 [f#3,a#3,c#4]@4 ~",
  E: "[b3,d4,f#4] ~@3", F: "[b3,d4,f#4]@3 [g3,b3,d4]@4 ~", G: "~@3 [f#3,a3,c#4]", H: "[b3,d4,f#4]@4 ~@2 [b3,d4,f#4]!2",
})).s("gm_trombone").gain(0.5)

// chords · trombone · soft notes · Bm G A
const trombone_soft = note("<~@2 [[f#3,b3,d4]@3 [g3,b3,d4]@4 ~] [[g3,b3,d4]@3 [a3,c#4,e4]@3 ~@2] ~@41>")
  .s("gm_trombone").gain(0.2)

// bass · tuba
const bass = note("<A B A B ~@3 C D E F G H I J K J L J K ~@4 M N J I J L J K ~@4 O L P Q O R S T U>".pickRestart({
  A: "b2@3 g2@4 ~", B: "g2@3 a2@4 ~", C: "~@12 b3 [b2,c3,d3,e3,f#3,g3,a3] ~@2",
  D: "b2@2 ~ f#2 b2 a2 g2@2 ~@2 g3@2 ~ g3@2 ~", E: "g2!2 ~ g2@2 g2 a2@2 ~@2 f#2@2 f#3!2 ~ f#3",
  F: "b2@3 d3 c#3 a2 g2@4 [e1,e2]@3 [f#1,f#2]@3", G: "[g1,g2]@3 [e1,e2]@3 [f#1,f#2]@4 ~@2 f#3 [d3,e3] e3 [a2,d3]",
  H: "b2@2 ~ b3@2 b3 ~ b3 b3@2 ~@2 e2 f#2 g2 f#2", I: "g2@2 ~ g2@2 g2 f#2@2 ~@2 f#3@2 f#3 [d3,e3] c#3@2",
  J: "b2@2 ~ b2@2 b2 g2@2 ~@2 g3@2 ~ f#2 g2 f#2", K: "g2@2 ~ g2@2 g2 f#2@2 ~@2 f#3@2 f#3@2 f#3@2",
  L: "g2@2 ~ g2@2 g2 f#2@2 ~@2 f#3@2 f#3 d3 e3 c#3", M: "b3@3 e3@2 f#3 g3@2 ~@2 g3@2 ~ e3!2 f#3",
  N: "g3@2 ~ g3@2 g3 f#3@2 ~@2 f#3@2 f#3 d3 e3 c#3", O: "b2@2 c#3@2 d3@2 g2@4 g3@2 ~ g3 ~ g3",
  P: "b2@2 c#3@2 d3@2 g2@4 g3@2 g3!3 ~", Q: "g2@2 ~ g2@2 g2 f#2@2 ~@2 f#3@2 f#3@2 ~@2",
  R: "~@12 f#3 [g2,a2,b2,c3,d3,e3] f#2 ~", S: "b2 c#3 d3 g2@2 g3!2 ~", T: "e3@2 ~ e3@2 e3 f#3@2 ~@4 [c#2,c#3]@4",
  U: "[b1,b2]@4 ~@2 [b1,b2,b3]!2", // B
})).s("gm_tuba").gain(0.5)

stack(piccolo, piccolo_soft, clarinet, clarinet_soft, alto_sax, alto_sax_soft, trombone, trombone_soft, bass)