Strudelify
KeyE majorTempo150 bpm
0:00/0:00
// jaque al rey — Juan Francisco Piqueras Toharias
// 150 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5976734; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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 · alto sax · "Saxofón contralto"
const alto_sax = note(`<
  ~ A B A C A B A D E@4 F@2 E G E@4 F@2 E H E@4 F@2 E I A B A C A B A D E@3 J E@3 K L M L M L M L N A B A D E@4 F@2 E H
  E@4 F@2 E H O@2 P Q R S T U O@2 P Q R S T V L M L M L M L N A B A W A B A D E@4 F@2 E H E@4 F@2 E I X Y X Z X AA X AB
  X Y X Z X AA X AC AD
>`.pickRestart({
  A: "e4@2 ~ e4@2 ~ e4@2 ~@2 [b3,g4]@2 [a3,f#4]@2 [b3,g4]@2", B: "e4@2 ~ e4@2 ~ e4@2 ~@2 [b3,g4]@2 [c4,a4]@2 [b3,g4]@2",
  C: "d4@2 ~ e4@2 ~ d4@2 c4@2 ~@2 d4@4", D: "d4@2 ~ e4@2 ~ d4@2 c4@2 e4@2 ~@2 e4@2",
  E: "~@2 [e4,g4] ~@3 [e4,g4] ~@3 [e4,g4] ~@3 [e4,g4] ~", F: "~@2 [d4,f#4] ~@3 [d4,f#4] ~@3 [d4,f#4] ~@3 [d4,f#4] ~",
  G: "~@2 [e4,g4] ~@3 [e4,g4] ~ [e4,g4]@2 ~@6", H: "~@2 [e4,g4] ~@3 [e4,g4] ~@9", I: "[e4,g4] ~@15",
  J: "~@2 [d4,f#4] ~@3 [d4,f#4] ~@3 [c4,e4] ~@3 [c4,e4] ~", K: "[d4,f#4] ~@3", L: "e4@4 e4@4 e4@4 ~@2 [e4,g4] ~",
  M: "[d4,f#4] ~ [d4,f#4] ~@3 [d4,f#4] ~ [c4,e4] ~ [c4,e4] ~@3 [c4,e4] ~", // D C
  N: "[d4,f#4] ~ [d4,f#4] ~@3 [d4,f#4] ~ [c4,e4] ~@7", O: "[e4,g4]/2", P: "[g4,b4]", Q: "[b4,d5] [g4,b4]",
  R: "[f#4,a4]", S: "[b4,d5] [f#4,a4]", T: "[c5,e5]", U: "[b4,d#5]", V: "[b3,d4] ~ [c4,e4] ~ [b3,d4] ~@3",
  W: "d4@2 ~ e4@2 ~ d4@2 c4@2 e4@2 e4@2 e4@2", X: "e4@2 e4@2 e4@2 ~ [e4,g4]",
  Y: "[d4,f#4]!2 ~ [d4,f#4] [c4,e4] [c4,e4]@3", Z: "[d4,f#4]!4 [c4,e4] [c4,e4]@3",
  AA: "[d4,f#4] [d4,f#4]@2 [d4,f#4] [c4,e4] [c4,e4]@3", AB: "[d4,f#4]!2 [e4,g4] [d4,f#4] [c4,e4]@4",
  AC: "[d4,f#4] ~@3 [c4,e4] ~@3", AD: "e4 ~@3",
})).s("gm_alto_sax").gain(0.3)

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

// other · trombone · "Trombón"
const trombone = note(`<
  ~ A B A C A B A D E F G H I J K L E F G H I J K ~ M N M N ~@4 A B A C A B A D O@7 ~ P Q R S P Q R T A B A D E F G H I
  J K ~ M N M N ~@3 U V W X@2 Y@2 Z AA V W X@2 Y@2 Z AB P Q R S P Q R T A B A AC A B A D AD N AD N ~@4 AD N AD N ~@4 AE
  ~ AE ~ AE ~ AE ~ P Q R S P Q R S AF
>`.pickRestart({
  A: "e4@2 ~ e4@2 ~ e4@2 ~@2 b3@2 a3@2 b3@2", B: "e4@2 ~ e4@2 ~ e4@2 ~@2 b3@2 c4@2 b3@2",
  C: "d4@2 ~ e4@2 ~ d4@2 c4@2 ~@2 d4@4", D: "d4@2 ~ e4@2 ~ d4@2 c4@2 e4@2 ~@2 e4@2", E: "g4!8",
  F: "f#4 g4!2 g4@2 ~@2 g4", G: "f#4 g4!7", H: "b4 g4!2 g4@2 ~ g4!2", I: "g4 f#4!2 f#4@2 ~ g4!2",
  J: "g4 f#4!2 f#4@2 ~ f#4!2", K: "f#4 e4!2 e4@4 ~", L: "~@7 b3", M: "~@6 e4!2", N: "e4!2 d4 e4@4 ~",
  O: "e3 b2 e3 b2 ~@4", P: "e4@2 e4@2 e4@2 b3!2", Q: "f#4!3 g4 f#4 e4 e4@2", R: "e4@2 e4@2 e4@2 f#4 g4",
  S: "a4@2 g4 f#4 e4@2 d4 e4", T: "a4@2 g4 f#4 e4@2 e4!2", U: "~@3 b2", V: "e3@3 f#3", W: "g3 [a3,d4]",
  X: "[[b3,d4]@5 ~ [g3,b3] [b3,d4]]/2", Y: "[a3@3 g3 f#3@6 ~@2 [f#3,b3]@2 [a3,d4]@2, d4@3 ~]/2", Z: "g3@3 f#3 e3@4, c4",
  AA: "f#3 e3 d#3 f#3", AB: "b2 ~ c3 ~ b2 ~@3", AC: "d4@2 ~ e4@2 ~ d4@2 c4@2 e4@2 e4@2 e4@2", AD: "~@6 b3 d4",
  AE: "e4!3 ~", AF: "e4 ~@3",
})).s("gm_trombone").gain(0.4)

// other · trombone · "Trombón"
const trombone_2 = note(`<
  ~ A B A C A B A D E F E F G H E F E F E F G H E I E F E F G H E J A B A C A B A D ~@8 K L K L K L K M A B A D E F E F
  G H E I E F E F G H E N O P Q@2 R@2 S T O P Q@2 R@2 S U K L K L K L K M A B A V A B A D E F E F G H E ~ E F E F G H E
  I W ~ W ~ W ~ W ~ K L K L K L K X J
>`.pickRestart({
  A: "e3@2 ~ e3@2 ~ e3@2 ~@2 b2@2 a2@2 b2@2", B: "e3@2 ~ e3@2 ~ e3@2 ~@2 b2@2 c3@2 b2@2",
  C: "d3@2 ~ e3@2 ~ d3@2 c3@2 ~@2 d3@4", D: "d3@2 ~ e3@2 ~ d3@2 c3@2 e3@2 ~@2 e3@2", E: "e3!2 d3 e3 ~ e3 b2 d3",
  F: "e3!2 d3 e3 ~@4", G: "d3!2 e3 d3 ~ d3!2 a2", H: "d3!2 e3 d3 ~@4", I: "e3!2 d3 e3@2 ~@3", J: "e3 ~@3",
  K: "e2!2 g2 e2 ~ e2 g2 e2", L: "d3!2 f#3 d3 c3!2 e3 c3", M: "d3!2 f#3 d3 c3 ~@3", N: "e3!2 d3 e3@2 ~ b2@2",
  O: "e3@3 f#3", P: "g3 a3", Q: "[b3@5 ~ g3 b3]/2", R: "[a3@3 g3 f#3@6 ~@2 f#3@2 a3@2]/2", S: "g3@3 f#3 e3@4",
  T: "f#3 e3 d#3 f#3", U: "b2 ~ c3 ~ b2 ~@3", V: "d3@2 ~ e3@2 ~ d3@2 c3@2 e3@2 e3@2 e3@2", W: "e3!3 ~",
  X: "d3 ~@3 c3 ~@3",
})).s("gm_trombone").gain(0.3)

// bass · tuba
const bass = note(`<
  ~ A B A C A B A D E F E F G H E F E F E F G H E I E F E F G H E J A B A C A B A D ~@4 K@3 L M N M N M N M O A B A D E
  F E F G H E I E F E F G H E I P@2 Q@2 R@2 S T P@2 Q@2 R@2 S U M N M N M N M O A B A C A B A D E F E F G H E ~ E F E F
  G H E I V ~ V ~ V ~ V ~ A C A C A C A W J
>`.pickRestart({
  A: "e1 e2 e1 e2 e1 e2 e1 e2", B: "e1 e2 e1 e2 e1 e2 e1@2", C: "d2 d3 d2 d3 c2 c3 c2 c3", D: "d2 d3 d2 d3 c2 c3 c2@2",
  E: "e2!2 d2 e2 ~ e2 b1 d2", F: "e2!2 d2 e2 ~@4", G: "d2!2 e2 d2 ~ d2!2 a1", H: "d2!2 e2 d2 ~@4",
  I: "e2!2 d2 e2@2 ~@3", J: "e2 ~@3", K: "e2 ~ e2 ~ e2 ~ e2 ~", L: "d2 ~@3", M: "e1!2 g1 e1 ~ e1 g1 e1",
  N: "d2!2 f#2 d2 c2!2 e2 c2", O: "d2!2 f#2 d2 c2 ~@3", P: "e2!8", Q: "g2!8", R: "d2!8", S: "c2!8", T: "b1!8",
  U: "b1 ~ c2 ~ b1 ~@3", V: "e2!3 ~", W: "d2 ~@3 c2 ~@3",
})).s("gm_tuba").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A B@7 C D E D E D E D F D E D E D E D G D E D E D E D ~ B@7 C ~@4 B@3 H D@8 B@3 C D E D E D E D G D E D E D E D G I@15
  C D@8 B@7 C D E D E D E D ~ D E D E D E D G C ~ C ~ C ~ C ~ D@8 H
>`.pickRestart({
  A: "~@5 x ~@2", B: "x!4", C: "x!3 ~", D: "x!2", E: "x ~@3 x ~@2 x", F: "~ x", G: "x ~ x ~@3 x ~@3 x!2 ~@4", H: "x",
  I: "x ~@3 x!2 ~@2",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct("<[x!3 ~] ~@141>").gain(0.45)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@7 B ~@15 C D E@6 ~ A@7 B ~@4 E@3 F D@7 G A@3 B ~@7 C D E@6 H ~@16 D@7 G A@7 B D E@6 ~ D E@6 H ~@8 D@7 I F
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "~@3 x ~@2 x ~", D: "~ x!3", E: "x!4", F: "x", G: "~ x ~@2",
  H: "~@3 x ~@4", I: "x!2",
})).gain(0.45)

// drums · mid tom
const mid_tom = s("mt").struct("<~@76 [~@14 x!2] ~@47 [~@14 x!2] ~@7 [~@8 x!8] ~@9>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@76 [~@12 x!2 ~@2] ~@47 [~@12 x!2 ~@2] ~@7 [x!8 ~@8] ~@9>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  A B ~@3 B ~@3 B ~@7 B ~@7 B ~@7 B ~@3 B ~@11 B ~ B C B ~ B ~ B ~@3 B ~@7 B ~@7 B ~@7 B ~@7 B ~ B C B ~ B ~ B ~@3 B ~@3
  B ~@7 B ~@15 B ~ B C B ~ B ~@2
>`.pickRestart({
  A: "~@3 x", B: "x", C: "x!2",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@77 [~@2 x!2] [x!4]!7 [~@2 x!2] [x!4]!6 ~@50>").gain(0.3)

stack(alto_sax, trumpet, trombone, trombone_2, bass, kick, rim, snare, hihat, mid_tom, high_tom, crash, ride)

More by Juan Francisco Piqueras Toharias