Strudelify

Dumbledore's Army

Nicholas Hooper

KeyG majorTempo160 bpm
0:00/0:00
// Dumbledore's Army — Nicholas Hooper
// 160 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5951064; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 60 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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 · piccolo
const piccolo = note("<~@23 A@3 B C D E F ~@3 G@2 H I J K L C D E M@2 ~@4 N O P Q ~ R@2 S@3>".pickRestart({
  A: "[b5@11 d6 g6@8 a6 b6@3]/3", B: "d7@3 g6", C: "f#6 g6 e6 f#6 d6 e6 c6 d6", D: "b5@2 ~@12 g6 ~",
  E: "f#6 ~ g6 ~ e6 ~ f#6 ~ d6 ~ e6 ~ c6 ~ d6 ~", F: "b5 ~@15", G: "[c6@2 g6@4 f#6 g6]/2", H: "a6@2 g6 f#6 a6@4",
  I: "f#6@2 g6 e6", J: "f#6 d6", K: "e6 c6", L: "d6@6 ~ g6", M: "[b5 ~ c6 ~ a5@28]/2", N: "~ c7", O: "b6@3 g6@5",
  P: "e6 ~", Q: "~@3 d6", R: "[d6@5 c6@3]/2", S: "[~ b5@8 ~@3]/3",
})).s("gm_piccolo").gain(0.3)

// other · flute
const flute = note(`<
  ~@4 A@2 B A C D C D@2 E F E F G H G I ~@2 J K L J L K L M ~ N O P@2 Q R S T U V W X Y@2 ~@4 Z AA@4 ~ AB AC@3
>`.pickRestart({
  A: "d5 d4 d5 d4", B: "e5 d4 e5 d4", C: "d5 e4 d5 e4", D: "d5 f#4 d5 f#4", E: "e5 c5 ~ e5!2 c5 ~ e5",
  F: "e5 c5 ~ e5 f#5 d5 f#5 d5", G: "f#5 d5 ~ f#5!2 d5 ~ f#5", H: "f#5 d5 ~ f#5 g5 d5 g5 d5",
  I: "f#5!2 ~ f#5 g5!2 e5!2", J: "d4!2 ~ d4!3 ~ d4", K: "d4!2 ~ d4!5", L: "d4!4 e4!4", M: "f#4!2 ~ f#4!3 ~ f#4",
  N: "g4@11 ~ c5@4", O: "g4 c5 d5@2", P: "[c5@8 g5@15 ~ d6@4 e6@4]/2", Q: "f#6@2 e6 d6 f#6@4", R: "d6@2 e6 c6",
  S: "b5 a5", T: "c6 g5", U: "b5@11 ~@3 g5@2", V: "f#5 g5 e5 f#5 d5 e5 c5 d5", W: "b4@2 ~@12 g5 ~",
  X: "f#5 ~ g5 ~ e5 ~ f#5 ~ d5 ~ e5 ~ c5 ~ d5 ~", Y: "[b4 ~ c5 ~ a4@19 ~@9]/2", Z: "c4 ~ g4 ~ c4 ~ g4 ~",
  AA: "[d4@61 ~@3]/4", AB: "~@4 g5@11 ~", AC: "[~@2 g5@15 ~@7]/3",
})).s("gm_flute").gain(0.3)

// other · flute
const flute_2 = note("<~ A B C D@2 C D C D C E F G H I J E K E ~@40>".pickRestart({
  A: "~@5 e4!3", B: "d4!6 ~ d4", C: "d4!4 e4!4", D: "d4!2 ~ d4!3 ~ d4", E: "f#4!2 ~ f#4!3 ~ f#4", F: "g4!2 ~ g4!5",
  G: "c5!2 ~ c5!3 ~ c5", H: "c5!2 ~ c5 d5!2 ~ d5", I: "e4!2 ~ e4!3 ~ e4", J: "e4!4 f#4!4", K: "f#4!2 ~ f#4 g4!4",
})).s("gm_flute").gain(0.3)

// other · flute · soft notes
const flute_soft = note("<[g4!2 ~ g4!3 ~ g4] [g4!4 e4 ~@3] ~@58>").s("gm_flute").gain(0.2)

// other · flute
const flute_3 = note(`<
  ~ A B C B@2 C B C B C B@2 D E F@2 G H I J K@2 L@2 M L N O N O@2 ~@2 P Q R S R S T@2 ~@4 U@3 V@2 W X Y Z AA AB AC@3
>`.pickRestart({
  A: "~@5 c5!3", B: "b4!2 ~ b4!3 ~ b4", C: "b4!4 c5!4", D: "e4!2 ~ e4!3 ~ e4", E: "e4!2 ~ e4 f#4!4",
  F: "[c5@8 g5@15 ~ f#5@4 g5@4]/2", G: "a5@2 g5 f#5 a5@4", H: "f#5@2 d5 g5", I: "f#5 d5", J: "e5 c5",
  K: "[d5@23 ~@9]/2", L: "d5 d4 d5 d4", M: "e5 e4 e5 e4", N: "d5 e4 d5 e4", O: "d5 f#4 d5 f#4", P: "c5!2 ~ c5!3 ~ c5",
  Q: "c5!4 d5!4", R: "d5!2 ~ d5!3 ~ d5", S: "d5!2 ~ d5!5", T: "[d6@15 ~]/2", U: "[d6@19 ~ c6@4]/3",
  V: "[f#5@12 g5@19 ~]/2", W: "~@8 b4 ~ d5 ~@3 d5 ~", X: "c5@2 b4@2 a4@2 ~@2 a4@2 ~@4 a4 ~",
  Y: "~@2 g4 ~@3 d5 ~ c5@2 b4@2 a4@2 g4@2", Z: "d5@2 ~@4 d5 ~@3 d5 ~ d5@2 ~@2", AA: "c5@2 ~@4 c5 ~@5 c5 ~@3",
  AB: "~@2 c5 ~@5 c5@2 ~@4 c5 ~", AC: "[~@2 b4@15 ~@7]/3",
})).s("gm_flute").gain(0.3)

// other · flute · soft notes
const flute_soft_2 = note("<[b4!2 ~ b4!3 ~ b4] [b4!4 c5 ~@3] ~@49 [b4@2 ~@2 g4 ~ b4 ~@9] ~@8>").s("gm_flute").gain(0.2)

// other · flute
const flute_4 = note(`<
  ~ A B C B@2 C B C B C D E ~@2 F@2 G H I J K ~@9 L M N M O P Q P Q R S R S T U V@3 W@2 ~@5 X Y@3
>`.pickRestart({
  A: "~@5 g4!3", B: "g4!2 ~ g4!3 ~ g4", C: "g4!4 c5!4", D: "g4!2 ~ f#4 g4!2 ~ g4", E: "g4!2 ~ f#4 g4!4",
  F: "[c4@8 g4@15 ~ d5@4 e5@4]/2", G: "f#5@2 e5 d5 f#5@4", H: "d5@2 e5 c5", I: "b4 a4", J: "c5 g4", K: "b4 ~@3",
  L: "d5!4 c5!4", M: "e5!2 ~ e5!3 ~ e5", N: "e5!2 ~ e5 f#5!4", O: "e5!4 f#5!4", P: "f#5!2 ~ f#5!3 ~ f#5",
  Q: "f#5!2 ~ f#5 g5!4", R: "g5!2 ~ g5!3 ~ g5", S: "g5!2 ~ g5!5", T: "a5 ~@7", U: "d5", V: "f#6/3",
  W: "[a6@12 g6@19 ~]/2", X: "~@4 g5@11 ~", Y: "[~@2 g5@15 ~@7]/3",
})).s("gm_flute").gain(0.3)

// other · flute · soft notes
const flute_soft_3 = note("<A B ~@20 C@8 ~@21 D@5 ~@4>".pickRestart({
  A: "g4!2 ~ g4!3 ~ g4", B: "g4!5 ~@3", C: "[g5@61 ~@3]/8", D: "[d6@19 ~]/5",
})).s("gm_flute").gain(0.2)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~@4 A@3 B C D E F G H I H J K L K M K N O@5 P@2 Q R S T S T U V W V X Y X Y Z@2 AA@3 AB@2 AC AD AE AF AG AH AI@3
>`.pickRestart({
  A: "[b3@11 d4 g4@8 a4 b4@3]/3", B: "d5@3 g5", C: "f#5 g5 e5 f#5 d5 e5 c5 d5", D: "~@14 g5 ~",
  E: "f#5 ~ g5 ~ e5 ~ f#5 ~ d5 ~ e5 ~ c5 ~ d5 ~", F: "b4 ~@15", G: "b3!8", H: "c4!2 ~ c4!3 ~ c4", I: "c4!2 ~ c4 d4!4",
  J: "c4!4 d4!4", K: "d4!2 ~ d4!3 ~ d4", L: "d4!2 ~ d4!5", M: "d4!2 ~ d4!3 g3!2", N: "d4!8", O: "[g3@9 d3]/5",
  P: "[g3@3 d3]/2", Q: "g3", R: "~@2 d5 ~ b4 ~ d5 ~ b4 ~ d5 ~ b4 ~ d5 ~", S: "e5 ~ c5 ~ e5 ~ c5 ~ e5 ~ c5 ~ e5 ~ c5 ~",
  T: "e5 ~ c5 ~ e5 ~ c5 ~ f#5 ~ d5 ~ f#5 ~@3", U: "f#5 ~ d5 ~ f#5 ~ d5 ~ f#5 ~ d5 ~ f#5 ~ d5 ~",
  V: "f#5 ~ d5 ~ f#5 ~ d5 ~ g5 ~ d5 ~ g5 ~ d5 ~", W: "f#5 ~ d5 ~ f#5 ~ d5 ~ f#5 ~ d5 ~ f#5 ~@3", X: "b4", Y: "c5",
  Z: "a4/2", AA: "[d5@5 c5]/3", AB: "[b4@5 c5@3]/2", AC: "d4@2 ~@2 g3 ~ b3 ~ b3 ~ d4 ~@3 d4 ~",
  AD: "e4@2 d4@2 c4@2 b3@2 c4@2 ~@4 c4 ~", AE: "~@2 c4 ~@3 d4 ~ e4@2 d4@2 c4@2 b3@2",
  AF: "d4@2 ~@4 d4 ~@3 d4 ~ d4@2 ~@2", AG: "e4@2 ~@4 e4 ~@5 e4 ~@3", AH: "~@2 e4 ~@5 e4@2 ~@4 e4 ~",
  AI: "[~ d4@8 ~@3]/3",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note(`<
  ~@2 A@7 B A@2 C D E D F G H G I J K J L M J K L K N O P Q P Q R S T S U ~@2 V W@2 X@3 Y@2 ~ Z AA AB AC AD AE@3
>`.pickRestart({
  A: "g3!2 ~ g3!3 ~ g3", B: "g3!2 ~ g3!5", C: "~@2 d5 ~ b4 ~ d5 ~ b4 ~ d5 ~ b4 ~ d5 ~",
  D: "e5 ~ c5 ~ e5 ~ c5 ~ e5 ~ c5 ~ e5 ~ c5 ~", E: "e5 ~ c5 ~ e5 ~ c5 ~ f#5 ~ d5 ~ f#5 ~@3",
  F: "e5 ~ c5 ~ e5 ~ c5 ~ f#5 ~ d5 ~ f#5 ~ d5 ~", G: "f#5 ~ d5 ~ f#5 ~ d5 ~ f#5 ~ d5 ~ f#5 ~@3",
  H: "f#5 ~ d5 ~ f#5 ~ d5 ~ g5 ~ d5 ~ g5 ~ d5 ~", I: "f#5 ~ d5 ~ f#5 ~ d5 ~ g5@2 ~@6", J: "b3!2 ~ b3!3 ~ b3",
  K: "b3!4 c4!4", L: "b3!2 ~ b3!5", M: "b3!8", N: "d4!2 ~ d4!3 ~ d4", O: "~@2 g4 ~ f#4 ~ g4 ~ f#4 ~ g4 ~ f#4 ~ g4 ~",
  P: "e4 ~ g4 ~ e4 ~ g4 ~ g4 ~ e4 ~ g4 ~ e4 ~", Q: "g4 ~ e4 ~ g4 ~ e4 ~ f#4 ~ a4 ~ f#4 ~@3",
  R: "f#4 ~ a4 ~ f#4 ~ a4 ~ f#4 ~ a4 ~ f#4 ~ a4 ~", S: "a4 ~ f#4 ~ a4 ~ f#4 ~ a4 ~ f#4 ~ a4 ~ f#4 ~",
  T: "f#4 ~ a4 ~ f#4 ~ a4 ~ f#4 ~ a4 ~ f#4 ~@3", U: "g4 ~@7", V: "d4@2 e4 c4", W: "a3/2", X: "d4/3", Y: "d4/2",
  Z: "c5 b4 a4 g4 d5 ~@2 d5", AA: "~@2 d5 ~@3 d5 ~ c5@2 b4@2 a4@2 g4@2", AB: "g4@2 ~@4 g4 ~@3 a4 ~ b4@2 ~@2",
  AC: "d4@2 ~@4 d4 ~@5 d4 ~@3", AD: "~@2 g3 ~@5 g3@2 ~@4 g3 ~", AE: "[~ g3@8 ~@3]/3",
})).s("gm_clarinet").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@7 A B A B A ~ C D C D E F G@2 H ~ I@3 J K L M N O P Q R@2 S T U V W X Y Z AA W AB@2 AC AD AE AA AF AG AH AI AJ AK@3
>`.pickRestart({
  A: "g3 ~@3", B: "~@2 d3 ~", C: "c3 ~ g3 ~@3 g3 ~", D: "c3 ~ g3 ~ a3 ~ d3 ~", E: "a3 ~ d3 ~@3 d4 ~",
  F: "a3 ~ d3 ~ d4 ~ d3 ~", G: "a3 ~ d3 ~@3 d3 ~", H: "g3", I: "[b2@11 d3 g3@8 a3 b3@3]/3", J: "d4@3 g4",
  K: "f#4 g4 e4 f#4 d4 e4 c4 d4", L: "b3@2 ~@12 g4 ~", M: "f#4 ~ g4 ~ e4 ~ f#4 ~ d4 ~ e4 ~ c4 ~ d4 ~", N: "b3 ~@15",
  O: "g3!8", P: "c3!2 ~ c3!3 ~ c3", Q: "c3!2 ~ c3 d3!4", R: "[c3@2 g3@4 f#3 g3]/2", S: "a3@2 g3 f#3 a3@4",
  T: "f#3@2 g3 e3", U: "f#3 d3", V: "e3 c3", W: "d3", X: "c3 ~@2 d3", Y: "g3 d3 ~@2", Z: "c3 ~@2 c3", AA: "d3 ~@7",
  AB: "d4/2", AC: "d4", AD: "d3 [e3,f#3] g3 ~@5 d3 [e3,f#3] g3 ~@5", AE: "c3 ~ g3 ~ c3 ~ g3 ~", AF: "~@8 d3@2 ~@4 d3 ~",
  AG: "d3@2 ~@4 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~", AH: "d3@2 ~@4 d3 ~@3 d3 ~ d3@2 ~@2",
  AI: "g3 ~ e3 ~ e3 ~ g3 ~ e3 ~ e3 ~ g3 ~ e3 ~", AJ: "g3@2 ~@2 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~", AK: "[~ g3@8 ~@3]/3",
})).s("gm_tenor_sax").gain(0.3)

stack(
  piccolo, flute, flute_2, flute_soft, flute_3, flute_soft_2, flute_4, flute_soft_3, clarinet, clarinet_2, tenor_sax
)

More by Nicholas Hooper