Strudelify
In Private cover art

1997 · Reputation & Rarities

In Private

Dusty Springfield

KeyF majorTempo127 bpm
0:00/0:00
// In Private — Dusty Springfield
// 127 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 140 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(127/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, A@4 for four bars: edit a riff to change every repeat.

// bass · synth bass 2 · "SYNTH BASS"
const bass = note(`<
  A B C D E F G H I J K D L M G N I O P@2 Q@2 R@2 S T U V W@4 X@2 Y Z AA AB K AC E AD G N AE AF K AC E AG AH AI V AJ W@4
  R@2 Y AK U AF K AC E AL G H I AM K AC E AD AN H I AJ AO AP AQ AR AS AT AU AV C AC F AD G H I AJ AW@2 AX@2 R@2 Y Z AY
  AZ BA D E F G H AE AF C D E BB G BC I AF BA AC E F G BD AE AZ K BE F E G BF AE BG BH ~
>`.pickRestart({
  A: "g1@2 g2@2 g1 g2 ~ g2 g1@2 a2@2 bb2@2 c3@2", B: "g1@2 g2@2 g1 g2 ~@2 g1@2 a2@2 bb2@2 c3@2, ~@7 g2@2 ~@7",
  C: "bb1@2 ~@2 bb1@3 ~@3 bb1@3 ~ g1@2", D: "bb1@2 ~@2 bb1@3 ~@3 bb1@3 ~ f1@2", E: "g1@2 ~@2 g1@3 ~@3 g1@3 ~ f1@2",
  F: "g1 ~ g1 ~@2 g1@2 f1", G: "d1@2 ~@2 d1@3 ~@3 d1@3 ~ c1@2", H: "d1 ~ d1 ~@2 c1 d1 c1",
  I: "f1@2 ~@2 f1@2 ~@4 f1@3 ~ d1@2", J: "f1 ~ f1 ~@2 f1 g1 f1", K: "bb1@2 ~@2 bb1@2 ~@4 bb1@3 ~ g1@2",
  L: "g1@2 ~@2 g1 ~@5 g1@2 ~@2 f1@2", M: "g1 ~ g1 ~@2 g1 f1 c1", N: "d1@2 ~@2 d1@2 ~@4 c1 ~ c1@2 d1@2",
  O: "f1@2 ~@2 f1@2 ~@4 f1@2 ~@2 f1 ~",
  P: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@2 ~@4 bb1@2 ~@2 bb1@2 ~ bb2 bb1@2 bb2@2 bb1@2 f1 ~, ~@7 bb1@2 ~@7]/2",
  Q: "[eb1@2 ~@2 eb1@3 eb2 eb1@2 f1@2 ~@2 bb1@4 ~@2 bb1@3 bb2 bb1@2 bb2@2 bb1@2 f1 ~]/2",
  R: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@3 ~ g1@4 ~@2 g1@3 g2 g1 ~ g1@2 bb1@2 g1@2]/2", S: "c2@3 ~ c2@4 ~@2 c2@2 ~@2 c2@2",
  T: "bb1@2 ~@2 bb1@3 ~@3 bb1@2 ~@2 bb1 ~", U: "a1 ~ a1@2 ~ a1 ~ a1", V: "f1@2 ~@2 f1@3 ~@3 f1@2 ~@2 f1@2",
  W: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@2 ~@2 bb1@4 ~@2 bb1@3 bb2 bb1@2 bb2@2 bb1@2 f1 ~]/2",
  X: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@3 ~ g1@4 ~@2 g1@2 ~ g2 g1@2 g2@2 g1 ~ bb1@2]/2",
  Y: "c2@2 ~@2 c2@3 ~@3 c2@2 ~@2 c2@2", Z: "bb1@2 ~@2 bb1@3 ~@3 bb1@3 ~ bb1@2", AA: "a1@2 ~@2 a1@3 ~@3 a1@2 ~@2 a1@2",
  AB: "f1 ~ f1@2 ~ f1 g1 f1", AC: "bb1@2 ~@2 bb1@3 ~@3 bb1@4 f1@2", AD: "g1 ~ g1 ~@2 f1 g1 f1",
  AE: "f1@2 ~@2 f1@3 ~@3 f1@3 ~ d1@2", AF: "f1@2 ~@2 f1@3 ~@3 f1@2 g1@2 f1@2", AG: "g1@3 ~ g1@2 ~@4 f1@4 g1@2",
  AH: "d1@2 ~@2 d1@2 ~@4 d1 ~ d1@2 c1@2", AI: "d1@2 ~@2 d1@3 ~@3 c1@3 ~ d1@2", AJ: "f1 ~ f1 ~@2 d1 f1 d1",
  AK: "bb1@3 ~ bb1@3 ~@3 bb1@2 ~@2 bb1@2", AL: "g1@2 ~@2 g1@3 ~@5 f1@2 g1@2", AM: "f1@2 ~@2 f1@2 ~@4 f1@2 d1@2 f1 ~",
  AN: "d1@2 ~@2 d1@2 ~@4 d1@3 ~ c1@2", AO: "eb1@2 ~@2 eb1@2 ~ eb1!2 ~ eb1@2 ~@2 eb1@2",
  AP: "f1@2 ~@2 f1@2 ~ f1!2 ~ f1@2 ~@2 f1@2", AQ: "d1@2 ~@2 d1@2 ~ d1!2 ~ d1@2 c1@2 d1@2",
  AR: "g1@2 ~@2 g1@2 ~ g1 f1 ~ f1@2 g1@2 ~@2", AS: "c2@2 ~@2 c2@2 ~ c2!2 ~ c2@3 ~ c2@2",
  AT: "bb1@2 ~@2 bb1@2 ~ bb1@2 ~ bb1@3 ~ bb1@2", AU: "a1@2 ~@2 a1@2 ~ a1!2 ~ a1@3 ~ a1@2",
  AV: "f1@3 ~ f1@4 ~@2 f1@2 g1@2 f1@2",
  AW: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@2 ~@2 bb1@4 ~@2 bb1@3 bb2 bb1@2 bb2 ~ bb1@2 f1 ~]/2",
  AX: "[eb1@2 ~@2 eb1@2 ~ eb2 eb1@2 f1@3 ~ bb1@4 ~@2 bb1@3 bb2 bb1@2 bb2 ~ bb1@2 f1 ~]/2",
  AY: "a1@2 ~@2 a1@3 ~@3 a1@3 ~ a1@2", AZ: "f1@2 ~@2 f1@2 ~ f1!2 ~ f1@2 g1@2 f1@2",
  BA: "bb1@3 ~ bb1@3 ~@3 bb1@3 ~ g1@2", BB: "g1@2 ~@2 g1@3 ~@3 f1@2 g1@2 f1@2", BC: "d1@2 ~@2 d1@3 ~@3 c1@2 d1@2 c1@2",
  BD: "d1@2 ~@2 d1@3 ~@3 d1@2 c1@2 d1@2", BE: "bb1@3 ~ bb1@3 ~@3 bb1@4 f1@2", BF: "d1@3 ~ d1@2 ~@4 c1@2 d1@2 c1@2",
  BG: "f1@2 ~@2 f1@2 ~ f1 g1@2 f1@3 ~ f1@2", BH: "bb1",
})).s("gm_synth_bass_2").gain(0.6)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  ~@2 A@2 B@2 C@2 D@2 A@2 E@2 F@2 G@2 H@4 I@2 J K L@2 H@4 I@2 J K L@2 M@2 B@2 C@2 N@2 A@2 E@2 F@2 N@2 H@4 I@2 J K O@2
  M@2 E@2 F@2 N@2 M@2 E@2 F@2 G@2 P Q R S T P N@2 M@2 E@2 F@2 U@2 H@4 I@2 J K O@2 M@2 E@2 F@2 N@2 M@2 V@2 F@2 N@2 M@2
  W@2 X@4 M@2 E@2 F@2 N@2 Y ~
>`.pickRestart({
  A: "[[d4,f4,bb4]@29 ~@3]/2", B: "[[bb3,d4,f4,a4]@29 ~@3]/2", C: "[g4@3 f4@12 ~, [a3,d4]@15 ~]/2",
  D: "[[a3,c4,f4]@15 ~]/2", E: "[[bb3,d4,f4,a4]@31 ~]/2", F: "[g4@6 f4@25 ~, [a3,d4]@15 ~]/2",
  G: "[[a3,c4,f4]@27 ~@5]/2", H: "[[g4,bb4,eb5]@9 ~ [a4,c5,f5]@3 ~ [f4,bb4,d5]@17 ~]/2",
  I: "[[g4,bb4,eb5]@10 [a4,c5,f5]@3 ~ [g4,bb4,d5]@17 ~]/2", J: "[g4,c5,eb5]@15 ~", K: "[g4,bb4,eb5]@15 ~",
  L: "[[a4,c5,f5]@15 ~]/2", M: "[[d4,f4,bb4]@31 ~]/2", N: "[[a3,c4,f4]@31 ~]/2", O: "[[a4,c5,f5]@29 ~@3]/2",
  P: "[bb3,eb4,g4]@15 ~", Q: "[a3,c4,f4]@15 ~", R: "[a3,d4,f4]@15 ~", S: "[bb3,d4,g4]@15 ~", T: "[c4,eb4,g4]@15 ~",
  U: "[[a3,c4,f4]@29 ~@3]/2", V: "[[d4,f4,a4]@15 ~, bb3@7 ~]/2", W: "[[bb3,d4,f4]@31 ~, a4@7 ~]/2",
  X: "[g4@6 f4@25 ~ [c4,f4]@31 ~, a3@63 ~, d4@15 ~@17]/4", Y: "[d4,f4,bb4]@11 ~@5",
})).s("gm_synth_strings_1").gain(0.25).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@2 A@2 B@4 C@2 A@2 B@4 C D ~@20 A@2 B@4 E C A@2 B@4 D E ~@10 A@2 B@4 E@2 A@2 B@4 C D F C B G H F I@2 J A B@4 C E ~@10
  A@2 B@4 E D A@2 B@4 E D A@2 B@2 K B E C A@2 B@4 C D ~@2
>`.pickRestart({
  A: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", B: "~@2 [f3,a3,d4] ~@3 [f3,a3,d4] ~", C: "~@4 [f3,a3,c4] ~@7 [f3,a3,c4] ~@3",
  D: "~@4 [f3,a3,c4] ~@7 [f3,a3,c4]@2 ~@2", E: "~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~",
  F: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", G: "~@4 [g3,bb3,d4] ~@7 [g3,bb3,d4] ~@3",
  H: "~@4 [g3,c4,eb4] ~@7 [g3,c4,eb4]@2 ~@2", I: "~@4 [a3,c4,f4] ~@7 [a3,c4,f4] ~@3",
  J: "~@4 [f3,bb3,d4] ~@7 [f3,bb3,d4] ~@3", K: "~@4 [f3,a3,d4] ~@7 [f3,a3,d4]@2 ~@2",
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.6)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~@18 A ~ B ~ C ~@5 C ~ C ~ C ~@21 D ~ D ~ D ~@21 A E F G H C I ~@9 D ~ C ~ D ~@39
>`.pickRestart({
  A: "[g4,bb4,eb5]@3 ~@13", B: "[g4,bb4,eb5]@5 ~@11", C: "[g4,bb4,eb5]@3 ~@5", D: "[g4,bb4,eb5] ~", E: "[a4,c5,f5] ~@3",
  F: "[f4,a4,d5]@7 ~@9", G: "[g4,bb4,d5]@3 ~@5", H: "[g4,c5,eb5]@7 ~@9", I: "[a4,c5,f5]@13 ~@3",
})).s("gm_pizzicato_strings").gain(0.25).pan(0.7)

// other · brass section · "BRASS"
const brass_section = note(`<
  ~@65 A ~@3 B ~@3 A ~@3 B ~@29 C ~ A ~ B ~ B ~ A ~ A ~ B ~ B ~ A ~ A ~ B ~ B ~ A ~ A ~ B ~ B ~@2
>`.pickRestart({
  A: "bb4 ~@5 bb4 ~@9", B: "a4 ~@5 a4@2 ~@8", C: "bb4 ~@5 bb4@2 ~@8",
})).s("gm_brass_section").gain(0.5).pan(0.7)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@10 A@2 B@2 C@2 D@2 ~@15 E F E G H I@2 J@2 K@2 L@2 I@2 J@2 K@2 M@2 ~@4 N@2 F E G H O P@3 Q@2 R Q P@4 Q@4 ~@4 S T U@2
  A@2 B@2 C@2 D@2 ~ V ~ W ~@6 P X P Y Q Z Q AA P X P AB Q Z Q AA P X P Y Q Z Q AA P X P Y Q Z Q AA AC ~
>`.pickRestart({
  A: "[bb5@3 c6]/2", B: "[a5@3 d5]/2", C: "[g5@3 f5@9 d5@4]/2", D: "[c5@29 ~@3]/2", E: "bb3", F: "c4", G: "a3", H: "f3",
  I: "[bb3@3 c4]/2", J: "[a3@3 d3]/2", K: "[g3@3 f3@9 d3@4]/2", L: "c3/2", M: "[c3@29 ~@3]/2", N: "[~@7 bb3@25]/2",
  O: "~@2 bb5 ~@3 bb5 ~", P: "~@4 bb5 ~@7 bb5 ~@3", Q: "~@4 a5 ~@7 a5 ~@3", R: "~@4 a5 ~@7 a5@2 ~@2",
  S: "[c4,c5] [d4,d5] [eb4,eb5] [f4,f5]", T: "[g4,g5]", U: "[[a4,a5]@31 ~]/2", V: "~@6 g5 bb5 c6 bb5 ~ bb5 ~@4",
  W: "~@6 bb5 c6 d6 ~@7", X: "~@4 bb5 ~@5 bb5 c6 d6 c6 bb5 ~", Y: "~@4 bb5 ~@5 a5 bb5 c6 bb5 a5 ~",
  Z: "~@4 a5 ~@5 f5 g5 a5 g5 f5 ~", AA: "~@4 a5 ~@5 f5 g5 ~ g5 f5 ~, ~@6 c6 ~", AB: "~@4 bb5 ~@5 g5 a5 bb5 a5 g5 ~",
  AC: "[d5,bb5] ~@15", // Gm
})).s("gm_string_ensemble_1").gain(0.3).pan(0.7)

// bass · piano · "A.PIANO"
const bass_2 = note("<~@34 A B C D ~@22 A E C D ~@20 A E C D ~@14 A E C D ~@34>".pickRestart({
  A: "[c2,c3]", B: "[bb1,bb2]", C: "[a1,a2]", D: "[f1,f2]", E: "bb2, bb1@7 ~",
})).s("gm_piano").gain(0.5).pan(0.4)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@6 A ~ B ~@5 A ~ B ~@25 A ~ B ~@5 A ~ C ~@15 A ~ C ~@5 A ~ D ~ E F G H I J K L ~@4 A ~ B ~@15 A ~ C ~@5 A ~ B ~@7 M
  ~@5 A ~ B ~ N ~
>`.pickRestart({
  A: "[a4,d5]@2 ~@2 [a4,d5]@3 ~@9", B: "[f4,c5,f5]@2 ~@2 [f4,c5,f5]@3 ~@9",
  C: "[f4,c5,f5]@2 ~@2 [c5,f5]@3 ~@9, ~@4 f4 ~@11", D: "[c5,f5]@2 ~@2 [c5,f5]@3 ~@9", E: "[eb4,bb4,eb5]@11 ~@5",
  F: "[f4,c5,f5]@7 ~", G: "[d4,a4,d5]@3 ~", H: "[g4,d5,g5]@7 ~", I: "[c4,g4]@13 ~@3, c5@15 ~", J: "[bb3,bb4]",
  K: "[a3,a4]", L: "[f3,f4]@7 ~", M: "[f4,c5,f5] ~ [f4,c5,f5]@2 ~@4", N: "[bb3,f4,bb4]",
})).s("gm_overdriven_guitar").gain(0.3).pan(0.2)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note(`<
  ~@2 A@2 B@2 C@4 D@8 ~@20 A@2 B@2 E@2 F@2 A@2 B@2 E@2 G@2 ~@10 A@2 B@2 E@2 H@2 A@2 B@2 I@2 H@2 ~@8 A@2 B@2 E@2 H@2 ~@10
  A@2 B@2 E@2 H@2 J@4 E@2 H@2 J@4 E@2 F@2 A@2 B@2 K@4 L ~
>`.pickRestart({
  A: "[bb3@3 c4]/2", B: "[a3@3 d3]/2", C: "[g3@6 f3@17 d3@8 c3@32 ~]/4",
  D: "[bb3@24 c4@7 a3@25 d3@7 g3@6 ~ f3@17 d3@8 c3@30 ~@3]/8", E: "[g3@3 f3@9 d3@4]/2", F: "c3/2", G: "[c3@7 ~]/2",
  H: "[c3@15 ~]/2", I: "[g3@3 f3@9 d3@3 ~]/2", J: "[bb3@24 c4@7 a3@25 d3@8]/4", K: "[g3@6 f3@18 d3@7 c3@32 ~]/4",
  L: "bb2@5 ~@3",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.8)

// drums · kick
const kick = s("bd").struct("<[x!4]!138 x ~>").gain(0.71)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!138 ~@2>").gain(0.57)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!138 ~@2>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A@3 B A@3 B A@7 B A@3 B A@5 B A@3 B A@9 B A@7 B A@9 B A@7 B A@3 C A@3 B A@3 D A@7 C A@7 B A@3 B A@5 C A@9 B A B
  A@3 D A@7 C A@8 E ~
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
  D: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", E: "x",
})).gain(0.57)

// drums · crash
const crash = s("cr").struct("<A ~@9 A ~@27 A ~@15 A ~@25 A ~@7 A ~@7 A ~@9 A ~@15 A ~@15 A ~>".pickRestart({
  A: "x",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@18 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B@16 A ~ A ~ A ~ A ~ A ~ B@16 A ~ A ~ A ~@2 A ~@8 A ~ A ~ A ~ A ~ A ~
  B@32 C ~
>`.pickRestart({
  A: "~@4 x!3 ~@9", B: "x!16", C: "x!3 ~@13",
})).gain(0.5)

// drums · cowbell
const cowbell = s("cb").struct("<[x!4]!2 ~@138>").gain(0.64)

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

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  A@18 ~@3 A ~ A ~@3 A ~@9 A ~ A@15 ~ A ~ A ~@2 A@4 ~ A@31 ~ A ~ A ~ A@15 ~ B A@20 ~@2
>`.pickRestart({
  A: "~@14 x!2", B: "~@10 x!2 ~@4",
})).gain(1.88)

// drums · congas
const congas = s("conga:13").struct(`<
  A@5 B A B A C A D A@2 B D B D A@2 E F A B@2 A G H A B@2 A B A@4 D A@5 D A@3 B A@2 I A@2 J A@3 K A@2 B A L M A@4 N O P
  A@3 Q A@3 R A@3 C S A G T U A@5 V@2 R A B A W A@2 X Y G Z AA A@11 N AB L AC A@2 N AD A AE AF AG A@2 B@2 AH A Q AI ~@2
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@5 x ~@2", C: "~@9 x ~ x ~@4", D: "~@11 x ~ x ~@2", E: "~@3 x ~@12", F: "~@3 x ~@7 x ~ x ~@2",
  G: "~@3 x ~@7 x ~@4", H: "~@3 x ~@4 x!2 ~@6", I: "~@5 x!2 ~", J: "~@15 x", K: "~@14 x!2", L: "~@2 x!2 ~@6 x!2 ~@4",
  M: "x!2 ~ x ~@2 x!2 ~ x ~@6", N: "~@10 x!2 ~@4", O: "~@2 x!2 ~ x ~@2", P: "~@2 x!2 ~@2 x!2", Q: "~@6 x!2", R: "~@3 x",
  S: "~@2 x!2 ~@3 x", T: "~@3 x ~@5 x ~ x ~@3 x", U: "~ x ~ x ~ x ~ x ~ x ~ x ~@4", V: "~@7 x", W: "~@6 x ~@4 x ~@4",
  X: "~@6 x ~@6 x ~ x", Y: "~@7 x ~@8", Z: "~@2 x!2 ~ x!5 ~@6", AA: "~@4 x ~@6 x ~@4", AB: "~@4 x ~ x ~@4 x ~@4",
  AC: "~@2 x!2 ~@4 x!2 ~@4 x ~", AD: "~@10 x!2 ~@2 x ~", AE: "~@11 x ~@2 x ~", AF: "~@3 x ~@2 x ~",
  AG: "x ~@3 x ~@3 x!2 ~@4 x!2", AH: "~@5 x ~ x", AI: "~@6 x ~@3 x ~@2 x ~@2",
})).gain(2.29)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  A@9 B A C A@6 D A E A@6 F A@2 G A@6 H A@5 C A G A G A@2 B G@2 I A@3 J A@4 K L D A@3 C K M N A@2 O A@3 P A@3 Q R A@2 S
  T A@2 U A@2 V@2 W A@2 X Y A@2 Z AA AB AC N A@6 G A@3 C B AD AE AF A@2 S AG G AE AH AI A@2 AJ AK AL A O AM ~@2
>`.pickRestart({
  A: "~@2 x!2 ~@2 x!2", B: "~@4 x ~ x ~@7 x!2", C: "~@2 x!2 ~@3 x", D: "~@3 x ~@2 x!2", E: "~@2 x!2 ~ x!3",
  F: "~@4 x ~ x ~@4 x!2 ~ x ~", G: "~@4 x ~ x ~@5 x ~ x!2", H: "~@4 x!2 ~ x!2 ~@3 x ~ x ~",
  I: "~@4 x ~@3 x!2 ~ x!2 ~@3", J: "~@4 x ~@3 x!2 ~ x ~@4", K: "~@6 x!2", L: "~@10 x!4 ~@2", M: "~@11 x ~@4",
  N: "~@5 x ~ x", O: "~@4 x ~ x ~@4 x ~@4", P: "~@10 x!2 ~@2 x ~", Q: "~@4 x ~ x ~@5 x ~@2 x", R: "~@10 x!2 ~@3 x",
  S: "~@2 x!2 ~@2 x ~", T: "x ~@5 x ~@5 x!4", U: "~@3 x ~ x!2 ~", V: "~@4 x ~ x ~@3 x!2 ~@4",
  W: "~@2 x ~ x!2 ~ x ~@3 x ~ x ~@2", X: "~ x!3 ~@2 x!2", Y: "~@2 x ~@3 x!2", Z: "~@2 x!2 ~@6 x ~ x ~@3",
  AA: "x!3 ~@3 x ~", AB: "~ x ~ x ~ x ~ x", AC: "~@12 x!4", AD: "~@12 x!3 ~", AE: "~@4 x ~ x ~@5 x!2 ~@2",
// … 27 more lines

More by Dusty Springfield