Strudelify

Bajo de Corbio

Jaime Barria

KeyA minorTempo180 bpm
0:00/0:00
// Bajo de Corbio — Jaime Barria
// 180 bpm, 6/8, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5828197; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 226 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/3)

// 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 · "Flauta"
const flute = note(`<
  ~@43 A B C@2 D E F@2 A G H D@2 I J K A B C@2 D E F@2 A G H D@2 I J K ~@32 L M@2 N@3 O@2 ~@9 P Q R ~ S T U@2 V@2 ~@9 P
  Q R ~ S T U@2 V@2 ~ W X Y Z AA AB AC AD AE AF AG AH Z E AC E W X Y Z AA AB AC AD AE AF AG AH Z E AC E A B C@2 D E F@2
  A G H D@2 I J K A B C@2 D E F@2 A G H D@2 I J K AH K AI A AJ AK@2 A
>`.pickRestart({
  A: "a4@15 ~", B: "c5 a4", C: "[b4@15 ~]/2", D: "b4@15 ~", E: "g4 e4", F: "[a4@15 ~]/2", G: "d5 a4", H: "e5@15 ~",
  I: "e5 d5", J: "c5@15 ~", K: "c#5@15 ~", L: "d5 e5", M: "[c#5@15 ~]/2", N: "[d5@4 b4@15 ~ d5@4]/3", O: "[e5@15 ~]/2",
  P: "~ a4", Q: "c5 e5", R: "d5@15 ~", S: "~ d4", T: "f4 a4", U: "[b4@18 ~ b4@2 c5@3 d5@3 c5@2 b4@3]/2",
  V: "[c5@15 ~]/2", W: "d4!2", X: "f4 e4", Y: "g4 d4", Z: "e4 f4", AA: "e4!2", AB: "a4 g4", AC: "a4 e4", AD: "c4 e4",
  AE: "f4 d4", AF: "a4 c5", AG: "b4 c5", AH: "d5 b4", AI: "b4 g#4", AJ: "f#4 g#4", AK: "a4@3 a4@2 a4@3 a4@3 a4@5",
})).s("gm_flute").gain(0.31)

// other · cello · "Violonchelo"
const cello = note(`<
  ~@4 A@3 B@2 C D E@2 A F E@2 F C E@2 A@5 B@2 C D E@2 A F E@2 F C E@2 A@2 G H@2 I@2 J@2 K@2 H@2 I@2 J@2 K@2 H@2 I@2 J@2
  K@2 H@2 I@2 J@2 K@2 C D L E B C A@2 C D L E B C A@2 C D L E B C A@2 C D L E B C A@2 M A@2 N O P B@2 A@3 B@2 C D E@2 A
  F E@2 F C E@2 A@5 B@2 C D E@2 A F E@2 F C E@2 A@2 G Q R S T U V W X Y Z AA AB T AC W AC Q R S T U V W X Y Z AA AB T AC
  W AC C D L E B C A@2 C D L E B C A@2 C D L E B C A@2 C D L E B C A@2 M A M A M A@2 K
>`.pickRestart({
  A: "a2@5 a2@3 a2@3 a2@5", B: "e3@5 e3@3 e3@3 e3@5", C: "d3@5 d3@3 d3@3 d3@5", D: "c3@5 c3@3 c3@3 c3@5",
  E: "g2@5 g2@3 g2@3 g2@5", F: "f3@5 f3@3 f3@3 f3@5", G: "a2@5 a2@5 ~ a2@5", H: "d3", I: "g2", J: "e3", K: "a2",
  L: "b2@5 b2@3 b2@3 b2@5", M: "d3@3 d3@3 ~@2 e3@3 e3@3 ~@2", N: "d3@3 d3@3 ~@2 e3@5 e3@3", O: "e3@3 e3@5 e3@5 e3@3",
  P: "e3@3 e3@5 d3@3 d3@3 ~@2", Q: "d3!2", R: "f3 e3", S: "g3 d3", T: "e3 f3", U: "e3!2", V: "a3 g3", W: "a3 e3",
  X: "c3 e3", Y: "f3 d3", Z: "a3 c4", AA: "b3 c4", AB: "d4 b3", AC: "g3 e3",
})).s("gm_cello").gain(0.28)

// chords · piano
const piano = note(`<
  ~@4 A B C D@2 E F G@2 H I J@2 K L M@2 N@2 A B C D@2 E F G@2 H I J@2 K L M@2 N@2 O P@2 Q@2 R@2 S@2 P@2 Q@2 R@2 T U P@2
  Q@2 R@2 S@2 P@2 Q@2 R@2 T U V@2 W X Y@2 Z AA AB@2 AC AD AE AF AG AH V@2 W X Y@2 Z AA AB@2 AC AD AE AF AG AH AI AJ@2
  AK@3 AL@2 A B C D@2 E F G@2 H I J@2 K L M@2 N@2 A B C D@2 E F G@2 H I J@2 K L M@2 N@2 O AM@2 AN@2 AO@2 AP@2 AM@2 AN@2
  AO@2 AQ AR AM@2 AN@2 AO@2 AP@2 AM@2 AN@2 AO@2 AQ AR V@2 W X Y@2 Z AA AB@2 AC AD AE AF AG AH V@2 W X Y@2 Z AA AB@2 AC
  AD AE AF AG AH AS AT AU AV AW AX@2 AY
>`.pickRestart({
  A: "a4@3 a4@2 a4@3 e4@3 a4@5, [a2,c3,e3]@15 ~", B: "c5@3 c5@2 c5@3 a4@3 c5@5, [a2,c3,e3]@15 ~",
  C: "e5@3 e5@2 e5@3 c5@3 e5@5, [a2,c3,e3]@15 ~", // Am
  D: "[a5@8 ~@16 e5@3 g5@2 a5@3, [e3,g3,b3]@15 ~ [e3,g3,b3]@15 ~, ~@8 g5@15 ~@9]/2", // Em
  E: "d5@8 d5@3 f5@2 g5@3, [d3,f3,a3]@15 ~", F: "c5@8 c5@3 e5@2 f5@3, [c3,e3,g3]@15 ~",
  G: "[e5@8 ~@11 d5@2 d5@3 d5@3 c5@2 d5@3, [g2,b2,d3]@15 ~ [g2,b2,d3]@15 ~, ~@4 d5@5 ~@7]/2", // G
  H: "e5 a4, [a2,c3,e3]@15 ~", I: "c5 e5, [f3,a3,c4]@15 ~",
  J: "[[g2,b2,d3]@15 ~@4 d5@2 d5@3 d5@3 c5@2 b4@3, d5@9 ~@7, ~@16 [g2,b2,d3]@15 ~]/2", K: "a4 d4, [f3,a3,c4]@15 ~",
  L: "f4 a4, [d3,f3,a3]@15 ~", M: "[[g2,b2,d3]@15 ~@4 g4@2 a4@3 b4@3 a4@2 g4@3, g4@9 ~@7, ~@16 [g2,b2,d3]@15 ~]/2",
  N: "[[a2,c3,e3]@15 ~ [a2,c3,e3]@15 ~, a4@15 ~]/2", O: "[a2,c3,e3,a4]@5 [a2,c3,e3,c5]@5 ~ [a2,c3,e3,a4]@5",
  P: "[~ d4 f4 a4, [d3,f3,a3]@15 ~]/2", Q: "[~ b4 a4 g4, [g2,b2,d3]@15 ~]/2", R: "[~ e4 g4 b4, [e3,g3,b3]@15 ~]/2",
  S: "[~ c5 b4 a4, [a2,c3,e3]@15 ~]/2", T: "~ c5, [a2,c3,e3]@15 ~", U: "b4 a4, [a2,c#3,e3]@15 ~",
  V: "[[d3,f3,a3]@15 ~@4 f5@2 f5@3 f5@3 e5@2 f5@3, f5@9 ~@7, ~@16 [d3,f3,a3]@15 ~]/2", W: "[g2,b2,d3,g5]@15 ~",
  X: "d5@8 d5@3 g5@2 f5@3, [g2,b2,d3]@15 ~", // G
  Y: "[[e3,g3,b3]@15 ~@4 e5@2 e5@3 e5@3 d5@2 b4@3, e5@9 ~@7, ~@16 [e3,g3,b3]@15 ~]/2", Z: "[a2,c3,e3,c5]@15 ~",
  AA: "c#5 e5, [a2,c#3,e3]@15 ~", AB: "[[d3,f3,a3]@15 ~@4 f5@2 f5@3 f5@3 d5@2 a4@3, f5@9 ~@7, ~@16 [d3,f3,a3]@15 ~]/2",
  AC: "b4 c5, [g2,b2,d3]@15 ~", AD: "d5 f5, [g2,b2,d3]@15 ~", AE: "e5!2, [e3,g3,b3]@15 ~", AF: "e5 g5, [e3,g3,b3]@15 ~",
  AG: "[a2,c3,e3,a5]@15 ~", AH: "[a2,c#3,e3,g5]@15 ~", AI: "f#4@3 a4@2 d5@3 g#4@3 b4@2 e5@3, [d3,f#3,a3] [e3,g#3,b3]",
  AJ: "[[a2,c#3,e3]!2 [a2,c#3,e3]!2, c#5@15 ~]/2", // A
  AK: "[[d3,f#3,a3,d5] [e3,g#3,b3] [e3,g#3,b3]!2 [e3,g#3,b3] [d3,f#3,a3,d5], ~@4 b4@15 ~@5]/3", // D E D
  AL: "[[e3,g#3,b3]!2 [e3,g#3,b3]!2, e5@15 ~]/2", AM: "[[d3,f3,a3]@15 ~]/2", AN: "[[g2,b2,d3]@15 ~]/2",
  AO: "[[e3,g3,b3]@15 ~]/2", AP: "[[a2,c3,e3]@15 ~]/2", AQ: "[a2,c3,e3]@15 ~", AR: "[a2,c#3,e3]@15 ~",
  AS: "[d3,f#3,a3,f#5] [e3,g#3,b3,d5]", AT: "[a2,c#3,e3]!2, e5@15 ~", AU: "[d3,f#3,a3,d5] [e3,g#3,b3,b4]",
  AV: "[a2,c#3,e3]!2, c#5@15 ~", AW: "[d3,f#3,a3,a4] [e3,g#3,b3,b4]",
  AX: "c#5@3 c#5@2 c#5@3 c#5@3 c#5@5, [a2,c#3,e3]!2", AY: "[a2,c#3,e3,c#5]@15 ~",
})).s("gm_piano").gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A@42 B C@33 A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A@2 D@2 C A@40 B C@33 A C A C A C A C A C
  A C A C A C A C A C A C A C A C A C A C A C A C A C A@2 E
>`.pickRestart({
  A: "x ~@2 x ~ x ~@2 x ~@2 x ~@4", B: "x ~@4 x ~@5 x ~@4", C: "x ~@2 x ~@4 x ~@2 x ~@4",
  D: "x ~@2 x ~@4 x ~@2 x ~ x ~@2", E: "x",
})).gain(0.07)

stack(flute, cello, piano, mid_tom)