Strudelify

Lloraras

Diego Rooney

KeyD majorTempo200 bpm
0:00/0:00
// Lloraras — Diego Rooney
// 200 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5951181; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 170 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(200/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 · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@28 A B C D ~@4 A B C D ~@20 A B C D ~@4 A B C D ~@20 A B C D ~@4 A B C D ~@25 E ~ E ~ E ~ E ~@9 F ~ F ~ F ~ F ~ F ~
  F ~ F ~ F ~ F ~ F ~ F ~ F ~ G
>`.pickRestart({
  A: "a3 c4 e4 c4 g3 b3 d4 b3", B: "c4@2 e3 g3@2 c4 g3@2", C: "d4@2 a3 d4 d#4@3 e4", D: "e4 g#3 b3 d4@2 b3@3",
  E: "~@3 e4 d4@2 e4 ~", F: "~@3 d4@3 c4@2", G: "b3@2 b3 e4 ~ d4 e4@2",
})).s("gm_alto_sax").gain(0.25)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D E F G H A B C D E F G H A B C D A B C D A B C D A B C D A B C
  D E F G H A B C D E F G H A B C D A B C D A B C D A B C D A B C D E F G H A B C D E F G I J K J K J K J K J K J K J K
  J K J K J K J K J K J K J K J K J K L K L K L K L K L K L K L K L K L K L K L K L K L K M K L K L K N O
>`.pickRestart({
  A: "a2 e3 g2 d3", B: "c3@3 g2@3 c3@2", C: "d2@3 a2@3 d3@2", D: "e2@3 b2@3 e3@2", E: "a2 c3 e3 c3 g2 b2 d3 b2",
  F: "c3@2 e3 g3@2 e3 c3@2", G: "d3@2 f3 d3 d#3@3 e3", H: "e3 g#3 b3 d3@2 g#3@3", I: "e2 g#2 b2 a2", J: "~ a2 g2 f2",
  K: "e2@3 b2@3 a2@2", L: "~ a2 d2 d#2", M: "a2!2 d2 d#2", N: "~ a2 e2@2", O: "e2@2 e2 b2 ~ b2 a2@2",
})).s("gm_baritone_sax").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~@9 A B C D A E F ~ A B C D A E F ~@4 G H I J ~@4 G H I J ~ A B C D A E F ~ A B C D A E F ~@4 G H I J ~@4 G H I J ~ A
  B C D A E F ~ A B C D A E F ~@4 G H I J ~@4 G H I J ~@24 K@2 L@2 K@2 L@2 ~@7 M N O P Q R O S O T U V W@2 X@6 Y ~@5 Z
>`.pickRestart({
  A: "e4 ~@2 e4@5", B: "d4 e4 f4 a4", C: "g#4@3 e4@5", D: "c4@2 e4 d4 c4 b3 ~@2", E: "d4 e4 f4 d4", F: "e4@3 b3@3 ~@2",
  G: "a4 c5 e5 c5 g4 b4 d5 b4", H: "c5@2 e4 g4@2 c5 g4@2", I: "d5@2 a4 d5 d#5@3 e5", J: "e5 g#4 b4 d5@2 b4@3",
  K: "[~@2 a4 ~ c5 ~ d5 ~ f5@2 e5@2 d5@2 e5@18]/2", L: "[~@2 c5 ~ d5 ~ e5 ~ f5@2 e5@2 d5@2 g#4@18]/2",
  M: "~@10 e5@3 e5@3", N: "a5@2 g5 f5 g5@2 f5 g5", O: "e5@2 ~@3 e5@3", P: "~@2 c5@2 d5@2 e5@2 f5@3 f5@3 g5@2",
  Q: "~ f5@2 e5@6 ~ e5@6", R: "~ c5 d5 e5 f5@2 d5 d#5", S: "~ d5 e5@2 f5@2 e5 d5", T: "~ d5 e5@2 f5 e5 d5 g5",
  U: "f5 e5@2 ~@2 e5@3", V: "~ e5 f5@2 e5@2 d5 c5", W: "[b4@2 ~@4 e5@4 c5@2 a4@2 ~ b4]/2",
  X: "[a4 g#4@2 ~@3 e5@4 c5@2 a4@2 ~ b4]/2", Y: "a4 g#4@2 ~@5", Z: "e5@2 e5 g#5 ~ g#5 a5@2",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@9 A B C D A E F G A B C D A E F ~@17 A B C D A E F G A B C D A E F ~@17 A B C D A E F G A B C D A E F ~@32 H@2 I@2
  H@2 I@2 H@2 I@2 H@2 I@2 J K J K J K J L@2 ~@17 M N O N M N O P
>`.pickRestart({
  A: "e3 ~@2 e3@5", B: "d3 e3 f3 a3", C: "g#3@3 e3@5", D: "c3@2 e3 d3 c3 b2 ~@2", E: "d3 e3 f3 d3", F: "e3@3 b2@3 ~@2",
  G: "~ c3@2 d3", H: "[~@2 a3 ~ c4 ~ d4 ~ f4@2 e4@2 d4@2 e4@18]/2", I: "[~@2 c4 ~ d4 ~ e4 ~ f4@2 e4@2 d4@2 g#3@18]/2",
  J: "~ e3!2 ~@2 f#3@2 g#3", K: "~@3 g#3 f#3@2 g#3 ~", L: "[~@3 g#3 f#3@2 a3@6 ~@4]/2", M: "~ a2 c3@2 d3@2 d#3@2",
  N: "e3 g#2 b2 d3@2 g#2 a2!2", O: "~ a3 e3@2 g3@2 f3@2", P: "e3@2 e3 d3 ~ d3 a2@2",
})).s("gm_trombone").gain(0.4)

// other · piano
const piano = note(`<
  A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B D@2 E F G@2 A B D@2 E F G@2 A B C@2 A B C@2 A B C@2 A B C@2 A B
  D@2 E F G@2 A B D@2 E F G@2 A B C@2 A B C@2 A B C@2 A B C@2 A B D@2 E F G@2 A B D@2 E F H I J K L M J K L M J K L M J
  K L M J K L M J K L M J K L M J K L M J K L M J K L M J K L M J K L M J K L M J K L M J K L M J K L M J N
>`.pickRestart({
  A: "[a2,a4] [c3,c5] [e3,e5] [c3,c5] [g2,g4] [b2,b4] [d3,d5] [b2,b4]", // A C E C G B D B
  B: "c3@2 e3 [g3,g4]@2 [e3,c5] [c3,g4]@2, c5@3 ~@5", // G C C5
  C: "[[d3,d5]@2 [f3,a3,a4] [d3,d5] [d#3,d#5]@3 [e3,e5]@2 [g#3,g#4] [b3,b4] [d3,d5]@2 [g#3,b4]@3]/2", // D F D D# E G# B D …
  D: "[[d3,d5]@2 [f3,a3,a4] [d3,d5] [d#3,d#5]@3 e3 e3 [g#3,g#4] [b3,b4] [d3,d5]@2 [g#3,b4]@3, ~@7 e5@2 ~@7]/2", // D F D D# G# B D G#m
  E: "a4 c5 e5 c5 g4 b4 d5 b4, a2 e3 g2 d3", F: "[c3,c5]@3 g4@2 c5 [c3,g4]@2, ~@3 g2@3 ~@2",
  G: "[d5@2 a4 d5 ~@5 g#4 b4 d5@2 ~ e3@2, d2@3 a2@3 d3@2 e2@3 b2@3 ~@2, ~@4 d#5@3 e5@2 ~@4 b4@3]/2",
  H: "d5@2 a4 d5 ~@3 e5, d2@3 a2@3 d3@2, ~@4 d#5@3 ~", I: "e5 g#4 b4 d5@2 ~ e3@2, e2@3 b2@3 ~@2, ~@5 b4@3",
  J: "~ [e3,a3,a4] [c3,c5]@2 [d3,d5]@2 [d#3,d#5]@2", K: "[e3,e5] [g#2,g#4] [b2,b4] [d3,d5]@2 [g#2,g#4] [a2,a4]!2",
  L: "~ [a2,e3,a5] [c4,e5]@2 [g3,g5]@2 [f3,f5]@2", M: "[e3,e5] [g#3,g#4] [b3,b4] [d3,d5]@2 [g#3,g#4] [a3,a4]!2",
  N: "[e2,g#4]@2 [e2,g#4] [b2,b4] ~ [b2,b4] [a2,c5]@2", // E B Am
})).s("gm_piano").gain(0.3)

// drums · cowbell
const cowbell = s("cb").struct("<~@24 A@17 ~@15 A@17 ~@15 A@16 ~@24 A@41 B>".pickRestart({
  A: "x!4", B: "x ~ x!2 ~ x!2 ~",
})).gain(0.3)

// drums · guiro
const guiro = s("guiro:0").struct("<[~@2 x!2 ~@2 x!2]!169 [x ~ x!2 ~ x!2 ~]>").gain(6.29)

stack(alto_sax, baritone_sax, trumpet, trombone, piano, cowbell, guiro)