Strudelify
KeyF majorTempo90 bpm
0:00/0:00
// skylark — Hoagy Carmichael
// 90 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5900329; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 34 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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 · recorder · "Alto Recorder"
const recorder = note("<A B C D E F G H I J C D E F G H K L M@2 N@3 O ~ P C D E F G H Q R>".pickRestart({
  A: "e5 g5 gb5 f5", B: "f5@2 f5 g5", C: "a5 bb5", D: "c6@8 g5@5 ~@3 c6@5 bb5@3 a5@5 g5@3", E: "f5@5 f5@8 e5@19",
  F: "d5@2 g5 f5", G: "d5@5 d5@8 c5@11 c5@3 d5@2 c5@3", H: "b4 c5 d5 bb4", I: "c5@2 d5!2", J: "d5!2 c5 bb4",
  K: "c5 ~ bb4@2", L: "a4@8 bb4@8 c5@5 ~@11", M: "[d5@5 c5@8 c5@11 c5@5 c5@11 ~@8 g4@8 c5@8]/2",
  N: "[a4@5 a4@8 bb4@3 bb4@8 bb4@5 c5@11 ~@8 f5@5 e5@8 d5@11 f5@8 e5@8 eb5@8]/3", O: "g5!2 a5 ~",
  P: "ab5@8 gb5@5 gb5@8 ab5@11", Q: "c5 ~ c5 db5", R: "c5@8 db5@5 c5@19",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Tenor Recorder"
const recorder_2 = note("<A B C D E F G H I J C D E F G H K L M@2 N@3 O P Q C R E S G H T U>".pickRestart({
  A: "c5", B: "d5@2 g5 bb4", C: "d5@5 e5@3 f5@8 f5@5 e5@3 d5@8", D: "c5@2 e5 c5", E: "a4@5 bb4@3 c5@8 f4@5 g4@3 a4@8",
  F: "bb4@2 e5 d5", G: "bb4@13 a4@11 ab4@8", H: "g4@2 e4 g4", I: "a4@21 f4@3 a4@8", J: "c5 d5 bb4@2", K: "a4 ~ g4@2",
  L: "f5@8 g5@8 a5@5 ~@11", M: "[f4@5 gb4@8 g4@11 bb4@5 a4@11 ~@8 eb4@8 e4@8]/2",
  N: "[f4@5 gb4@8 g4@11 g4@5 gb4@11 ~@8 db5@5 c5@8 bb4@35]/3", O: "d5!2 c5 ~",
  P: "a4@5 ab4@3 gb4@5 e4@8 a4@3 b4@5 db5@3", Q: "eb5@8 d5@5 c5@8 bb4@11", R: "c5@5 e5@3 g5@8 e5@8 c5@8",
  S: "bb4@5 c5@3 d5@8 e5@8 d5@8", T: "a4 ~ f5 g5", U: "f5@8 bb4@5 a4@19",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Bass Recorder"
const recorder_3 = note("<A B C D E F G H I J C D E F G H K L M@2 N@3 O ~ P C D E F G H Q R>".pickRestart({
  A: "a4", B: "c5 b4 bb4 c4", C: "f4 g4", D: "a4 bb4", E: "c4@2 d4 e4", F: "bb3@2 a3 d4", G: "bb3 f4", H: "g4 g3 c4@2",
  I: "f4@2 d4 c4", J: "bb3 b3 g4 c4", K: "f4 ~ c4@2", L: "f4@8 c4@8 f4@5 ~@11",
  M: "[bb3@8 a3@8 g3@8 gb4@5 f4@11 a3@8 a4@8 gb4@8]/2", N: "[bb3@8 a3@8 g3@8 eb4@5 d4@11 gb4@8 g4@5 gb4@8 g4@35]/3",
  O: "bb4 a4!2 ~", P: "a4@8 ab4@5 g4@8 e4@11", Q: "f4 ~ db4 c4", R: "f4@8 gb4@5 f4@19",
})).s("gm_recorder").gain(0.3)

stack(recorder, recorder_2, recorder_3)