Strudelify
What's New Pussycat? cover art

1998 · One Amazing Night

What's New Pussycat?

Burt Bacharach

KeyD majorTempo183 bpm
0:00/0:00
// What's New Pussycat? — Burt Bacharach
// 183 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(183/3)

// 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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@2 A B C D E B F G A E H I G H J B K B L M N O N M L O G D A P Q H R S T H U G A B F G A B F G A@2 H I G H K B K B N
  M N M N M N M G@2 A P Q H P S Q H U G A B F G A B F G A@2 H I G H K B K B N M N M N M N M G@2 A P Q H P S Q H U G Q H
  U G Q H ~ V@3
>`.pickRestart({
  A: "d2@7 ~", B: "g2@7 ~", C: "~ a2@15", D: "~ a1@14 ~", E: "~ d2@14 ~", F: "a2@15 ~", G: "a1@7 ~", H: "e2@15 ~",
  I: "e2@7 ~", J: "~ c2@14 ~", K: "c2@7 ~", L: "~ a#1@15", M: "f2@15 ~", N: "a#1", O: "~ f2@15", P: "c#2", Q: "b1@15 ~",
  R: "~ c#2@15", S: "f#2", T: "~ b1@15", U: "a1", V: "[~ a1@20 ~@3]/3",
})).s("gm_acoustic_bass").gain(0.48)

// chords · dulcimer · "Keyboard"
const dulcimer = note("<~@12 A@2 ~@36 B@2 ~@36 B@2 ~@36>".pickRestart({
  A: "[~ [b4,e5]@5 ~@10 [e4,b4,e5]@11 [a4,d5]@3 ~@2, ~ e4@10 [e4,b4,e5]@5 ~@16, ~@6 [b4,e5]@5 ~@3 d5@13 ~@5, ~@9 f#5@18 ~@5]/2", // E5 D5 E5
  B: "[[b4,e5]@5 ~@11 [e4,b4,e5]@11 [a4,d5]@3 ~@2, e4@11 [e4,e5]@5 ~@16, ~@5 [b4,e5]@5 b4@4 d5@13 ~@5, ~@4 f#5@9 ~@3]/2", // E5 D5 E E5
})).s("gm_dulcimer").gain(0.48)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  ~@2 A B C@2 D E F@2 G@2 H@2 I@6 J@8 K@2 L M N@2 O@2 P@2 Q@2 R S T@2 U V W@2 X@2 Y@2 Z@2 AA@4 AB@8 AC@2 AD AE AF AG AH
  AI AJ AK AL@2 R S T@2 U V W@2 X@2 Y@2 Z@2 AA@4 AB@8 AC@2 AD AE AF AG AH AI AF AK AL@2 AM AK AL@2 AM AN@5
>`.pickRestart({
  A: "~@13 d4@3, ~ d3@15, ~@6 [f#4,a4]@5 [f#4,a4]@5, ~@8 d4@5 ~@3", // F#m
  B: "~@13 d4@3, g3, ~@5 b4@5 ~@6, ~@6 g4@5 [g4,b4]@5, ~@8 d4@5 ~@3", // G
  C: "[~@3 e4 ~@7 e4 ~@3 e4, a3 a3, ~@6 [a4,c#5]@5 [a4,c#5]@11 [a4,c#5]@5 [a4,c#5]@5, ~@8 e4@5 ~ e4@8 ~@2 e4@5 ~@3]/2", // A
  D: "~@3 d4 ~@3 d4, ~ d3@15, ~@6 [f#4,a4]@5 [f#4,a4]@5, ~@9 d4@5 ~@2", // F#m
  E: "~@6 d4@2 ~@3 [g4,b4]@3 d4@2, g3, ~@5 b4@6 ~@5, ~@6 g4@5 ~@5, ~@8 d4@5 ~@3", // G
  F: "[~@6 e4@3 ~@13 e4@2 ~@3 [a4,c#5]@3 e4@2, ~ a3@16 a3@15, ~@6 [a4,c#5]@6 [a4,c#5]@10 [a4,c#5]@5 ~@5, ~@9 e4@5 e4@8 ~@2 e4@6 ~@2]/2", // A
  G: "[~@6 d4@3 ~@13 [d4,f#4,a4]@5 [d4,f#4,a4]@5, d3@17 d3@15, ~@3 [f#4,a4]@3 [f#4,a4]@5 ~@5, ~@9 d4@5 d4@8 ~@10]/2", // D F#m
  H: "[~@22 [e4,g#4,b4]@5 [e4,g#4,b4]@5, ~ e3@16 e3@15, ~@3 [g#4,b4]@3 [g#4,b4]@5 ~@5, ~@9 e4@5 e4@7 ~@11]/2", // E G#m
  I: "[~@30 a3@2 ~@59 [e4,g4]@3 c4@2, a2@16 ~ a2@17 ~@7 c4@5 c4@10 c4@5 ~ c4@10 ~ c4@5 c4@10 ~ c4@5 ~@2, ~@6 [c#4,e4]@5 e4@11 [c#4,e4]@5 [c#4,e4]@5 ~@6 [e4,g4]@5 [e4,g4]@10 ~ [e4,g4]@5 [e4,g4]@10 ~ [e4,g4]@5 [e4,g4]@10 ~ [e4,g4]@5 ~@5, ~@9 a3@5 a3@11 a3@5 ~@3 c3@15 ~ c3@15 ~ c3@15 ~ c3@15]/6", // Em C#m Em
  J: "[~@6 [d4,f4]@6 ~@26 [d4,f4]@5 ~@80 d4@3 a#3@2, a#2@16 a#2@16 a#2@16 a#2@15 ~, ~@12 [d4,f4]@10 [d4,f4]@5 [d4,f4]@11 ~@5 [d4,f4]@10 ~ [d4,f4]@5 f4@11 [d4,f4]@5 f4@6 f3@31 ~ f3@15, ~@15 a#3@10 a#3@5 ~@16 a#3@10 ~ a#3@5 a#3@11 a#3@3 d4@10 [d4,f4]@5 [d4,f4]@11 [d4,f4]@5 [d4,f4]@11 [d4,f4]@5 ~@5, ~@17 f3@31 ~ f3@29 a#3@11 a#3@5 ~@11 a#3@5 ~@11 a#3@5 ~@2]/8", // Dm
  K: "[~@29 a3@2 ~, ~ a2@30 ~, ~@6 [c#4,e4]@5 [c#4,e4]@11 [c#4,e4]@5 c#4@4 ~, ~@8 a3@5 ~@3 e3@15 ~, ~@24 a3@5 ~@3]/2", // C#m
  L: "~@11 f#4@4 ~, d3, ~@6 [f#4,a4]@5 ~@5, ~@4 d4@3 ~", M: "~@6 [e4,g#4]@5 [e4,g#4]@3 c#4@2, ~ c#3@15",
  N: "[~@11 [d4,f#4]@3 ~@13 [e4,g#4]@3 b3@2, b2@17 ~@5 e4@5 ~@5, ~@6 [d4,f#4]@5 ~@5 e3@16, ~@9 b3@5 b3@4 ~@3 g#4@5 ~@6, ~@24 b3@5 ~@3]/2", // D E D
  O: "[~@6 [e4,g#4]@5 ~@3 c#4@3 ~@10 [f#4,a4]@3 c#4@2, ~ c#3@17 ~@4 [f#4,a4]@5 ~@5, ~@11 [e4,g#4]@5 ~ f#3@15, ~@12 c#4@3 ~]/2", // E F#m E
  P: "[~@11 [d4,f#4]@3 b3@3 ~@10 [e4,g#4]@3 ~@2, b2@17 e3@15, ~@6 [d4,f#4]@5 ~@11 [e4,g#4]@5 ~@5, ~@9 b3@5 ~@10 b3@5 ~@3]/2", // D E D E
  Q: "[~@11 [c#4,e4]@3 ~@8 [c#4,e4]@3 ~@2 [c#4,e4]@4 ~, a2@17 e3@15, ~@6 [c#4,e4]@5 ~@21, ~@8 a3@5 ~ a3@5 ~@6 a3@4 ~@3]/2", // C#m
  R: "~@13 d4@3, d3, ~@5 [f#4,a4]@5 [f#4,a4]@5 ~, ~@8 d4@5 ~@3", // F#m
  S: "~@13 d4@3, g3, ~@5 [g4,b4]@5 [g4,b4]@5 ~, ~@8 d4@5 ~@3", // G
  T: "[~@5 e4@2 ~@14 e4@2 ~@6 e4@3, a3 a3, ~@5 [a4,c#5]@5 c#5@11 ~@11, ~@8 e4@5 e4@8 ~@3 e4@5 ~@3, ~@11 a4@10 [a4,c#5]@5 ~ [a4,c#5]@5]/2", // A
  U: "~@6 d4@2 ~@5 d4@3, d3, ~@5 [f#4,a4]@5 ~ [f#4,a4]@5, ~@8 d4@5 ~@3", // F#m
  V: "~@5 d4@3 ~@5 d4@3, g3, ~@5 [g4,b4]@6 [g4,b4]@4 ~, ~@8 d4@5 ~@3", // G
  W: "[~@5 e4@3 ~@14 e4@2 ~@5 e4@3, a3@16 a3@15 ~, ~@5 [a4,c#5]@6 [a4,c#5]@11 [a4,c#5]@5 [a4,c#5]@4 ~, ~@8 e4@6 e4@8 ~@2 e4@5 ~@3]/2", // A
  X: "[~@5 d4@3 ~@13 [d4,f#4,a4]@5 ~ [d4,f#4,a4]@5, d3@16 d3@15 ~, ~@5 [f#4,a4]@6 [f#4,a4]@10 ~@11, ~@8 d4@6 d4@7 ~@11]/2", // D F#m
  Y: "[~@21 [e4,g#4,b4]@5 ~ [g#4,b4]@5, e3@16 e3@15 ~, ~@5 [g#4,b4]@6 [g#4,b4]@10 ~@11, ~@8 e4@6 e4@7 ~@5 e4@4 ~@2]/2", // E G#m
  Z: "[~@15 a3, a2 a2, ~@5 [c#4,e4]@5 ~ e4@10 [c#4,e4]@5 ~ [c#4,e4]@5, ~@8 a3@5 a3@11 a3@6 ~@2]/2", // C#m
  AA: "[~@59 [e4,g4]@3 c4@2, ~ c3@15 c3@16 c3@16 c3@16, ~@6 [e4,g4]@5 [e4,g4]@10 [e4,g4]@5 [e4,g4]@11 [e4,g4]@5 [e4,g4]@11 g4@5 ~@6, ~@8 c4@5 ~ c4@10 c4@5 c4@11 c4@5 c4@11 c4@5 ~@3, ~@54 e4@5 ~@5]/4", // Em
  AB: "[~@6 [d4,f4]@5 ~@27 [d4,f4]@5 ~@80 d4@2 a#3@3, a#2@16 a#2@16 a#2@16 a#2@15 ~, ~@11 [d4,f4]@10 ~ [d4,f4]@5 [d4,f4]@11 ~@5 [d4,f4]@10 [d4,f4]@5 f4@11 ~ [d4,f4]@5 [d4,f4]@10 ~ [d4,f4]@5 [d4,f4]@11 [d4,f4]@4 f4@11 ~@3 a#3@5 ~@3, ~@14 a#3@10 a#3@5 ~@16 a#3@11 a#3@6 a#3@10 a#3@5 a#3@11 a#3@5 ~@11 a#3@3 d4@11 [d4,f4]@5 ~@5, ~@17 f3@31 f3@32 ~ f3@31 f3@16]/8", // Dm
  AC: "[~@26 c#4@3 a3@2 ~, a2@15 ~, ~@5 [c#4,e4]@5 [c#4,e4]@11 [c#4,e4]@5 ~@6, ~@8 a3@5 ~@3 e3@15 ~, ~@24 a3@5 ~@3]/2", // C#m
  AD: "~@5 f#4@2 ~, d3, ~@5 [f#4,a4]@5 ~@6, ~@8 d4@5 ~@3", AE: "~@5 [e4,g#4]@5 [e4,g#4]@3 c#4@3, c#3",
  AF: "~@11 [d4,f#4]@2 b3@3, b2, ~@5 [d4,f#4]@5 ~@6, ~@8 b3@5 ~@3", // D
  AG: "~@10 [e4,g#4]@3 b3@3, e3, ~@5 [e4,g#4]@5 ~@6, ~@8 b3@5 ~@3", // E
  AH: "~@5 [e4,g#4]@5 ~@3 c#4@3, c#3, ~@10 [e4,g#4]@5 ~", // E
  AI: "~@11 [f#4,a4]@3 c#4@2, f#3, ~@5 [f#4,a4]@5 ~@6, ~@4 c#4@3 ~", // F#m
  AJ: "~@11 [d4,f#4]@3 b3@2, b2, ~@6 [d4,f#4]@5 ~@5, ~@8 b3@5 ~@3", // D
  AK: "~@11 [e4,g#4]@3 ~@2, e3, ~@5 g#4@5 ~@6, ~@6 e4@5 ~@5, ~@8 b3@5 ~@3", // E
  AL: "[~@10 [c#4,e4]@3 ~@8 [c#4,e4]@3 ~@2 [c#4,e4]@4 ~@2, a2@17 ~@15, ~@5 [c#4,e4]@5 ~@6 e3@16, ~@8 a3@5 a3@5 ~@6 a3@4 ~@4]/2", // C#m
  AM: "~@11 [d4,f#4]@3 b3@2, ~@6 [d4,f#4]@5 ~@5, ~@8 b3@5 ~@3", // D
  AN: "[~@45 c#4@33 ~@2, e3@32 ~@5 a2@41 ~@2, ~@5 g#4@24 ~@4 c#4@7 e3@38 ~@2, ~@6 e4@25 e4@47 ~@2, ~@8 b3@26 b3@43 ~@3]/5",
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.6)

// chords · acoustic guitar steel · "Guitar" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@14 A@2 ~@4 B C@2 D@2 E@3 F@2 G H ~@2 H ~@2 I ~ J ~@12 A@2 ~@4 B K@2 D@2 L@3 M@2 N H ~@2 H ~@2 O ~ P ~@12 A@2 ~@4 B
  K@2 D@2 L@3 M@2 N H ~@2 H ~@2 O ~ P ~ O ~ P ~ Q R@4
>`.pickRestart({
  A: "[~@11 c#4@10 ~@11]/2", B: "~@6 a#3@3 a#3@5 ~@2", C: "[~@14 a#3@11 a#3@5 ~@2]/2", D: "[~@11 d4@11 ~@10]/2",
  E: "[~@14 a#3@11 ~@5 a#3@11 ~@2 f4@3 ~@2]/3", F: "[~@14 a3@10 ~@3 e4@4 ~]/2", G: "~@11 a4@3 d4@2", H: "~@8 c#4@5 ~@3",
  I: "~@3 b3 ~@3 b3", J: "~@7 a3", K: "[~@13 a#3@11 a#3@5 ~@3]/2", L: "[~@13 a#3@11 ~@5 a#3@11 ~@3 f4@3 ~@2]/3",
  M: "[~@13 a3@11 ~@2 e4@4 ~@2]/2", N: "~@10 a4@3 d4@3", O: "~@6 b3@2 ~@5 b3@2 ~", P: "~@13 a3@3", Q: "~@3 b3 ~@4",
  R: "[~@7 g#4@24 ~]/4",
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.6)

// chords · accordion
const accordion = note(`<
  ~@2 A B C@2 A D C@2 E@2 F@2 G H I J I J K L M N O P@3 Q R A S T U V W T X Y@2 A Z@3 A D AA@4 F@2 AB AC AD AE AD AE AF
  L AG AH AI AJ@3 Q AK A AL T U V W T AM Y@2 A Z@3 A D AA@4 F@2 AB AC AD AE AD AE AF L AG AH AI AJ@3 Q AK A AL T U V W T
  AM Y@2 ~ AM Y@2 ~ AM ~@4
>`.pickRestart({
  A: "[d3,f#3]", B: "[g3,b3]@7 ~", C: "[[a3,c#4]@15 ~]/2", D: "g3, b3@7 ~", E: "[d3,f#3]/2", F: "[[e3,g#3]@23 ~@9]/2",
  G: "a3@6 b3@5 a3@5", H: "~@6 a3@5 e3@5, ~ g#3@7 ~@8", I: "~ c3@10 b3@2 ~@3", J: "b3@4 ~@2 a3@5 e3@5",
  K: "~ f3@10 d4@4 ~", L: "d4@7 ~", M: "~ [d4,a#4]@5 e4@5 [f4,d5]@3 ~@2, ~@6 c5@3 ~@7",
  N: "~ f4@5 [e4,c5]@5 [d4,a#4]@3 ~@2, d5@3 ~@5", O: "~ [c#4,a4]@5 [d4,a#4]@3 ~@2 b3@2 ~@3",
  P: "[[b3,f4]@3 [d4,g4]@3 [b3,f4]@2 ~@3 [a#3,f4]@33 ~@4]/3", Q: "a3@5 b3@6 a3@5", R: "~@5 a3@5 ~ f#3@5, g#3@7 ~@9",
  S: "~ e3@14 ~, ~ c#3@12 ~@3", T: "[b2,d3]@7 ~", U: "[b2,e3]@7 ~", V: "[c#3,e3]@7 ~", W: "f#3@15 ~, c#3@13 ~@3",
  X: "~ e3@14 ~, ~ b2@11 ~@4", Y: "[[a2,c#3]@29 ~@3]/2", Z: "[[g3,b3]@14 ~ [a3,c#4]@31 ~@2]/3",
  AA: "[[a3,c#4]@15 ~ d3@16, ~@31 f#3@32 ~]/4", AB: "a3@5 b3@5 a3@6", AC: "~@5 a3@5 ~ e3@5, g#3@7 ~@9",
  AD: "c3@5 b3 ~@2", AE: "b3@4 ~ a3@5 e3@5 ~", AF: "f3@5 d4@2 ~",
  AG: "[d4,a#4]@5 e4@5 ~ f4@3 ~@2, ~@5 c5@3 ~@2 d5@2 ~@4", AH: "[f4,d5]@5 [e4,c5]@5 ~ d4@3 ~@2, ~@5 a#4 ~@2",
  AI: "[c#4,a4]@5 [d4,a#4]@3 ~@3 b3@2 ~@3", AJ: "[[b3,f4]@3 [d4,g4]@2 [b3,f4]@2 ~@3 [a#3,f4]@33 ~@5]/3",
  AK: "~@5 a3@5 f#3@5 ~, g#3@7 ~@9", AL: "e3@7 ~, c#3@3 ~", AM: "e3@7 ~, b2@11 ~@5",
})).s("gm_accordion").gain(0.25)

// other · synth brass 1 · "Brass"
const synth_brass_1 = note(`<
  ~@2 A B C@2 A B C@2 D@2 E@2 ~@12 F G ~@12 A B C@2 A B C@2 D@2 E@2 ~@12 F G ~@12 A B C@2 A B C@2 D@2 E@2 ~@12 F G ~@22
>`.pickRestart({
  A: "d2@7 ~", B: "g2@7 ~", C: "[a2@13 ~@3]/2", D: "[d2@29 ~@3]/2", E: "[e2@3 ~]/2", F: "a#1", G: "f1@7 ~",
})).s("gm_synth_brass_1").gain(0.48)

// other · synth brass 1 · "Brass" · soft notes
const synth_brass_1_soft = note("<~@112 A@4 B C@3 D E ~@4>".pickRestart({
  A: "[[b3,d4]@14 ~@18 c#4@31 ~, ~@15 b3@15 ~@34, ~@16 e4@47 ~]/4", B: "[b3,d4]", C: "[b3@13 ~@3 c#4@31 ~, e4@23 ~]/3",
  D: "d4@15 ~, b3 ~@15", E: "e4 ~@15",
})).s("gm_synth_brass_1").gain(0.18)

// other · timpani
const timpani = note("<~@15 A B C B ~@7 D E ~@25 A B C B ~@7 F G ~@25 A B C B ~@7 F G ~@22>".pickRestart({
  A: "~@11 a2 ~@4", B: "c3 ~@15", C: "~@11 g3@2 ~@3", D: "~ a#2@14 ~", E: "~ f2@14 ~", F: "a#2@7 ~", G: "f2@7 ~",
})).s("gm_timpani").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~@2 x!120 ~@4>").gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A ~ A ~ B ~ B ~ B ~ B ~ A ~ A ~ A ~ B ~ B ~ B ~ A ~ A ~ A ~ A ~ A ~ A C D ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A C A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~
  B ~@6
>`.pickRestart({
  A: "x", B: "~ x ~@14", C: "~@9 x ~ x ~@2 x ~", D: "x!2 ~@14",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<[x ~@4 x ~@4 x ~@5]!2 [~ x ~@4 x ~@4 x ~@4]!119 [~ x ~@4 x ~@9] ~@4>").gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@39 [~@9 x ~@6] ~@37 [~ x] ~@48>").gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 [~@6 x ~@6 x ~@2] ~@37 [~@5 x ~@7 x ~@2] ~@48>").gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@39 [~@11 x ~@4] ~@37 [~@5 x ~@2] ~@48>").gain(0.36)

stack(
  bass, dulcimer, acoustic_guitar_steel, acoustic_guitar_steel_2, accordion, synth_brass_1, synth_brass_1_soft, timpani,
  kick, snare, hihat, low_tom, mid_tom, high_tom
)

More by Burt Bacharach