Strudelify

Not a Second Time

The Beatles

KeyG majorTempo124 bpm
0:00/0:00
// Not a Second Time — The Beatles
// 124.1 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 66 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124.1/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · distortion guitar · "Rythym"
const distortion_guitar = note(`<
  A B A C D E F A B A C D G H I J K B G L M N O P ~@10 Q R S T U V W S R S T U X Y Z AA AB R X AC AD AE AF AG V@2 AH AI
  V@2 AH ~
>`.pickRestart({
  A: "~ [d4,g4] [d4,f#4]!2", B: "[e4,g4]@11 ~ [e4,g4]@4 [d4,f#4]@8 [e4,g4]@8", C: "[g4,b4]@15 ~ g4@15 ~",
  D: "[d4,f#4]@15 ~ [d4,f#4]@8 [d4,f#4]@8", E: "[g4,b4]@11 ~ [g4,b4]@4 [g4,b4]@8 [g4,b4]@8",
  F: "[f#4,a4]@11 ~ [f#4,a4]@4 [e4,g4]@8 [f#4,a4]@8", G: "[e4,g4]@11 ~ [e4,g4]@4 [e4,g4]@8 [e4,g4]@8",
  H: "[f#4,a4]@11 ~ [f#4,a4]@4 [f#4,a4]@8 [f#4,a4]@8", I: "[e4,g4]@11 ~ [e4,g4]@4 [e4,g4]@15 ~",
  J: "[d4,f#4]@11 ~ [d4,f#4]@4 [d4,f#4]@8 [c4,e4]@8", K: "[b3,d4]@15 ~ [b4,d5]@8 [a4,d5]@8",
  L: "[e4,f#4]@11 ~ [e4,f#4]@4 [e4,f#4]@8 [e4,f#4]@8", M: "[f#4,b4,d5]@11 ~ [f#4,b4,d5]@4 [f#4,b4,d5]@8 [f#4,b4,d5]@8",
  N: "[d4,f#4]@11 ~ [d4,f#4]@4 d4@8 d4@8", O: "[g3,b3]@11 ~ [g3,b3]@4 [g3,b3]@8 [g3,b3]@8", P: "[g3,b3] ~@3",
  Q: "~@9 [d4,g4]@8 [d4,f#4]@7 ~ d4@7, ~@3 f#4", R: "~ [e4,g4]@11 ~ [e4,g4]@4 [d4,f#4]@8 [e4,g4]@7",
  S: "~@9 [d4,g4]@8 [d4,f#4]@8 [d4,f#4]@7", T: "~ [g4,b4]@15 ~ g4@15", U: "~ [d4,f#4]@15 ~ [d4,f#4]@8 [d4,f#4]@7",
  V: "~ [g4,b4]@11 ~ [g4,b4]@4 [g4,b4]@8 [g4,b4]@7", W: "~ [f#4,a4]@11 ~ [f#4,a4]@4 [e4,g4]@8 [f#4,a4]@7",
  X: "~ [e4,g4]@11 ~ [e4,g4]@4 [e4,g4]@8 [e4,g4]@7", Y: "~ [f#4,a4]@11 ~ [f#4,a4]@4 [f#4,a4]@8 [f#4,a4]@7",
  Z: "~ [e4,g4]@11 ~ [e4,g4]@4 [e4,g4]@15", AA: "~ [d4,f#4]@11 ~ [d4,f#4]@4 [d4,f#4]@8 [c4,e4]@7",
  AB: "~ [b3,d4]@15 ~ [b4,d5]@8 [a4,d5]@7", AC: "~ [e4,f#4]@11 ~ [e4,f#4]@4 [e4,f#4]@8 [e4,f#4]@7",
  AD: "~ [f#4,b4,d5]@11 ~ [f#4,b4,d5]@4 [f#4,b4,d5]@8 [f#4,b4,d5]@7", AE: "~ [d4,f#4]@11 ~ [d4,f#4]@4 d4@8 d4@7",
  AF: "~ [g3,b3]@11 ~ [g3,b3]@4 [g3,b3]@8 [g3,b3]@7", AG: "~ [g3,b3]@8 ~@23",
  AH: "~ [g4,b4]@11 ~ [g4,b4]@4 [g4,b4]@8 g4@7", AI: "~ e4@11 ~ e4@4 e4@8 e4@7",
})).s("gm_distortion_guitar").gain(0.41)

// chords · acoustic guitar nylon · "Rythym"
const acoustic_guitar_nylon = note("<~@24 A B C D E F B G H I ~@32>".pickRestart({
  A: "[c4,e4,g4]@11 ~ [c4,e4,g4]@4 [c4,e4,g4]@8 [c4,e4,g4]@8", // C
  B: "[b3,d4,f#4]@11 ~ [b3,d4,f#4]@4 [b3,d4,f#4]@8 [b3,d4,f#4]@8", // Bm
  C: "[b3,d4,g4]@11 ~ [b3,d4,g4]@4 [b3,d4,g4]@8 [b3,d4,g4]@8", // G
  D: "[b3,e4,g4]@11 ~ [b3,e4,g4]@4 [b3,e4,g4]@8 [b3,e4,g4]@8", // Em
  E: "[a3,c4,g4]@11 ~ [a3,c4,g4]@4 [a3,c4,g4]@8 [a3,c4,g4]@8", // Am7
  F: "[a3,c4,e4,f#4]@11 ~ [a3,c4,e4,f#4]@4 [a3,c4,e4,f#4]@8 [a3,c4,e4,f#4]@8", // F#m7b5
  G: "[a3,d4,f#4]@11 ~ [a3,d4,f#4]@4 ~ [a3,d4]@7 [a3,d4,f#4]@8, ~@2 f#4 ~", // D D5 D
  H: "[g3,b3,e4]@11 ~ [g3,b3,e4]@4 e4@4 g4@4 ~@4 g4@4, ~@2 [g3,b3] c4, ~@6 f#4 ~, ~@25 a3@7", I: "~ [g3,b3,e4]@8 ~@23",
})).s("gm_acoustic_guitar_nylon").gain(0.26)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B A B C A D A B A B C E C E F A B E@2 F C G H I J K L M@2 N O L H P Q P Q R P S P Q P Q R T R T U P Q T@2 U R V W P
  Q P Q P Q P ~
>`.pickRestart({
  A: "g1@11 ~ g1@4 g1@15 ~", B: "e1@11 ~ e1@4 e1@15 ~", C: "d1@11 ~ d1@4 d1@15 ~", D: "d1@11 ~ d1@4 d1@8 d1@8",
  E: "a1@11 ~ a1@4 a1@15 ~", F: "b1@11 ~ b1@4 b1@15 ~", G: "e1@11 ~ e1@4 e1@8 b0@8", H: "e1 ~@3", I: "a1@15 ~",
  J: "b1@15 ~ b1@15 ~", K: "g1@15 ~", L: "e1@15 ~", M: "a1@23 ~ a1@8", N: "b1@15 ~", O: "d1@15 ~",
  P: "~ g1@11 ~ g1@4 g1@15", Q: "~ e1@11 ~ e1@4 e1@15", R: "~ d1@11 ~ d1@4 d1@15", S: "~ d1@11 ~ d1@4 d1@8 d1@7",
  T: "~ a1@11 ~ a1@4 a1@15", U: "~ b1@11 ~ b1@4 b1@15", V: "~ e1@11 ~ e1@4 e1@8 b0@7",
  W: "~ e1@8 d1@4 d1@4 e1@4 e1@4 f#1@4 f#1@3",
})).s("gm_electric_bass_finger").gain(0.36)

// other · piano · "Backup"
const piano = note("<~@24 A B C D E@2 F G H ~@33>".pickRestart({
  A: "~@4 d3@4 c3@2 b2@2 a2 ~ g2 ~", B: "~ b2@7 c3@4 ~ a2@3 b2@12 ~@4", C: "~@8 e3@7 ~ g3@11 ~ e3@4", D: "b2@21 ~@11",
  E: "~@13 d3@4 c3@3 b2@4 a2@8", F: "~ f#3@24 d3@7", G: "~ c3@15 f#2@3 ~ f#2@3 ~ g2@3 ~ a2@4", H: "~ e2@31",
})).s("gm_piano").gain(0.41)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@3 ~@4 A@3 B C A D A@2 B A E ~ A@3 F A@5 ~ G H I@3 H I@2 H I@5 H@2 I J I@2 K L H ~ I M I@2 N I H ~
>`.pickRestart({
  A: "x!2", B: "x ~@3 x!2 ~@2", C: "x!2 ~@2 x!2 ~@2", D: "x ~@7 x!3 ~@5", E: "x ~@4 x!2 ~", F: "x ~@2 x",
  G: "~ x ~@14 x ~@15", H: "~ x ~@15 x ~@3 x ~@10", I: "~ x ~@15 x ~@14", J: "~ x ~@30", K: "~ x ~@3 x ~@11 x ~@14",
  L: "~@17 x ~@14", M: "~ x ~@3 x ~@11 x ~@3 x ~@10", N: "~ x ~@3 x ~@26",
})).gain(0.41)

// drums · snare
const snare = s("sd").struct(`<
  A@3 B C@3 D E C@4 F C G C H C@4 I J C B C K C@5 ~ L M L@3 M L@2 M L N L@3 M L@2 O L@4 P Q L M L R S ~@3
>`.pickRestart({
  A: "~@2 x ~@2 x ~ x", B: "~@2 x ~@3 x!2", C: "~ x ~ x", D: "x!2 ~ x", E: "~@2 x ~@2 x!3", F: "~@4 x ~@7 x!4",
  G: "~@4 x ~@2 x ~@4 x ~ x ~", H: "~@4 x ~ x!2 ~@4 x ~ x ~", I: "~ x ~@2", J: "x", K: "~@4 x ~ x!3 ~ x ~@2 x!2 ~",
  L: "~@9 x ~@15 x ~@6", M: "~@9 x ~@5 x ~@9 x ~@3 x ~@2", N: "~@9 x ~@15 x ~@3 x ~@2",
  O: "~@7 x ~ x ~@3 x ~@5 x ~ x ~@10", P: "~@9 x ~@5 x ~@9 x ~@6", Q: "~ x ~@30", R: "~@9 x ~@15 x ~@5 x",
  S: "~@9 x ~@3 x ~@18",
})).gain(0.41)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@62
  [~@19 x ~ x ~@3 x ~@3 x ~@2]
  [~@9 x ~@15 x ~@6]
  [~@9 x ~@5 x ~@9 x ~@3 x ~@2]
  ~
>`).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~@10 A ~@12 B ~@9 C ~@17 D ~@14>".pickRestart({
  A: "~@14 x!2", B: "~@4 x!4", C: "~@14 x ~@12 x ~ x ~@2", D: "~@25 x ~@3 x ~@2",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~@10 [~@13 x ~@2] ~@12 [~@2 x!2 ~@4] ~@9 [~@9 x ~@13 x ~ x ~@6] ~@32>").gain(0.41)

// drums · high tom
const high_tom = s("ht").struct("<~@33 [~@4 x!2 ~@2] ~@32>").gain(0.41)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~ A ~@3 B A ~@5 C D ~ A ~@2 E@2 F B ~ A ~@4 E F ~@3 G ~@3 G H@2 G ~ G ~@3 G I ~ J ~@2 K@3 L K M K@2 N ~ M ~
>`.pickRestart({
  A: "~@7 x", B: "x", C: "~@3 x", D: "~@2 x ~@4 x", E: "~ x ~ x", F: "~ x ~@2", G: "~@29 x ~@2", H: "~@9 x ~@22",
  I: "~@25 x ~@6", J: "~@13 x ~@18", K: "~@9 x ~@15 x ~@6", L: "~ x ~@30", M: "~@9 x ~@19 x ~@2",
  N: "~@13 x ~@15 x ~@2",
})).gain(0.41)

stack(distortion_guitar, acoustic_guitar_nylon, bass, piano, kick, snare, snare_soft, low_tom, mid_tom, high_tom, crash)

More by The Beatles