Strudelify

Rocky Raccoon

The Beatles

KeyG majorTempo85 bpm
0:00/0:00
// Rocky Raccoon — The Beatles
// 85 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Lead - Organ 3" named as an organ, played on drawbar organ (its piano patch is not one)
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/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 · "Fretless E Bass"
const bass = note(`<
  ~@18 A B C D E F G H I F G H J K L H I F G H M N O P M N O P I F G H I F G H J K L H J Q L H M N O P M N R S@5
>`.pickRestart({
  A: "a1@15 ~", B: "d2@15 ~", C: "g1@15 ~", D: "c2@7 ~ b1@7 ~", E: "a1@7 ~ e1@7 ~", F: "d2@7 ~ a2@7 ~",
  G: "g2@7 ~ d2@7 ~", H: "c3@7 ~ b2@7 ~", I: "a2@7 ~ e2@7 ~", J: "a2@7 ~ a2@7 ~", K: "d2@11 ~ a2@4", L: "g2@7 ~ g2@7 ~",
  M: "a2 ~ e2 ~ a2 ~ e2 ~", N: "d2 ~ a2 ~ d2 ~ a2 ~", O: "g2 ~ d2 ~ g2 ~ d2 ~", P: "c3 ~ g2 ~ b2 ~ b2 ~",
  Q: "d2@7 ~ d3 a2 d2@2 a2@4", R: "g2 ~ d2 ~ g2 ~ a2 ~", S: "[c3 ~ g2 ~ c3 g2 c3@34]/5",
})).s("gm_fretless_bass").gain(0.72)

// other · harpsichord · "Piano - Honky Tonk"
const harpsichord = note("<~@38 A@2 B C@2 A B D ~@16 A@2 B C@2 A B E@5>".pickRestart({
  A: "d5 c5 e5 d#5 d5 c5 a4 c5 ~@2 [b4,d5]!2 b4@2 [b4,d5]!2, ~@12 d5 ~@3", // Bm
  B: "d5 c5 e5 d#5 d5 b4 g5 f#5 f5 d5 b4 a4 g4 a4 b4 g4",
  C: "[c5@2 [g4,c5]!2 g4 d5 e5 d#5 e5 g5@2 [e5,a5] e5@3 d5@2 c5 e5 d#5 d5 c5 a4 c5 ~@2 [b4,d5]!2 b4@2 [b4,d5]!2, ~@12 a5 ~@15 d5 ~@3]/2", // C5 A5 Bm
  D: "[c5,e5]@2 [c5,e5]@4 c5 [g4,a4] e4 d4@2 c4@5", // C Gsus2
  E: "[c5@2 c5@2 g4@2 a4 g4 e4 g4 d4@2 ~@8 [g5,c6]@4 [e5,g5]@56, ~@3 [c4,e4,g4]@17]/5", // C5 Em C
})).s("gm_harpsichord").gain(0.48).pan(0.9)

// chords · harmonica
const harmonica = note("<~@9 A ~@19 B C D E F G H ~ I ~@19 B G H ~ I ~@12>".pickRestart({
  A: "~@8 [c5,e5]!5 [c5,e5]@2 [c5,e5]", // C
  B: "~@2 [c5,e5] [d5,f5] [c5,e5] [d5,f5] [c5,e5] d5 [c5,e5]@2 [c5,e5] [d5,f5] [c5,e5] [b4,d5] [a4,c5]@2", // C Dm C Dm C Dm C Bm …
  C: "[d5,f5]@3 [c5,e5]@2 [b4,d5] [a4,c5]@2 ~@3 [g5,c6]@2 [e5,g5] [d5,f5] [c5,e5]", // Dm C Bm Am C5 Em Dm C
  D: "[d5,f5]@4 ~@6 [c5,e5] [d5,f5] [c5,e5] d5 c5@2", E: "[b4,d5]@8 ~@3 [d5,f5,a5] c6 ~@3", F: "~ [f5,a5]@7 ~@8",
  G: "~@9 g5 c6@4 e5@2", H: "d5@2 ~@8 [c5,e5] [d5,f5] [c5,e5] d5 [c5,e5] d5", I: "~ [c6,e6]@3 [c6,e6] ~@3",
})).s("gm_harmonica").gain(0.32).pan(0.8)

// chords · accordion · "Accordian"
const accordion = note("<~@47 A B C D E F G ~@20>".pickRestart({
  A: "[f#4,a4]@4 ~ [f#4,a4]@3", B: "[g4,b4]", C: "~ c6 b5 a5 g5 f5 e5 d5",
  D: "~@9 [a4,c5,e5]@2 [a4,c5,e5]!3 [a4,c5,e5]@2", E: "~@9 [d5,f#5,a5]!5 [d5,f#5,a5]@2",
  F: "~@2 [g4,b4,d5]@2 [g4,b4,d5]@3 [g4,b4,d5] [g4,b4,d5]@2 [g4,b4,d5]@6", G: "~ [c5,e5,g5] [c5,e5,g5]@6",
})).s("gm_accordion").gain(0.4).pan(0.2)

// other · english horn · "Choir Aahs"
const english_horn = note("<~@57 [~@2 g3@2 e3 f3 g3@2] ~@16>").s("gm_english_horn").gain(0.72).pan(0.3)

// chords · acoustic guitar nylon · "Nylon Gtr 2 (Bank32)"
const acoustic_guitar_nylon = note(`<
  A@2 B C D E F G H E B C I J K C I J A C I L A C I L B M H E A M H E N O P L N O Q L N O Q L N O Q L N O Q L A M H E N
  O P L N O Q L N O Q R@5
>`.pickRestart({
  A: "[g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]!2 [g3,c4,g4]@2, [a2,e3]!2", // C5 A5
  B: "[g3,c4,g4]!8, [a2,e3]!2", // C5 A5
  C: "[a3,d4,g4]@2 [a3,d4,g4]@2 [a3,d4,g4]@2 [a3,d4,g4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [a3,d4,f#4]@2, d3!2", // Dsus4 D
  D: "[g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]!2 [g3,b3,g4]@2, [g2,b2,d3]!2", // G7 G
  E: "[g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]!2 [g3,c4,g4]@2, [c3,e3] [b2,e3]", // C C5 C E5
  F: "[g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]!2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]!2 [g3,c4,g4]@2, [a2,e3]!2", // C5 A5
  G: "[a3,d4,g4]@2 [a3,d4,g4]@2 [a3,d4,g4]!2 [a3,d4,g4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [a3,d4,f#4]@2, d3!2", // Dsus4 D
  H: "[g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]!2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]!2 [g3,b3,f4]@2, [g2,b2,d3]!2", // G7 G
  I: "[g3,b3,f4]!8, [g2,b2,d3]!2", J: "[g3,c4,e4]!4 [g3,c4,g4]!4, [c3,e3] [b2,e3]",
  K: "[g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]!4 [g3,c4,g4]@2, [a2,e3]!2", // C5 A5
  L: "[g3,c4,e4]@2 [g3,c4,e4]!4 [g3,c4,e4]@2 [g3,c4,g4]@2 [g3,c4,g4]!4 [g3,c4,g4]@2, [c3,e3] [b2,e3]", // C C5 C E5
  M: "[a3,d4,g4]@2 [a3,d4,g4]@2 [a3,d4,g4]@2 [a3,d4,g4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2, d3!2", // Dsus4 D
  N: "[g3,c4,g4]@2 [g3,c4,g4]!4 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]!4 [g3,c4,g4]@2, [a2,e3]!2", // C5 A5
  O: "[a3,d4,g4]@2 [a3,d4,g4]!4 [a3,d4,g4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2, d3!2", // Dsus4 D
  P: "[g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]!2 [g3,b3,f4]@2, [g2,b2,d3]!2", // G7 G
  Q: "[g3,b3,f4]@2 [g3,b3,f4]!4 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]!4 [g3,b3,f4]@2, [g2,b2,d3]!2", // G7 G
  R: "[[g3,c4,g4]@2 [g3,c4,g4]!8 [g3,c4,g4]@2 [c3,e3,g3,c4,g4]@68, [c3,e3]@2 [c3,e3] ~@17]/5", // C5 C
})).s("gm_acoustic_guitar_nylon").gain(0.22)

// drums · kick
const kick = s("bd").struct("<~@26 A@12 B@4 C@3 D E ~@7 A@8 B@4 C@3 F ~@4>".pickRestart({
  A: "x!2", B: "x!4", C: "x ~@3 x!2 ~@2 x ~@3 x!2 ~@2", D: "x ~@3 x!2 ~@2 x ~@3 x ~@3", E: "x", F: "x ~@6 x",
})).gain(0.59)

// drums · snare
const snare = s("sd").struct(`<
  ~@25 A B C@2 D C@3 E C@3 F G@3 H G@3 H ~@6 I A B C@2 J C@3 F G@3 H G@3 K ~@4
>`.pickRestart({
  A: "~@13 x!2 ~", B: "~@2 x!2 ~@2 x ~", C: "~ x ~ x", D: "~@2 x ~ x!4", E: "~@2 x ~@3 x!2", F: "~@4 x ~@5 x!5 ~",
  G: "~ x ~ x ~ x ~ x", H: "~@2 x ~@3 x ~@3 x!2 ~ x!2 ~", I: "x ~ x ~@2 x ~ x!2 ~ x!2 ~ x!2 ~",
  J: "~@4 x ~@5 x ~@2 x!2 ~", K: "~@2 x ~@2 x ~@4 x ~@5",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@13 A B@3 C B@3 D B@3 ~@9 E F E G E@3 H E@3 H ~@4 B@3 I ~@4 E F E G E@3 H E@3 ~@5
>`.pickRestart({
  A: "~@6 x!2", B: "~ x ~ x", C: "~@2 x ~@2 x ~@2", D: "~@2 x ~@4 x", E: "x!8", F: "x!6 ~ x", G: "x!5 ~@3",
  H: "x!4 ~@4", I: "~ x ~@2",
})).gain(0.59)

// drums · open hat
const open_hat = s("oh").struct("<~@17 A ~@3 B ~@3 C ~@15 D ~@3 D ~@7 B ~@11 D ~@3 E ~@4>".pickRestart({
  A: "~@3 x", B: "~@5 x ~@2", C: "~ x!2 ~", D: "~ x", E: "x ~@5 x ~ x ~@2 x!2 ~@3",
})).gain(0.59)

// drums · crash
const crash = s("cr").struct("<~@46 x ~@23 x ~@3>").gain(0.52)

stack(bass, harpsichord, harmonica, accordion, english_horn, acoustic_guitar_nylon, kick, snare, hihat, open_hat, crash)

More by The Beatles