Strudelify

Cayenne

The Beatles

KeyC minorTempo140 bpm
0:00/0:00
// Cayenne — The Beatles
// 140 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 38 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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.

// chords · acoustic guitar nylon · "GUITAR"
const acoustic_guitar_nylon = note("<~ A@6 B@2 C@8 D E@8 F@2 G H@7 I ~>".pickRestart({
  A: "[[c4,g4]@12 c4@7 ~@28 c4@4 [c4,eb4,g4]@8 [c4,eb4]@5 ~@29 c4@4 ~@16 c4@4 ~@9 [c4,eb4,g4]@4 f2@8 ~@33 [ab3,c4]@13 ~@4 f2@4, c3@23 ~@4 c4@20 ~@24 eb4@21 eb4@7 ~@6 eb4@21 ~@12 c4@12 ~@42, eb4@19 eb4@12 c3@12 c3@12 ~@9 c3@11 c3@13 c3@8 ~ c3@12 c3@13 c3@7 ~@9 f3@8 ~@4 [f3,c4]@8 f3@13 f3@9 ~@4 [f3,ab3,c4]@8, ~@12 g4@21 ~@6 g4@12 ~@8 g4@12 g4@14 ~@8 g4@12 g4@12 ~@25 f2@12 f2@9 f2@12 ~@17, ~@71 c4@9 ~@5 [c4,g4]@8 ~@12 c4@8 ~@4 [c4,g4]@9 ~@12 ab3@21 ~@33]/6", // C5 Cm Ab F5 Fm C5
  B: "[[f3,ab3,c4]@3 ~ c3@7 ~@8 c4@4 [c4,eb4,g4]@8 ~@21 c4@3 ~@4 c3@5, ~@11 eb4@12 ~@20 eb4@12 ~@9, ~@11 c4@8 ~@12 [c4,eb4,g4]@12 c4@9 ~@3 [c4,eb4,g4]@9, ~@12 g4@11 ~@21 g4@11 ~@9, ~@15 c3@12 ~@8 c3@12 c3@12 ~@5]/2", // Fm Cm
  C: "[[c4,eb4,g4]@4 ~@35 g3@4 ~@8 g3@4 ~@4 g2@4 [g3,b3,d4]@4 c3@7 ~@12 [c4,eb4,g4]@8 ~@28 c3@4 [c4,eb4]@4 ~@4 c4 ~@10 c4@4 ~@7 [c4,eb4]@4 ~@4 c4@2 ~@9 c4@3 ~@4 c3@4 c4@4 ~@3 c4@2 ~@17 c3@4 c4@4 ~@15 c4@4 ~@7 [c4,eb4,g4]@4 f2@6, ~@4 g2@11 g2@12 g2@5 g3@3 g2@12 g2@12 ~@19 c3@11 ~@9 c3@12 c3@12 ~@8 c3@11 c3@11 c3@7 ~ c3@11 c3@11 ~@8 c3@8 ~@3 c3@11 ~@8 c3@11 c3@12 c3@6 ~@7, ~@12 [b3,d4]@12 d4@19 g3@8 ~@4 [g3,b3,d4]@8 ~@193, ~@12 g3@8 ~@4 [g3,b3]@7 f4@33 ~@10 [eb4,g4]@12 ~@8 [eb4,g4]@12 [eb4,g4]@12 ~@8 g4@9 ~@3 g4@11 g4@14 ~@4 g4@21 ~@40 g4@11 ~@17, ~@32 b3@11 [b3,d4]@12 ~@19 c4@8 ~@12 c4@8 ~@4 c4@8 ~@4 [c4,eb4,g4]@8 ~@12 c4@7 ~@4 [c4,eb4]@7 ~@11 c4@8 ~@3 [c4,eb4]@8 eb4@2 ~@9 [c4,eb4,g4]@12 [c4,eb4,g4]@7 [eb4,g4]@9 ~@3 c4@7 ~@4 [c4,eb4,g4]@7 ~@10]/8", // Cm G Cm Bm G Eb Bm Cm …
  D: "~@9 f3@4 ~@8 c4@3 ~@4 f3@4, ~ ab3@19 [f3,ab3]@6 ~@6, ~@2 c4@11 ~@19, ~@2 f3@7 ~@4 [f3,c4]@8 ~@11, ~@5 f2@12 f2@6 ~ f2@8", // Fm F5
  E: "[~@15 f2@5 [f3,ab3,c4]@3 c3@8 ~@11 [c4,g4]@8 ~@19 c4@4 ~@7 [c4,eb4,g4]@4 g2@7 ~@46 g2@4 [g3,b3,d4]@3 ~ c3@7 ~@19 c4@4 ~@15 c4@4 ~@3 c3@4 ~@8 c4@2 ~@16 c3@4 ~@7 c4@4 ~@7 c4@4 [c4,eb4]@3, ab3@20 ~@11 g4@11 ~@8 g4@11 g4@12 ~@30 b3@7 f4@32 ~@10 eb4@19 [eb4,g4]@8 ~@4 eb4@18 ~@11 eb4@11 ~@33, c4@12 ~@19 eb4@19 ~@45 g2@11 g2@4 g3@4 g2@8 d4@11 [g3,d4]@8 ~@11 c4@8 ~@4 [c4,g4]@7 ~@12 c4@7 ~@4 [c4,g4]@7 [c4,eb4,g4]@8 ~@3 c4@8 ~@3 [c4,eb4]@8 [c4,eb4,g4]@6 ~@5 c4@7 ~@7, f3@8 ~@4 [f3,c4]@8 ~@11 c4@8 ~@11 [c4,eb4]@7 ~@4 c4@8 ~@4 [c4,g4]@7 ~@11 [b3,d4]@12 d4@18 g3@4 g2@12 ~@19 c3@11 c3@7 ~ c3@11 c3@11 ~@8 c3@11 c3@11 ~@7 c3@11 c3@11, ~@3 f2@12 ~@20 c3@11 ~@8 c3@11 c3@12 c3@5 ~@9 g3@8 ~@3 g3@8 b3@12 b3@19 ~@11 g4@12 ~@19 g4@11 ~@19 g4@11 g4@7 ~@11 g4@14]/8", // Fm C5 Cm G Cm Eb G5 C5 …
  F: "[c3@4 ~@7 c4 ~@10 c4@4 ~@3 c3@4 ~@7 c4@4 ~@7 c4@4 ~@7 [c4,eb4,g4]@2, ~@4 [c4,eb4,g4]@6 ~@5 [eb4,g4]@11 ~@18 [eb4,g4]@11 ~@9, ~@7 c3@11 c3@11 ~@7 c3@11 c3@12 c3@5, ~@15 c4@7 ~@4 [c4,eb4,g4]@7 [c4,eb4,g4]@7 ~@4 c4@7 ~@4 [c4,eb4,g4]@7 ~@2]/2", // Cm Eb Cm
  G: "~@2 f2@7 [f3,c4]@4 ~@11 f2@4 [f3,ab3,c4]@4, ~@9 ab3@19 ~@4, ~@13 f2@11 ~@8, ~@21 [f3,c4]@7 ~@4", // F5 Fm F5
  H: "[~@15 f3@4 ~@3 f2@4 ~ c4@3 c3@7 ~@19 [c4,eb4,g4]@4 ~@16 c4@4 ~@7 [c4,eb4,g4]@4 g2@8 ~@8 g3@3 ~@16 g3@3 ~@8 g3@4 ~@3 g2@4 [g3,b3,d4]@3 ~ c3@7 ~@14 c3@8 ~@8 c4@11 ~@7 c4@4 c3@11 ~@2, f2@11 f2@11 ~@19 c3@11 c3@8 c3@12 c3@11 c3@7 ~@9 g3@8 ~@3 [g3,b3]@8 f4@32 ~@9 [eb4,g4]@11 ~@19 g4@22 ~@13, ~@7 c4@12 ~@18 [eb4,g4]@12 ~@19 g4@12 ~@22 g2@12 g2@4 g3@4 g2@11 g2@11 ~@18 c3@11 ~@8 c3@11 ~@32, ~@7 f3@8 ~@4 [f3,ab3,c4]@7 [f3,ab3]@3 ~@8 c4@8 ~@4 [c4,eb4,g4]@7 ~@12 c4@8 ~@4 [c4,g4]@7 ~@12 [b3,d4]@11 d4@19 g3@8 ~@4 [g3,b3,d4]@7 ~@76, ~@118 b3@11 [b3,d4]@12 ~@18 c4@7 ~@4 [c4,eb4,g4]@7 ~@47]/7", // Cm G Eb Fm Cm C5 Bm G …
  I: "~@6 c4@7 c4@5 ~@14, ~@3 [eb4,g4]@6 ~@7", // Eb
})).s("gm_acoustic_guitar_nylon").gain(0.36)

// chords · acoustic guitar nylon · "GUITAR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~ A B C ~ D@2 E@2 F ~ G H ~@3 I ~ J K ~ L M N O ~@3 P Q R ~ S ~ T U@3
>`.pickRestart({
  A: "~@23 c3@8 ~, ~@19 c4@8 ~@5", B: "~@23 c3@8 ~", C: "~@16 c4@5 ~@11",
  D: "[~@18 f3@4 ~@9 ab3@12 ~@9 f3@4 ~@8, ~@30 c4@13 ~@4 f2@13 ~@4]/2", E: "[~@27 c3@8 ~@29]/2", F: "~@5 g3 ~@2",
  G: "~@18 c4@4 ~@3 c3@7", H: "~@3 c4@2 ~@4 c4@2 ~@5", I: "c4 ~@31", J: "~@2 f3 ~@5", K: "~@7 c4@3 ~@4 c3@7 ~@11",
  L: "~@3 g3@3 ~@16 g3@3 ~@7", M: "~@2 g3@3 ~@27", N: "c4 ~@7", O: "~@28 c4@3 ~", P: "~@17 f3@4 ~@11",
  Q: "~@5 f3@2 ~@25", R: "~@13 c4@4 ~@15", S: "g3 ~@31", T: "~@6 c4@4 ~@7 [c4,eb4,g4]@5 ~@10",
  U: "[~@12 c3@7 ~@15 c4@4 ~@3 c3@8 ~ [c4,eb4,g4]@21 ~@25, c3@12 ~@18 c3@11 ~@8 c3@24 ~@23, ~@8 eb4@11 ~@8 eb4@11 ~@58, ~@8 c4@7 ~@12 c4@7 ~@62]/3", // Cm
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// bass · acoustic bass · "BASS"
const bass = note("<~ A@3 B C D E@2 F G H I@2 J@5 K L M N O@4 P Q R@5 S ~@3>".pickRestart({
  A: "[c3@14 g2@15 ~ c3@15 ~ g2@16 c3@16 ~@2 g2@16]/3", B: "c3@17 ~ g2@13 ~", C: "~ f2@7 ~ c2@7",
  D: "~@2 f2@16 c2@13 ~", E: "[~@4 c3@15 ~ g2@15 ~ c3@15 ~ g2@11 ~]/2", F: "~@2 g2@5 ~@3 d2@6",
  G: "~@4 g2@11 ~@3 d2@11 ~@3", H: "~@2 c3@11 ~@5 g2@13 ~", I: "~ c3@6 ~@2 g2@6 ~",
  J: "[c3@11 ~@5 g2@14 c3@11 ~@3 g2@10 ~@6 c3@11 ~@3 g2@10 ~@6 f2@11 ~@5 c2@12 ~@2 f2@12 ~@4 c2@10 ~@4 c3@10]/5",
  K: "~@6 g2@11 ~@5 c3@10", L: "~@4 g2@10 ~@6 g2@11 ~", M: "~@2 d2@12 ~@4 g2@11 ~@3", N: "d2@10 ~@6 c3@11 ~@5",
  O: "[g2@11 ~@3 c3@10 ~@6 g2@11 ~@3 c3@10 ~@6 g2@10 ~@4 c3@10 ~@6 g2@10 ~@4 c3@10 ~@4 g2@10]/4",
  P: "~@2 c3@5 ~@2 g2@5 ~@2", Q: "~@2 f2@9 ~@5 c2@11 ~@5",
  R: "[f2@12 ~@2 c2@8 f2@3 ~@5 c3@10 ~@4 g2@12 ~@4 c3@9 ~@7 c3@5 ~@3 g2@3 ~@3 g2@9 ~@7 d2@10 ~@6 g2@10 ~@4 d2@7 ~ g2@3 ~@5 c3@8]/5",
  S: "~@6 g2@11 ~@3 c3@12",
})).s("gm_acoustic_bass").gain(0.36)

// bass · acoustic bass · "BASS" · soft notes
const bass_soft = note("<~@35 A B@2>".pickRestart({
  A: "~@4 g2@11 ~@3 c3@12 ~@2", B: "[~@2 g2@5 ~ c3@11 ~@13]/2",
})).s("gm_acoustic_bass").gain(0.2)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@13 A B C D E F G H I J K L M N O P Q R S T U V W X ~>".pickRestart({
  A: "~@3 x ~@3 x!2 ~ x ~@2 x ~@3 x ~@2 x ~@4 x ~@2 x ~@3", B: "~ x ~@3 x!2 ~ x ~@2 x ~@3 x ~@2 x ~@4 x ~ x ~@3 x ~@2",
  C: "~ x ~ x ~ x ~@3 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@3 x",
  D: "~ x ~ x ~@3 x ~@3 x ~@2 x ~@2 x ~@2 x ~@4 x ~@3 x ~ x", E: "~ x ~@3 x ~@3 x ~@2 x ~@4 x ~@2 x ~@3 x ~@3 x ~ x!2",
  F: "~@3 x ~@3 x ~@2 x ~@2 x ~@3 x ~@3 x ~@5 x ~ x ~@2", G: "~@2 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@4 x!2 ~ x ~@2",
  H: "~ x ~@3 x ~@3 x ~@3 x ~ x ~@5 x ~@2 x ~ x ~ x ~@3", I: "x ~@2 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~ x!2 ~@3 x ~@2",
  J: "~ x ~@3 x ~@2 x ~@2 x ~@4 x ~@3 x ~ x ~ x ~@3 x ~@3", K: "x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~ x ~@3 x ~@4 x ~",
  L: "~@2 x ~@3 x ~@2 x ~@3 x ~@3 x ~ x ~@4 x ~@3 x ~@2 x", M: "~@3 x ~@3 x ~@3 x ~@3 x ~ x!2 ~@3 x ~@2 x ~@3 x ~@2",
  N: "~ x ~@2 x ~@3 x ~@3 x!2 ~ x ~@3 x ~@2 x ~@2 x ~@3 x ~@2",
  O: "~ x ~@3 x ~@3 x ~ x ~@4 x ~@2 x ~@3 x ~@3 x ~@2 x ~", P: "~ x ~@4 x!2 ~ x ~@3 x ~@3 x ~@3 x ~@2 x ~@2 x ~@4",
  Q: "x ~@2 x ~ x ~ x ~@3 x ~@3 x ~@2 x ~@2 x ~@3 x ~@3 x ~@2",
  R: "~ x ~ x ~ x ~@3 x ~@3 x ~@3 x ~ x ~@3 x ~@3 x ~@3 x", S: "~ x ~@5 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
  T: "~ x ~ x ~@3 x ~@3 x ~@2 x ~@3 x ~@2 x ~@4 x ~@3 x!2", U: "~ x ~@3 x ~@3 x ~@3 x ~@2 x ~@2 x ~@4 x ~@3 x!2 ~ x",
  V: "~@3 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@3 x ~ x ~ x ~@2", W: "~ x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@2 x ~ x ~@5 x",
  X: "~@2 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x!2 ~@2 x ~@6",
})).gain(2.08)

stack(acoustic_guitar_nylon, acoustic_guitar_nylon_2, bass, bass_soft, cabasa)

More by The Beatles