Strudelify
Baby Elephant Walk cover art

Peter Gunn Theme

Baby Elephant Walk

Henry Mancini

KeyF majorTempo120 bpm
0:00/0:00
// Baby Elephant Walk — Henry Mancini
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 57 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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
const flute = note(`<
  ~@4 A B C D@2 E C F G H I J ~@4 A F C D@2 E C K G H I L M N O P Q R@2 S C T U V A B C D@2 E W K X H Y@3
>`.pickRestart({
  A: "f5@3 a5 c6 ~ f6 ~ a6@2 g6@2 f6@2 d6 ~", B: "b5@2 c6@3 ~@11", C: "f5@3 a5 c6 ~ f6 ~ a6@2 g6@2 f6@2 d6@2",
  D: "[c6@6 d6 ab5@8 d6]/2", E: "ab5 f5 ~@6, g5 ~@15", F: "b5@2 c6 ~@13",
  G: "g6@3 ~ g6@3 ~ [eb6,e6] ~ c6 ~@5, gb6 ~@3 gb6 ~@11", H: "f6@4 f6@4 eb6 f6 eb6 c6 bb5@2 ab5@2, e6 ~@3 e6 ~@11",
  I: "b5@4 b5@4 bb5 b5 bb5 ab5 f5@2 c5@2, bb5 ~@3 bb5 ~@11", J: "eb5@2 f5 ~@13", K: "b5@2 c6 ~@11 c6@2",
  L: "eb5@2 f5 ~ d5 ~ d5 ~ c5 ~ c5 ~ bb4 ~ bb4 ~", M: "a4 ~@15", N: "~@7 c5", O: "f5@2 ab5 f5 bb5 ab5@3",
  P: "[bb5,d6,f6]@4 [a5,c6,f6]@4 [bb5,d6,f6] ~ [bb5,d6,f6] ~ [a5,c6,f6]@4", Q: "f5@2 ab5 f5 bb5!2 ab5 f5",
  R: "[ab5 f6 e6 eb6 d6 db6 [f5,c6] b5 bb5 ~@6 d6, ~ bb5@5 ~ ab5@7 ab5@2]/2", S: "~ f5 ~@6, ab5@5 ~@3",
  T: "b5 c6 ~@5 c6", U: "g6@2 g6@2 e6 c6 ~ c6, ~@8 eb6 ~@7", V: "f6@4 f6@4 eb6 f6 eb6 c6 bb5@2 ab5@2",
  W: "f5@3 a5 c6 ~ f6 ~ a6@2 g6 ~ f6@2 d6@2", X: "g6@3 ~ g6@3 ~ [eb6,e6] ~ c6 ~@3 c6@2, gb6 ~@3 gb6 ~@11",
  Y: "[f5@2 ~@2 c6@5 d6@5 ~ c6@5 [a5,eb6]@23 ~@5]/3", // Adim
})).s("gm_flute").gain(0.55).pan(0.4)

// chords · trumpet
const trumpet = note("<A ~ A ~@13 A ~ A ~@5 B ~@7 A C ~@20 D@3>".pickRestart({
  A: "~@4 [f4,a4,f5,a5] ~@7 [eb4,g4,eb5,g5] ~ [eb4,g4,eb5,g5] ~", // F Eb
  B: "~@4 [bb4,d5,bb5,d6] ~@7 [ab4,c5,ab5,c6] ~ [ab4,c5,ab5,c6] ~", C: "~@4 [f4,a4,f5,a5] ~@11",
  D: "[~@4 c5@5 d5@5 ~ c5@5 [eb5,c6]@23 ~@5]/3", // Cm
})).s("gm_trumpet").gain(0.38).pan(0.2)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A@7 B C D A E F D A@9 B C D A E F D A G A H I J K L@2 D A E F D A@3 B C D A E F D M@3
>`.pickRestart({
  A: "[f2,c3] ~ [f2,c3] ~ ab2@2 a2@2 [f2,c3] ~ [f2,c3] ~ ab2@2 a2@2", // F5
  B: "[f2,c3] ~ [f2,c3] ~ ab2@2 a2@2 [f2,c3] ~ [f2,c3] ~ db3@2 d3@2", // F5
  C: "[bb2,f3] ~ [bb2,f3] ~ db3@2 d3@2 [bb2,f3] ~ [bb2,f3] ~ db3@2 d3@2", // Bb5
  D: "[bb2,f3] ~ [bb2,f3] ~ db3@2 d3@2 [bb2,f3] ~ [bb2,f3] ~ ab2@2 a2@2", // Bb5
  E: "[f2,c3] ~ [f2,c3] ~ ab2@2 a2@2 [f2,c3] ~ [f2,c3] ~ eb3@2 e3@2", // F5
  F: "[c3,g3] ~ [c3,g3] ~ eb3@2 e3@2 [c3,g3] ~ [c3,g3] ~ eb3@2 e3@2", // C5
  G: "[f2,c3] ~ [f2,c3] ~ [bb2,f3] ~ [bb2,f3] ~ [a2,e3] ~ [a2,e3] ~ [g2,d3] ~ [g2,d3] ~", // F5 Bb5 A5 G5
  H: "[f2,c3] ~ [f2,c3] ~ ab2@2 a2@2 [f2,c3] ~ [f2,c3] ~ ab2@2 c2@2", I: "f2@2 ab2 f2 bb2 ab2@3", J: "f2 ~@15",
  K: "f2@2 ab2 f2 bb2!2 ab2 f2",
  L: "[ab2@2 f3@2 e3@2 eb3@2 d3@2 db3@2 [f2,c3]@2 b2@2 bb2@2 [bb2,f3] ~ db3@2 d3@2 [bb2,f3] ~ [bb2,f3] ~ db3@2 d3@2, ~ bb2@5 ~ ab2@2 ~@7]/2", // F5 Bb5
  M: "[[f2,c3]@2 ~@2 c3@5 d3@5 ~ c3@5 [f2,c3]@23 ~@5]/3", // F5
})).s("gm_piano").gain(0.4).pan(0.3)

// bass · slap bass 2 · "SLAPBASS 2"
const bass = note("<A@8 B@2 A@2 C B A@10 B@2 A@2 C B A D A E F G H I B@2 A@2 C B A@4 B@2 A@2 C B J@3>".pickRestart({
  A: "f2@3 f2 c2@4", B: "bb1@3 bb1 f1@4", C: "c2@3 c2 g1@4", D: "f2@4 bb1 ~ bb1 ~ a1 ~ a1 ~ g1 ~ g1 ~",
  E: "f2@3 f2 c2@3 c2", F: "f2@2 ab2 f2 bb2 ab2@3", G: "f1 ~@15", H: "f2@3 f2 f2@3 f2", I: "f2!2 e2 eb2 d2 db2 c2 b1",
  J: "[f1@4 c2@5 d2@5 ~ c2@5 f1@23 ~@5]/3",
})).s("gm_slap_bass_2").gain(0.44).pan(0.3)

// chords · trombone
const trombone = note("<A@8 B@2 A@2 C B A@10 B@2 A@2 C B A D E A ~@4 B@2 A@2 C B A@4 B@2 A@2 C B F@3>".pickRestart({
  A: "~@4 [f4,a4] ~@7 [eb4,g4] ~ [eb4,g4] ~", B: "~@4 [bb4,d5] ~@7 [ab4,c5] ~ [ab4,c5] ~",
  C: "~@4 [c5,e5] ~@7 [bb4,d5] ~ [bb4,d5] ~", D: "~@4 [bb4,d5] ~ [bb4,d5] ~ [a4,c5] ~ [a4,c5] ~ [g4,bb4] ~ [g4,bb4] ~",
  E: "[f4,a4] ~@11 [eb4,g4] ~ [eb4,g4] ~", F: "[~@4 c4@5 d4@5 ~ c4@5 [eb4,f5]@23 ~@5]/3",
})).s("gm_trombone").gain(0.62).pan(0.8)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A@4 B@4 C@2 B@2 D C B@2 A@4 B@4 C@2 B@2 D C B E B F G H I J C@2 B@2 D C B@4 C@2 B@2 D C ~@3
>`.pickRestart({
  A: "f3@3 f3 c3@4", B: "f2@3 f2 c3@4", C: "bb2@3 bb2 f2@4", D: "c3@3 c3 g2@4",
  E: "f2@2 ~@2 bb2 ~ bb2 ~ a2 ~ a2 ~ g2 ~ g2 ~", F: "f2@3 ~ c3@3 c3, ~@3 f2@3 ~@2", G: "f3@2 ab3 f3 bb3 ab3@3",
  H: "f2 ~@15", I: "f2@3 f2 f2@3 f2", J: "f3!2 e3 eb3 d3 db3 c3 b2",
})).s("gm_electric_guitar_muted").gain(0.44).pan(0.7)

// other · trumpet
const trumpet_2 = note("<~@20 A B C D@2 E C F G H I J K L M N O P Q R C S T U A B C D@2 E C F V H W@3>".pickRestart({
  A: "f4@3 a4 c5 ~ f5 ~ a5@2 g5@2 f5@2 d5 ~", B: "b4@2 c5 ~@13", C: "f4@3 a4 c5 ~ f5 ~ a5@2 g5@2 f5@2 d5@2",
  D: "[c5@6 d5 ab4@8 d5]/2", E: "ab4 f4 ~@6, g4 ~@15", F: "b4@2 c5 ~@11 c5@2",
  G: "g5@3 ~ g5@3 ~ [eb5,e5] ~ c5 ~@5, gb5 ~@3 gb5 ~@11", H: "f5@4 f5@4 eb5 f5 eb5 c5 ~@2 ab4@2, e5 ~@3 e5 ~@11",
  I: "b4@4 b4@4 ~ b4 bb4 ab4 f4@2 c4@2, bb4 ~@3 bb4 ~@11", J: "eb4@2 f4 ~ d4 ~ d4 ~ c4 ~ c4 ~ bb3 ~ bb3 ~",
  K: "a3 ~@15", L: "~@7 c4", M: "f4@2 ~ f4 ~ ab4@3",
  N: "[bb4,d5,f5]@4 [a4,c5,f5]@4 [bb4,d5,f5] ~ [d5,f5] ~ [a4,c5,f5]@4", O: "f4@2 ~ f4 bb4!2 ab4 f4",
  P: "~@2 e5 eb5 d5 ~ [f4,c5] b4, ~ bb4@5 ~@2", Q: "bb4 ~@6 d5", R: "~ f4 ~@6", S: "b4 c5 ~@5 c5",
  T: "g5@2 g5@2 e5 c5 ~ c5", U: "f5@4 f5@4 ~ f5 eb5 c5 ~@4",
  V: "g5@3 ~ g5@3 ~ [eb5,e5] ~ c5 ~@3 c5@2, gb5 ~@3 gb5 ~@11", W: "[f4@2 ~@7 d5@5 ~ c5@5 a4@23 ~@5]/3",
})).s("gm_trumpet").gain(0.25).pan(0.4)

// other · trumpet · soft notes
const trumpet_soft = note("<~@29 A B ~@3 C D E F@2 G ~@2 H I ~@9 A J K@2>".pickRestart({
  A: "~@6 bb4 ~", B: "~@8 bb4 ~@7", C: "~@2 ab4 ~ bb4 ~@3", D: "~@10 bb4 ~@5", E: "~@2 ab4 ~@5",
  F: "[ab4 f5 ~@3 db5 ~ ab4@7 ab4@2]/2", G: "ab4@5 ~@3", H: "~@8 eb5 ~@7", I: "~@8 eb5 ~@3 bb4@2 ab4@2",
  J: "~@4 c5@5 ~@7", K: "[~@4 eb5@23 ~@5]/2",
})).s("gm_trumpet").gain(0.14).pan(0.4)

// drums · kick
const kick = s("bd").struct("<A@34 B C B D A@16 C E ~>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x!2", C: "x", D: "x!4", E: "~ x ~@2",
})).gain(0.55)

// drums · snare
const snare = s("sd").struct("<[~@2 x ~@3 x!2]!34 [~ x ~ x] x [~ x ~ x] [x!8] [~@2 x ~@3 x!2]!16 ~@3>").gain(0.49)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@15 A ~@17 A ~@5 A ~@10 B ~>".pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.55)

// drums · bongos
const bongos = s("bongo:4").struct("<[x!4]!35 x [x!4]!18 x ~@2>").gain(1.44)

// drums · ht
const ht = s("ht").struct("<~@16 [~@10 x ~@2 x!2 ~] ~ [~@11 x ~@2 x ~] ~@18 [~@4 x!4] ~@19>").gain(0.44)

// drums · ht · soft notes
const ht_soft = s("ht").struct("<~@18 [~@13 x ~@2] ~@18 [x!4 ~@4] ~@19>").gain(0.22)

// drums · mt
const mt = s("mt").struct("<~@16 [~@8 x ~@2 x ~ x ~@2] ~ [~@9 x ~@2 x ~ x ~] ~@18 [~@4 x!4] ~@19>").gain(0.49)

// drums · mt · soft notes
const mt_soft = s("mt").struct("<~@37 [x!4 ~@4] ~@19>").gain(0.22)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[x!4]!35 x [x!4]!18 x ~@2>").gain(2.22)

// drums · shaker
const shaker = s("sh").struct("<[~ x ~ x ~ x ~ x]!35 ~ [~ x ~ x ~ x ~ x]!18 ~@3>").gain(0.49)

stack(
  flute, trumpet, piano, bass, trombone, electric_guitar_muted, trumpet_2, trumpet_soft, kick, snare, crash, bongos, ht,
  ht_soft, mt, mt_soft, cabasa, shaker
)

More by Henry Mancini