Strudelify

('Till) I Kissed You

The Everly Brothers

KeyC majorTempo130 bpm
0:00/0:00
// ('Till) I Kissed You — The Everly Brothers
// 130 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 59 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · "ACOU BASS"
const bass = note(`<
  A B C D A B C B A B A B E F G H C B C D C I J K L M N K O P C D A D A D C D E A G H C B A B C E F G H C B C D C D A Q
>`.pickRestart({
  A: "c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2@3 ~ g1 ~", B: "a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ c#2 ~",
  C: "c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2@3 ~ b1 ~", D: "a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ b1 ~",
  E: "c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2@3 ~ c2 ~", F: "c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2@3 ~ c2 ~ c2@3 ~ e1 ~",
  G: "f1@3 ~ f1 ~ f1@3 ~ f1 ~ f1@3 ~ f1 ~ f1@3 ~ f1 ~", H: "f1@3 ~ f1 ~ f1@3 ~ f1 ~ f1@3 ~ f1 ~ f1@3 ~ b1 ~",
  I: "a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ g#1 ~", J: "a1@3 ~ a1@2 ~@4 e1@2 a1@3 ~ a1@2 ~@2 e1 ~ f1 ~",
  K: "a1@3 ~ a1@2 ~@4 a1@2 a1@2 ~@2 a1@2 ~@2 d2 ~ b1 ~", L: "c2@3 ~ c2@2 ~@4 g1@2 c2@3 ~ c2@2 ~@2 g1 ~ c#2 ~",
  M: "c2@3 ~ c2@2 ~@4 g1@2 c2@3 ~ c2@2 ~@2 c2 ~ b1 ~", N: "a1@3 ~ a1@2 ~@4 e1@2 a1@3 ~ a1@2 ~@2 e1 ~ a#1 ~",
  O: "c2@3 ~ c2@2 ~@4 g1@2 c2@3 ~ c2@2 ~@2 a#1 ~ b1 ~", P: "c2@3 ~ c2@4 ~@2 f#1 ~ g1@3 ~ g1@3 ~ a#1 ~ b1 ~",
  Q: "c2@11 ~",
})).s("gm_acoustic_bass").gain(0.43)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C D E F G H A I J H K L M N O F J P Q I R S T U V W X Y J F Z AA Z I AB H AB AC M AD AE P A AF AB K L M N O F J P
  Q P J ~
>`.pickRestart({
  A: "c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~ c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~", B: "[a3,c4,e4]@5 ~ [a3,c4,e4]@5 ~",
  C: "[g3,c4,e4]@10 ~@2 c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~", D: "[a3,c4,e4]@10 ~@2 [a3,c4,e4]@3 ~ a2 ~ [a3,c4,e4]@4 ~@2",
  E: "[g3,c4,e4]@3 ~ c3 ~ [g3,c4,e4]@4 ~@2 c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~", // C
  F: "[a3,c4,e4]@10 ~@2 a2@4 ~@2 [a3,c4,e4]@3 ~ [a3,c4,e4] ~", // Am
  G: "[g3,c4,e4]@3 ~@3 [g3,c4,e4]@4 ~@2 c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~", H: "a2@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@5 ~",
  I: "a2@4 ~@2 [a3,c4,e4]@2 ~@2 a2 ~ a2@4 ~@2 [a3,c4,e4]@3 ~ [a3,c4,e4] ~", // Am
  J: "c3@2 ~ [g3,c4,e4] ~@2 c3@2 ~ [g3,c4,e4] ~@2", // C
  K: "c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~ [g3,c4,e4]@3 ~ c3 ~ [g3,c4,e4]@4 ~@2", // C
  L: "c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~ c3@4 ~@2 [g3,c4,e4]@3 ~ [g3,c4,e4] ~", // C
  M: "f3@4 ~@2 [a3,c4,f4]@2 ~@4 f3@4 ~@2 [a3,c4,f4]@2 ~@2 f3 ~", // F
  N: "[a3,c4,f4]@10 ~@2 [a3,c4,f4]@3 ~@3 [a3,c4,f4]@4 ~@2", O: "[g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~",
  P: "a2@4 ~@2 [a3,c4,e4]@2 ~@4 a2@4 ~@2 [a3,c4,e4]@3 ~ [a3,c4,e4] ~", // Am
  Q: "c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~ [g3,c4,e4]@10 ~@2", R: "~@6 [a3,c4,e4]@4 ~@6 a2 ~ [a3,c4,e4]@3 ~ [a3,c4,e4] ~",
  S: "~@6 [a3,c4,e4]@3 ~ [a3,c4,e4] ~@7 [a3,c4,e4]@3 ~ [a3,c4,e4] ~", // Am
  T: "~@6 [g3,c4,e4]@3 ~ [g3,c4,e4] ~@5 c3 ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~", // C
  U: "~@6 [g3,c4,e4]@4 ~@2 [g3,c4,e4]@4 ~@2 [g3,c4,e4]@3 ~ [g3,c4,e4] ~", // C
  V: "~@4 a2 ~ [a3,c4,e4]@3 ~ [a3,c4,e4] ~@7 [a3,c4,e4]@3 ~ [a3,c4,e4] ~", // Am
  W: "~@6 [a3,c4,e4]@3 ~ [a3,c4,e4] ~@5 a2 ~ [a3,c4,e4]@3 ~ [a3,c4,e4] ~", // Am
  X: "~@4 c3 ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~@7 [g3,c4,e4]@4 ~@2", // C
  Y: "~@6 [g3,c4,e4]@4 ~@2 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@3 ~ [g3,b3,d4] ~", // C G
  Z: "c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~ c3@4 ~@2 [g3,c4,e4]@2 ~@4", // C
  AA: "a2@4 ~@2 [a3,c4,e4]@4 ~@2 [a3,c4,e4]@3 ~@3 [a3,c4,e4]@4 ~@2", // Am
  AB: "c3@4 ~@2 [g3,c4,e4]@2 ~@4 c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~", // C
  AC: "c3@4 ~@2 [g3,c4,e4]@2 ~@4 c3@4 ~@2 [g3,c4,e4]@3 ~ [g3,c4,e4] ~", // C
  AD: "f3@4 ~@2 [a3,c4,f4]@4 ~@2 [a3,c4,f4]@3 ~ f3 ~ [a3,c4,f4]@4 ~@2", // F
  AE: "c3@4 ~@2 [g3,c4,e4]@2 ~@2 c3 ~ [g3,c4,e4]@3 ~@3 [g3,c4,e4]@4 ~@2", // C
  AF: "a2@4 ~@2 [a3,c4,e4]@2 ~@4 [a3,c4,e4]@3 ~@3 [a3,c4,e4]@4 ~@2", // Am
})).s("gm_acoustic_guitar_nylon").gain(0.35)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B A B C D E F C G H F I J K L M N O P Q F R S T U R S T V C D E F C G H F I J K L M N O P Q I J K L M N O P Q W X@2
>`.pickRestart({
  A: "[c4,e4,g4]@6 [g4,c5,e5]@3 ~ [g4,c5,e5]@2 [g4,c5,e5]@3 ~ [g4,c5,e5]@2 [g4,c5,e5]@3 ~ [g4,c5,e5]@2", // C
  B: "[a3,e4]@3 ~ [a4,c5,e5]@2 [a4,c5,e5]@3 ~ [a4,c5,e5]@6 [a4,c5,e5]@2 [a4,c5,e5]@3 ~ [a4,c5,e5]@2", // A5 Am
  C: "[c4,e4,g4,c5,e5]@6 d4 e4@4 ~ [g4,c5,e5]@3 ~ [g4,c5,e5]@2 [g4,c5,e5]@3 ~ d4@2", // C
  D: "d4@3 ~ c4@6 c4@6 [a4,c5,e5]@2 d4@3 ~ c4@2", // Am
  E: "d4 e4@4 ~ e4@6 [g4,c5,e5]@3 ~ [g4,c5,e5]@2 [g4,c5,e5]@3 ~ [g4,c5,e5]@2", // C
  F: "a3@3 ~ [a4,c5,e5]@2 e4@3 ~ d4 e4@4 ~ [a4,c5,e5]@2 [a4,c5,e5]@3 ~ [a4,c5,e5]@2", // Am
  G: "d4@3 ~ [a4,c5,e5]@2 c4@3 ~ c4@6 [a4,c5,e5]@2 d4@3 ~ c4@2", // Am
  H: "d4 e4@4 ~ d4 e4@4 ~ [g4,c5,e5]@3 ~ [g4,c5,e5]@2 [g4,c5,e5]@3 ~ [g4,c5,e5]@2", // C
  I: "[g4,c5,e5]@6 [c4,e4,g4,c5]@9 ~ g4@2 a4@3 ~ g4@2", // C
  J: "d4@2 e4@2 [g4,c5,e5]@2 e4@3 ~ [g4,c5,e5]@2 e4@3 ~ d4@2 c4@3 ~ [g4,c5,e5]@2", // C
  K: "f3@6 [f4,a4,b4]@9 ~ b4@2 a4@3 ~ [c5,f5]@2", L: "g4@3 ~ [c5,f5]@2 f4@3 ~ f4@2 e4@3 ~ [a4,c5,f5]@2 d4@3 ~ c4@2",
  M: "e4@3 ~ [g4,c5,e5]@2 d4@3 ~ e4@2 [g4,c5,e5]@3 ~ [g4,c5,e5]@2 [g4,c5,e5]@3 ~ d4@2", // C
  N: "d4@3 ~ [a4,c5,e5]@2 c4@3 ~ a3@2 c4@3 ~ [a4,c5,e5]@2 d4@3 ~ c4@2", // Am
  O: "d4 e4@4 ~ e4@3 ~ [g4,c5,e5]@2 [g4,c5,e5]@3 ~ [g4,c5,e5]@2 [g4,c5,e5]@3 ~ [g4,c5,e5]@2", // C
  P: "a3@3 ~ [a4,c5,e5]@2 e4@3 ~ d4 e4@4 ~ [a4,c5,e5]@2 [a4,c5,e5]@3 ~ d4@2", // Am
  Q: "e4@3 ~ [g4,c5,e5]@2 d4 e4@4 ~ [g4,c5,e5]@3 ~ [g4,c5,e5]@2 [g4,c5,e5]@3 ~ [g4,c5,e5]@2", // C
  R: "~ [a3,e4,a4] e4 [a3,e4,a4]", S: "e4@6 [a3,e4,a4]@6 e4@3 ~ d4@2 c4@3 ~ a3@2", T: "c4 [c4,e4,g4] [c4,e4,g4]@2",
  U: "[c4,e4,g4,c5]@6 g5@6 [c4,e4,g4,c5,g5]@6 g4@3 ~ c5@2", // C
  V: "[c4,e4,g4,c5]@6 g5@6 [c4,e4,g4,c5,g5]@3 ~ g3@2 g3@3 ~ [g4,b4,g5]@2", // C G
  W: "a3@3 ~ [a4,c5,e5]@2 e4@3 ~ d4 e4@4 ~ [a4,c5,e5]@2 [a4,c5,e5]@3 ~ g4@2", X: "[[c4,e4,g4,c5] [c4,e4,g4,c5]@7]/2",
})).s("gm_acoustic_guitar_steel").gain(0.36)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B A B C D E F C D E F G H I J K L E M E N O P Q R O P Q S C D E F C D E F G H I J K L E M E G H I J K L E M E T U@2
>`.pickRestart({
  A: "c4@6 [g4,c5,g5]@3 ~ g5@6 e5@2 c5@3 ~ e5@2", B: "a3@6 [c5,e5,a5]@3 ~ a5@6 e5@2 c5@3 ~ e5@2",
  C: "c4@6 [g4,c5,e5]@9 ~ g4@2 c5@3 ~ e5@2", D: "[a3,d5]@3 ~ c5@2 a4@3 ~ c5@6 e5@2 d5@3 ~ c5@2",
  E: "[c4,e5]@6 [g4,e5]@9 ~ c5@2 g4@3 ~ c5@2", F: "a3@6 [a4,c5,e5]@3 ~ e5@6 a5@2 b3@3 ~ c5@2",
  G: "c4@6 [c5,e5,c6]@9 ~ g5@2 a5@3 ~ g5@2", H: "[e5,g5]@6 [e5,g5]@3 ~ g4@2 [e5,g5]@3 ~ [d5,f5]@2 [c5,e5]@6",
  I: "f4@6 [f5,b5]@9 ~ b5@2 a5@3 ~ c5@2", J: "g5@3 ~ c5@2 f5@3 ~ a4@2 e5@3 ~ f4@2 d5@3 ~ c5@2",
  K: "[c4,e5]@6 [g4,c5,e5]@9 ~ g4@2 c5@3 ~ e5@2", L: "[a3,d5]@3 ~ a4@2 c5@3 ~ a4@2 [a3,c5]@3 ~ a4@2 d5@3 ~ c5@2",
  M: "a3@6 [a4,c5,e5]@3 ~ e5@6 a5@2 a4@3 ~ c5@2", N: "a3@6 [a4,c5,e5]@3 ~ e5@6 a4@2 e4@3 ~ a4@2",
  O: "~ [a3,e5,a5] e5 [a3,e5,a5]", P: "e5@6 [a3,e5,a5]@6 e5@3 ~ d5@2 [a3,c5]@3 ~ a4@2", Q: "c5 [c4,g5] [c4,c5,f5,g5]@2",
  R: "c4@3 ~ g5@2 g4@6 g4@6 [c5,g5]@6", S: "c4@3 ~ g5@2 g4@6 g4@3 ~ c5@2 b3@6",
  T: "a3@6 [a4,c5,e5]@3 ~ e5@6 a4@2 c5@3 ~ e5@2", U: "[[c4,c6] [c4,e4,g4,c5,e5,c6]@7]/2",
})).s("gm_piano").gain(0.27)

// drums · kick
const kick = s("bd").struct("<[x ~@4 x!2 ~@5]!58 [x!2]>").gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  A@3 B A@3 B A@3 C A@5 C A B A C A@7 C A@3 C A@3 C A@5 C A B A@6 C A B A@3 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@3 x!3 ~ x", C: "~@3 x ~@3 x!5",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@2 C D B E B F G E B H C I E J B K B D E L B E@3 G B J K E@2 C K B J@2 F B E C@2 E M C K H C I E J B K B D E@2 N
>`.pickRestart({
  A: "~@2 x!2 ~ x!5 ~@2", B: "x ~ x!2 ~ x!2 ~ x!2 ~@2", C: "x ~ x!2 ~ x!5 ~@2", D: "~@2 x!2 ~ x!2 ~ x!4",
  E: "x ~ x!2 ~ x!2 ~ x!2 ~ x", F: "x ~ x ~@2 x!2 ~ x!2 ~@2", G: "x ~ x!2 ~ x!2 ~ x!3 ~", H: "~@2 x!2 ~ x!2 ~ x!2 ~ x",
  I: "x ~ x!2 ~ x!2 ~ x!4", J: "x ~ x!2 ~ x!5 ~ x", K: "x ~ x ~@2 x!2 ~ x!2 ~ x", L: "x ~ x ~@2 x!5 ~ x",
  M: "x ~ x ~@2 x!2 ~ x!3 ~", N: "~ x",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@4 ~ A ~ A@3 ~ A ~ A ~@3 A B A ~@3 C ~@3 A@2 ~@4 A B A ~@2 A@2 ~ A@2 ~ A@2 ~@2 A ~@3 A B A ~@4
>`.pickRestart({
  A: "~@11 x", B: "~ x ~@2", C: "~@10 x!2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@3 B ~@3 A ~@7 A ~ B ~@7 B ~@7 B ~@5 B ~ B A ~@7 A ~@2 A>".pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.48)

stack(bass, acoustic_guitar_nylon, acoustic_guitar_steel, piano, kick, snare, hihat, open_hat, crash)

More by The Everly Brothers