Strudelify

guiles theme

C. Vaccaro-Gallo

KeyE♭ majorTempo124 bpm
0:00/0:00
// guiles theme — C. Vaccaro-Gallo
// 124 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/337801; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 41 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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 · flute
const flute = note("<A@2 B C A B ~@8 D E F G D E F H I@2 J K L M N@2 O@2 P@2 A@2 B C A B Q>".pickRestart({
  A: "eb5 ~ eb5 d5 ~ d5 eb5@8 d5@2", B: "eb5 d5@2 eb5@2 d5@2 f5 ~ f5 eb5@2 d5@2 bb4@2",
  C: "eb5 ~ eb5 d5 ~ d5 eb5@7 eb5 d5@2", D: "g5 eb5 d5 c5 g5 eb5 d5 c5 g5 eb5 d5 c5 g5 eb5 d5 c5",
  E: "g5 f5 eb5 d5 g5 f5 eb5 d5 g5 f5 eb5 d5 g5 f5 eb5 d5", F: "c5@4 ~@4 eb6 d6 c6 bb5 ab5 g5 f5 eb5",
  G: "bb4 c5 ~ c5@13", H: "~@6 bb5!2", I: "[c6@10 d6@2 eb6 f6@2 g6@4 ab6 ~@2 f6@4 d6@2 c6 d6@3]/2",
  J: "d6@4 eb6@3 f6 ~@2 bb5@4 f6@2", K: "ab6@6 g6 f6 g6@4 f6@2 eb6@2", L: "c6@5 d6 eb6 f6", M: "f6@10 g6 ~ eb6 d6@3",
  N: "[d6@2 eb6 c6@25 bb5@2 bb5@2]/2", O: "[c6@10 d6@2 eb6 f6@2 g6@5 c6@3 [bb5,bb6]@3 ab6@2 g6@2 f6@2]/2",
  P: "[d6 eb6@2 c6@29]/2", Q: "[g4,c5] ~@3",
})).s("gm_flute").gain(0.45).pan(0.6)

// other · clarinet · "Bb Clarinet"
const clarinet = note("<A B C D A C ~@8 E F G H E F G I J@2 K L M N O@2 P@2 Q@2 A B C D A C R>".pickRestart({
  A: "[eb4,eb5] ~ [eb4,eb5] [d4,d5] ~ [d4,d5] eb4@2 eb4@6 [d4,d5]@2, ~@3 eb5@4 ~", // Eb D
  B: "[eb4,eb5] ~ [eb4,eb5] [d4,d5] ~ [d4,d5] [eb4,eb5]@8 [d4,d5]@2", // Eb D Eb D
  C: "[eb4,eb5] [d4,d5]@2 [eb4,eb5]@2 [d4,d5]@2 [f4,f5] ~ [f4,f5] [eb4,eb5]@2 [d4,d5]@2 [bb3,bb4]@2", // Eb D Eb D F Eb D Bb
  D: "[eb4,eb5] ~ [eb4,eb5] [d4,d5] ~ [d4,d5] [eb4,eb5]@7 [eb4,eb5] [d4,d5]@2", // Eb D Eb D
  E: "g5 eb5 d5 c5 g5 eb5 d5 c5 g5 eb5 d5 c5 g5 eb5 d5 c5", F: "g5 f5 eb5 d5 g5 f5 eb5 d5 g5 f5 eb5 d5 g5 f5 eb5 d5",
  G: "c5@4 ~@4 eb5 d5 c5 bb4 ab4 g4 f4 eb4", H: "[bb3,f4] [c4,g4] ~ [c4,g4]@13", I: "~@6 bb4!2",
  J: "[c5@10 d5@2 eb5 f5@2 g5@4 ab5 ~@2 f5@4 d5@2 c5 d5@3]/2", K: "d5@4 eb5@3 f5 ~@2 bb4@4 f5@2",
  L: "ab5@6 g5 f5 g5@4 f5@2 eb5@2", M: "c5@5 d5 eb5 f5", N: "f5@10 g5 ~ eb5 d5@3", O: "[d5@2 eb5 c5@25 bb4@2 bb4@2]/2",
  P: "[c5@10 d5@2 eb5 f5@2 g5@5 c5@3 bb4@3 ab5@2 g5@2 f5@2]/2", Q: "[d5 eb5@2 c5@29]/2", R: "[c4,g4,c5] ~@3",
})).s("gm_clarinet").gain(0.45).pan(0.6)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<A@2 B C A B ~@7 D E F G@2 H@2 G@2 I@2 J K L M N O P@2 Q@2 A@2 B C A B R>".pickRestart({
  A: "c4 ~ c4 bb3 ~ bb3 c4@8 bb3@2", B: "c4 bb3@2 c4@2 bb3@2 d4 ~ d4 c4@2 bb3@2 g3@2",
  C: "c4 ~ c4 bb3 ~ bb3 c4@7 c4 bb3@2", D: "[eb4,g4] [d4,f4] [bb3,d4] [g3,d4]", E: "c4@5 bb3 c4 bb3",
  F: "c4@10 bb3 ~ c4 bb3@3", G: "eb4/2", H: "c4", I: "[f3 g3@2 g3@7 g3 g3@3 g3 bb3@4 c4@3 c4@4 f3@2 eb3@2 f3@2]/2",
  J: "f3@4 f3 f3@2 f3@5 f3@2 ab3@2", K: "bb3@4 bb3 bb3@2 bb3@9", L: "eb3@3 eb3@2 eb3@2 eb3 eb3@3 eb3@2 eb3@2 eb3",
  M: "f3@3 f3@2 f3@2 f3 f3@3 f3@2 f3@2 f3", N: "f3 g3@2 g3@7 g3 g3@3 g3@2",
  O: "f3 g3@2 g3@2 f3 g3@3 c4 eb4 c4 g4 f4 eb4 d4", P: "[eb4@10 f4@2 g4 ab4@2 g4@5 c4@3 f4@3 eb4@2 d4@2 c4@2]/2",
  Q: "[f4 g4@2 g4@29]/2", R: "c4 ~@3",
})).s("gm_alto_sax").gain(0.45).pan(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<A@2 B C A B ~@8 D E F@2 G H F@2 I@2 J K L M N@2 O@2 P@2 A@2 B C A B Q>".pickRestart({
  A: "c4 ~ c4 bb3 ~ bb3 c4@8 bb3@2", B: "c4 bb3@2 c4@2 bb3@2 d4 ~ d4 c4@2 bb3@2 g3@2",
  C: "c4 ~ c4 bb3 ~ bb3 c4@7 c4 bb3@2", D: "ab3@5 g3 ab3 g3", E: "bb3@10 g3 ~ bb3 g3@3", F: "c4/2", G: "ab3", H: "bb3",
  I: "[c4@10 d4@2 eb4 f4@2 g4@4 ab4 ~@2 f4@4 d4@2 c4 d4@3]/2", J: "d4@4 eb4@3 f4 ~@2 bb3@4 f4@2",
  K: "ab4@6 g4 f4 g4@4 f4@2 eb4@2", L: "c4@5 d4 eb4 f4", M: "f4@10 g4 ~ eb4 d4@3", N: "[d4@2 eb4 c4@25 bb3@2 bb3@2]/2",
  O: "[c3@10 d3@2 eb3 f3@2 g3@5 c3@3 bb3@3 ab3@2 g3@2 f3@2]/2", P: "[d3 eb3@2 c3@29]/2", Q: "[g3,c4] ~@3",
})).s("gm_tenor_sax").gain(0.45).pan(0.6)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A B C D E C F G H I F G H I J K F L J M F N O@2 P Q J M F N J K F N A B C D E C R
>`.pickRestart({
  A: "c3@9 c3 g3 f3 eb3 d3 c3 bb2", B: "ab2@9 ab2 f3 g3 f3 g3 f3 g3", C: "ab2 ab2@2 ab2@4 bb2@2 bb2 bb2@2 bb2!2 c3@2",
  D: "c3@3 c3@3 c3@3 f3 g3 f3 eb3 d3 c3 bb2", E: "ab2@3 ab2@3 ab2@3 f3 g3 f3 eb3 d3 c3 bb2",
  F: "bb2 c3@2 c3@7 c3 c3@3 c3@2", G: "g2 ab2@2 ab2@7 ab2 ab2@3 ab2@2", H: "a2 bb2@2 bb2@7 bb2 bb2@3 bb2@2",
  I: "gb2 g2@2 g2@7 g3 f3 eb3 f3 eb3 f3", J: "ab2@3 ab2@2 ab2@2 ab2 ab2@3 ab2@2 ab2@2 ab2",
  K: "ab2@3 bb2@2 bb2@2 bb2 bb2@3 bb2@2 bb2@2 bb2", L: "bb2 c3@2 c3@6 c3!2 bb2 ab2 g2 f2 g2",
  M: "bb2@3 bb2@2 bb2@2 bb2 bb2@3 bb2@2 bb2@2 bb2", N: "bb2 c3@2 c3@2 bb2 c3@3 c3 eb3 c3 g3 f3 eb3 d3",
  O: "[bb2 c3@2 c3@7 c3 c3@3 c3 eb3@4 f3@3 f3@4 f3@2 eb3@2 f3@2]/2", P: "bb2@4 bb2 bb2@2 bb2@5 bb2@2 d3@2",
  Q: "eb3@4 eb3 eb3@2 eb3@9", R: "c2 ~@3",
})).s("gm_baritone_sax").gain(0.45).pan(0.6)

// chords · french horn · "Horn"
const french_horn = note(`<
  A@2 B C A B ~@3 D ~@2 E F G H I@2 J K L@2 M@2 N O P Q R@2 S@2 T@2 A@2 B C A B U
>`.pickRestart({
  A: "[c4,eb4] ~ [c4,eb4] [bb3,d4] ~ [bb3,d4] [c4,eb4]@8 [bb3,d4]@2", // Cm Bb Cm Bb
  B: "[c4,eb4] [bb3,d4]@2 [c4,eb4]@2 [bb3,d4]@2 [d4,f4] ~ [d4,f4] [c4,eb4]@2 [bb3,d4]@2 [g3,bb3]@2", // Cm Bb Cm Bb Dm Cm Bb Gm
  C: "[c4,eb4] ~ [c4,eb4] [bb3,d4] ~ [bb3,d4] [c4,eb4]@7 [c4,eb4] [bb3,d4]@2", D: "~@10 g4 f4 eb4 f4 eb4 f4",
  E: "~@10 c4 ~ d4 eb4@3", F: "[eb4,g4] [d4,f4] [bb3,d4] [g3,d4]", G: "[ab3,c4]@5 [g3,bb3] [ab3,c4] [g3,bb3]",
  H: "[bb3,c4]@10 [g3,bb3] ~ [bb3,c4] [g3,bb3]@3", I: "[c4,eb4]/2", J: "[c4,eb4]@10 [bb3,d4]@2 [ab3,c4] [bb3,d4]@3",
  K: "[bb3,eb4] [bb3,d4] [f3,bb3]!2", L: "[[g3,c4]@14 bb3!2]/2",
  M: "[c4@10 [bb3,d4]@2 [c4,eb4] [d4,f4]@2 [c4,eb4]@4 [c4,f4] ~@2 [c4,f4]@4 [bb3,d4]@2 [ab3,c4] [bb3,d4]@3]/2", // Bb Cm Dm Cm F5 Bb Ab Bb
  N: "[bb3,d4]@4 [c4,eb4]@3 [d4,f4] ~@2 [bb3,f4]@4 [d4,f4]@2", O: "[eb4,ab4]@6 [eb4,g4] [d4,f4] [d4,f4]@4 d4@2 eb4@2",
  P: "[ab3,c4]@5 [ab3,d4] [ab3,eb4] [ab3,f4]", Q: "[bb3,f4]@10 [g3,g4] ~ eb4 d4@3",
  R: "[d4@2 eb4 [g3,c4]@25 [g3,bb3]@2 [g3,bb3]@2]/2", // C5 Gm
  S: "[[ab3,eb4]@10 [bb3,f4]@2 [c4,g4] [d4,ab4]@2 [c4,g4]@5 c4@3 [d4,f4]@3 [eb4,ab4]@2 [d4,g4]@2 [c4,f4]@2]/2", // Ab5 Bb5 C5 Ddim C5 Dm Ab5 G5 …
  T: "[[f3,d4] [g3,eb4]@2 [g3,c4]@29]/2", U: "[c4,g4] ~@3",
})).s("gm_french_horn").gain(0.45).pan(0.4)

// chords · trombone
const trombone = note("<A B C D E F ~@3 G ~@2 H I J K L M J N L O P@2 Q R J N L S J K L T A B C D E F U>".pickRestart({
  A: "g3@9 g3!2 f3 eb3 d3 c3 bb2", B: "eb3@9 ab3 f3 g3 f3 g3 f3 g3", C: "ab3 ab3@2 ab3@4 bb3@2 bb3 bb3@2 bb3!2 c4@2",
  D: "c4@2 bb3 c4@2 bb3 c4 g3@2 f3 g3 f3 eb3 d3 c3 bb2", E: "ab3@2 g3 ab3@2 g3 ab3 eb3@2 f3 g3 f3 eb3 d3 c3 bb2",
  F: "ab2 ab2@2 ab2@4 bb2@2 bb2 bb2@2 bb2!2 c3@2", G: "~@10 g3 f3 eb3 f3 eb3 f3", H: "~@10 c4 ~ d4 eb4@3",
  I: "[c4,eb4] [bb3,d4] [g3,bb3] [d3,g3]", // Cm Bb Gm G5
  J: "[eb3,ab3]@3 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3] [eb3,ab3]@3 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3]", // Ab5
  K: "[eb3,ab3]@3 [f3,bb3]@2 [f3,bb3]@2 [f3,bb3] [f3,bb3]@3 [f3,bb3]@2 [f3,bb3]@2 [f3,bb3]", // Ab5 Bb5
  L: "[f3,bb3] [g3,c4]@2 [g3,c4]@7 [g3,c4] [g3,c4]@3 [g3,c4]@2", // Bb5 C5
  M: "[f3,bb3] [g3,c4] ~ [g3,c4]@5 ~ c4!2 bb3 ab3 g3 f3 g3", // Bb5 C5
  N: "[f3,bb3]@3 [f3,bb3]@2 [f3,bb3]@2 [f3,bb3] [f3,bb3]@3 [f3,bb3]@2 [f3,bb3]@2 [f3,bb3]", // Bb5
  O: "[bb2,bb3] [c3,c4]@2 [c3,c4]@2 [bb2,bb3] [c3,c4]@2 c4 [c3,c4] [eb3,eb4] [c3,c4] g3 f3 eb3 d3", // Bb C Bb C Eb C
  P: "[[f3,bb3] [g3,c4]@2 [g3,c4]@6 c4 [g3,c4] [g3,c4]@3 [g3,c4] [bb3,eb4]@4 [c4,f4]@3 [c4,f4]@4 [f3,bb3]@2 [eb3,ab3]@2 [f3,bb3]@2]/2", // Bb5 C5 Eb5 F5 Bb5 Ab5 Bb5
  Q: "[f3,bb3]@4 [f3,bb3] [f3,bb3]@2 bb3 bb3@4 [f3,bb3]@2 [ab3,d4]@2, ~@7 f3@5 ~@4", // Bb5 Abdim
  R: "[bb3,eb4]@4 [bb3,eb4] [bb3,eb4]@2 eb4 eb4@8, ~@7 bb3@9", // Eb5
  S: "[f3,bb3] [g3,c4]@2 [g3,c4]@2 [f3,bb3] [g3,c4]@3 [c3,c4] [eb3,eb4] [c3,c4] g3 f3 eb3 d3", // Bb5 C5 Bb5 C5 C Eb C
  T: "[f3,bb3] [g3,c4]@2 [g3,c4]@2 [f3,bb3] [g3,c4]@3 [g3,c4] [bb3,eb4] [g3,c4] [g3,g4] [f3,f4] [eb3,eb4] [d3,d4]", // Bb5 C5 Bb5 C5 Eb5 C5 G F …
  U: "[c3,g3] ~@3", // C5
})).s("gm_trombone").gain(0.45)

// bass · tuba · "Euphonium"
const bass = note("<A B C D E F ~@3 G ~@2 H I J K L M J N L O P@2 Q R J N L S J K L T A B C D E F U>".pickRestart({
  A: "g3@9 g3!2 f3 eb3 d3 c3 bb2", B: "eb3@9 ab3 f3 g3 f3 g3 f3 g3", C: "ab3 ab3@2 ab3@4 bb3@2 bb3 bb3@2 bb3!2 c4@2",
  D: "c4@2 bb3 c4@2 bb3 c4 g3@2 f3 g3 f3 eb3 d3 c3 bb2", E: "ab3@2 g3 ab3@2 g3 ab3 eb3@2 f3 g3 f3 eb3 d3 c3 bb2",
  F: "ab2 ab2@2 ab2@4 bb2@2 bb2 bb2@2 bb2!2 c3@2", G: "~@10 g3 f3 eb3 f3 eb3 f3", H: "~@10 c3 ~ d3 eb3@3",
  I: "c3 bb2 eb3 d3", J: "eb3@3 eb3@2 eb3@2 eb3 eb3@3 eb3@2 eb3@2 eb3", K: "eb3@3 f3@2 f3@2 f3 f3@3 f3@2 f3@2 f3",
  L: "f3 g3@2 g3@7 g3 g3@3 g3@2", M: "f3 g3 ~ g3@5 ~ c4!2 bb3 ab3 g3 f3 g3", N: "f3@3 f3@2 f3@2 f3 f3@3 f3@2 f3@2 f3",
  O: "bb2 c3@2 c3@2 bb2 c3@3 c3 eb3 c3 g3 f3 eb3 d3", P: "[f3 g3@2 g3@7 g3 g3@3 g3 bb3@4 c4@3 c4@4 f3@2 eb3@2 f3@2]/2",
  Q: "f3@4 f3 f3@2 f3@5 f3@2 ab3@2", R: "bb3@4 bb3 bb3@2 bb3@9", S: "f3 g3@2 g3@2 f3 g3@3 c3 eb3 c3 g3 f3 eb3 d3",
  T: "f3 g3@2 g3@2 f3 g3@3 g3 bb3 g3!2 f3 eb3 d3", U: "g3 ~@3",
})).s("gm_tuba").gain(0.45).pan(0.6)

// bass · tuba · "Bb Tuba"
const bass_2 = note("<A B C D E C F G H I F G H I J K F L J M F N O@2 P Q J M F N J K F N A B C D E C R>".pickRestart({
  A: "c2@9 c2 g2 f2 eb2 d2 c2 bb1", B: "ab1@9 ab1 f2 g2 f2 g2 f2 g2", C: "ab1 ab1@2 ab1@4 bb1@2 bb1 bb1@2 bb1!2 c2@2",
  D: "c2@3 c2@3 c2@3 f2 g2 f2 eb2 d2 c2 bb1", E: "ab1@3 ab1@3 ab1@3 f2 g2 f2 eb2 d2 c2 bb1",
  F: "bb1 c2@2 c2@7 c2 c2@3 c2@2", G: "g1 ab1@2 ab1@7 ab1 ab1@3 ab1@2", H: "a1 bb1@2 bb1@7 bb1 bb1@3 bb1@2",
  I: "gb1 g1@2 g1@7 g2 f2 eb2 f2 eb2 f2", J: "ab1@3 ab1@2 ab1@2 ab1 ab1@3 ab1@2 ab1@2 ab1",
  K: "ab1@3 bb1@2 bb1@2 bb1 bb1@3 bb1@2 bb1@2 bb1", L: "bb1 c2@2 c2@6 c2!2 bb1 ab1 g1 f1 g1",
  M: "bb1@3 bb1@2 bb1@2 bb1 bb1@3 bb1@2 bb1@2 bb1", N: "bb1 c2@2 c2@2 bb1 c2@3 c2 eb2 c2 g2 f2 eb2 d2",
  O: "[bb1 c2@2 c2@7 c2 c2@3 c2 eb2@4 f2@3 f2@4 f2@2 eb2@2 f2@2]/2", P: "bb1@4 bb1 bb1@2 bb1@5 bb1@2 d2@2",
  Q: "eb2@4 eb2 eb2@2 eb2@9", R: "[c1,c2] ~@3",
})).s("gm_tuba").gain(0.45)

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

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

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

stack(flute, clarinet, alto_sax, tenor_sax, baritone_sax, french_horn, trombone, bass, bass_2, kick, snare, crash)