Strudelify

The Bare Necessities

Satz: C. Wießner-Drude

KeyB♭ majorTempo172 bpm
0:00/0:00
// The Bare Necessities — Satz: C. Wießner-Drude
// 172 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/4 at bar 1, 4/4 at bar 1, 1/4 at bar 41, 3/4 at bar 42, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5850963; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(172/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 · flute · "Flöte"
const flute = note(`<
  ~ A B C D E F G H I J K L M N O P Q@2 E R S@2 E T U@2 V@2 W X Y Z AA AB AC AD AE AF AG M W A B C D E F G H I J K L M N
  O P Q@2 E R S@2 E T U@2 V@2 W X Y Z AA AB AC AD AE AF AG M W
>`.pickRestart({
  A: "~ bb5@2 a5", B: "bb5@4 bb5@2 ab5@9 ~", C: "g5@11 ~ gb5@4", D: "g5@11 ~@5", E: "bb5@15 ~", F: "b5@15 ~",
  G: "c6@3 bb5 a5 g5@3", H: "f5@11 ~@5", I: "~ d5@2 d5", J: "d5@2 f5 ab5@3 ~@2", K: "g5!4", L: "c6@11 ~@5", M: "bb5 g5",
  N: "f5 eb5", O: "d5 db5", P: "d5@2 bb5 a5@2 a5 g5@2", Q: "[f5@8 f5@11 ~ c6@4 c6@2 bb5@2 a5@4]/2",
  R: "~@2 bb5 a5@2 a5 g5@2", S: "[f5@8 c6@11 ~ c6@4 bb5@4 c6@4]/2", T: "~@3 ab5", U: "[bb5@15 ~]/2",
  V: "[bb5@27 ~@5]/2", W: "bb5 ~@3", X: "b5 ~@3", Y: "c6!2 c6@2 ~@2 bb5!2", Z: "a5 g5@2 f5@3 ~@2", AA: "f5@2 f5 bb5",
  AB: "b5@3 d5 d5@2 eb5@2", AC: "f5 d5 eb5 f5", AD: "g5!2 g5@4 eb5@2", AE: "d5 c5 bb4 a4", AF: "bb4 d5",
  AG: "g5 a5 g5 a5",
})).s("gm_flute").gain(0.3)

// other · flute · "Flöte"
const flute_2 = note(`<
  ~ A B C D E@2 F G H I J K L M N O P Q R S P Q R T U V W X Y@2 Z AA AB AC AD AE AF AG AH AI S A B C D E@2 F G H I J K L
  M N O P Q R S P Q R T U V W X Y@2 Z AA AB AC AD AE AF AG AH AI S
>`.pickRestart({
  A: "~ f5@2 e5", B: "f5@4 f5@2 f5@9 ~", C: "eb5@11 ~ eb5@4", D: "eb5@11 ~@5", E: "d5@15 ~", F: "eb5@3 d5 c5 bb4@3",
  G: "a4@11 ~@5", H: "~ bb4@2 bb4", I: "bb4@2 d5 f5@3 ~@2", J: "eb5!4", K: "e5@11 ~ c5@4", L: "d5 f5 d5 f5",
  M: "d5@2 bb4 g4@3 f4@2", N: "bb4 g4", O: "bb4@2 d5 d5@2 d5 d5@2", P: "eb5@2 eb5 eb5@2 eb5 eb5@2", Q: "eb5 ~@3",
  R: "d5@2 d5 d5@2 d5 d5@2", S: "d5 ~@3", T: "d5!2 eb5 f5", U: "g5!3 eb5", V: "d5 c5 d5 eb5", W: "f5 g5 f5 d5",
  X: "c5@11 ~@5", Y: "f5 ~@3", Z: "g5!2 g5@2 ~@2 f5!2", AA: "eb5 eb5@2 eb5@3 ~@2", AB: "d5@2 bb4 d5",
  AC: "f5@3 b4 b4@2 c5@2", AD: "d5 b4 c5 d5", AE: "eb5!2 eb5@4 c5@2", AF: "bb4 a4 g4 f4", AG: "f4 bb4", AH: "c5 eb5",
  AI: "f5 db5",
})).s("gm_flute").gain(0.3)

stack(flute, flute_2)