Strudelify
KeyA majorTempo84 bpm
0:00/0:00
// Gloria al Bravo Pueblo — Vicente Salias Arreglo Coral Juan Bautista Plaza
// 84 bpm, 2/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 7/16 at bar 16, 1/16 at bar 16, 2/4 at bar 17, ...) are rendered on a constant 2/4 grid of one bar per cycle
// note: ch 4 "Bass" named as a bass, played on electric bass finger (its piano patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/1454256; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · piano · "Soprano"
const piano = note(`<
  A B C D E F G H A B I D J K L H ~ M N O ~@2 P Q ~@4 R S T U V W X Q Y K Z AA AB AC AD F G AE Y K AF H A B C D E F G H
  A B I D J K L H
>`.pickRestart({
  A: "e5!4", B: "e5@2 c#5!2", C: "d5@2 b4!2", D: "b4@2 ~ b4", E: "d5@4 b4@3 b4", F: "c#5 a4", G: "b4!2 g#4!2",
  H: "a4 ~", I: "d5 e5 f#5 d5", J: "f#5@4 d5@3 d5", K: "e5 c#5", L: "d5!2 b4!2", M: "~@7 c#5", N: "c#5@4 a4@2 ~ a4",
  O: "a4 e4", P: "e4 g#4 b4 g#4", Q: "e4 ~", R: "a4 b4 a4 b4", S: "a4 d5", T: "a4 b4 a4 g4", U: "f#4@2 ~ f#4",
  V: "d5@4 c#5@3 c#5", W: "b4!2", X: "b4 a4 g#4 f#4", Y: "b4 c#5 d5 d#5", Z: "a4 b4 c#5 a4", AA: "g#4 f#4",
  AB: "d5 c#5 b4 a4", AC: "g#4 ~", AD: "e4 g#4 b4 d5", AE: "a4", AF: "b4@2 d5@2 e4@2 f#4 g#4",
})).s("gm_piano").gain(0.45)

// other · piano · "Soprano" · soft notes
const piano_soft = note("<~@23 [~@3 e4] [e4@2 f#4 g#4] [b4 a4] [e4!2 f#4 g#4] [a4 ~] ~@38>").s("gm_piano").gain(0.2)

// other · piano · "Alto"
const piano_2 = note(`<
  A B C D E F G H A I J D K L M N ~ O P F ~@2 Q H ~@4 R S T U V S W H X Y Z AA AB H AC F G AD Z AE M N A B C D E F G H A
  I J D K L M N
>`.pickRestart({
  A: "a4!2 g#4!2", B: "a4@2 a4 e4", C: "f#4@2 f#4!2", D: "e4@2 ~ e4", E: "g#4@4 b4@3 b4", F: "a4 e4", G: "f#4!2 e4!2",
  H: "e4 ~", I: "a4@2 a4!2", J: "a4@2 a4 f#4", K: "g#4@4 g#4@3 g#4", L: "a4!2", M: "f#4!2 e4 d4", N: "c#4 ~",
  O: "~@7 c#5", P: "c#5@4 a4@2 ~ a4", Q: "e4 g#4 b4 g#4", R: "g4!4", S: "f#4!2", T: "c#4!4", U: "d4@2 ~ d4",
  V: "f#4@4 f#4@3 f#4", W: "f#4!2 d#4!2", X: "g#4 a4 b4 c5", Y: "c#5 a4", Z: "e4!4", AA: "d4!2", AB: "f#4!4",
  AC: "e4!2 g#4 b4", AD: "d#4", AE: "e4 a4",
})).s("gm_piano").gain(0.45)

// other · piano · "Alto" · soft notes
const piano_soft_2 = note("<~@23 [~@3 e4] [e4@2 e4!2] [e4!2] [e4!4] [e4 ~] ~@38>").s("gm_piano").gain(0.2)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B C D E F G H A I J D K L G M ~ N O P ~@2 Q R ~@4 S T U V W X Y R Z AA AB X AC R AD F G AE AF AG G H A B C D E F G H
  A I J D K L G M
>`.pickRestart({
  A: "a3!2 b3!2", B: "c#4@2 a3!2", C: "d3@2 d3!2", D: "e3@2 ~ e3", E: "e3@4 f#3@3 g#3", F: "a3 c#3", G: "d3!2 e3!2",
  H: "a2 ~", I: "c#4@2 a3 g3", J: "f#3 e3 d3!2", K: "e3@4 e3@3 d3", L: "c#3 f#3", M: "[a2,e3] ~", N: "~@7 c#4",
  O: "c#4@4 a3@2 ~ a3", P: "a3 e3", Q: "e3 g#3 b3 g#3", R: "e3 ~", S: "c#4!2 a3!2", T: "d4 d3", U: "e3!2 a2!2",
  V: "d3@2 ~ c#3", W: "b2@4 c#3@3 c#3", X: "d3!2", Y: "d3!2 b2!2", Z: "e3 a3 b3 c4", AA: "c#4 a3", AB: "c#3!4",
  AC: "b2 c#3 d3 d#3", AD: "e3 d4 b3 g#3", AE: "f3", AF: "e3!2 d3!2", AG: "c#3 a2",
})).s("gm_electric_bass_finger").gain(0.45)

// bass · electric bass finger · "Bass" · soft notes
const bass_soft = note("<~@23 [~@3 e3] [e3@2 d3!2] [c#3!2] [e3 d3 c#3 b2] [a2 ~] ~@38>")
  .s("gm_electric_bass_finger").gain(0.2)

stack(piano, piano_soft, piano_2, piano_soft_2, bass, bass_soft)