Strudelify

One On One

Hall & Oates

KeyC majorTempo114 bpm
0:00/0:00
// One On One — Hall & Oates
// 114 bpm, 4/4, key C 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 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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 · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~ A B C D E D F G H G I G J G K G J L I G J G M N O P Q R S T U G H G I G J G K G J L I G J G M N O P Q R S T V W X Y
  Z AA AB G AC AD AE AF B@2 AG N O P Q R S T U N O P Q R S T U N O P Q R S T AH AI@2 ~@6
>`.pickRestart({
  A: "~@10 e1 ~ f1 ~ f#1 ~", B: "g1 ~ g1@2 ~@12", C: "~@10 e2@2 d2@2 e2 ~", D: "g1 ~ g1@2 ~@8 g1 ~ g1 ~",
  E: "~@10 e1 ~ f1@2 f#1@2", F: "~@12 c2@2 d2 ~", G: "d#2 ~@5 d#2 ~ d#2@4 ~@2 d#2@2", H: "d2 ~@5 d2 ~ d2@3 ~ c2@2 d2@2",
  I: "d2 ~@5 d2@2 g2 ~ g2@2 g2@2 d2@2", J: "d2 ~@5 d2 ~ d2 ~ d2@2 c2@2 d2@2", K: "d2@2 ~@4 d2@2 g2 ~ g2 ~ g2@2 d2@2",
  L: "d#2 ~@5 d#2 ~ d#2@5 ~ d#2@2", M: "d2 ~@5 d2@2 g2@3 ~ g2@2 ~@2", N: "c2@2 ~@4 a2@2 g2@6 c2 ~",
  O: "c2@3 ~@3 e3@2 d3@2 a3@2 g3@4", P: "c2 ~@2 a2 g2@3 g1", Q: "c2@4 ~@2 c2@2 g1 ~ g1 ~ a1 ~ b1@2",
  R: "c2@4 ~@2 a2@2 g2@4 ~@2 c2 ~", S: "c2@4 ~@2 e3@2 d3 ~ a3@2 [g3,a3] ~ g1 a1", T: "c2@4 ~@2 a2@2 g2@5 ~ g1@2",
  U: "c2@2 ~ c2 ~ c2!2 d2", V: "c2@2 ~ c2 ~ c2 c3 c#3", W: "d2 ~@5 d2 ~ d2@5 ~ a1@2", X: "d2 ~ d2 ~@3 d2 ~ d2@5 ~ d2 ~",
  Y: "d#2 ~@5 d#2 ~ d#2@6 d2@2", Z: "c2 ~ c2 ~@3 c2@3 ~ c2@2 g1@2 c2@2", AA: "d#2@2 ~@4 d#2 ~ d#2@5 ~ d#2@2",
  AB: "c2 ~ c2 ~@3 c2@4 g1@2 c2@2 g1@2", AC: "c2 ~ c2 ~@3 c2@2 ~@2 c2@2 c#2@3 ~", AD: "d2@4 ~@2 d2 ~ d2@4 ~@2 d2@2",
  AE: "a2@2 c3 ~ d3 ~ c3 ~ d#2@4 d2@4", AF: "c2@2 ~ c2@4 ~", AG: "g1@2 f1@2 f#1 ~ g1@2 g1@3 ~ g2@3 ~",
  AH: "c2@2 ~ c2 ~ g1 a1 b1", AI: "c2/2",
})).s("gm_synth_bass_2").gain(0.72)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C D A B C D E F E G E F E G E F E G E F E G H I J K H I J I E F E G E F E G E F E G E F E G H I J K H I J I L@2 M
  N M N M O P Q R S T U H I J K H I J I H I J K H I J I H I J K H I J I V@8
>`.pickRestart({
  A: "[c4,e4,g4,b4] ~ [c4,e4,g4,b4]@13 ~", B: "[c4,e4,g4,b4] ~ [c4,e4,g4,b4]@12 ~@2",
  C: "[c4,f4,g4,a4,c5] ~ [c4,f4,g4,a4,c5]@13 ~", D: "[c4,f4,g4,a4,c5] ~ [c4,f4,g4,a4,c5]@12 ~@2",
  E: "[d#3,g3,a#3,d4,f4] ~ [d#3,g3,a#3,d4,f4] ~ [d#3,g3,a#3,d4,f4] ~ [d#3,g3,a#3,d4,f4] ~ [d#3,g3,a#3,d4,f4] ~ [d#3,g3,a#3,d4,f4] ~ [d#3,g3,a#3,d4,f4] ~ [d#3,g3,a#3,d4,f4] ~", // D#maj7
  F: "[d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~", // Dm7
  G: "[d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~ [d3,a3,c4,d4,f4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~", // Dm7 G
  H: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  I: "[b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~", // Em7
  J: "[a3,c4,e4,g4] ~ [a3,c4,e4,g4] ~ [a3,c4,e4,g4] ~ [a3,c4,e4,g4] ~ [a3,c4,e4,g4] ~ [a3,c4,e4,g4] ~ [a3,c4,e4,g4] ~ [a3,c4,e4,g4] ~", // Am7
  K: "[b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [d4,f4,g4] ~ [d4,f4,g4] ~ [d4,f4,g4] ~ [d4,f4,g4] ~", // Em7 G7
  L: "[[d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~, d3@31 ~]/2", // Dm7
  M: "[d#3,g3,d4,f4,a#4] ~ [d#3,g3,d4,f4,a#4] ~ [d#3,g3,d4,f4,a#4] ~ [d#3,g3,d4,f4,a#4] ~ [d#3,g3,d4,f4,a#4] ~ [d#3,g3,d4,f4,a#4] ~ [d#3,g3,d4,f4,a#4] ~ [d#3,g3,d4,f4,a#4] ~", // D#maj7
  N: "[c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~", // C
  O: "[c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4] ~ [c#3,g3,c4,e4,g4] ~ [c#3,g3,c4,e4,g4] ~", // C
  P: "[a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~", // Dm7
  Q: "[a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [g3,a#3,d#4]@3 ~ [f3,a3,c4,f4]@4", // Dm7 D# F
  R: "[c4,g4,c5,d5,e5]@15 ~", S: "[c4,d4,f4,a4,d5]@7 ~, g3 ~@15", T: "[c4,g4,c5,d5,e5]@7 ~",
  U: "[g3,c4,d4,f4,a4,d5]@15 ~", V: "[[g3,d4,e4,g4], [c3,c4] ~@3]/8",
})).s("gm_epiano2").gain(0.5)

// other · alto sax
const alto_sax = note("<~@58 A B C@2 D E@2 ~@37>".pickRestart({
  A: "~@2 f4@3 ~ f4 ~ f4@2 a#3 ~ a#3@2 c4@2", B: "c4@2 g3@4 a3 ~ a3@2 g3@2 g3@2 a3@2",
  C: "[~@2 f4@4 f4 ~ f4@2 g4 ~ a4@2 g4@10 a4@2 c5 ~ a4@2 c5 ~]/2", D: "c5@6 a#4 a4 a#4@4 a4 g4 a4@2",
  E: "[g4@2 a4 ~ e4@2 g4 ~ a4 ~ c5@8 ~@14]/2",
})).s("gm_alto_sax").gain(0.72)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  A@4 B@2 C@2 ~@8 D ~@3 E ~@3 F@4 G@4 ~@8 D ~@3 E ~@3 F@4 G@4 H@2 I J I J I J K L M@4 F@4 G@4 F@4 G@4 F@4 G@4 N@2 ~@6
>`.pickRestart({
  A: "[[e4,g4,b4]@31 ~ [f4,a4,c5]@31 ~, c4@63 ~]/4", B: "[[c4,e4,g4,b4]@31 ~]/2",
  C: "[[c4,f4,a4,c5]@25 ~ [c4,f4,a4,c5] ~ [c4,f4,a4,c5] ~ [c4,f4,a4,c5] ~]/2", D: "[g4,a#4,f5]@7 ~, g#4 ~@15",
  E: "[d#4,g4,a#4,d#5,f5,a#5]@3 ~", // D#
  F: "[c5@15 ~ b4@15 ~ a4@15 ~ b4@7 ~ [c4,f4,a4,e5] ~ [c4,f4,a4,e5] ~ [c4,f4,a4,e5] ~ [c4,f4,a4] ~, [c4,g4,e5]@55 ~@7 e5@2]/4", // Fmaj7 F C
  G: "[c5@14 ~@2 b4@15 ~ a4@15 ~ b4@15 ~, [c4,g4,e5]]/4", H: "[[d3,a3,d4,f4,a4,c5]@31 ~]/2", I: "[d#3,g3,d4,g4,a#4]",
  J: "[c3,g3,c4,e4]@15 ~", // C
  K: "[a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~", // Dm7
  L: "[a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [a3,c4,d4,f4] ~ [g3,a#3,d#4]@3 ~ [f3,a3,c4,f4]@4", // Dm7 D# F
  M: "[[g3,c4,e4]@15 ~ [f3,a3,d4]@15 ~@17 [f3,a3,d4]@15 ~, c5@63 ~, ~@32 [g3,c4,e4]@15 ~@17, ~@36 [g5,c6]@27 ~]/4", // C Dm C C5
  N: "[[c3,g3,c4,e4,g4]@29 ~@3]/2", // C
})).s("gm_rock_organ").gain(0.41)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note("<~@28 A B C B ~@20 A B C B ~@14 D@24 ~@8>".pickRestart({
  A: "[e5,g5,c6]@15 ~", B: "[g5,b5,d6]@15 ~", C: "[e5,g5,c6]",
  D: "[c5@16 b4@16 c5@16 b4@16 c5@16 b4@16 c5@16 b4@15 ~, g4@127 ~]/8",
})).s("gm_percussive_organ").gain(0.48)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@3]!94 x ~@7>").gain(0.8)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!93 [~@2 x ~@2 x!3] ~@8>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!94 ~@8>").gain(0.8)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[~ x ~ x ~ x ~ x]!94 ~@8>").gain(0.24)

// drums · open hat
const open_hat = s("oh").struct("<~@94 x ~@7>").gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@94 x ~@7>").gain(0.8)

// drums · congas
const congas = s("conga:13").struct("<[~@2 x ~@2 x ~@2]!94 ~@8>").gain(2.56)

// drums · congas
const congas_2 = s("conga:33").struct("<[~@7 x]!94 ~@8>").gain(2.56)

stack(
  bass, epiano2, alto_sax, rock_organ, percussive_organ, kick, rim, hihat, hihat_soft, open_hat, ride, congas, congas_2
)

More by Hall & Oates