Strudelify

Memphis

Tom Jones

KeyG majorTempo171 bpm
0:00/0:00
// Memphis — Tom Jones
// 171 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(171/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.

// bass · fretless bass
const bass = note(`<
  ~@4 A B A C A B A C D E F G D E F G H I H J K L M N O P Q D E F G D E F G H I H J K L M N O P Q D E F G D E F G H I H
  J K L M N O P Q D E F G D E F G H I H J K L M N O P Q D E F G D E F G H I H J K L M N O P Q N O P Q R S
>`.pickRestart({
  A: "c2@3 ~ c2@3 ~ e2@3 ~ e2@3 g1", B: "g2@3 ~ g2@3 ~ a2@4 c3@4", C: "g2@3 ~ g2@3 ~ a2@4 c3@2 ~@2",
  D: "g1@3 ~ g1@3 ~ b1@3 ~ b1@3 ~", E: "d2@3 ~ d2@3 g1 e2@4 g2@4", F: "g1@2 ~@2 g1@3 ~ b1@3 ~ b1@3 ~",
  G: "d2@3 ~ d2@3 g1 e2@4 g2@3 ~", H: "c2@3 ~ c2@3 ~ e2@3 ~ e2@3 c2", I: "g2@3 ~ g2@3 ~ a2@3 ~ c3@3 ~",
  J: "g2@3 ~ g2@2 ~ c2 a2@3 ~ c3@3 ~", K: "g1@3 ~ g1@3 ~ b1@4 d2@2 ~@2", L: "g1@3 ~ g1@4 b1@4 d2@3 ~",
  M: "g1@2 ~@2 g1@3 ~ b1@4 d2@3 ~", N: "c2@3 ~ c2@3 ~ e2@3 ~ e2@4", O: "g2@3 ~ g2@3 c2 a2@4 c3@3 ~",
  P: "c2@3 ~ c2@3 ~ e2@3 ~ e2@3 ~", Q: "g2@3 ~ g2@2 ~ c2 a2@4 c3@3 ~", R: "c2@3 ~@8 c#2@5", S: "c2 ~@3",
})).s("gm_fretless_bass").gain(0.54)

// chords · rock organ
const rock_organ = note(`<
  ~@4 A B@7 C D E@2 C D E@2 F G H I J K L M B@3 C D E@2 C D E@2 F G H I J K L N O@2 ~ C D E@2 C D E@2 F G H I J K P N
  O@2 ~ C D E@2 C D E@2 F G H I ~@7 C D E@2 C D E@2 F G H I Q R S N O@7 ~ T
>`.pickRestart({
  A: "~@7 g5 ~ c6 ~@2 g5 ~ c6 ~", B: "g5 c6 g5 c6 g5 c6 g5 c6 g5 c6 g5 c6 g5 c6 g5 c6",
  C: "[b4,d5] ~@2 g3 [b4,d5,f5]@3 g3 [b4,d5,f5]@2 ~ g3 [b4,d5,f5]@3 g3, f5 ~@7", // Bm Bdim
  D: "[b4,d5,f5]@3 g3 [b4,d5,f5]@3 ~ [b4,d5,f5]@3 g3 [b4,d5,f5]@3 g3", // Bdim
  E: "[b4,d5,f5]@3 g3 [b4,d5,f5]@3 ~ [b4,d5,f5]@3 g3 [b4,d5,f5]@3 g3, ~@7 g3@2 ~@7", // Bdim
  F: "[c5,e5,g5] ~@2 c4 [c5,e5,g5]@3 c4 [c5,e5] ~@2 c4 [c5,e5,g5]@3 c4, ~@4 g5 ~@3", // C
  G: "[c5,e5] ~@2 c4 [c5,e5,g5]@3 c4 [c5,e5,g5]@2 ~ c4 [c5,e5,g5]@3 c4, g5 ~@7", // C
  H: "[c5,e5,g5]@2 ~ c4 [c5,e5,g5]@3 c4 [c5,e5,g5]@2 ~ c4 [c5,e5,g5]@3 c4", // C
  I: "[c5,e5,g5]@2 ~ c4 [c5,e5,g5]@3 ~@2 e5@2 c4 [c5,e5,g5]@3 c4, ~@7 c4@2 ~@7, ~@4 [c5,g5] ~@3", // C C5
  J: "d5 ~@2 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5 g5", K: "d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5 g5",
  L: "d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 ~@4", M: "~@6 g5 ~@2 c6 ~ g5 ~ c6 g5 ~",
  N: "~@5 g5 ~@2 a#5 g5 a#5 g5 a#5 g5 a#5 g5", O: "a#5 g5 a#5 g5 a#5 g5 a#5 g5 a#5 g5 a#5 g5 a#5 g5 a#5 g5",
  P: "d5 g5 d5 g5 ~@12", Q: "d5 ~@2 g5 ~ d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5",
  R: "g5 d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5 g5 d5", S: "g5 d5 g5 d5 g5 ~@11",
  T: "~ [g5,c6]@2 ~ [d5,e5,f5] [a4,b4,c5] [e4,f4,g4] [b3,c4,d4] a3 ~@7, ~ f#5 ~@14", // C5 Dm Am Em Bm
})).s("gm_rock_organ").gain(0.29).pan(0.3)

// other · distortion guitar
const distortion_guitar = note("<~@68 A B C D E F G H I J K@3 L M N O P Q R ~@21 S T U V>".pickRestart({
  A: "~@11 g4 [a#4,d5]@2 ~ [c5,e5]", B: "[c5,e5]@8 c5@2 ~ a#4 g4@2 ~@2", C: "~@3 d5@4 ~ d5 g5 ~ d5 [d5,a#5]@3 ~",
  D: "[d5,g5]@2 ~ f5 d5@2 ~ c5 d5 ~@2 d5 c5@2 d5 ~", E: "d5@2 ~ c5 d5 ~@2 d5 c5 ~ d5 ~ d5@2 ~ d5",
  F: "~@3 d5 c5@2 ~ d5 c5 a#4 ~ g4 g4@2 ~ [c5,e5]", G: "~@3 [c5,e5] ~@3 [c5,e5]@4 a#4 g4@2 ~ a#4",
  H: "c5@3 ~ d5@3 ~ c5 ~@2 d5 c5@3 ~", I: "d5@3 ~ c5@2 ~ a#4 g4 ~@7", J: "~@2 e4 a#4 d#5@3 ~ c5@2 ~ a#4 f4@2 ~ g4",
  K: "[f4@2 ~ d#4 c4@4 ~@3 c4 d#4@2 ~ [f4,a4]@2 ~@2 c4 d#4@2 ~ [f4,a4]@2 ~@2 c4 d#4@2 ~ [f4,a4]@2 ~@2 c4 d#4@2 ~ [f4,a4]@2 ~@2 [f4,a4]@3 ~@2]/3", // F
  L: "~@4 [c4,e4]@3 ~ c4@2 ~ a#3 g3@2 ~ a#3", M: "[c4,e4]@3 ~ [c4,e4]@3 ~ c4@2 ~ a#3 g3@2 ~ a#3",
  N: "c4@3 ~ d4@3 ~ c4@2 ~ a#3 g3@2 ~ g3", O: "~@3 c4 [c4,e4,g4]@2 ~@2 [g3,a#3,e4]@2 ~ [g3,a#3,e4]@2 ~ [c4,e4,g4]@2",
  P: "~@2 [c4,e4] ~ [g4,c5] ~@2 f4@3 d#4@2 c4@2 ~@2", Q: "~@3 c4 [e4,g4]@2 ~ c4 g3@2 ~ g3 ~@2 c4 ~, ~@5 [a#3,e4] ~@2",
  R: "[c4,e4,g4]@2 ~@2 c5 ~@2 f4@4 ~ c4@2 ~@2, ~@11 d#4@2 ~@3", S: "~@7 g4@4 c5 a#4 g4 ~ f#4",
  T: "f4@2 ~ d#4 c4 a#3 ~ g3 f#3 f3 ~ d#3 c3 a#2 ~ g2", U: "c3@3 ~@8 [c#3,g#3]@5", V: "c3 ~@3",
})).s("gm_distortion_guitar").gain(0.46).pan(0.6)

// other · tenor sax
const tenor_sax = note(`<
  ~@5 A ~ A ~ A ~ A ~@20 B ~ B ~ B ~ B ~ C ~ C ~@3 D ~@4 B ~ B ~ B ~ B ~ C ~ C ~@3 D ~@4 B ~ B ~ B ~ B ~ C ~ C ~@3 D ~@4
  B ~ B ~ B ~ B ~ C ~ C ~@3 D ~@3 D ~@5
>`.pickRestart({
  A: "~@7 g2 a2@4 c3@2 ~@2", B: "~@7 d3 e3@2 ~ g3 g3@2 ~@2", C: "~@7 g2 a2@2 ~ c3 c3@2 ~@2",
  D: "~@6 g2 ~ c3 ~ c3 ~@3 c3 ~",
})).s("gm_tenor_sax").gain(0.59).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A B A C A B A C D@3 E D@3 E F@2 G H E I E J K L K D@3 E D@3 E F@2 G H E I E M N O P D@3 E D@3 E F@2 G H E I E M N
  O P D@3 E D@3 E F@2 G H E I E M N O P D@3 E D@3 E F@2 G H E I E M N O P M N O P Q R
>`.pickRestart({
  A: "~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~", B: "~@4 [c4,e4,g4]@2 ~@6 [c4,e4,g4] ~@3",
  C: "~@4 [c4,e4,g4]@2 ~@5 [c4,e4,g4] ~ [c4,e4,g4]@2 ~, ~@11 c3@2 ~@3", D: "~@2 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~",
  E: "~@4 [b3,d4,f4,g4]@2 ~@6 [b3,d4,f4,g4] ~@3", F: "~@4 [a#3,e4,g4,c5]@3 ~@5 [a#3,e4,g4,c5]@3 ~",
  G: "~@4 [a#3,e4,g4,c5]@3 ~@5 [a#3,e4,g4,c5]@2 ~@2", H: "g4 ~@3 [a#3,e4,g4,c5]@2 ~@6 [a#3,e4,g4,c5]@2 ~@2",
  I: "~@4 [b3,d4,f4,g4] ~@7 [b3,d4,f4,g4] ~@3", J: "~@4 [g3,a#3,c4,e4]@2 ~ [g3,a#3,c4,e4] ~@4 [g3,a#3,c4,e4] ~@3",
  K: "[g3,a#3,c4,e4] ~@6 [g3,a#3,c4,e4]@5 [g3,a#3,c4,e4] ~@3", // C7
  L: "~@4 [g3,a#3,c4,e4] ~@2 [g3,a#3,c4,e4] ~@4 [g3,a#3,c4,e4] ~@3", // C7
  M: "c3@3 [e4,g4,a#4,c5]@2 ~@3 [c3,a#4,c5]@3 [e4,g4] ~@4, ~@8 [e4,g4] ~@7", // C7 Em
  N: "[c3,e4,g4,a#4,c5] ~@6 [e4,g4,a#4,c5]@4 ~ [e4,g4,a#4,c5]@2 ~@2, ~@7 c3@7 ~@2", // C7
  O: "~@3 [e4,g4,a#4] [e4,g4,a#4]@2 ~@2 [e4,g4]@2 ~ [e4,g4,a#4] ~@4, c3@5 ~@2 c3@5 ~@4, ~@3 c5@3 ~@2 c5@3 ~@5, ~@8 a#4 ~@7", // Edim Em Edim
  P: "[c3,e4,g4,a#4,c5] ~@3 e4 ~@2 [e4,g4,a#4,c5]@3 ~ [e4,g4,a#4,c5]@2 ~@3, ~@7 c3@6 ~@3", // C7
  Q: "[c3,g3,a#3,c4,e4]@3 ~@8 [c#3,g#3,b3,d#4,f4]@4 ~", R: "[c3,e3,g3,a#3,d4]@3 ~@13",
})).s("gm_electric_guitar_clean").gain(0.31).pan(0.2)

// chords · piano
const piano = note("<A B C D E F G H I J K L ~@101>".pickRestart({
  A: "[c2,c3,e3,g3] ~ [c2,c3,e3,g3] ~ [f2,c3,a3] ~ [f2,c3,f3,a3] ~, ~@8 f3 ~@7", // C F
  B: "[g2,c3,g3,a#3] ~@3 [g2,c3,g3,a#3] ~ e2 ~ [f3,a3] ~@3 [c3,f3,a3] ~@3, ~@7 f2@3 ~@6, ~@4 c3 ~@3", // C7 F
  C: "[c2,c3,e3,g3] ~@3 [c2,c3,e3,g3] ~@3 [f2,c3,f3,a3] ~@3 [c3,f3,a3] ~@3, ~@6 f2 ~", // C F
  D: "[g2,c3,g3,a#3] ~@3 [c3,g3,a#3] ~@3 [c3,f3,a3] ~@3 [f2,c3,f3,a3] ~@3, ~@2 g2 ~ f2 ~@3", // C7 F
  E: "[c2,c3,e3,g3] ~@3 [c3,e3,g3]@2 ~@2 [c3,e3,g3]@2 ~@2 [c2,c3,e3,g3]@2 ~@2, ~@4 c2 ~@2 c2@2 ~@7", // C
  F: "[c3,e3,g3] ~ [c3,e3,g3] ~ [c3,e3,g3] ~ [c3,e3,g3] ~, c2 ~@3 c2@4 ~@3 c2@2 ~@3", // C
  G: "[c2,g3]@2 ~@2 [c2,c3,e3,g3]@2 ~@2 [c3,e3,g3] ~@2 c2 [c3,g3]@2 ~@2, [c3,e3] ~@11 e3 ~@3", // C5 C C5 C
  H: "[c2,g3]@2 ~@2 [c3,e3,g3] ~@3 [c3,e3,g3]@2 ~ c2 [c3,e3,g3] ~@3, [c3,e3] ~@15", // C5 C
  I: "[c2,c3,e3,g3] ~@3 [c2,c3,e3,g3]@2 ~@2 [c3,e3,g3] ~@3 [c3,e3,g3] ~@3, ~@11 c2@2 ~@3", // C
  J: "[c3,e3,g3] ~@3 [c3,e3,g3]@2 ~@2 [c3,e3] ~@2 c2 [c3,e3,g3] ~@3, c2 ~@3 g3 ~@3", // C
  K: "[c2,c3] ~@3 [c2,c3,g3]@2 ~@2 [c3,e3,g3] ~@3 [c3,e3,g3] ~@3, ~@4 e3 ~@6 c2@2 ~@3", // C C5 C
  L: "[c3,e3,g3] ~@3 [c3,e3,g3] ~@3 e3@4 c2@2 ~ c3, c2@3 ~@4 c2@2 ~@7, ~@8 g3@7 ~, ~@8 c3@3 ~@5", // C
})).s("gm_piano").gain(0.32).pan(0.4)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@13 A ~ B ~ C ~ C ~ D ~ E F G@2 H I J K ~ A ~ B ~ C ~ C ~ D ~ E L G@2 H I J K ~ A ~ B ~ C ~ C ~ D ~ E M N@2 H I J K O
  P O P O P O P Q R S T O P O H I J K ~ A ~ B ~ B ~ C ~ D ~ E L U@2 H I J K H I J K ~@2
>`.pickRestart({
  A: "~@7 d3 e3@2 ~ e3 g3@3 ~", B: "~@7 d3 e3@2 ~ e3 g3@2 ~@2", C: "~@7 d3 e3@2 ~@2 g3@2 ~@2, ~@11 e3@2 ~@3",
  D: "~@7 g3 a3@2 ~ a3 c4@2 ~@2", E: "~@7 g3 a3 ~@2 a3 c4@2 ~@2",
  F: "g3@4 [d4,g4,b4]@2 ~ [d4,g4] ~@4 [d4,g4,b4] ~@2 g4", // G G5 G
  G: "[g3@4 [d4,g4,b4] ~@3 g4@2 ~@2 [d4,g4,b4]@2 ~@6 [d4,g4,b4] ~@2 g4@2 ~@2 g3 [d4,g4,b4] ~@3, ~@11 g3@4 g4@2 ~@15, ~@16 g3@7 ~@9]/2", // G
  H: "~@4 [g3,c4]@2 ~ c4@5 c4 ~@3", I: "~@7 g3 a3 ~@2 a3 c4 ~@3", J: "~@4 c4 ~@2 c4@5 [g3,c4]@2 ~@2, ~@4 g3@7 ~@5",
  K: "~@7 g3 a3@2 ~ a3 c4 ~@3", L: "g3@4 [d4,g4,b4]@2 ~ [d4,g4,b4] ~@3 g3 [d4,g4,b4] ~@2 g4",
  M: "g3@4 [d4,g4,b4]@2 ~ [d4,g4] ~@3 g3 [d4,g4,b4] ~@2 g4", // G G5 G
  N: "[g3@4 [d4,g4,b4] ~@7 [d4,g4,b4]@2 ~@6 [d4,g4,b4] ~@2 g4@2 ~@2 g3 [d4,g4,b4] ~@3, ~@11 g3@4 g4@2 ~@15, ~@16 g3@7 ~@9]/2", // G
  O: "g4@3 ~ g4@2 ~ g4@3 g4 ~ g4@2 ~ g4", P: "g4@3 ~ g4@2 g4@3 ~ g4 ~ g4@2 g4@2",
  Q: "~@3 c4 [d#4,g4]@2 ~ [d#4,g4]@4 ~ [g4,a#4]@3 ~, ~@11 c4@3 ~@2", // D# Gm
  R: "~@3 c4 [d#4,g4]@2 ~ [d#4,g4]@3 ~@2 [g4,a#4]@3 ~, ~@11 c4@2 ~@3", // D# Gm
  S: "~@3 c4 [d#4,g4]@2 ~ [d#4,g4]@3 ~@2 [g4,a#4]@4, ~@11 c4@5", T: "~@3 c4 [d#4,g4]@2 ~ [d#4,g4]@4 c4 [g4,a#4]@3 ~",
  U: "[g3@4 [d4,g4,b4] ~@3 g4@2 ~@2 [d4,g4,b4]@2 ~@6 [d4,g4,b4] ~@2 [g4,b4]@2 ~@2 g3 [d4,g4,b4] ~@3, ~@11 g3@4 g4@2 ~@15, ~@16 g3@7 ~@9]/2", // G
})).s("gm_electric_guitar_jazz").gain(0.31).pan(0.7)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@24 A B C D ~@15 E B C D ~@15 F G C D ~@18 D ~@15 E B H D ~@3 D ~@5
>`.pickRestart({
  A: "~@7 b4 ~@3 g3 ~@3 d4", B: "~@4 d4 ~@3", C: "d4 ~@6 [d4,b4]@2 ~@7", D: "~@7 g3@3 ~ g3@3 ~@2", E: "~@15 d4",
  F: "~@7 b4 ~@7 d4", G: "~@4 [d4,g4] ~@3", H: "d4 ~@6 d4@2 ~@7",
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@3 [~@3 x] [x!2]!107 [x ~@10 x ~@4] x>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@3 A B@45 C B@18 D B@7 E B@3 F B@2 G B@3 C B@18 D B@3 H I ~>".pickRestart({
  A: "~@11 x ~@3 x", B: "~ x ~ x", C: "~@4 x ~@2 x!2 ~@2 x!2 ~@2 x", D: "~@4 x ~@3 x!2 ~ x!3 ~ x",
  E: "~@4 x ~@6 x!2 ~@2 x", F: "~@4 x ~@7 x!2 ~ x", G: "~@4 x ~@6 x!2 ~@3", H: "~@4 x ~@4 x ~ x ~ x ~ x",
  I: "~@7 x!2 ~@7",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@49 A ~@26 B ~@6 C ~@3 A ~@22 D ~@2>".pickRestart({
  A: "~@8 x!2 ~@2 x!2 ~@2", B: "~@13 x ~@2", C: "~@15 x", D: "~@2 x!2",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@83 [~@13 x ~@2] ~@29>").gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@104 A ~ B ~ A ~ B ~@2>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@12 A ~@18 A ~@18 A ~@18 A ~@7 A ~@3 A ~@2 A ~@3 A ~@14 B C B C B C B C D A
>`.pickRestart({
  A: "x", B: "x!2 ~ x", C: "~ x ~ x", D: "x ~@10 x ~@4",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A@2 B A B A B A B A B A B A B A B A B A@2 B A B A B A B A B A
  B A B A B A B A@2 B A B A B A B C B A B A B A B A B A C B A B A B A B A B A B A B A B A B A B A B A ~@2
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~@2 x", C: "~ x!3",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [~ x ~ x]!107 ~@2>").gain(0.64)

stack(
  bass, rock_organ, distortion_guitar, tenor_sax, electric_guitar_clean, piano, electric_guitar_jazz,
  electric_guitar_jazz_2, kick, snare, low_tom, mid_tom, open_hat, crash, ride, tambourine
)

More by Tom Jones