Strudelify

It Ain't Me Baby

Turtles

KeyG majorTempo126 bpm
0:00/0:00
// It Ain't Me Baby — Turtles
// 126 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D C E F D C G B H I J K L M H N O P Q R S T U V W X Y Z AA D C E F D C G B H I J K L M H N O P Q R S T Q R S T Q
  R S T Q R S T AB@3
>`.pickRestart({
  A: "~@3 d2", B: "g1@7 ~", C: "a1@7 ~", D: "g1@15 ~", E: "b1@6 ~@2 a1@7 ~", F: "g1@13 ~@3", G: "b1@7 ~ a1@6 ~@2",
  H: "b1 ~ b1@5 ~ b1 ~ b1@5 ~", I: "a1 ~ a1@5 ~ a1 ~ a1@4 ~@2", J: "b1 ~ b1@3 ~ b1 ~ b1 ~ b1@6",
  K: "a1 ~ a1@3 ~ a1 ~ a1 ~ a1@5 ~", L: "b1 ~ b1@4 ~@2 b1 ~ b1@5 ~", M: "a1 ~ a1@4 a2@2 a1 ~ a1@5 ~",
  N: "a1 ~ a1@5 ~ a1 ~ a1@2 a2@2 a1@2", O: "c2@7 ~ c2@7 ~", P: "d2@4 d2@3 ~ d2@3 ~ d2@2 ~@2",
  Q: "g1@3 ~ g1@3 ~ g1@2 g2@2 g1@2 g2 ~", R: "c2@3 ~ c2@3 ~ d2@3 ~ d2@3 ~", S: "g1@2 g1@2 g2 g1 g2 g1",
  T: "c2@3 ~ c2@3 ~ d2@4 d2@4", U: "g1@2 g1 ~ g1@2 g2@2 g1@2 g2@2 g1@2 g2@2", V: "g1@2 g1@2 g1@2 g2@2 g1@2 g2@2 g1@3 ~",
  W: "b1@13 ~ b1@2", X: "a1@15 ~", Y: "b1@8 a1@7 ~", Z: "g1@7 g1", AA: "~@10 g2@2 g1@3 ~, g1@3 ~",
  AB: "[g2@4 g1@41 ~@3]/3",
})).s("gm_acoustic_bass").gain(0.64)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~ A B A C D E A C D F G H G I G H G I J K L M N O P@2 Q R S T@2 A C D E A C D F G H G I G H G I J K L M N O L M N O L
  M N O L M N O U@3
>`.pickRestart({
  A: "[g3,b3,d4,g4]", B: "[a3,c4,e4,a4]@15 ~", C: "[a3,c4,e4,a4]", D: "[b3,d4,f#4,b4] [a3,c4,e4,a4]",
  E: "[g3,b3,d4,g4]@7 ~", F: "[g3,b3,d4,g4]@3 ~", G: "[b3,d4,f#4,b4]", H: "[a3,c4,e4,g4]", I: "[a3,c4,e4]",
  J: "[c3,g3,c4,e4]!2 [c3,g3]!2, ~ [c4,e4]", // C C5 C
  K: "~ f#3 [f#3,a3,d4] ~ d2 ~ [f#3,a3,d4] ~, d3@7 ~, ~@3 [f#3,a3,d4]@3 ~@2, ~@5 d2@2 ~", // D
  L: "[g2,g3,b3,d4]@3 ~ [g2,g3,b3,d4]@3 ~ [g2,g3,b3,d4]@3 ~ [g2,g3,b3,d4]@3 ~", // G
  M: "[c3,g3,c4,e4]@3 ~ [c3,g3,c4,e4]@4 [d3,f#3,a3,d4]@3 ~ [d3,f#3,a3,d4]@4", // C D
  N: "[g2,g3,b3,d4]@3 ~ [g2,g3,b3,d4]@2 ~ g2 [g3,b3,d4]@3 ~ [g3,b3,d4]@4, ~@3 [g3,b3,d4] ~@4", // G
  O: "[c3,g3,c4,e4]@4 [c3,g3,c4,e4]@3 ~ [d3,f#3,a3,d4]@3 ~ [d3,f#3,a3,d4]@4", // C D
  P: "[[g2,g3,b3,d4]@2 [g2,g3,b3,d4]@2 [g2,g3,b3,d4]@2 g2@2 g2 [g2,d4,g4]!6 ~, ~@6 [g3,b3]@9 ~, ~@6 d4@3 ~@7]/2", // G G5 G
  Q: "[b4,d5,f#5,b5]", R: "[a4,c5,e5,a5]", S: "[b4,d5,f#5,b5] [a4,c5,e5,a5]", T: "[~@22 g5@7 ~@3, [g4,b4,d5]@29 ~@3]/2",
  U: "[[g3,b3,d4,g4]@3 ~ [g2,b3,d4,g4]@43 ~]/3", // G
})).s("gm_piano").gain(0.54)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD@2 C D E F G H I J K L M N O P Q R S T AE AF AG AH AI
  AJ AK AL AE AF AG AH AI AJ AK AL AM@3
>`.pickRestart({
  A: "[g2,g3,b3,d4] ~ [b3,d4] [g3,b3,d4] ~@2 [g3,b3,d4]@2, ~@3 g2@3 g2@4 g2@6, ~@2 [b3,d4] ~", // G Bm G Bm
  B: "[a2,a3,c4,e4] ~ [a3,c4,e4]!2 ~@2 [a3,c4,e4] ~, ~ c4 ~@2 [a3,c4,e4]@2 ~@2, ~@3 a2@3 a2@4 a2@4 ~@2", // Am
  C: "[g2,g3,b3,d4]@2 [g2,g3,b3,d4] ~@3 [g3,b3,d4]!2, ~@3 [b3,d4] [g3,b3,d4]@2 ~@2, ~@7 g2@3 g2@6", // G Bm G
  D: "[a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]!4, a2@3 [c4,e4] ~@4, ~@7 a2@5 a2@4", // Am C
  E: "[b2,b3,d4,f#4]@2 [b2,b3,d4,f#4]@2 [a2,a3,c4,e4] ~ [a3,c4,e4]!2, ~@11 a2@5", // Bm Am
  F: "[g3,b3,d4]@2 [b3,d4] [g3,b3,d4]!3 [g2,g3,b3,d4]@2, g2@3 g2@3 ~@2", // G Bm G
  G: "[g2,g3,b3,d4] ~ [g3,b3,d4]!2 ~@2 [g3,b3,d4] [b3,d4], ~ d4 ~@2 [g3,b3,d4]@2 ~@2, ~@3 g2@3 g2@4 g2@6", // G Bm G
  H: "[a2,a3,e4] ~ e4!2 [a3,c4,e4]!2 [a3,c4,e4]@2, c4 ~ c4@2 c4@4 ~@8, ~@3 a2@3 a2@10", // A5 Am
  I: "[b2,b3,d4,f#4]@2 ~@2 [b3,d4,f#4]@4 [a2,a3,c4,e4]@3 ~ [a3,c4,e4]@4, ~ d4 ~@6, ~@3 b2@5 ~@3 a2@5", // Bm Am
  J: "[g2,d4]@2 ~@10 [g3,b3,d4]@3 ~, [g3,b3] ~ b3@2 [b3,d4]@4 [g3,b3,d4]@4 ~@4, ~@3 g2@3 g2@4 g2@5 ~", // G5 G Bm G
  K: "[b2,b3,d4,f#4] ~@3 [b3,d4,f#4]!4, ~ [d4,f#4] [b3,d4,f#4]@2 ~@4, ~@3 b2@3 b2@6 b2@4", // Bm D Bm
  L: "[c4,e4]@2 [a3,c4,e4] [a3,c4,e4]@2 [a3,c4,e4] [a3,c4,e4]@2, [c3,g3]", // C Am C5
  M: "[b3,d4,f#4]@2 [b2,b3,d4,f#4] [b3,d4,f#4] [b3,d4] ~ [b3,d4,f#4]@2, ~@3 b2@2 [b3,d4,f#4] ~@2, ~@11 b2@5", // Bm
  N: "[a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]!2 [a2,a3,c4,e4]@2, a2@3 [a3,c4,e4] ~@4, ~@7 a2@5 ~@4", // Am
  O: "[b3,d4,f#4]@2 [b3,d4,f#4]!6, b2@3 b2@2 b2@3", // Bm
  P: "[a2,a3,c4,e4]@2 [a2,a3,c4,e4] ~@3 [a3,c4,e4]@2, ~@3 [c4,e4] [a3,c4,e4]@2 ~@2, ~@7 a2@3 a2@6", // Am C Am
  Q: "[b2,b3,d4,f#4]@2 [b3,f#4] ~ [b3,d4,f#4] [b2,b3,d4,f#4] [b2,b3,d4,f#4]@2, ~@4 [b2,d4]@3 b2@3 ~@6, ~@3 f#4 ~@4", // Bm B5 Bm
  R: "[a2,a3,c4,e4]@2 [a2,a3,c4,e4]!6", // Am
  S: "[g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4] ~@2 c3, ~@5 [g3,c4,e4] [g3,c4,e4]@2, ~@11 c3@3 ~@2", // C
  T: "[f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4]!3 ~, ~ [a3,d4] ~ [a3,d4] ~@4, ~@3 d3@4 d3@7 ~@2", // D D5
  U: "[g2,g3,b3,d4]@2 [g2,g3,b3,d4] ~ [g3,b3,d4]!2 [g3,b3,d4]@2, ~@3 [g3,b3,d4] ~@4, ~@7 g2@3 g2@6", // G
  V: "c3@2 ~@4 c3@2 [f#3,a3,d4] ~@3 [f#3,a3,d4]@4, ~ c4 [g3,c4]@2 ~ [a3,d4] ~@2, ~@3 c3@3 ~@5 d3@5", // D C5 D5
  W: "[g3,b3,d4] ~@3 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2, g2 [g3,b3,d4] ~ [b3,d4] ~@4, ~@3 g2@4 g2@3 g2@6", // G Bm
  X: "[c3,g3,c4,e4]@4 [c3,g3,c4,e4]@4 [f#3,a3,d4] ~@3 [a3,d4]@2 [f#3,a3,d4]@2, ~@4 d3 [a3,d4] ~@2, ~@11 d3@5", // C D D5 D D5
  Y: "[g2,g3,b3,d4]@2 [g2,g3,b3,d4] ~ [g3,b3,d4] [g2,g3,b3,d4]!3, ~@3 [g3,b3,d4] ~@4, ~@7 g2@3 ~@6", // G
  Z: "[g2,g3,b3,d4] ~ [g3,b3,d4] ~@3 [g3,b3,d4] ~, ~ [g3,b3,d4] ~ [g3,b3,d4]!3 ~@2, ~@3 g2@4 g2@2 g2@2 g2@3 ~@2", // G
  AA: "[b2,b3,d4,f#4]@2 [b2,b3,d4,f#4] ~ [b3,d4,f#4] [b2,b3,d4,f#4] [b2,b3,d4,f#4]@2, ~@7 b2@3 ~@6", // Bm
  AB: "[a3,c4,e4]@4 [a3,c4,e4]@2 ~@6 [a3,c4,e4]@3 ~, a2@3 [c4,e4] [a3,c4,e4]@2 ~@2, ~@7 a2@3 a2@5 ~", // Am C Am
  AC: "[b2,b3,d4,f#4]@4 [b2,b3,d4,f#4]@4 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 ~@2, ~@4 a2@3 ~", // Bm Am
  AD: "[b3@6 ~@22 d4@3 ~, g2@16 g2@6 g2@9 ~, d4@8 d4@8 d4@10 b3@5 ~, g3@4 ~@2 b3@8 b3@6 b3@4 g3@7 ~, ~@10 d3@21 ~]/2",
  AE: "[g3,b3,d4]@3 ~ [g3,b3,d4]@2 ~@6 [g3,b3,d4]@4, g2@3 [g3,b3,d4] [g3,b3,d4]@2 ~@2, ~@7 g2@3 g2@6", // G
  AF: "[c3,e3,g3]@4 [c3,e3,g3]@4 [f#3,a3,d4] ~@3 [f#3,a3,d4]@2 [f#3,a3,d4]@2, ~@4 d3 [a3,d4] ~@2, ~@11 d3@5", // C D D5
  AG: "[g2,g3,b3,d4]@2 [g2,g3,b3,d4] ~ [g3,b3,d4]!4, ~@3 [g3,b3,d4] ~@4, ~@7 g2@9", // G
  AH: "[c3,g3,c4,e4]!2 [d3,f#3,a3,d4]!2", // C D
  AI: "[g3,b3,d4]@2 [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4]!2, g2@3 [b3,d4] ~ [b3,d4] ~@2, ~@7 g2@4 g2@5", // G Bm
  AJ: "[c3,g3,c4,e4]@4 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 a3 ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2, ~ d3", // C D
  AK: "g2 ~@3 [g3,b3,d4]!4, ~ [g3,b3,d4]!3 ~@4, ~@3 g2@2 g2@2 g2@9", // G
  AL: "[c3,g3,c4,e4] ~ [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@4 [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@3 ~", // C D
  AM: "[[g2,g3,b3,d4]@3 ~ [g2,g3,b3,d4]@31 ~@13]/3", // G
})).s("gm_acoustic_guitar_nylon").gain(0.39)

// chords · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~ A B C D E F G H I J K ~ L ~@2 D M ~@2 N ~ O C P ~@2 Q D ~ R@2 C D E F G H I J K ~ L ~@2 D M ~@2 N ~ O ~@2 S T ~@3 O
  ~@2 S T ~@5
>`.pickRestart({
  A: "~ [g3,b3,d4] g3 ~ g3@2 ~@2", B: "~ [a3,e4] ~@6", C: "~@3 g3 ~@4", D: "~@3 a3 ~@4", E: "~@5 [a3,c4,e4] ~@2",
  F: "~@2 g3 ~@5", G: "~ [g3,b3] ~@5 g3", H: "~ [a3,e4] a3!2 ~@4", I: "~ [b3,f#4] ~@6", J: "~ [g3,d4] g3@2 ~@4",
  K: "~ b3 ~@6", L: "~@4 f#4 ~@3", M: "~@3 b3 ~@4", N: "~ f#3 ~ f#3 ~@4", O: "~@5 f#3 ~@2", P: "~@5 f#3!2 ~",
  Q: "~@3 [b3,d4,f#4] ~@4", R: "[~ g3@2 g3@3 ~@2]/2", S: "~@3 g3 ~ g3 ~@2", T: "~@8 [f#3,d4] ~@7",
})).s("gm_acoustic_guitar_nylon").gain(0.22)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@11 A B C D C E C D F G H@2 I J K ~ L M N O@2 ~@8 A B C D C E C D F G I J P Q R S R T I J P Q R S R T ~@3
>`.pickRestart({
  A: "[b4,d5]", B: "[c5,e5]", C: "[b4,d5,f#5]", D: "[c5,e5,g5]", E: "[c5,e5,g5]@15 ~", F: "[c4,g4,c5,e5,g5]",
  G: "[d4,a4,d5,f#5,a5]@15 ~", H: "[[b5,d6]@2 [c6,e6] [a5,d6,f#6], g6@3 ~]/2", I: "[b5,d6,g6]",
  J: "[c6,e6,g6] [a5,d6,f#6]", K: "[g5,b5]", L: "[b4,b5] f#5 d5 ~ f#5 d5 ~ d5, ~@3 b5@4 ~, ~@3 f#5",
  M: "~ e5 ~@2 e5 c5 a5@2, a5@2 c5@3 ~@3, ~@6 a5@5 ~@5", N: "b5 ~@2 b5 ~@2 c5@2, ~ f#5@3 a5@4, ~@2 d5@2 ~ e5@3",
  O: "[g4@7 ~]/2", P: "[b5,d6,g6]@15 ~", Q: "[c6,e6,g6]@7 ~ [a5,d6,f#6]@7 ~", R: "[g5,b5,d6]",
  S: "[g5,c6,e6] [f#5,a5,d6]", T: "[g5,c6,e6]@4 [a5,d6,f#6]@3 ~",
})).s("gm_rock_organ").gain(0.53)

// drums · kick
const kick = s("bd").struct(`<
  ~@11 A B A B A B A B A B A C A@3 C A C A D ~@9 A B A B A B A B A B A C A C A C A C A C A C A C A C E ~@2
>`.pickRestart({
  A: "x ~@2 x!3 ~ x", B: "x ~@3 x!2 ~ x", C: "x ~@3 x!2 ~@2", D: "x", E: "x!2 ~@2",
})).gain(0.66)

// drums · snare
const snare = s("sd").struct("<~@11 A@9 B C@5 D E@2 A ~@10 A@9 B C@7 D C@7 D ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x ~@2 x ~@2 x!2", C: "x!4", D: "x ~@3 x ~@3 x ~@5 x!2", E: "~ x ~@2",
})).gain(0.66)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@20 A ~@5 B ~@2 C ~@19 A ~@7 B ~@7 B ~@3>".pickRestart({
  A: "~@6 x!2 ~@2 x ~ x!2 ~@2", B: "~@10 x!4 ~@2", C: "~@2 x!2 ~@6 x!2 ~ x ~@2",
})).gain(0.13)

// drums · low tom
const low_tom = s("lt").struct("<~@27 [~@7 x]!3 ~@39>").gain(0.66)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@11 B A B A B A B A B A B A@3 C A B A@12 B A B A B A B A B A B A B A B A C A B A B A B A C ~@3
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!4 ~ x!2 ~",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@27 [~@3 x]!3 ~@39>").gain(0.66)

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

// drums · high tom
const high_tom = s("ht").struct("<~@27 [~@10 x!2 ~@4] [~@5 x ~@2] [~@10 x!2 ~@4] ~@39>").gain(0.66)

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

// drums · ride
const ride = s("rd").struct("<~@21 A B@4 C ~@23 A B@6 C A B A B A B@2 C ~@3>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x!3 ~",
})).gain(0.66)

stack(
  bass, piano, acoustic_guitar_nylon, acoustic_guitar_nylon_2, rock_organ, kick, snare, snare_soft, low_tom, hihat,
  mid_tom, open_hat, high_tom, crash, ride
)

More by Turtles