Strudelify

Caramelldansen [Pep Band Arrangement]

Zebrahead

KeyF majorTempo160 bpm
0:00/0:00
// Caramelldansen [Pep Band Arrangement] — Zebrahead
// 160 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 1/4 at bar 44) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "Piccolo" named as a pipe, played on piccolo (its french horn patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5834881; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 44 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 · "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.

// chords · piccolo
const piccolo = note(`<
  A B@2 C@2 D@2 E@2 ~ F G H I J K L M N O P Q R S T U V@2 W@2 V@2 X@2 Y Z AA AB AC Z AA AB AD ~
>`.pickRestart({
  A: "~@4 f5 g5 a5 bb5", B: "[c6 ~@2 c6 ~@2 c6@2 ~@2 c6@2 d6@2 c6@8 ~@2 c6@2 d6@2 c6@2 bb5@2]/2",
  C: "[a5 ~@2 a5 ~@2 a5@2 ~@2 bb5@2 a5@2 f5@8 ~@2 f5@2 g5@2 a5@2 bb5@2]/2",
  D: "[c6 ~@2 c6 ~@2 c6@2 ~@2 c6@2 d6@2 ~@10 c6@2 d6@2 c6@2 bb5@2, f3 c3, ~@7 c6@4 ~@5]/2",
  E: "[a5 ~@2 a5 ~@2 a5@2 ~@2 bb5@2 a5@2 ~@2 bb2@16, d3 ~, ~@7 f5@9]/2", F: "f3!4 f3@2 f3!2",
  G: "g3 a3@2 f6@2 f6 e6 f6, ~@3 a3@3 ~@2", H: "[c4,c6]@2 f3!2 f3@2 f3!2", I: "a3 g3@2 a6@2 a6 f6 c7, ~@3 f3@3 ~@2",
  J: "[e3,g6]@2 d3 c3@5", K: "~@2 c6 [c3,g6]@2 [c3,g6] [d3,f6] [e3,e6]", L: "[f3,f6]@2 d3 c3@4 ~",
  M: "f6@2 d6 c6@3 ~ e3", N: "a3!4 a3@2 a3!2", O: "bb3 ~ c6 f6@2 f6 e6 [f3,f6], ~ c4@2 c4@3 ~@2",
  P: "a3!4 a3@2 a3@2, c6 ~@3", Q: "f4 ~ a6 a6@2 a6 f6 c7, ~ d4@2 c4@3 ~@2", R: "[e3,g6]@2 g3 c3@5",
  S: "c6 b5 [c3,c6] [c3,g6]@2 [c3,g6] [a3,f6] [g3,e6]", T: "[c3,f6]",
  U: "~ [c3,f6] [d3,g6] [c3,f6] [f3,a6]@2 [d3,g6] [c3,f6]", // F5 G5 F5 F G5 F5
  V: "[c6@2 [f3,a6] g6 f6@2 f3 ~ c3 f6 [c3,g6] f6 g6@2 a6@2, f3 ~@3 f3 ~@2 g6@2 ~@3 c3 ~ c3 ~]/2", // F C5
  W: "[d6@2 [d3,a6] g6 [d3,f6] f6 [d3,f6] ~ bb2 f6 [bb2,g6] a6 g6@2 f6@2, d3 ~@6 g6@2 ~@3 bb2 ~ bb2 ~]/2", // D5 Dm Eb
  X: "[c7@2 [d3,bb6] a6 [d3,f6] f6 [d3,f6] ~ bb2 [bb2,g6] bb2!6, d3 ~@6 g6@2 ~ a6@2 g6@2 f6@2]/2", // Gm Dm Eb
  Y: "g6 ~ g6 ~ g6 a6 c6!2, f3", Z: "~ c7 ~ c7 ~ c7!2 ~, c3", AA: "g6 ~ g6 ~ g6 a6 c6!2, d3",
  AB: "~ c7 ~ c7 ~ c7!2 ~, bb2", AC: "a6 ~ a6 ~ a6 c7 a6 g6, f3", AD: "[f3,f7]",
})).s("gm_piccolo").gain(0.4)

// other · alto sax · "Alto Saxophone 1 & 2"
const alto_sax = note(`<
  ~ A B C D A B C D ~@2 E F G H I J K ~ L F M H N O P A B C D C B C D A B C D C B C D Q ~
>`.pickRestart({
  A: "~ f4!3 ~ f4 ~ f4", B: "~ g4!3 ~ g4 ~ g4", C: "~ a4!3 ~ a4 ~ a4", D: "~ bb4!3 ~ bb4 ~ bb4", E: "~@3 f4@2 f4 e4 f4",
  F: "c4 ~@3", G: "~@3 a4@2 a4 f4 c5", H: "g4 ~@3", I: "~@2 c4 g4@2 g4 f4 e4", J: "f4 ~@3", K: "f4@2 d4 c4@3 ~@2",
  L: "~@2 c4 f4@2 f4 e4 f4", M: "~@2 a4 a4@2 a4 f4 c5", N: "c4 b3 c4 g4@2 g4 f4 e4", O: "c4",
  P: "~ f4 g4 f4 a4@2 g4 f4", Q: "c5",
})).s("gm_alto_sax").gain(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~ A@2 B C A@2 B C ~ D E F G H I J K L M N O P Q R S A@2 B C A@2 B C A@2 B C A@2 B C T ~
>`.pickRestart({
  A: "~ c4!3 ~ c4 ~ c4", B: "~ d4!3 ~ d4 ~ d4", C: "~ bb3!3 ~ bb3 ~ bb3", D: "f3!4 f3@2 f3!2", E: "g3 a3@2 a3@3 ~@2",
  F: "c4@2 f3!2 f3@2 f3!2", G: "a3 g3@2 f3@3 ~@2", H: "e3@2 d3 c3@5", I: "~@3 c3@2 c3 d3 e3", J: "f3@2 d3 c3@4 ~",
  K: "~@7 e3", L: "a3!4 a3@2 a3!2", M: "bb3 c4@2 c4@3 ~ f3", N: "a3!4 a3@2 a3@2", O: "f4 d4@2 c4@3 ~@2",
  P: "e3@2 g3 c3@5", Q: "~@2 c3 c3@2 c3 a3 g3", R: "f3", S: "~ f3 g3 f3 a3@2 g3 f3", T: "a4",
})).s("gm_tenor_sax").gain(0.4)

// other · trumpet · "B♭ Trumpet 1 & 2"
const trumpet = note("<~@5 A@4 ~@10 B C D E F G H I@2 J@2 I@2 K@2 L@2 M@2 N@2 O@2 G ~>".pickRestart({
  A: "[~@5 c5 a4 d5@2 c5@5 ~ bb4@2 a4!2 g4!2 a4 g4 f4@9]/4", B: "~@2 c5 f5@2 f5 e5 f5", C: "c5 ~@3",
  D: "~@2 a5 a5@2 a5 f5 c6", E: "g5 ~@3", F: "c5 b4 c5 g5@2 g5 f5 e5", G: "f5", H: "~ f5 g5 f5 a5@2 g5 f5",
  I: "[[c4,c5]@2 [a4,a5] [g4,g5] [f4,f5]@2 ~ [g4,g5]@2 [f4,f5] [g4,g5] [f4,f5] [g4,g5]@2 [a4,a5]@2]/2", // C A G F G F G F …
  J: "[[d4,d5]@2 [a4,a5] [g4,g5] [f4,f5]!3 [g4,g5]@2 [f4,f5] [g4,g5] [a4,a5] [g4,g5]@2 [f4,f5]@2]/2", // D A G F G F G A …
  K: "[[c5,c6]@2 [bb4,bb5] [a4,a5] [f4,f5]!3 [g4,g5]@2 [g4,g5] [a4,a5]@2 [g4,g5]@2 [f4,f5]@2]/2", // C Bb A F G A G F
  L: "[[g4,g5] ~ [g4,g5] ~ [g4,g5] [a4,a5] [c4,c5] [c4,c5]@2 ~@7]/2", // G A C
  M: "[[g4,g5] ~ [g4,g5] ~ [g4,g5] [a4,a5] [c4,c5] [c4,c5]@2 [d4,d5] [c4,c5]@2 ~@4]/2", // G A C D C
  N: "[[a4,a5] ~ [a4,a5] ~ [a4,a5] [c5,c6] [a4,a5] [g4,g5]@2 ~@7]/2", // A C A G
  O: "[[g4,g5] ~ [g4,g5] ~ [g4,g5] [a4,a5] [c4,c5] [c4,c5]@2 [d4,d5] [c4,c5]@4 ~@2]/2", // G A C D C
})).s("gm_trumpet").gain(0.45)

// other · trumpet · "B♭ Trumpet 1 & 2" · soft notes
const trumpet_soft = note("<~@11 A B C D E F G ~@26>".pickRestart({
  A: "~@3 f4@2 f4 e4 f4", B: "c4 ~@3", C: "~@3 a4@2 a4 f4 c5", D: "g4 ~@3", E: "~@2 c5 g5@2 g5 f5 e5", F: "f5 ~@3",
  G: "f5@2 d5 c5@3 ~@2",
})).s("gm_trumpet").gain(0.25)

// other · french horn · "Mellophone"
const french_horn = note("<~@5 A@4 ~ B C D E F G H I B J K L M N O P Q@2 R@2 Q@2 S@2 T@2 U@2 V@2 W@2 X ~>".pickRestart({
  A: "[~@5 c4 a3 d4@2 c4@5 ~ bb3@2 a3!2 g3!2 a3 g3 f3@9]/4", B: "f4!4 f4@2 f4!2", C: "g4 a4@2 a4@3 ~@2",
  D: "c5@2 f4!2 f4@2 f4!2", E: "a4 g4@2 f4@3 ~@2", F: "e4@2 d4 c4@5", G: "~@3 c4@2 c4 d4 e4", H: "f4@2 d4 c4@4 ~",
  I: "~@7 c4", J: "g4 a4@2 a4@3 ~ c4", K: "f4!4 f4@2 f4@2", L: "c5 bb4@2 a4@3 ~@2", M: "e4@2 g4 c4@5",
  N: "~@2 c4 c4@2 c4 a4 g4", O: "c4", P: "~ f4 g4 f4 a4@2 g4 f4", Q: "[c4@2 a4 g4 f4@2 ~ g4@2 f4 g4 f4 g4@2 a4@2]/2",
  R: "[d4@2 a4 g4 f4!3 g4@2 f4 g4 a4 g4@2 f4@2]/2", S: "[c5@2 bb4 a4 f4!3 g4@2 g4 a4@2 g4@2 f4@2]/2",
  T: "[g4 ~ g4 ~ g4 a4 c4 c4@2 ~@7]/2", U: "[g4 ~ g4 ~ g4 a4 c4 c4@2 d4 c4@2 ~@4]/2",
  V: "[a4 ~ a4 ~ a4 c5 a4 g4@2 ~@7]/2", W: "[g4 ~ g4 ~ g4 a4 c4 c4@2 d4 c4@4 ~@2]/2", X: "c5",
})).s("gm_french_horn").gain(0.45)

// other · trombone
const trombone = note(`<
  ~@5 A B C D ~ E F G H I J K L E M N O P Q A R S@2 T U S@2 T U V W X Y V W X Z AA ~
>`.pickRestart({
  A: "f3", B: "c3", C: "d3", D: "bb2", E: "f3!4 f3@2 f3!2", F: "g3 a3@2 a3@3 ~@2", G: "c4@2 f3!2 f3@2 f3!2",
  H: "a3 g3@2 f3@3 ~@2", I: "e3@2 d3 c3@5", J: "~@3 c3@2 c3 d3 e3", K: "f3@2 d3 c3@4 ~", L: "~@7 c3",
  M: "g3 a3@2 a3@3 ~ c3", N: "f3!4 f3@2 f3@2", O: "c4 bb3@2 a3@3 ~@2", P: "e3@2 g3 c3@5", Q: "~@2 c3 c3@2 c3 a3 g3",
  R: "~ c3 d3 c3 f3@2 d3 c3", S: "~ c4!3 ~ c4 ~ c4", T: "~ d4!3 ~ d4 ~ d4", U: "~ bb3!3 ~ bb3 ~ bb3",
  V: "~ f3 ~ f3 ~ f3 ~ f3", W: "~ c3 ~ c3 ~ c3 ~ c3", X: "~ d3 ~ d3 ~ d3 ~ d3", Y: "~ bb2 ~ bb2 ~ bb2 ~ bb2",
  Z: "bb2!8", AA: "c4",
})).s("gm_trombone").gain(0.4)

// bass · tuba
const bass = note("<~@5 A B C D ~ E@4 F@2 E@6 F G A H I E J K I E J L A B C D A B C D M ~>".pickRestart({
  A: "f2", B: "c2", C: "d2", D: "bb1", E: "c3 ~ c3 ~ c3 ~ c3 ~", F: "g2 ~ g2 ~ g2 ~ g2 ~", G: "c2 ~ c2 ~ d2 ~ e2 ~",
  H: "~ f2 g2 f2 a2@2 g2 f2", I: "f3 ~ f3 ~ f3 ~ f3 ~", J: "d3 ~ d3 ~ d3 ~ d3 ~", K: "bb2 ~ bb2 ~ bb2 ~ bb2 ~",
  L: "bb2!8", M: "f3",
})).s("gm_tuba").gain(0.4)

// bass · electric bass finger · "Electric Bass"
const bass_2 = note("<~@5 A@4 ~ B@4 C@2 B@6 C D ~ E ~@8 B C F G B C H I ~@2>".pickRestart({
  A: "[~@5 c3 a2 d3@2 c3@5 ~ bb2@2 a2!2 g2!2 a2 g2 f2@9]/4", B: "f2 ~ f2 ~ f2 ~ f2 ~", C: "c2 ~ c2 ~ c2 ~ c2 ~",
  D: "c2 ~ c2 ~ d2 ~ e2 ~", E: "~ f2 g2 f2 a2@2 g2 f2", F: "d2 ~ d2 ~ d2 ~ d2 ~", G: "bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  H: "d2 ~ d2 ~ d2 ~ d2 bb1", I: "bb1!8",
})).s("gm_electric_bass_finger").gain(0.45)

// drums · kick
const kick = s("bd").struct("<~@9 [x!2 ~@2] [x!4]!15 [~@5 x!3] [x!4]!16 [x!2 ~@2] ~>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@5 A@4 B C@3 D C@3 E C D C F C@2 ~ G C@7 H C@7 H I ~>".pickRestart({
  A: "x!16", B: "x!2 ~ x", C: "x!4", D: "x ~@3 x ~@3 x ~@3 x ~ x!2", E: "x ~@3 x ~@3 x ~@2 x!3 ~ x",
  F: "x ~@3 x ~@3 x ~ x!6", G: "x!9 ~ x ~ x ~ x ~", H: "x!4 ~ x!3 ~ x!3 ~ x!3", I: "x!8 ~@8",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@9 [~@4 x!2 ~@2] ~@14 [~@3 x] ~@17 [~@7 x] ~>").gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~@10 [~ x ~ x ~ x ~ x]!14 ~@2 [~ x ~ x ~ x ~ x]!7 ~ [~ x ~ x ~ x ~ x]!7 ~@3>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 [~@9 x ~ x ~@4] ~@14 [~ x!2 ~] ~@17 [~@5 x!2 ~] ~>").gain(0.5)

// drums · high tom
const high_tom = s("ht").struct("<~@24 x ~@9 [~ x ~ x ~ x ~ x]!7 [x!2 ~@6] [~ x] ~>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@10 A ~@14 B A ~@6 B A ~@6 B ~ A>".pickRestart({
  A: "x", B: "~ x!3",
})).gain(0.45)

stack(
  piccolo, alto_sax, tenor_sax, trumpet, trumpet_soft, french_horn, trombone, bass, bass_2, kick, snare, low_tom, hihat,
  mid_tom, high_tom, crash
)

More by Zebrahead