Strudelify

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: edit a riff to change every repeat.

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@2 A B C D E B F G A H I J G K L M N O P Q R S T Q P U V W X Y Z K AA AB AC K AD G A B F G A B F G A AE I J G K N M N
  O T Q R Q T Q R AF V AG X Y Z K AH AB Z K AD G A B F G A B F G A AE I J G K N M N O T Q R Q T Q R AF V AG X Y Z K AH
  AB Z K AD G Z K AD G Z K ~ AI@3
>`.pickRestart({
  A: "d2@7 ~", B: "g2@7 ~", C: "~ a2@15", D: "~ a1@14 ~", E: "~ d2@14 ~", F: "a2@15 ~", G: "a1@7 ~", H: "~ d2@13 ~@2",
  I: "e2@7 ~", J: "e2@13 ~@3", K: "e2@15 ~", L: "~ c2@14 ~", M: "g2@15 ~", N: "c2@7 ~", O: "g2@13 ~@3", P: "~ a#1@15",
  Q: "f2@15 ~", R: "a#1", S: "~ f2@15", T: "a#1@15 ~", U: "~ f2@14 ~", V: "a1@13 ~@3", W: "~ a1@15", X: "d2", Y: "c#2",
  Z: "b1@15 ~", AA: "~ c#2@15", AB: "f#2", AC: "~ b1@15", AD: "a1", AE: "d2@13 ~@3", AF: "f2@7 ~", AG: "a1@15 ~",
  AH: "c#2@15 ~", AI: "[~ 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 Q R@2 S T U@2 V W X@2 Y@2 Z@2 AA@2 AB@4 AC@8 AD@2 AE AF AG AH AI
  AJ AK AL AM@2 S T U@2 V W X@2 Y@2 Z@2 AA@2 AB@4 AC@8 AD@2 AE AF AG AH AI AJ AK AL AM@2 AN AL AM@2 AN AO@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@11 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]@11 [e4,g4]@5 [e4,g4]@11 [e4,g4]@5 ~@5, ~@9 a3@5 a3@11 a3@5 ~@3 c3@15 ~ c3@16 c3@16 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]@11 [d4,f4]@5 f4@11 [d4,f4]@5 f4@6 f3@32 f3@15, ~@15 a#3@10 a#3@5 ~@16 a#3@11 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@2, b2, ~@6 [d4,f#4]@5 ~@5, ~@9 b3@5 ~@2", // D
  Q: "~@11 [e4,g#4]@3 ~@2, ~ e3@15, ~@6 [e4,g#4]@5 ~@5, ~@8 b3@5 ~@3", // E
  R: "[~@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
  S: "~@13 d4@3, d3, ~@5 [f#4,a4]@5 [f#4,a4]@5 ~, ~@8 d4@5 ~@3", // F#m
  T: "~@13 d4@3, g3, ~@5 [g4,b4]@5 [g4,b4]@5 ~, ~@8 d4@5 ~@3", // G
  U: "[~@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
  V: "~@6 d4@2 ~@5 d4@3, d3, ~@5 [f#4,a4]@5 ~ [f#4,a4]@5, ~@8 d4@5 ~@3", // F#m
  W: "~@5 d4@3 ~@5 d4@3, g3, ~@5 [g4,b4]@6 [g4,b4]@4 ~, ~@8 d4@5 ~@3", // G
  X: "[~@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
  Y: "[~@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
  Z: "[~@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
  AA: "[~@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
  AB: "[~@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@10 c4@5 ~@3, ~@54 e4@5 ~@5]/4", // Em
  AC: "[~@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@32 f3@16]/8", // Dm
  AD: "[~@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
  AE: "~@5 f#4@2 ~, d3, ~@5 [f#4,a4]@5 ~@6, ~@8 d4@5 ~@3", AF: "~@5 [e4,g#4]@5 [e4,g#4]@3 c#4@3, c#3",
  AG: "~@11 [d4,f#4]@2 b3@3, b2, ~@5 [d4,f#4]@5 ~@6, ~@8 b3@5 ~@3", // D
  AH: "~@10 [e4,g#4]@3 b3@3, e3, ~@5 [e4,g#4]@5 ~@6, ~@8 b3@5 ~@3", // E
  AI: "~@5 [e4,g#4]@5 ~@3 c#4@3, c#3, ~@10 [e4,g#4]@5 ~", // E
  AJ: "~@11 [f#4,a4]@3 c#4@2, f#3, ~@5 [f#4,a4]@5 ~@6, ~@4 c#4@3 ~", // F#m
  AK: "~@11 [d4,f#4]@3 b3@2, b2, ~@6 [d4,f#4]@5 ~@5, ~@8 b3@5 ~@3", // D
  AL: "~@11 [e4,g#4]@3 ~@2, e3, ~@5 g#4@5 ~@6, ~@6 e4@5 ~@5, ~@8 b3@5 ~@3", // E
  AM: "[~@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
  AN: "~@11 [d4,f#4]@3 b3@2, ~@6 [d4,f#4]@5 ~@5, ~@8 b3@5 ~@3", // D
  AO: "[~@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 I ~@2 J ~ K ~@12 L@2 ~@4 B M@2 D@2 N@3 O@2 P H ~@2 H ~@2 Q ~ R ~@12 L@2 ~@4 B
  M@2 D@2 N@3 O@2 P H ~@2 H ~@2 Q ~ R ~ Q ~ R ~ S T@4
>`.pickRestart({
  A: "[~@11 c#4@11 ~@10]/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: "~@9 c#4@5 ~@2", J: "~@3 b3 ~@3 b3", K: "~@7 a3", L: "[~@11 c#4@10 ~@11]/2", M: "[~@13 a#3@11 a#3@5 ~@3]/2",
  N: "[~@13 a#3@11 ~@5 a#3@11 ~@3 f4@3 ~@2]/3", O: "[~@13 a3@11 ~@2 e4@4 ~@2]/2", P: "~@10 a4@3 d4@3",
  Q: "~@6 b3@2 ~@5 b3@2 ~", R: "~@13 a3@3", S: "~@3 b3 ~@4", T: "[~@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 D E F@2 G@2 H@2 I J K L M L N O P Q R S@3 T U D V W X Y Z AA AB AC@2 AD AE@3 D E AF@4 AG@2 AH AI AJ AK AJ
  AL AM AN AO AP AQ AR@3 AS AT D AU W X Y AV AA AW AC@2 AD AE@3 D E AF@4 AG@2 AH AI AJ AK AJ AL AM AN AO AP AQ AR@3 AS
  AT D AU W X Y AV AA AW AC@2 ~ AW AC@2 ~ AW ~@4
>`.pickRestart({
  A: "~ d3@15, ~ f#3@13 ~@2", B: "[g3,b3]@7 ~", C: "[[a3,c#4]@31 ~]/2", D: "[d3,f#3]", E: "g3, b3@7 ~",
  F: "[~ a3@30 ~, c#4@15 ~]/2", G: "[d3,f#3]/2", H: "[~ [e3,g#3]@23 ~@8]/2", I: "a3@6 b3@5 a3@5",
  J: "~@6 a3@5 e3@5, ~ g#3@7 ~@8", K: "~ c3@10 b3@2 ~@3", L: "b3@4 ~@2 a3@5 e3@5", M: "c3@10 ~ b3@2 ~@3",
  N: "~ f3@10 d4@4 ~", O: "~ d4@14 ~", P: "~ [d4,a#4]@5 e4@5 [f4,d5]@3 ~@2, ~@6 c5@3 ~@7",
  Q: "~ f4@5 [e4,c5]@5 [d4,a#4]@3 ~@2, d5@3 ~@5", R: "~ [c#4,a4]@5 [d4,a#4]@3 ~@2 b3@2 ~@3",
  S: "[[b3,f4]@3 [d4,g4]@3 [b3,f4]@2 ~@3 [a#3,f4]@33 ~@4]/3", T: "~ a3@5 b3@5 a3@5", U: "~@5 a3@5 ~ f#3@5, g#3@7 ~@9",
  V: "~ e3@14 ~, ~ c#3@12 ~@3", W: "[b2,d3]@7 ~", X: "[b2,e3]@7 ~", Y: "[c#3,e3]@7 ~", Z: "~ f#3@15, ~ c#3@13 ~@2",
  AA: "[b2,d3]@15 ~", AB: "~ e3@14 ~, ~ b2@11 ~@4", AC: "[[a2,c#3]@29 ~@3]/2", AD: "d3, f#3@13 ~@3",
  AE: "[[g3,b3]@14 ~ [a3,c#4]@31 ~@2]/3", AF: "[[a3,c#4]@15 ~ d3@16, ~@31 f#3@32 ~]/4", AG: "[[e3,g#3]@23 ~@9]/2",
  AH: "a3@5 b3@5 a3@6", AI: "~@5 a3@5 ~ e3@5, g#3@7 ~@9", AJ: "c3@5 b3 ~@2", AK: "b3@4 ~ a3@5 e3@5 ~",
  AL: "b3@4 ~ a3@5 e3@6", AM: "f3@5 d4@2 ~", AN: "d4@7 ~", AO: "[d4,a#4]@5 e4@5 ~ f4@3 ~@2, ~@5 c5@3 ~@2 d5@2 ~@4",
  AP: "[f4,d5]@5 [e4,c5]@5 ~ d4@3 ~@2, ~@5 a#4 ~@2", AQ: "[c#4,a4]@5 [d4,a#4]@3 ~@3 b3@2 ~@3",
  AR: "[[b3,f4]@3 [d4,g4]@2 [b3,f4]@2 ~@3 [a#3,f4]@33 ~@5]/3", AS: "a3@5 b3@6 a3@5", AT: "~@5 a3@5 f#3@5 ~, g#3@7 ~@9",
  AU: "e3@7 ~, c#3@3 ~", AV: "f#3@15 ~, c#3@13 ~@3", AW: "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 D B C@2 E@2 F@2 ~@12 G H ~@12 D B C@2 D B C@2 I@2 J@2 ~@12 G K ~@12 D B C@2 D B C@2 I@2 J@2 ~@12 G K ~@22
>`.pickRestart({
  A: "~ d2@14 ~", B: "g2@7 ~", C: "[a2@13 ~@3]/2", D: "d2@7 ~", E: "[~ d2@29 ~@2]/2", F: "[~ e2@24 ~@7]/2", G: "a#1",
  H: "~ f1@14 ~", I: "[d2@29 ~@3]/2", J: "[e2@3 ~]/2", K: "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@30 ~@2, 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 F G C G ~@7 H I ~@25 F G C G ~@7 H I ~@22>".pickRestart({
  A: "~@12 a2 ~@3", B: "~ c3 ~@14", C: "~@11 g3@2 ~@3", D: "~ a#2@14 ~", E: "~ f2@14 ~", F: "~@11 a2 ~@4", G: "c3 ~@15",
  H: "a#2@7 ~", I: "f2@7 ~",
})).s("gm_timpani").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~@2 [~ x ~@14]!38 x!72 [~ x ~@14]!10 ~@4>").gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ B ~ A ~ B ~ A C D ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B
  ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B E B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ A ~ A ~ A ~
  A ~@6
>`.pickRestart({
  A: "~ x ~@14", B: "x", C: "~@9 x ~ x ~@2 x ~", D: "x!2 ~@14", E: "~@9 x ~ x ~ x ~@2",
})).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