Strudelify

adiós amor

Sean White

KeyD majorTempo80 bpm
0:00/0:00
// adiós amor — Sean White
// 80 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5932832; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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 · trumpet · "B♭ Trumpet 1"
const trumpet = note(`<
  ~@4 A B@2 C@2 ~@9 D E F G ~@8 H I@3 ~@8 J K@2 L@3 M N@2 O@2 ~@8 P Q R ~@4 S T ~ U@3
>`.pickRestart({
  A: "~@5 b4 e5 f#5 g5@4 f#5 e5 d#5 d5", B: "[b4@6 b4 e5@11 ~@3 e5 f#5 e5 f#5@4 e5 f#5 ~ e5]/2",
  C: "[d5@2 g5@10 a5@2 b5 a5@3 e5@14]/2", D: "~@4 e5@2 f#5@2 g5@3 f#5 g5 f#5 e5 d5", E: "c#5",
  F: "~@4 d5@2 e5@2 f#5@3 e5 f#5 e5 d5 e5", G: "f#5, f5 ~@15", H: "~@3 d5",
  I: "[e5@4 f#5@4 g5@12 b5 a#5 a5 g#5 g5@12 ~@12]/3", J: "~@13 b4 e5 f#5",
  K: "[g5@4 f#5 e5 d#5 d5 b4@6 b4 e5@11 ~@3 e5 f#5 e5]/2", L: "[f#5@4 e5 f#5 ~ e5 d5@2 g5@10 a5@2 b5 a5@3 e5@14 ~@8]/3",
  M: "~@6 e5 f#5", N: "[g5@3 f#5 g5 f#5 e5 d5 c#5@16 ~@4 d5@2 e5@2]/2",
  O: "[f#5@3 e5 f#5 e5 d5 e5 f#5@16 ~@8, ~@8 f5 ~@23]/2", P: "~ d5 e5 f#5", Q: "g5@12 b5 a#5 a5 g#5", R: "g5@3 ~",
  S: "~@3 f#4 a4 f#4 g4 a4", T: "b4 ~", U: "[~@5 d4 g4 b4 d5@2 b4@2 a4 ~ b4 a4@21 ~@12]/3",
})).s("gm_trumpet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B@2 C D ~@3 E@2 F G H I ~@2 J K ~@6 L M N O P Q@2 ~@2 R S@2 ~ T U V@2 W X ~@3 Y Z ~@6 AA AB AC AD AE AF AG ~@3 AH AI
  ~@3 AJ AK ~@3
>`.pickRestart({
  A: "~@5 f#4 g4 a4 b4@2 a4 [a4,b4] g4@2 f#4 [f#4,g4]", B: "[d4@6 b4 b4@5 e5@8 ~ g4 a4 g4 a4@2 g4!2 a4@2 g4@2]/2",
  C: "f#4@6 d5@2 d5@4 d5 [f#5,a5] d5 [a4,b4]", D: "f#4 ~@3", E: "[~ b4!2 g4 a4@5 ~@7]/2", F: "~@12 b4@2 a4 [a4,b4]",
  G: "g4@3 ~", H: "~@9 b3 [c4,c#4] d4 e4 f#4 [g4,a4] a#4", I: "b4 ~",
  J: "~@2 f#4@2 g4@2 a4@2 b4@2 a4!2 b4@2 a4@2, ~@12 f#4 ~@3", K: "d#5@3 ~",
  L: "g4 b4 d5 g5 g4 b4 d5 g5 g4 b4 d5 g5 g4 b4 d5 g5", M: "a4 c#5 e5 a5 a4 c#5 e5 a5 a4 c#5 e5 a5 a4 c#5 e5 a5",
  N: "a4 ~@7", O: "g5 d5!3 g5 [b4,g5]!3 g5@4 d5 c#5 c5 b4, ~@8 b4 ~@7", P: "a#4 ~", Q: "[~ f#4 g4 b4 a4@8 ~@4]/2",
  R: "~@10 d5 a5 f#5 d5 b4 a4", S: "[f#4 [f#4,g4] d5@2 d5@2 e5@2 d5@12 ~@12]/2", T: "~@2 d5!2",
  U: "d5@4 d5@4 d5@4 ~ f#4 g4 a4", V: "[b4@2 a4 [a4,b4] g4@2 f#4 [f#4,g4] d4@6 b4 b4@5 e5@8 ~ g4 a4 g4]/2",
  W: "a4@2 g4!2 a4@2 g4@2 f#4@6 d5@2", X: "d5@4 d5 [f#5,a5] d5 [a4,b4] f#4@4 ~@4", Y: "~@5 b4!2 a#4", Z: "a4@5 ~@3",
  AA: "~@8 g4 b4 d5 g5 g4 b4 d5 g5", AB: "g4 b4 d5 g5 g4 b4 d5 g5 a4 c#5 e5 a5 a4 c#5 e5 a5",
  AC: "a4 c#5 e5 a5 a4 c#5 e5 a5 [a4,c#5]@2 ~@6", AD: "~@8 g5 d5!3 g5 [g5,b5]!3",
  AE: "g5@4 d5 c#5 c5 b4 a#4@8, b5 ~@15", AF: "~@5 f#4 g4 b4", AG: "a4",
  AH: "~@2 d5 a5 f#5 d5 b4 a4 f#4 [f#4,g4] [f#4,a4,d5]@2 d5@2 e5@2", AI: "d5@3 ~", AJ: "~@2 a4 d5", AK: "d5 ~",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@8 A@2 B C D E ~@2 F G ~@6 H I J K L M@2 ~@2 N O@2 ~ P Q R@2 S T ~@3 U V ~@6 W X Y Z AA AB AC ~@3 AD G ~@3 AE E ~@3
>`.pickRestart({
  A: "[~ g3!3 e3@5 ~@7]/2", B: "~@12 g3@2 f#3 [f#3,g3]", C: "e3@3 ~", D: "~@9 b2 [c3,c#3] d3 e3 f#3 [g3,a3] a#3",
  E: "f#3 ~", F: "~@2 d3@2 e3@2 f#3@2 g3@2 f#3 a3 g3@2 f#3@2, ~@12 f#3 ~@3", G: "f#3@3 ~",
  H: "g3 b3 d4 g4 g3 b3 d4 g4 g3 b3 d4 g4 g3 b3 d4 g4", I: "a3 c#4 e4 a4 a3 c#4 e4 a4 a3 c#4 e4 a4 a3 c#4 e4 a4",
  J: "c#4 ~@7", K: "g4 d4!3 g4 [d4,g4]!3 g4@4 d4 c#4 c4 b3, ~@8 d4 ~@7", L: "a#3 ~", M: "[~ d3 e3 g3 f#3@8 ~@4]/2",
  N: "~@10 d4 a4 f#4 d4 b3 a3", O: "[f#3 [f#3,g3] f#3@2 f#3@2 g3@2 f#3@12 ~@12]/2", P: "~@2 a3 b3",
  Q: "a3@4 g3@4 f#3@4 ~ d3 e3 f#3", R: "[g3@2 f#3 [f#3,g3] e3@2 d3 [d3,e3] b2@6 g3 g3@5 g3@8 ~ e3 f#3 [e3,f3]]/2",
  S: "f#3@2 e3 ~ f#3@2 e3@2 d3@6 b3@2, e3 ~@2 g3@2 ~@11, ~@4 e3 ~@11", T: "a3@4 d4 [f#4,a4] d4 [a3,b3] f#3@4 ~@4",
  U: "~@6 g3!2", V: "e3@5 ~@3", W: "~@8 g3 b3 d4 g4 g3 b3 d4 g4",
  X: "g3 b3 d4 g4 g3 b3 d4 g4 a3 c#4 e4 a4 a3 c#4 e4 a4", Y: "a3 c#4 e4 a4 a3 c#4 e4 a4 [a3,c#4]@2 ~@6",
  Z: "~@8 g4 d4!3 g4 [g4,b4]!3", AA: "g4@4 d4 c#4 c4 b3 a#3@8, b4 ~@15", AB: "~@5 d3 e3 g3", AC: "f#3",
  AD: "~@2 d4 a4 f#4 d4 b3 a3 f#3 [f#3,g3] [f#3,a3,d4]@2 [f#3,a3,d4]@2 [g3,b3,e4]@2", AE: "~@2 d3 f#3",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<A B@2 C D ~@69>".pickRestart({
  A: "~@5 d3 e3 f#3 g3@2 f#3 [f#3,g3] e3@2 d3 [d3,e3]", // Gmaj7 Dsus2
  B: "[b2@6 g3 g3@5 g3@8 ~ e3 f#3 [e3,g3] f#3@2 e3 g3 a3@2 g3@2]/2", C: "d3@6 b3@2 a3@4 d4 [f#4,a4] d4 [a3,b3]",
  D: "f#3 ~@3",
})).s("gm_baritone_sax").gain(0.3)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  A B C D E B C F G H B C D E B C I E B C D E B C J K L M N O P Q R S@2 T U V W X Y Z AA AB Y AC AD AE X Y Z AA AB Y AF
  AG AH AI R S@2 AJ M N O I AK AL AM N I N AN AO
>`.pickRestart({
  A: "~ b1", B: "e2@3 e2 b1@2 e2@2", C: "a1@3 a1 e1@2 a1@2", D: "d2@3 d2 a1@2 a1 a#1", E: "b1@3 b1 f#1@2 b1@2",
  F: "g2@3 g2 d2@2 g2@2", G: "a1@3 a1 e1@2 e2@2", H: "a1 b1", I: "d2@3 d2 a1@2 d2@2", J: "g1@3 g1 d1@2 g1@2",
  K: "a1@3 a1 c#2@2 e2@2", L: "a1!2 g#1@2", M: "g1@3 g1 d1@2 d1@2", N: "g1@3 g1 a1@2 a1@2", O: "d2@3 d2 a1@2 a1@2",
  P: "d2@3 d2 d2@2 d1@2", Q: "e1@2 f#1@2 g1@3 g1", R: "d1@2 d1@2 g1@3 g1", S: "a1@2 a1@2 d2@3 d2",
  T: "a1@2 d2@2 a1@3 a1", U: "e2@2 a1@2 g1@3 g1", V: "d2@2 g1@2 d2@3 d2", W: "a1!2 d2@2", X: "b1@4 e2@3 e2",
  Y: "b1@2 e2@2 a1@3 a1", Z: "e1@2 a1@2 d2@3 d2", AA: "a1@2 a1 a#1 b1@3 b1", AB: "f#1@2 b1@2 e2@3 e2",
  AC: "e1@2 a1@2 g2@3 g2", AD: "d2@2 g2@2 a1@3 a1", AE: "e1 e2 a1@2", AF: "e1@2 a1@2 g1@3 g1", AG: "d1@2 g1@2 a1@3 a1",
  AH: "c#2 e2 a1!2", AI: "g#1@4 g1@3 g1", AJ: "d2 d1 e1 f#1", AK: "a1@3 a1 e2@2 a1@2", AL: "g1@3 g1 d2@2 g1@2",
  AM: "f#1@3 d1 e1@2 f#1@2", AN: "d2@3 b1 a1@2 f#1@2", AO: "d1 ~",
})).s("gm_electric_bass_pick").gain(0.3)

stack(trumpet, alto_sax, tenor_sax, baritone_sax, bass)