Strudelify

hello

Adele

KeyD majorTempo84 bpm
0:00/0:00
// hello — Adele
// 84 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2308506; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · "Saxophone Alto"
const alto_sax = note(`<
  ~@4 A B A C ~@8 D E D E D E D E D E D F@2 G@3 H I J K@2 L@2 M N M O ~@2 P Q P Q P Q P Q ~@2 R ~ S T S T S T S T S T S
  T S T S T F@2 U@2 V W
>`.pickRestart({
  A: "g#4@2 a#4@2 c5@2 c5@6 ~@2 d#4 f4", B: "g4@3 g#4 g4@2 f4@5 ~@5", C: "g4@2 ~ f4 g#4@4 ~@8", D: "c5@3 d#5@5",
  E: "a#4@3 g#4@5", F: "[f4@2 g#4!2 a#4!2 a#4@5 g#4@3 ~ f4]/2",
  G: "[f4@2 f4@2 g#4@2 g#4@2 a#4@2 a#4@2 a#4@10 g#4@6 g#4 d#5@2 a#4@3 c5@2 ~@2 g#4@4 f4@2 ~@2 g#4@2]/3",
  H: "g#4@2 g4@2 f4@2 d#4@2 ~@2 g#4 d#5@2 c5 a#4@2", I: "~ c5 ~ g#4@2 f4 ~ g#4", J: "g#4 g4 f4 d#4 ~@4",
  K: "[f4!2 g#4!2 a#4!2 a#4@5 g#4@2 ~@2 f4]/2", L: "[f4@2 f4@2 g#4@2 g#4@2 a#4@2 a#4@2 a#4@10 g#4@4 g#4 d#5@3 c5@2]/2",
  M: "a#4 c5 ~ g#4 ~ f4 ~ g#4", N: "g#4@2 g4@2 f4@2 d#4@2 ~@2 g#4 d#5@3 c5@2", O: "g#4@2 g4@2 f4@2 d#4@5 d#4 f4 c4@3",
  P: "g#4@2 g#4 ~ g#4 ~ c5@2 c5 ~ c5 ~ c5 ~ d#4 f4", Q: "g4@2 g4 ~ g4 ~ f4@2 f4 ~ f4 ~ f4 ~ f4 ~",
  R: "c5 ~@2 a#4 ~@2 g#4 ~", S: "f4@3 g#4@3 ~@2", T: "f4@3 f4@3 f4@2", U: "[f4!2 g#4!2 a#4!2 a#4@5 g#4@3 ~@2]/2",
  V: "~@9 f5 ~ d#5 c#5 c5 ~ a#4", W: "g#4 ~@3",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Saxophone Ténor"
const tenor_sax = note(`<
  A B A B A B A C A B A C A B A D@2 E@7 ~@3 F G F H I@2 J K ~ L@2 M N O N O ~ P@2 Q@7 ~@2 R ~ S T S T S T S T S U S U V
  W S T ~ U ~ X@2 Y
>`.pickRestart({
  A: "c4@3 d#4@5", B: "a#3@3 g#3@5", C: "a#3@3 c4@5", D: "[a#3@6 c4@6 ~@2 c4 c4@10 ~@4 g#3@2 a#3]/2",
  E: "[a#3@2 c4@2 ~@6 f3@2 g#3@2 c4 c4@3 c4 c4@3 c4 c4@3 a#3 a#3@3 g#3 a#3@3 c4 a#3@3 f3 g#3@2 ~ f3@2 g#3@2 c4 c4@10 ~@5 a#3 a#3@3 g#3@2 ~@6 f3@2 g#3@2 c4 c4@3 c4 c4@3 c4 c4@3 a#3 a#3@3 g#3 a#3@3 c4 a#3@3 f3 g#3@4 ~@5]/7",
  F: "g#3@2 f3@2 a#2@2 c3@6 ~@2 c4 a#3", G: "g#3@4 g3 f3 d#3@4 ~@4 f3@2", H: "g#3@4 g3 f3 d#3@6 ~@4", I: "f3", J: "c4",
  K: "c4 ~", L: "[f3!2 g#3!2 a#3!2 a#3@5 g#3@2 ~@3]/2", M: "f3!2 g#3!2 a#3!2 a#3@2",
  N: "~@2 g#3 d#4@3 g#3@2 a#3@2 c4@2 ~@2 c4@2", O: "c4 a#3 g#3 g3@4 ~", P: "[~@14 c4 c4@10 ~@4 g#3@2 a#3]/2",
  Q: "[a#3@2 c4@2 ~@6 f3@2 g#3@2 c4 c4@3 c4 c4@3 c4 c4@3 a#3 a#3@3 g#3 a#3@3 c4 a#3@3 f3 g#3@2 ~ f3@2 g#3@2 c4 c4@10 ~@3 a#3@2 a#3 a#3@3 g#3@2 ~@6 f3@2 g#3@2 c4 c4@3 c4 c4@3 c4 c4@3 a#3 a#3@3 g#3 a#3@3 c4 a#3@3 f3 g#3@4 ~@5]/7",
  R: "f3 ~@2 d#3 ~@2 f3 ~", S: "f3@3 c#3@3 ~@2", T: "d#3@3 d#3@3 d#3@2", U: "f3@2 g#3!2 a#3!2 a#3@2",
  V: "a#3@2 g#3@2 d#4@3 a#3 a#3@2 c4@2 ~@2 c4@2", W: "c4 a#3 g#3 d#3 d#3@2 d#3@2", X: "[d#4@6 f4 ~ g#4@24]/2",
  Y: "g#4 ~@3",
})).s("gm_tenor_sax").gain(0.3)

// bass · baritone sax · "Saxophone Baryton"
const bass = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A ~@4 C D E F G H G H G H G H A I J K J K J L J K M N ~ O P Q P Q
  P R P R P Q P Q P R P R S@2 T@2 ~ U
>`.pickRestart({
  A: "f2@3 g#2@5", B: "d#2@3 c#2@5", C: "f2@3 c#2@3 ~ f2", D: "g#2 g2 f2 d#2@3 ~@2", E: "f2@3 c#2@3 ~ c#2", F: "d#2 ~",
  G: "f2@3 c#2@5", H: "g#2 g2 f2 d#2@4 ~", I: "d#2@3 f2 d#2@2 c#2@9 ~",
  J: "f2@2 f2 ~ f2 ~ g#2@2 g#2 ~ g#2 ~ g#2 ~ b1 c#2", K: "d#2@2 d#2 ~ d#2 ~ c#2@2 c#2 ~ c#2 ~ c#2 ~ c#2 ~",
  L: "d#2@2 d#2 ~ d#2 ~ c#2@2 c#2 ~ c#2 ~ c#2 ~ b1 c#2", M: "f2@3 d#2@5", N: "c2@3 f2@5", O: "~@6 f3 ~",
  P: "f2@3 c#2@3 ~@2", Q: "d#2@3 d#2@3 d#2@2", R: "g#2 g2 f2 d#2@4 d#2", S: "[f2@2 g#2!2 a#2!2 a#2@5 g#2@3 ~ f2]/2",
  T: "[f2!2 g#2!2 a#2!2 a#2@5 g#2@3 ~@2]/2", U: "g#2 ~@3",
})).s("gm_baritone_sax").gain(0.3)

stack(alto_sax, tenor_sax, bass)