Strudelify

Can't Help Falling In Love

Hugo Peretti Luigi Creatore George D. Weiss

KeyB majorTempo67 bpm
0:00/0:00
// Can't Help Falling In Love — Hugo Peretti Luigi Creatore George D. Weiss
// 67 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5049275; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 46 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(67/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 · trumpet · "B♭ Trumpet 1"
const trumpet = note("<A B C D C E C F G H C I C J C F K@3 L M N@5 O@4 P@3 Q@2 R@4 S T U@2 V@3>".pickRestart({
  A: "a3 e4", B: "c#4@2 ~@4 b3 c#4", C: "e4!2", D: "e4 ~@3", E: "e4@3 ~@3 e4@2 e4@2 e4@2", F: "a3 ~", G: "b3 e4 g#4@2",
  H: "e4@3 ~@3 e4!2", I: "e4@3 ~@5", J: "e4@3 ~@3 f#4@2 f#4@2 f#4@2", K: "e4!4 d#4@3 ~", L: "~ e4", M: "e4@7 ~",
  N: "[b3@12 e4@11 g#4@23 ~ e4@23 ~@12 e4@5 e4@6 e4@23 ~ e4@23 e4@23 ~@18 e4@5 f#4@23 ~ g#4@23 a4@7]/5",
  O: "[~@16 b4@8 c#5@8 d5@8 c#5@23 b4@23 a4@17 ~@7 d#4@11 f#4@12 e4@17 ~@6 f#4@5 f#4@6 f#4@6 e4@5 e4@14]/4",
  P: "[~@9 f#4@5 f#4@6 g#4@6 f#4@5 e4@11 ~ g#4@11 f#4@6 f#4@5 g#4@6 f#4@3 e4@3 e4@40 ~@5 f#4@22]/3",
  Q: "[~ e4@17 ~@16 a3@11 a4@11 g#4@11 e4@16 ~@13]/2",
  R: "[~@4 e4@5 ~ e4@5 e4@22 e4@22 ~ e4@22 g#4@5 ~@6 a4@5 g#4@5 ~ f#4@22 g#4@22 a4@16 ~@6 b4@7 c#5@7 d5@7 ~]/4",
  S: "c#5@11 b4@11 c#5@2", T: "~ b4@3 a4@30 ~@14", U: "[~@5 e4@27 e4@13 e4@13 ~@14 b3@9 c#4@9 d4@6]/2",
  V: "[~@3 c#4@20 ~@7 e4@32 e4@48 ~@34]/3",
})).s("gm_trumpet").gain(0.25)

// other · french horn · "Horn in F"
const french_horn = note("<A B C D E F C G H I C J E F C G K@3 L M N@4 O@5 P Q@2 R@2 S@4 T@2 ~@5>".pickRestart({
  A: "a3 b3", B: "b3@2 ~@4 b3 c#4", C: "c#4 b3", D: "b3@2 ~@5 e3", E: "f#3 g#3", F: "a3@3 ~@3 b3@2 c#4@2 d4@2",
  G: "a3 ~", H: "c#4 e4", I: "c#4@3 ~@3 b3!2", J: "b3@3 ~@4 e3", K: "d#4!4 c#4@3 ~", L: "~ b3", M: "c#4@2 b3@2 a3@3 ~",
  N: "[f#3@23 f#3@23 ~ f#3@23 ~@12 b3@5 a3@6 a3@12 b3@6 a3@6 a3@23 g#3@12 ~@5 a3@3 b3@3 c#4@6 b3@6 a3@12 ~@5]/4",
  O: "[a3@23 ~ a3@11 b3@3 c#4@3 a3@12 ~@11 a3@8 a3@8 a3@8 a3@23 g#3@12 a3@5 b3@6 c#4@17 ~@7 c4@11 d#4@12 d#4@17 ~@6 c#4@5 c#4@6 c#4@6 d#4@5 c#4@14]/5",
  P: "~@9 c#4@5 c#4@6 d4@6 c#4@5 c#4@17", Q: "[~@6 c#4@6 c#4@5 d4@6 c#4@3 d4@3 c#4@40 ~@5 d4@22]/2",
  R: "[~ a3@17 ~@5 a3@22 b3@22 a3@16 ~@13]/2",
  S: "[~@4 g#3@5 ~ a3@5 b3@4 ~ c#4 b3@16 a3@22 ~ b3@16 c#4@5 ~ b3@5 a3@5 ~ b3@5 c#4@5 ~ d4@11 c#4@11 b3@22 c#4@16 ~@6 d4@7 d4@7 d4@7 ~]/4",
  T: "[c#4@11 c#4@11 e4@11 d#4@8 ~@7]/2",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft = note("<~@40 A@3 B@3>".pickRestart({
  A: "[~@34 e4@5 ~ f#3@27 g#3@26 a3@13 ~@14 b3@9 c#4@9 d4@6]/3", B: "[~@3 c#4@20 ~@7 a3@16 g#3@16 b3@48 ~@34]/3",
})).s("gm_french_horn").gain(0.2)

// other · trombone
const trombone = note("<A B A C D E F G H I A J K L F G M@3 N O P@7 Q@2 R S@2 T@2 U@4 V@4 W@3>".pickRestart({
  A: "a3!2", B: "a3@2 ~@4 b3 c#4", C: "g#3 ~@3", D: "d3 e3", E: "f#3@3 ~@3 a3@2 a3@2 a3@2", F: "a3 g#3", G: "a3 ~",
  H: "e3 b3", I: "b3@3 ~@3 a3!2", J: "g#3@3 ~@5", K: "d3 f#3 e3 g#3", L: "g#3@3 ~@3 f#3@2 a3@2 a3@2", M: "b3!4 a#3@3 ~",
  N: "~ g#3", O: "a3@4 g#3@3 ~",
  P: "[e3@12 b3@11 b3@23 ~ b3@23 ~@12 a3@5 g#3@6 f#3@23 ~ e3@11 a3@12 e3@12 ~@5 f#3@3 g#3@3 a3@6 g#3@6 f#3@6 a2@5 a2@23 ~ b2@23 c#3@12 ~@11 f#3@8 f#3@8 f#3@8 e3@23 e3@23 a3@6 g#3@4]/7",
  Q: "[~@2 f#3@6 ~@6 g#3@11 c4@12 b3@17 ~@6 a#3@5 a#3@6 a#3@6 a#3@5 b3@14]/2", R: "~@9 a#3@5 a#3@6 b3@6 a#3@5 b3@17",
  S: "[~@6 a#3@6 a#3@5 b3@6 a#3@3 b3@3 b3@22 g#3@17 ~@6 a3@22]/2", T: "[~ g#3@17 ~@5 a3@22 a3@22 g#3@16 ~@13]/2",
  U: "[~@15 f#3@22 e3@22 ~ a3@16 b3@5 ~ g#3@11 a3@11 a3@22 a3@22 b3@16 ~@6 a3@7 a3@7 a3@7 ~]/4",
  V: "[a3@22 a3@11 b3@11 a3@39 ~@5 a2@27 b2@26 c#3@13 ~@14 b3@9 c#4@9 d4@6]/4",
  W: "[~@3 c#4@20 ~@7 f#3@32 c#3@48 ~@34]/3",
})).s("gm_trombone").gain(0.25)

// bass · tuba
const bass = note("<A B C D E F G H I J C K L M G H N@3 O P Q@5 R@4 S T@2 U@2 V W@3 X@4 Y@3>".pickRestart({
  A: "a3 g#3", B: "f#3@2 ~@4 b3 c#4", C: "f#3 e3", D: "e3 ~@3", E: "a2 b2", F: "c#3@3 ~@3 f#3@2 f#3@2 f#3@2", G: "e3!2",
  H: "a3 ~", I: "a2@2 a3 g#3", J: "f#3@3 ~@3 g#3!2", K: "e3@3 ~@5", L: "a2 d3 b2 e3", M: "f#3@3 ~@3 c#3@2 d3@2 d3@2",
  N: "c#3!4 c#3@3 ~", O: "~@2 f#2 c#3", P: "b2@4 e2@3 ~",
  Q: "[a2@12 a3@11 g#3@17 ~ c#3@6 f#2@23 ~@12 f#3@5 e3@6 a2@23 ~ a2@23 a2@23 ~@18 c#2@5 d2@23 ~ e2@23 f#2@7]/5",
  R: "[~@16 d3@8 d3@8 b2@8 e2@23 e2@23 f#2@17 ~@7 g#2@11 c3@12 c#3@17 ~@6 c#3@5 c#3@6 c#3@6 g#2@5 c#2@14]/4",
  S: "~@9 c#3@5 c#3@6 c#3@6 g#2@5 c#2@17", T: "[~@6 c#3@6 c#3@5 c#3@6 g#2@6 c#3@22 c#2@17 ~@6 b2@22]/2",
  U: "[~ e2@17 ~@5 a3@22 c#3@22 f#2@16 ~@13]/2", V: "~@15 a2@22 a2@11",
  W: "[a3@11 ~ g#3@16 a3@5 ~ g#3@5 f#3@5 ~ e3@11 d3@22 e3@11 c#3@11 f#2@16 ~@6 d3@7 c#3@7 b2@7 ~]/3",
  X: "[e2@22 f2@11 f3@11 f#3@22 b2@16 ~@6 d2@27 e2@26 f#2@13 ~@14 b2@9 c#3@9 d3@6]/4",
  Y: "[~@3 c#3@20 ~@7 e2@32 a1@48 ~@34]/3",
})).s("gm_tuba").gain(0.25)

stack(trumpet, french_horn, french_horn_soft, trombone, bass)