Strudelify

can you feel the love tonight

Elton John Logan Schoffstall

KeyE♭ majorTempo63 bpm
0:00/0:00
// can you feel the love tonight — Elton John Logan Schoffstall
// 63 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3776486; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(63/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 · french horn · "Mellophone"
const french_horn = note(`<
  A B C D E@3 F G@2 H I J K@3 L M N@2 O P@3 E Q R S A B C D E@3 F G@2 H I T U@3 V W X@2 Y Z@3 AA AB AC AD AA AE@2 AF AG
  AH AI@2
>`.pickRestart({
  A: "~ eb4!2 g4", B: "f4@4 eb4!2 c4!2", C: "~@2 db4@2 c4!3 eb4", D: "eb4 c4 db4 eb4", E: "db4 c4",
  F: "f4@2 f4 f4@3 f4@2 eb4@4 db4@4", G: "db4!2 c4!2", H: "db4 ab4", I: "gb4@4 eb4@3 eb4", J: "eb4@3 eb4 eb4@2 g4@2",
  K: "[f4@3 f4 db4@2 f4 eb4@2 ~ c4!2 f4@2 f4 eb4@9]/3", L: "db4@3 db4 c4@2 c4!2", M: "eb4@4 f4@4 db4!2 db4@6",
  N: "[f4@2 f4@2 f4@2 f4 eb4@9]/2", O: "ab4@3 eb4 eb4@3 g4", P: "[f4@3 f4 f4@2 ab4 ab4@3 ab4 f4 f4@2 f4 eb4@9]/3",
  Q: "eb4@4 f4@4 f4!2 db4@4 db4@2", R: "f4@2 f4@2 db4@3 db4", S: "eb4 db4 c4@2", T: "f4@3 f4 f4@2 a4@2",
  U: "[g4@3 g4 eb4@2 g4 f4@2 ~ d4!2 g4@2 g4 f4@9]/3", V: "eb4@3 eb4 d4@2 d4!2", W: "f4@4 g4@4 eb4!2 eb4@6",
  X: "[g4@2 g4@2 g4@2 g4 f4@9]/2", Y: "bb4@3 f4 f4@3 a4", Z: "[g4@3 g4 g4@2 bb4 bb4@3 bb4 g4 g4@2 g4 f4@9]/3",
  AA: "eb4 d4", AB: "f4@4 g4@4 g4!2 eb4@4 eb4@2", AC: "g4@2 g4@2 eb4@3 eb4", AD: "d4",
  AE: "[f4@4 g4@4 g4!2 g4@13 g4@2 g4@4 g4@3]/2", AF: "~ f4@6 eb4@2 ~@4 f4@3", AG: "~ f4@4 a4@4 g4@7",
  AH: "~ f4@2 f4@2 d4@2 d4@2 ~@4 eb4@3", AI: "[~ d4@2 d4@2 eb4@4 d4@16 ~@7]/2",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Mellophone"
const french_horn_2 = note(`<
  A B C D E@2 F G H I J K L M@3 N O P@2 Q R@3 S T U V A B C D E@2 F G H I J K W X@3 Y Z AA@2 AB AC@3 AD AE AF AG AD AH@2
  AI AJ AK AL@2
>`.pickRestart({
  A: "~ ab4 g4 bb4", B: "ab4@4 ab4!2 eb4 ab4", C: "~@2 f4@2 ab4 eb4 ab4 eb4", D: "eb4!2 bb3 c4",
  E: "[ab4 f4 eb4 ab4@2 f4 eb4@2]/2", F: "ab4 f4 eb4@2", G: "bb4@2 ab4 ab4@3 ab4@2 g4@8", H: "ab4 f4 eb4 ab4",
  I: "ab4 f4 eb4!2", J: "ab4 c5", K: "bb4@4 g4@3 eb4", L: "~@2 ab4!2 g4@2 bb4@2",
  M: "[ab4@3 c5 ab4@2 ab4 ab4@2 ~ ab4 eb4 ab4@2 ab4 ab4@3 ab4 g4@5]/3", N: "~@2 ab4 eb4 eb4@2 eb4!2",
  O: "ab4@4 ab4@4 f4!2 ab4@6", P: "[bb4@2 ab4@2 ab4@2 ab4 g4@9]/2", Q: "c5@3 ab4 g4@3 bb4",
  R: "[ab4@3 c5 ab4@2 ab4 c5@3 c5 ab4 ab4@2 ab4 ab4@3 ab4 g4@5]/3", S: "ab4 eb4", T: "ab4@4 ab4@4 db5!2 ab4@4 f4@2",
  U: "bb4@2 ab4@2 ab4@2 g4 f4", V: "eb4 f4 eb4@2", W: "~@2 bb4!2 a4@2 c5@2",
  X: "[bb4@3 d5 bb4@2 bb4 bb4@2 ~ bb4 f4 bb4@2 bb4 bb4@3 bb4 a4@5]/3", Y: "~@2 bb4 f4 f4@2 f4!2",
  Z: "bb4@4 bb4@4 g4!2 bb4@6", AA: "[c5@2 bb4@2 bb4@2 bb4 a4@9]/2", AB: "d5@3 bb4 a4@3 c5",
  AC: "[bb4@3 d5 bb4@2 bb4 d5@3 d5 bb4 bb4@2 bb4 bb4@3 bb4 a4@5]/3", AD: "bb4 f4", AE: "bb4@4 bb4@4 eb5!2 bb4@4 g4@2",
  AF: "c5@2 bb4@2 a4@3 g4", AG: "f4", AH: "[bb4@4 bb4@4 eb5!2 bb4@13 bb4@2 c5@4 bb4@3]/2", AI: "~ a4@6 g4@2 ~@4 bb4@3",
  AJ: "~ a4@4 c5@4 bb4@7", AK: "~ bb4@2 bb4@2 f4@2 bb4@2 ~@4 bb4@3", AL: "[~ bb4@2 f4@2 f4@4 f4@16 ~@7]/2",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Mellophone"
const french_horn_3 = note(`<
  A B C D B@3 E F@2 G H I J@3 K L M@2 N O@3 B P Q R A B C D B@3 E F@2 G H S T@3 U V W@2 X Y@3 Z AA AB AC Z AD@2 AE@2 AF
  AG@2
>`.pickRestart({
  A: "ab3@2 eb4!2", B: "db4 ab3", C: "db4@4 ab3!3 c4", D: "g3 ab3 bb3 c4", E: "bb3@2 c4 db4@3 d4@2 eb4@8",
  F: "db4!2 ab3!2", G: "db4 ab4", H: "gb4@4 eb4@3 eb4", I: "eb4@3 eb4 eb4@2 eb4@2",
  J: "[f4 c4 f4 eb4 db4@2 db4 ab3@2 ~ ab3!2 db4@2 d4 eb4@9]/3", K: "db4@3 bb3 ab3@2 eb4!2", L: "ab4@4 f4@4 db4!2 db4@6",
  M: "[bb3@2 c4@2 db4@2 d4 eb4@3 eb4@2 eb4@2 eb4@2]/2", N: "eb4@3 eb4 eb4@3 eb4",
  O: "[f4@3 eb4 db4@2 f4 ab4@3 ab4 f4 db4@2 d4 eb4@9]/3", P: "ab4@4 f4@4 db4!2 db4@4 db4@2",
  Q: "bb3@2 f4@2 f4@2 eb4 db4", R: "c4 bb3 ab3@2", S: "f4@3 f4 f4@2 f4@2",
  T: "[g4 d4 g4 f4 eb4@2 eb4 bb3@2 ~ bb3!2 eb4@2 e4 f4@9]/3", U: "eb4@3 c4 bb3@2 f4!2", V: "bb4@4 g4@4 eb4!2 eb4@6",
  W: "[c4@2 d4@2 eb4@2 e4 f4@3 f4@2 f4@2 f4@2]/2", X: "f4@3 f4 f4@3 f4",
  Y: "[g4@3 f4 eb4@2 g4 bb4@3 bb4 g4 eb4@2 e4 f4@9]/3", Z: "eb4 bb3", AA: "bb4@4 g4@4 eb4!2 eb4@4 eb4@2",
  AB: "c4@2 g4@2 f4@3 eb4", AC: "bb3", AD: "[bb4@4 g4@4 eb4!2 eb4@13 eb4@2 c4@4 g4@3]/2",
  AE: "[~ f4@6 eb4@2 bb3@16 eb4@7]/2", AF: "~ bb3@8 eb4@7", AG: "[~ bb3@2 bb3@2 c4@4 bb3@16 ~@7]/2",
})).s("gm_french_horn").gain(0.3)

stack(french_horn, french_horn_2, french_horn_3)