Strudelify

baby elephant walk

JB

KeyF minorTempo120 bpm
0:00/0:00
// baby elephant walk — JB
// 120 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5945260; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 35 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · clarinet · "B♭ Clarinet"
const clarinet = note("<~@4 A ~ A ~@4 B@2 C D E F G H I J@4 K@2 J L F M F G H N@2>".pickRestart({
  A: "~@4 f5 ~@7 eb5 ~ eb5 ~", B: "[a5@2 g5@2 f5@2 d5@2 c5 [c5,d5]!3 d5@2 ab4@16 d5 ~]/2", C: "g4 ab4 f4 ~@13",
  D: "c4@3 f4 a4 ~ c5 ~ f5@2 d5@2 c5@2 a4@2", E: "ab4@2 a4 ~@11 c5@2", F: "d5 e5@2 ~ d5 e5@2 ~ bb4@2 g4@2 ~@2 g4@2",
  G: "c5 d5@2 ~ c5 d5@2 ~@9", H: "f4@4 f4@4 f4@2 eb4 ~ c4 ~ g3 ~", I: "bb3@2 c4 ~@13",
  J: "f3 ~ f3 ~ ab3@2 a3 ~ f3 ~ f3 ~ ab3@2 a3 ~", K: "bb3 ~ bb3 ~ db4@2 d4 ~ bb3 ~ bb3 ~ db4@2 d4 ~",
  L: "f3 ~ f3 ~ ab3@2 a3 ~ f3 ~@5 c5@2", M: "c5 d5@2 ~ c5 d5@2 ~ ab4@2 f4@2 ~@2 c5@2", N: "[bb3@2 c4 ~@3 c5@26]/2",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note("<~@2 A@9 B C@2 A D E F ~ G H I@2 J K L ~ M E N E O P Q@2>".pickRestart({
  A: "c4 ~ c4 ~ ab3@2 a3 ~ c4 ~ c4 ~ ab3@2 a3 ~", B: "c4 ~ c4 ~ ab3@2 a3 ~ c4 ~ c4 ~ db4@2 d4 ~",
  C: "f4 ~ f4 ~ db4@2 d4 ~ f4 ~ f4 ~ db4@2 d4 ~", D: "c4 ~ c4 ~ ab3@2 a3 ~ c4 ~ c4 ~@3 c5@2",
  E: "a4 bb4@2 ~ a4 bb4@2 ~ g4@2 e4@2 ~@2 e4@2", F: "g4 ab4@2 ~ g4 ab4@2 ~@9", G: "~@13 c4 eb4 c4", H: "f4@3 ~",
  I: "[~@2 ab4 ~ ab4@2 f4@2 g4 ab4 ab4@2 f4@2 g4 ab4@3 f4 ~ ab4@2 f4 ~ eb4@2 c4 ~ bb3@2 ab3 ~]/2",
  J: "b3@2 c4 ~ ab3 a3 f3@2 ~@8", K: "~@14 g4 ~", L: "~@2 f4 ~@3 eb4 ~@3 db4 d4@5", M: "~@7 c5",
  N: "g4 ab4@2 ~ g4 ab4@2 ~ f4@2 d4@2 ~@2 c5@2", O: "g4 ab4@2 ~ g4 ab4@2 ~ eb4@2 c4@2 bb3@2 ab3@2", P: "f3@3 ~@13",
  Q: "[~@3 a3@13]/2",
})).s("gm_clarinet").gain(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@2 A@10 B@2 A@2 C D E ~@5 F G H I C D C D E J@2>".pickRestart({
  A: "f3 ~ f3 ~ ab3@2 a3 ~ f3 ~ f3 ~ ab3@2 a3 ~", B: "bb3 ~ bb3 ~ db4@2 d4 ~ bb3 ~ bb3 ~ db4@2 d4 ~",
  C: "~ c4@3 c4@3 c4", D: "~ bb3@3 bb3@3 bb3", E: "f3@3 ~@13", F: "~@4 db3 d3 f3 g3 ab3@2 c4@2 ~@2 eb4 ~",
  G: "~@2 d4 ~@3 c4 ~@3 bb3@6", H: "f3@3 a3 c4 ~ f4 ~ a4@2 g4@2 f4@2 d4@2", I: "f4@2 f4 ~@13", J: "[~@3 f3@13]/2",
})).s("gm_tenor_sax").gain(0.3)

stack(clarinet, clarinet_2, tenor_sax)