Strudelify

Hello Lucky Chops Brass Band

Adele Adkins Greg Kurstin

KeyB♭ majorTempo90 bpm
0:00/0:00
// Hello Lucky Chops Brass Band — Adele Adkins Greg Kurstin
// 90 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5958391; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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 · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B C@2 ~@8 D E D E D E D E ~@2 F G F G F G F H I J K@2 L@2 M@2 N O N
  P L@2 M@2 N O N P Q@2 R@3 S N P ~ A B T@2
>`.pickRestart({
  A: "f4@3 ab4@3 ~@2", B: "eb4@3 db4@3 ~@2", C: "[f4@3 eb4@3 db4@8 ~@2]/2", D: "f4@3 db4@5", E: "eb4@3 c4@3 ~@2",
  F: "c5 ~ c5 ~ c5 ~ eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5 ~", G: "bb4 ~ bb4 c5 bb4 ~ ab4 ~ ab4 ~ ab4 ~ ab4 ~ ab4 ~",
  H: "bb4 ~ bb4 c5 bb4 ~ ab4 ~@9", I: "f4@3 eb4@3 ~@2", J: "c4@3 db4@3 ~@2", K: "[c5 ~@5 bb4 ~@5 ab4@16 ~@4]/2",
  L: "[f4!2 ab4!2 bb4!2 bb4@5 ab4@3 ~ f4]/2",
  M: "[f4@2 f4@2 ab4@2 ab4@2 bb4@2 bb4@2 bb4@10 ab4@4 ab4@2 eb5@2 c5 bb4]/2", N: "ab4 c5 ~ ab4@2 f4 ~ ab4",
  O: "ab4@2 g4@2 f4@2 eb4@4 ab4@2 eb5@2 c5 bb4", P: "ab4 g4 f4 eb4@3 ~@2",
  Q: "[~@14 eb5@5 ~ [db5,eb5] c5 db5 c5 ab4@8]/2", R: "[~@14 eb4@5 eb4 f4 eb4 ab4@26]/3", S: "~@10 ab4@2 eb5@2 c5 bb4",
  T: "[f4 ~@2 ab4 ~@2 db4@6 ~@4]/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  A B A B A B A B A B A B A B A C@3 D E F@2 D G A B H@2 ~@8 B I B I B I B I ~ J K@2 D L F@2 D G M N O@2 P Q P Q R S T U
  V W V W R S R U X@4 Y Z R AA@2 A B AB@2
>`.pickRestart({
  A: "c4@3 eb4@3 ~@2", B: "bb3@3 ab3@3 ~@2",
  C: "[bb3@6 ab3@6 ~ c4@2 c4@9 ~@4 bb3@2 bb3 bb3@3 c4 ~@7 f3@2 ab3@2 c4@2]/3",
  D: "c4@2 c4 c4@3 c4 c4@3 bb3 bb3@3 ab3@2", E: "bb3@2 c4 bb3@2 f3 ab3@2 ~@2 f3@2 ab3@2 c4@2",
  F: "[c4@4 ~@8 bb3@2 bb3 bb3@3 ab3 ~@7 f3@2 ab3@2 c4@2]/2", G: "bb3@2 c4 bb3@2 f3 ab3@2 ~@8",
  H: "[ab3@3 g3@3 f3@8 ~@2]/2", I: "ab3@3 g3@3 ~@2", J: "~@15 c4",
  K: "[c4@8 ~@4 bb3@2 bb3 bb3@3 c4 ~@7 f3@2 ab3@2 c4@2]/2", L: "bb3@2 c4 bb3@2 f3 ab3 ~@3 f3@2 ab3@2 c4@2",
  M: "ab3@3 c4@3 ~@2", N: "eb4@3 f4@3 ~@2", O: "[ab3 ~@5 g3 ~@5 f3@16 ~@4]/2", P: "c4@3 db4@3 ~@2",
  Q: "f4 ~ f4 eb4@3 ~@2", R: "c4@3 ab3@3 ~@2", S: "~@2 c4 bb3 ab3 g3@2 ~", T: "c4@3 ab3@3 ~ db4",
  U: "~@2 c4 bb3 ab3 g3@3", V: "~@4 f4!2 ab4!2", W: "bb4 ~ bb4@3 ab4@3", X: "[f4!2 ab4!2 bb4 ~ bb4@5 ab4@5]/2",
  Y: "~@9 f4 ~ eb4 db4 c4 ~ bb3", Z: "f4 ~ f4 eb4@5", AA: "[~@2 c4 bb3 ab3 g3@9 ~@2]/2",
  AB: "[c4 ~@2 eb4 ~@2 ab3@6 ~@4]/2",
})).s("gm_trumpet").gain(0.4)

// other · french horn · "Horn in F"
const french_horn = note(`<
  A B A B C D C E A B A B A B A B A B A B A B A F G H I@2 J@2 K@3 L@2 M J@2 N@3 L@2 O@2 P Q R Q R Q R Q S T H U@2 V W X
  W Y Z Y AA AB AC AB AC Y Z Y AA AD@4 AE AF Y AG AH@2 D AI@2
>`.pickRestart({
  A: "ab3@3 c4@3 ~@2", B: "g3@3 f3@3 ~@2", C: "ab3@2 bb3@2 c4@2 ab3@6 ~@2 eb3 f3", D: "g3@3 ab3 g3@2 f3@6 ~@4",
  E: "g3@2 ab3 g3@3 ab3@6 ~@4", F: "g3@3 f3@2 ab3!2 c4", G: "c4@4 bb3 ab3@2 ~@7 eb4@2",
  H: "eb4@2 c4@2 db4 c4 ab3@6 ab3@2 bb3@2", I: "[c4@3 bb3@3 ab3@8 ~@2]/2", J: "[f3!2 ab3!2 bb3!2 bb3@5 ab3@3 ~ f3]/2",
  K: "[f3@2 f3@2 ab3@2 ab3@2 bb3@2 bb3@2 bb3@10 ab3@4 ~ ab3 eb4@2 ab3@4 c4@2 ~@2 ab3@4 f3@2 ~@2 ab3@2]/3",
  L: "[ab3 g3 f3 eb3@2 ab3 eb4 ab3@2 c4 ~ ab3@2 f3@2 ~]/2", M: "ab3 g3 f3 eb3@3 ~@2",
  N: "[f3!2 ab3!2 bb3!2 bb3@5 ab3@2 ab3 eb4 ab3@2 c4 ~ ab3@2 f3 ~ ab3]/3",
  O: "[ab4@2 g4@2 f4@2 eb4@6 eb4 f4 c4@10 ~@8]/2", P: "bb3@3 c4 bb3@2 ab3@6 ~@4",
  Q: "ab3 ~ ab3 ~ ab3 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~", R: "g3 ~ g3 ~ g3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~",
  S: "g3 ~ g3 ~ g3 ~ f3 ~@3 ab3@2 ab3@2 c4@2", T: "c4@4 bb3 ab3@7 ~@2 eb4@2", U: "[c4@2 bb3 bb3@2 ab3 ab3@8 ~@2]/2",
  V: "f4@3 ab4@3 ~@2", W: "bb3 ~ bb3 ab3@3 ~@2", X: "f4@3 ab3@3 ~@2", Y: "~ c4 ~ db4@2 db4 ~ db4",
  Z: "c4 db4 eb4 bb3@3 ~@2", AA: "c4 db4 eb4 bb3@2 ~@3", AB: "~@4 f3!2 ab3!2", AC: "bb3 ~ bb3@3 ab3@3",
  AD: "[f3!2 ab3!2 bb3 ~ bb3@5 ab3@5]/2", AE: "~@9 c4 ~ bb3!2 ab3 ~ g3", AF: "bb3 ~ bb3 ab3@5",
  AG: "c4 db4 eb4 bb3@4 ~", AH: "[~@12 eb4 f4 c4@14 ~@2 eb3 f3]/2", AI: "[ab3 ~@2 c4 ~@2 f3@6 ~@4]/2",
})).s("gm_french_horn").gain(0.4)

// bass · tuba
const bass = note(`<
  A B A B A B A B A B A B A B A B A B A B A C D C A B E@2 ~@4 F G H G I G I G I G I G A J K L K M K N K O P Q R@2 F G F
  G F G F S T U T V T W T X Y Z Y AA AB AC T AD@2 A B AE@2
>`.pickRestart({
  A: "f2@3 ab2@3 ~@2", B: "eb2@3 db2@3 ~@2", C: "eb2@3 db2@5", D: "f2@3 ab2@5", E: "[f2@3 eb2@3 db2@8 ~@2]/2",
  F: "f2@3 db2@3 ~@2", G: "ab2@3 eb2@3 ~@2", H: "f2@3 db2@4 ~", I: "f2@3 db2@5", J: "eb2@3 f2 eb2@2 db2@6 ~@4",
  K: "f2 ~@5 ab2 ~@7 f2 e2", L: "eb2 ~@2 f2 eb2 ~ db2 ~@7 db2 eb2", M: "eb2 ~@2 f2 eb2 ~ db2 ~@5 c3 bb2 ab2 g2",
  N: "eb2 ~@2 f2 eb2 ~ db2 ~@7 ab2 g2", O: "eb2@2 f2 eb2@3 db2@2 ~@2 c3 ~ c3 bb2 ab2 g2", P: "f2@3 eb2@3 ~ eb2",
  Q: "c2@6 db2@6 ~@2 db2 eb2", R: "[~@2 ab2 g2 f2 ~@3 ab2 g2 f2 eb2 db2@14 ~@4 eb3 ~]/2", S: "ab2@3 eb2@2 ~@3",
  T: "f2@3 db2@3 ~ db2", U: "ab2 bb2 c3 eb2@3 ~@2", V: "ab2 bb2 c3 eb3@3 bb2 ab2", W: "ab2 bb2 c3 eb3@2 eb2 eb2@2",
  X: "ab2 bb2 c3 eb3@2 c3 bb2 ab2", Y: "f2 ~ f2 ~ db2 ~ db2 ~", Z: "ab2 ~ ab2 ~ eb2 ~ eb2 ~", AA: "ab2 ~ ab2 eb2!5",
  AB: "f2 ~@8 f3 ~ eb3 db3 c3 ~ bb2", AC: "ab2@3 ab2 ab2@2 eb2@6 bb2@2 ab2@2", AD: "[ab2 bb2 c3 eb3@2 eb2 eb2@8 ~@2]/2",
  AE: "[f2 ~@2 ab2 ~@2 db2@6 ~@4]/2",
})).s("gm_tuba").gain(0.4)

stack(trumpet, trumpet_2, french_horn, bass)