Strudelify

Remember You're Mine

Pat Boone

KeyE majorTempo100 bpm
0:00/0:00
// Remember You're Mine — Pat Boone
// 100 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 56 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 24, guitar program 25.
setcpm(100/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 · fretless bass
const bass = note(`<
  ~ A B C@2 D E D E D F G@2 E H I J F K L M E D E D E N G O E P Q@2 R G L R S@2 T U V W X Y E P Q Z AA AB@2 AC@4
>`.pickRestart({
  A: "e2@11 ~ e2@12", B: "a1@11 ~ a1@12", C: "[b1@13 ~@11]/2", D: "e2 b1", E: "e1 b1", F: "e1 e2", G: "b1 f#1",
  H: "d2 b1", I: "a1 e2", J: "a2 e2", K: "b1 f#2", L: "e2 a1", M: "e1 ~@11", N: "e2 e1", O: "b1@2 f#1 b1",
  P: "d2@2 b1 g#1", Q: "a1 e1", R: "e2@12 b1@11 ~", S: "b1@5 ~ b1@6 f#1@5 ~ f#1@6", T: "e1@5 ~ e1@6 b1@5 ~ b1@6",
  U: "e1@5 ~ e1@6 b1@6 e1@6", V: "f#1@5 ~ f#1@6 c#2@5 ~ c#2@6", W: "f#1@5 ~ f#1@6 c#2@6 f#1@6",
  X: "b1@5 ~ b1@6 f#2@5 ~ f#2@6", Y: "b1 ~@11", Z: "a1@2 c#2 a1", AA: "e1@11 ~ e1@12", AB: "[b1@29 ~@19]/2",
  AC: "[~ a1@2 e1@4 ~]/4",
})).s("gm_fretless_bass").gain(0.45)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@18 A ~@9 A ~@5 A ~@2 B C D E F G H ~@5 I@3 ~@4>".pickRestart({
  A: "~@9 a3@2 ~", B: "b3@2 f#3 b3@2 f#3 b3@2 f#3 b3@2 f#3",
  C: "[a3,b3,d#4]@2 f#3 [a3,b3]@2 f#3 [a3,d#4]@2 ~ [a3,b3]@2 f#3", D: "~@2 e4@3 g#3 [b3,e4]@2 g#3 b3@2 g#3",
  E: "~@2 b3@3 g#3 b3@2 g#3 [b3,e4]@2 g#3", F: "~@2 f#4@3 a#3 [c#4,f#4]@2 a#3 [c#4,f#4]@2 a#3",
  G: "~@4 e4@6 a#3@2 c#4@4 ~@2 e4@3 ~ a#3@2", H: "~@2 b3@3 ~@7", I: "[~@23 [b2,f#3]@28 ~@21]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.4)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon_2 = note(`<
  ~ A B C D A@6 E C A F B G A C H I A@6 C@2 A F B G A C H A J K L M N O P Q A F B G A D ~@5
>`.pickRestart({
  A: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~", // E
  B: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~", // A
  C: "[f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4] ~ [f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4] ~ [f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4] ~ [f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4] ~", // B
  D: "[f#3,b3,d#4] ~@11", // B
  E: "[f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4] ~ [f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4] ~ [f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4] ~ [f#3,b3,d#4]@2 [f#3,b3]@2 [f#3,b3,d#4] ~", // B B5 B
  F: "[g#3,b3,d4]@2 [g#3,b3,d4]@2 [g#3,b3,d4] ~ [g#3,b3,d4]@2 [g#3,b3,d4]@2 [g#3,b3,d4] ~ [g#3,b3,d4]@2 [g#3,b3,d4]@2 [g#3,b3,d4] ~ [g#3,b3,d4]@2 [g#3,b3,d4]@2 [g#3,b3,d4] ~", // G#dim
  G: "[a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4] ~", // Am
  H: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~", // E A
  I: "[g#3,b3,e4] ~@11", J: "d#4@2 f#3@2 b3 ~ d#4@2 f#3@2 b3 ~ d#4@2 f#3@2 b3 ~ d#4@2 b3@2 d#4 ~",
  K: "f#4@2 d#4@2 b3 ~ d#4@2 f#4@2 d#4 ~ b3@2 d#4@2 f#4 ~ d#4@2 f#4@2 b4 ~",
  L: "g#4@2 e4@2 b3 ~ e4@2 b3@2 e4 ~ g#4@2 e4@2 b3 ~ e4@2 b3@2 e4 ~",
  M: "g#3@2 b3@2 e4 ~ b3@2 g#3@2 b3 ~ e4@2 b3@2 e4 ~ g#4@2 e4@2 b3 ~",
  N: "f#4@2 a#3@2 c#4 ~ f#4@2 c#4@2 f#4 ~ a#4@2 f#4@2 c#4 ~ a#3@2 c#4@2 f#4 ~",
  O: "c#4@2 a#3@2 c#4 ~ f#4@2 a#3@2 c#4 ~ e4@2 c#4@2 a#3 ~ c#4@2 e4@2 c#4 ~",
  P: "d#4@2 b3@2 d#4 ~ f#4@2 d#4@2 f#4 ~ [c#4,f#4,a4]@2 [c#4,f#4,a4]@2 [c#4,f#4,a4] ~ [c#4,f#4,a4]@2 [c#4,f#4,a4]@2 [c#4,f#4,a4] ~", // F#m
  Q: "[d#4,f#4,b4] ~@11", // B
})).s("gm_acoustic_guitar_nylon").gain(0.25).pan(0.6)

// chords · acoustic guitar steel · B5 G#m C#m E5 A#m F#5 A#m A#dim …
const acoustic_guitar_steel = note(`<
  ~@37
  [~@6 [f#3,b3] ~@11 [f#3,b3] ~@5]!2
  [~@6 [g#3,b3] ~@11 [g#3,b3] ~@5]
  [~@6 [g#3,e4] ~@11 [b3,e4] ~@5]
  [~@6 [a#3,c#4] ~@11 [c#4,f#4] ~@5]
  [~@6 [a#3,c#4] ~@11 [a#3,e4] ~@5]
  [~@6 [b3,d#4] ~@17]
  ~@12
>`).s("gm_acoustic_guitar_steel").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ A@2 B C A@15 C A@22 B C A@5 C ~@5>".pickRestart({
  A: "x!2", B: "x ~@5 x ~@2 x!3", C: "x",
})).gain(0.4)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@3 [~@7 x!2 ~ x!2] ~@39 [~@7 x!2 ~ x!2] ~@12>").gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<~ A@2 B C A@15 C A@22 B C A@5 C ~@5>".pickRestart({
  A: "x ~ x!2 ~ x!2 ~ x!2 ~ x", B: "x!12", C: "x",
})).gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@2 B C A@15 ~ A@22 B C A@5 ~@6>".pickRestart({
  A: "x!4 ~@2 x!4 ~@2", B: "~@3 x!9", C: "x",
})).gain(0.2)

stack(
  bass, acoustic_guitar_nylon, acoustic_guitar_nylon_2, acoustic_guitar_steel, kick, snare, snare_soft, hihat,
  tambourine
)

More by Pat Boone