Strudelify

Call My Dad- For Trumpet Choir

AJR

KeyD majorTempo136 bpm
0:00/0:00
// Call My Dad- For Trumpet Choir — AJR
// 136 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5579601; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 80 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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 · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B C@2 D@4 E@3 F G H@3 ~ I J I K L M N O L M N P Q R@3 S T@2 U V W@2 X Y Z@2 AA@4 AB@2 AC AD AE@4 AF@5 AG@4 AH@3 AI
  AJ AK@6 AL@2 AM@2
>`.pickRestart({
  A: "~@2 e4@6 e4@6 e4@9 ~", B: "e4 f4@2 f4@2 e4@3", C: "[e4@3 ~ f4@6 e4@6 c4@6 c4@6 c4@6 ~@14]/2",
  D: "[~@5 e4@6 e4@6 e4@9 ~ e4@3 f4@6 f4@6 e4@9 e4@3 f4@6 ~ e4@6 b3@7 b3@7 e4@6 ~@9]/4",
  E: "[~@10 e4@6 e4@6 ~ e4@9 e4@3 f4@6 f4@6 e4@9 ~ e4@3 f4@6 e4@6]/3", F: "c4!3 ~", G: "~@13 e4@6 e4@5",
  H: "[~ e4@9 ~ e4@3 f4@6 f4@6 e4@9 e4@3 ~ f4@6 e4@6 b3@7 b3@7 ~ e4@6]/3", I: "g4!4", J: "g4 ~ g4!2", K: "g4!2",
  L: "e4", M: "f4 c5", N: "d5 g4", O: "a4@2 ~ e4", P: "a4 ~", Q: "g4@7 ~", R: "[~ a4@3 g4@3 c5@6 ~ e4@4 ~@4 c5@2]/3",
  S: "c5 c5@2 a4@2 ~@2 g4", T: "[g4@2 g4 b4@2 g4@4 ~@7]/2", U: "e4@6 e4@6 e4@9 ~ e4@2", V: "~ f4@6 f4@6 e4@9 e4@2",
  W: "[~ f4@6 ~ e4@6 c4@6 c4@6 c4@6 ~@16]/2", X: "~ e4@2 e4@2 e4@3", Y: "~ e4@3 f4@6 f4@6 e4@8",
  Z: "[~ e4@3 e4@6 ~ e4@6 d4@6 d4@8 e4@6 ~@11]/2",
  AA: "[~@8 e4@6 e4@6 e4@9 ~ e4@3 f4@6 f4@6 e4@9 e4@3 f4@6 ~ e4@6 c4@6 c4@6 c4@6 ~@8]/4",
  AB: "[~@11 e4@6 e4@6 e4@9 e4@3 ~ f4@6 f4@6]/2", AC: "e4@3 e4 f4@2 e4@2", AD: "~ d4@6 d4@6 ~ e4@8 ~@2",
  AE: "[~@21 g4@6 g4@6 g4@6 g4@6 g4@6 ~@6 g4@6 g4@6 g4@6 ~ g4@6 g4@7 g4@7]/4",
  AF: "[~ g4@15 g4@16 e4@24 f4@12 c5@12 d5@12 g4@12 a4@12 ~@4]/5", AG: "[~ e4@3 e4@12 f4@6 c5@6 d5@6 g4@6 a4@6 ~@2]/4",
  AH: "[~@8 g4@21 ~@6 a4@9 g4@9 c5@18 ~]/3", AI: "~ e4@6 ~@5", AJ: "~@2 [a4,c5]@6 [a4,c5]@3 [a4,c5]@6 a4@6 ~",
  AK: "[~@5 g4@3 g4@6 g4@3 b4@6 ~@9 d4@9 e4@12 ~@6 c5@6 c5@6 c5@3 c5@6 c5@6 ~@3 c5@3 c5@6 c5@3 e5@6 e5@3 d5@3 e5@12 e5@6 ~@13, ~@23 f4@18 ~@103]/6",
  AL: "[~@4 c5@7 c5@3 c5@7 a4@7 ~@8 g4@4 g4@8]/2", AM: "[~ g4@5 b4@10 g4@25 ~@7]/2",
})).s("gm_trumpet").gain(0.25)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  A B C@2 D@4 E@3 F G H@3 ~ I J I K L M N O L M N P Q R@3 S T@2 U V W@2 X Y Z@2 AA@4 AB@2 AC AD AE@4 AF@5 AG@4 AH@3 AI
  AJ AK@6 AL@2 AM@2
>`.pickRestart({
  A: "~@2 c4@6 c4@6 c4@9 ~", B: "c4 c4@2 c4@2 c4@3", C: "[c4@3 ~ c4@6 c4@6 g3@6 g3@6 c4@6 ~@14]/2",
  D: "[~@5 c4@6 c4@6 c4@9 ~ c4@3 c4@6 c4@6 c4@9 c4@3 c4@6 ~ c4@6 g3@7 g3@7 c4@6 ~@9]/4",
  E: "[~@10 c4@6 c4@6 ~ c4@9 c4@3 c4@6 c4@6 c4@9 ~ c4@3 c4@6 c4@6]/3", F: "c4!3 ~", G: "~@13 c4@6 c4@5",
  H: "[~ c4@9 ~ c4@3 c4@6 c4@6 c4@9 c4@3 ~ c4@6 c4@6 b3@7 b3@7 ~ c4@6]/3", I: "d4!4", J: "d4 ~ d4!2", K: "d4!2",
  L: "c4", M: "c4 g4", N: "a4 d4", O: "e4@2 ~ c4", P: "e4 ~", Q: "e4@7 ~", R: "[~ f4@3 d4@3 a4@6 ~ c4@4 ~@4 f4@2]/3",
  S: "f4 f4@2 f4@2 ~@2 d4", T: "[d4@2 d4 d4@2 e4@4 ~@7]/2", U: "c4@6 c4@6 c4@9 ~ c4@2", V: "~ c4@6 c4@6 c4@9 c4@2",
  W: "[~ c4@6 ~ c4@6 c4@6 c4@6 c4@6 ~@16]/2", X: "~ c4@2 c4@2 c4@3", Y: "~ c4@3 c4@6 c4@6 c4@8",
  Z: "[~ c4@3 c4@6 ~ c4@6 b3@6 b3@8 c4@6 ~@11]/2",
  AA: "[~@8 c4@6 c4@6 c4@9 ~ c4@3 c4@6 c4@6 c4@9 c4@3 c4@6 ~ c4@6 c4@6 c4@6 c4@6 ~@8]/4",
  AB: "[~@11 c4@6 c4@6 c4@9 c4@3 ~ c4@6 c4@6]/2", AC: "c4@3 c4 c4@2 c4@2", AD: "~ b3@6 b3@6 ~ c4@8 ~@2",
  AE: "[~@21 d4@6 d4@6 d4@6 d4@6 d4@6 ~@6 d4@6 d4@6 d4@6 ~ d4@6 d4@7 d4@7]/4",
  AF: "[~ d4@15 d4@16 c4@24 c4@12 g4@12 a4@12 d4@12 e4@12 ~@4]/5", AG: "[~ c4@3 c4@12 c4@6 g4@6 a4@6 d4@6 e4@6 ~@2]/4",
  AH: "[~@8 e4@21 ~@6 f4@9 d4@9 a4@18 ~]/3", AI: "~ c4@6 ~@5", AJ: "~@2 f4@6 f4@3 f4@6 f4@6 ~",
  AK: "[~@5 d4@3 d4@6 d4@3 d4@6 c4@30 ~@6 g4@6 g4@6 g4@3 g4@6 g4@6 ~@3 c5@3 c5@6 c5@3 c5@6 c5@3 c5@3 c5@12 c5@6 ~@13]/6",
  AL: "[~@4 f4@7 f4@3 f4@7 f4@7 ~@8 d4@4 d4@8]/2", AM: "[~ d4@5 d4@10 e4@25 ~@7]/2",
})).s("gm_trumpet").gain(0.25)

// other · trumpet · "B♭ Trumpet"
const trumpet_3 = note(`<
  A B C@2 D@4 E@3 F G H@3 ~ I J I K L M N O L M N P Q R@2 S T U@2 V W X@2 Y Z AA@2 AB@4 AC@2 AD AE AF@4 AG@5 AH@4 AI@3 ~
  AJ AK@6 AL@2 AM@2
>`.pickRestart({
  A: "~@2 c5@6 c5@6 c5@9 ~", B: "c5 c5@2 c5@2 c5@3", C: "[c5@3 ~ c5@6 c5@6 c5@6 c5@6 c5@6 ~@14]/2",
  D: "[~@5 c5@6 c5@6 c5@9 ~ c5@3 c5@6 c5@6 c5@9 c5@3 c5@6 ~ c5@6 b4@7 b4@7 c5@6 ~@9]/4",
  E: "[~@10 c5@6 c5@6 ~ c5@9 c5@3 c5@6 c5@6 c5@9 ~ c5@3 c5@6 c5@6]/3", F: "c5!3 ~", G: "~@13 c5@6 c5@5",
  H: "[~ c5@9 ~ c5@3 c5@6 c5@6 c5@9 c5@3 ~ c5@6 c5@6 b4@7 b4@7 ~ c5@6]/3", I: "b3!4", J: "b3 ~ b3!2", K: "b3!2",
  L: "g3", M: "a3 e4", N: "f4 b3", O: "c4@2 ~ g3", P: "c4 ~", Q: "c4@7 ~", R: "[~ c4@3 b3@3 e4@6 ~@3]/2", S: "~@3 c4",
  T: "c4 c4@2 c4@2 ~@2 b3", U: "[b3@2 b3 b3@2 c4@4 ~@7]/2", V: "c5@6 c5@6 c5@9 ~ c5@2", W: "~ c5@6 c5@6 c5@9 c5@2",
  X: "[~ c5@6 ~ c5@6 c5@6 c5@6 c5@6 ~@16]/2", Y: "~ c5@2 c5@2 c5@3", Z: "~ c5@3 c5@6 c5@6 c5@8",
  AA: "[~ c5@3 c5@6 ~ c5@6 g4@6 g4@8 a4@6 ~@11]/2",
  AB: "[~@8 c5@6 c5@6 c5@9 ~ c5@3 c5@6 c5@6 c5@9 c5@3 c5@6 ~ c5@6 c5@6 c5@6 c5@6 ~@8]/4",
  AC: "[~@11 c5@6 c5@6 c5@9 c5@3 ~ c5@6 c5@6]/2", AD: "c5@3 c5 c5@2 c5@2", AE: "~ b4@6 b4@6 ~ c5@8 ~@2",
  AF: "[~@21 b3@6 b3@6 b3@6 b3@6 b3@6 ~@6 [f3,b3]@6 [f3,b3]@6 [f3,b3]@6 ~ [f3,b3]@6 [f3,b3]@7 [f3,b3]@7]/4", // Fdim
  AG: "[~ [f3,b3]@15 [f3,b3]@16 ~@12 g3@12 a3@12 e4@12 f4@12 b3@12 c4@12 ~@4]/5", // Fdim
  AH: "[~ g3@3 g3@12 a3@6 e4@6 f4@6 b3@6 c4@6 ~@2]/4", AI: "[~@8 c4@21 ~@6 c4@9 b3@9 e4@18 ~]/3",
  AJ: "~@2 c4@6 c4@3 c4@6 c4@6 ~",
  AK: "[~@5 b3@3 b3@6 b3@3 b3@6 a3@18 g3@12 ~@6 e4@6 e4@6 e4@3 e4@6 e4@6 ~@3 a4@3 a4@6 a4@3 b4@6 a4@3 a4@3 a4@12 g4@6 ~@13]/6",
  AL: "[~@4 c4@7 c4@3 c4@7 c4@7 ~@8 b3@4 b3@8]/2", AM: "[~ b3@5 b3@10 c4@25 ~@7]/2",
})).s("gm_trumpet").gain(0.25)

// other · trumpet · "B♭ Trumpet"
const trumpet_4 = note(`<
  ~@8 A@3 B C D@3 ~ E F E G H I J K H I J L M N@2 O P Q@2 R S T@2 U V W@2 X@4 Y@2 Z AA AB@4 AC@5 AD@4 AE@3 ~ AF AG@6
  AH@2 AI@2
>`.pickRestart({
  A: "[~@10 g3@6 g3@6 ~ g3@9 g3@3 a3@6 a3@6 g3@9 ~ g3@3 a3@6 g3@6]/3", B: "g3!3 ~", C: "~@13 g3@6 g3@5",
  D: "[~ g3@9 ~ g3@3 a3@6 a3@6 g3@9 g3@3 ~ a3@6 g3@6 g3@7 g3@7 ~ g3@6]/3", E: "g3!4", F: "g3 ~ g3!2", G: "g3!2",
  H: "e3", I: "f3 c4", J: "d4 g3", K: "c4@2 ~ e3", L: "a3 ~", M: "g3@7 ~", N: "[~ a3@3 b3@3 c4@6 ~@3]/2", O: "~@3 a3",
  P: "a3 a3@2 a3@2 ~@2 g3", Q: "[g3@2 g3 g3@2 c4@4 ~@7]/2", R: "g3@6 g3@6 g3@9 ~ g3@2", S: "~ a3@6 a3@6 g3@9 g3@2",
  T: "[~ a3@6 ~ g3@6 g3@6 g3@6 g3@6 ~@16]/2", U: "~ g3@2 g3@2 g3@3", V: "~ g3@3 a3@6 a3@6 g3@8",
  W: "[~ g3@3 c4@6 ~ c4@6 b3@6 b3@8 a3@6 ~@11]/2",
  X: "[~@8 g3@6 g3@6 g3@9 ~ g3@3 a3@6 a3@6 g3@9 g3@3 a3@6 ~ g3@6 g3@6 g3@6 g3@6 ~@8]/4",
  Y: "[~@11 g3@6 g3@6 g3@9 g3@3 ~ a3@6 a3@6]/2", Z: "g3@3 g3 a3@2 g3@2", AA: "~ b3@6 b3@6 ~ c4@8 ~@2",
  AB: "[~@21 g3@6 g3@6 g3@6 g3@6 g3@6 ~@6 g3@6 g3@6 g3@6 ~ g3@6 g3@7 g3@7]/4",
  AC: "[~ g3@15 g3@16 ~@12 e3@12 f3@12 c4@12 d4@12 g3@12 a3@12 ~@4]/5",
  AD: "[~ e3@3 e3@12 f3@6 c4@6 d4@6 g3@6 c4@6 ~@2]/4", AE: "[~@8 g3@21 ~@6 a3@9 b3@9 c4@18 ~]/3",
  AF: "~@2 [f3,a3]@6 [f3,a3]@3 [f3,a3]@6 [f3,a3]@6 ~", // F
  AG: "[~@5 g3@3 g3@6 g3@3 g3@6 g3@30 ~@6 c4@6 c4@6 c4@3 c4@6 c4@6 ~@3 f4@3 f4@6 g4@3 g#4@6 a4@18 g4@6 ~@13]/6",
  AH: "[~@4 a3@7 a3@3 a3@7 a3@7 ~@8 g3@4 g3@8]/2", AI: "[~ g3@5 g3@10 g3@25 ~@7]/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet_5 = note(`<
  ~@18 A B C D E F G D E F H I J@3 K ~@2 L M N@2 O P Q@2 R@4 S@2 T U ~@5 V@2 ~@2 W@4 X@3 Y Z AA@3 AB@3 AC@2 AD@2
>`.pickRestart({
  A: "~@2 f3!2", B: "f3!4", C: "f3!2", D: "e3", E: "f3 c4", F: "d4 g3", G: "c4@2 ~ e3", H: "a3 ~", I: "e3@7 ~",
  J: "[~ f3@3 g3@3 a3@6 ~ g3@4 ~@4 f3@2]/3", K: "f3 f3@2 f3@2 ~@3", L: "e3@6 e3@6 e3@9 ~ e3@2",
  M: "~ f3@6 f3@6 e3@9 e3@2", N: "[~ f3@6 ~ e3@6 g3@6 g3@6 e3@6 ~@16]/2", O: "~ e3@2 e3@2 e3@3",
  P: "~ e3@3 f3@6 f3@6 e3@8", Q: "[~ e3@3 c4@6 ~ c4@6 g3@6 g3@8 a3@6 ~@11]/2",
  R: "[~@8 e3@6 e3@6 e3@9 ~ e3@3 f3@6 f3@6 e3@9 e3@3 f3@6 ~ e3@6 g3@6 g3@6 e3@6 ~@8]/4",
  S: "[~@11 e3@6 e3@6 e3@9 e3@3 ~ f3@6 f3@6]/2", T: "e3@3 e3 f3@2 e3@2", U: "~ g3@6 g3@6 ~ g3@8 ~@2",
  V: "[~@5 e3@3 f3@3 ~]/2", W: "[~ e3@3 e3@12 f3@6 c4@6 d4@6 g3@6 c4@6 ~@2]/4",
  X: "[~@8 e3@21 ~@6 f3@9 g3@9 a3@18 ~]/3", Y: "~ g3@6 ~@5", Z: "~@2 f3@6 f3@3 f3@6 f3@6 ~",
  AA: "[~@5 g3@3 g3@6 g3@3 g3@6 g3@18 [c3,g3]@12 ~@19]/3", AB: "[~@17 f3@3 f3@6 g3@3 g#3@6 a3@18 g3@6 ~@13]/3",
  AC: "[~@4 f3@7 f3@3 f3@7 f3@7 ~@8 g3@4 g3@8]/2", AD: "[~ g3@5 g3@10 [c3,g3]@25 ~@7]/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note("<~@8 A@3 B C D@3 ~@64>".pickRestart({
  A: "[~@10 e3@6 e3@6 ~ e3@9 e3@3 f3@6 f3@6 e3@9 ~ e3@3 f3@6 e3@6]/3", B: "g3!2 e3 ~", C: "~@13 e3@6 e3@5",
  D: "[~ e3@9 ~ e3@3 f3@6 f3@6 e3@9 e3@3 ~ f3@6 e3@6 g3@7 g3@7 ~ g3@6]/3",
})).s("gm_trumpet").gain(0.2)

// chords · trumpet · "B♭ Trumpet"
const trumpet_6 = note("<~@26 A B C ~@7 D@4 E@4 F@4 G@8 ~ H@4 I@4 J@3 K L M@6 ~@4>".pickRestart({
  A: "~ [c4,e4,g4,c5,e5,g5]", B: "[d4,e4,f4,a4,d5,e5,f5] [g3,b3,d4,g4,b4,d5,g5]", C: "[a3,c4,e4,a4,c5,e5,a5] ~",
  D: "c6/4", E: "[~ c5@31]/4", F: "[~ c4@11]/4", G: "[~@39 [g3,g5]@25, ~@11 g4@181]/8",
  H: "[~@5 [g3,c4,e4,g4,c5,e5,g5]@3 [f3,a3,c4,f4,a4,c5,f5]@3 [c4,e4,g4,c5,e5,g5]@3 [d4,f4,a4,b4,d5,f5,a5]@3 [d4,f4,g4,b4,d5,f5,g5]@3 [a3,c4,e4,a4,c5,e5,a5]@3 ~]/4", // C F C Bm7b5 G7 Am
  I: "[~ [e3,g3,c4,e4,g4,c5]@3 [e3,g3,c4,e4,g4,c5]@12 [f3,a3,c4,f4,a4,c5,f5]@6 [c4,e4,g4,c5,e5,g5]@6 [d4,f4,a4,d5,f5,a5]@6 [g3,b3,d4,g4,b4,d5,g5]@6 [c4,e4,a4,c5,e5,a5]@6 ~@2]/4", // C F C Dm G Am
  J: "[~@8 [e3,g3,c4,e4,g4,c5,e5]@21 ~@6 [f3,a3,c4,f4,a4,c5,f5]@9 [g3,b3,d4,g4,b4,d5,g5]@9 [a3,c4,e4,a4,c5,e5,a5]@18 ~]/3", // C F G Am
  K: "~ [g3,c4,e4,g4,c5,e5,g5]@6 ~@5", L: "~@2 [f3,a3,c4,f4,a4,c5,f5]@21 ~",
  M: "[~@5 [g3,b3,d4,g4,b4,d5,g5]@18 [g3,c5,g5]@9 g5@6 g5 [g#5,a5] a#5 [c4,e4,g4,c5,e5,g5,c6]@12 ~@6 [c4,e4,g4,c5,e5,g5]@27 ~@3 [f3,a3,c4,f4,a4,c5,f5]@9 [g3,b3,c4,g4,a4,c5,e5]@3 [g#3,b3,c4,e4,b4,c5,e5]@6 [a3,c4,e4,a4,c5,e5,a5]@18 [g3,c4,e4,g4,c5,e5,g5]@6 ~@13, ~@23 [a3,c4,f4,a4]@18 b5 ~@102, ~@32 [g3,d5]@9 ~@103]/6", // G C5 Amaj7 C F Cmaj7 E Am …
})).s("gm_trumpet").gain(0.4)

stack(trumpet, trumpet_2, trumpet_3, trumpet_4, trumpet_5, trumpet_soft, trumpet_6)