Strudelify

Take Me in Your Arms

The Doobie Brothers

KeyA majorTempo170 bpm
0:00/0:00
// Take Me in Your Arms — The Doobie Brothers
// 170 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 160 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(170/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 · electric bass finger
const bass = note(`<
  ~@7 A B C D C D E F D G C D C D E F D G C D C D E F D G H I H J H K A B C D C D E F D G C D C D E F D G C D C D E F D
  G H I H J H K A B C D L D E F D G C D C D E F D G C D C D E F D G H I H J H I H J H I H J H I H J H I H J H K A B C D
  C D E F D G C D C D E F D G C D C D E F D G C D C D E F D G C D C D E F M
>`.pickRestart({
  A: "f#2@2 f#2@2 f#2@2 f#2@2 f#2 ~ f#2@2 f#2@2 f#2@2", B: "~@2 c#2@2 f#1@2 f#2@2 f#1@2 f#2@2 f#1@2 f#2 ~, f#2@5 ~@11",
  C: "a1@4 f#2@2 e2@2 a1 ~ a1 ~ f#2@2 e2@2", D: "a1@2 f#2 e2 a1@2 f#2 e2", E: "a2@3 ~ f#2@2 e2@2 a1@4 f#2@2 e2@2",
  F: "a1@4 f#2@2 e2@2 a1 ~ a1@2 f#2@2 e2@2", G: "a1@4 f#2@2 e2@2 a1 ~ a1@2 f#2@2 e2 ~", H: "e1@2 ~@4 e1@7 ~ b1@2",
  I: "e2 ~@5 e2@6 b1@2 e2@2", J: "e2 ~@5 e2@4 b1@2 e2@2 b1@2", K: "e2@2 ~@4 e2@4 b1@2 e2@2 b1 ~",
  L: "a1@4 f#2@2 e2@2 a1 ~ a1 ~ f#2@2 e2@2, g8 ~@15", M: "a1 ~@7",
})).s("gm_electric_bass_finger").gain(0.51).pan(0.6)

// chords · piano
const piano = note(`<
  ~@7 A@2 B@3 C D E F G B@3 C D E F G B@3 C D E F G H I@2 J I K A@2 B@3 C D E F G B@3 C D E F G L@3 C D E F M H I@2 J I
  K A@2 B@3 C D E F G B@3 C D E F G B@3 C D E F G H I@2 J H I@2 J H I@2 J H I@2 J H I@2 J I K A@2 L@3 C D E F G B@3 C D
  E F G B@3 C D E F G B@3 C D E F G B@3 C D E N
>`.pickRestart({
  A: "[[f#2,f#3,a#3] ~ [f#2,f#3,a#3]@2 [f#2,f#3,a#3]@2 [f#2,f#3,a#3]@2 [f#2,f#3,a#3]@2 [f#3,a#3]@2 ~@3 f#2@2 ~@9 f#2@2 [f#3,a#3,c#4] ~ f#2 ~, ~@10 f#2@5 ~@3 f#2@4 f#2@4 ~@6, ~@12 [f#3,a#3]@5 [f#3,a#3]@3 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@4 ~@4]/2", // F#
  B: "[[a2,e3,a3,c#4,e4]@5 ~ [a3,d4,f#4] ~@3 e3 ~@5 [a3,g4]@4 ~@2 [a3,d4,f#4]@4 [a3,d4,f#4]@2 e3 ~ a3 ~ a2@4 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@3 [c#4,e4] ~, ~@12 a3@3 ~ e4@2 ~@13 [a3,c#4,e4]@3 ~@12 a3@2, ~@13 a2@7 ~@28]/3", // A D A7 D A C#m A
  C: "~@3 a2@2 ~ [a3,f#4]@2 a2 ~ [a3,e4,g4]@2 a2@2 a3 ~, e3@5 ~@11, ~@2 a3@3 ~ d4 ~@9", // D A7
  D: "[a3,e4]@5 ~ [a3,e4] ~@3 e3 ~ a3 ~ a2@2, c#4@3 ~@5", E: "a3@2 a2 ~ [a3,d4,f#4] ~@3 a2 ~ [e4,g4] ~@5, ~@5 a3 ~@2",
  F: "[a3,c#4,e4]@7 ~@3 [a3,c#4,e4] ~@3 e3 ~, [a2,e3]@9 ~@7", // A A5
  G: "[a3,c#4,e4]@2 a2 ~ [d4,f#4] ~ a2 ~ [a3,e4,g4]@2 a2 ~ a3 ~ a2 ~, ~@2 a3 ~@5", H: "[e5,b5,e6] ~@5 [e5,b5,e6]@5 ~@5",
  I: "[e5,b5,e6] ~@5 [e5,b5,e6]@6 ~@4", J: "[e5,b5,e6] ~@5 [e5,b5,e6]@7 ~@3", K: "[e5,b5,e6] ~@5 [e5,b5,e6]@4 ~@6",
  L: "[[a2,e3,a3,c#4,e4]@5 ~ [a3,d4,f#4] ~@3 e3 ~@5 [a3,g4]@4 ~@2 [a3,d4,f#4]@4 [a3,d4,f#4]@2 e3@2 a3 ~ a2@4 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@3 [c#4,e4] ~, ~@12 a3@3 ~ e4@2 ~@13 [a3,c#4,e4]@3 ~@12 a3@2, ~@13 a2@7 ~@28]/3", // A D A7 D A C#m A
  M: "[a3,c#4,e4]@2 a2 ~ [a3,f#4]@2 a2 ~ [a3,e4,g4]@2 a2 ~ a3 ~ a2 ~, ~@4 d4 ~@11", N: "[a3,e4,a4,e5,a5] ~@7, d4 ~@15",
})).s("gm_piano").gain(0.41).pan(0.8)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A B C D E F G H@2 I J K L M N O P I J K L M N O P I J K L M N O P B C D E F G H@2 I J K L M N O P I J K L M N O P I J
  K L M N O P B C D E F G H@2 I J K L M N O P I J K L M N O P I J K L M N O P B C D E B C D E Q R S T U V W X Y@3 Z AA
  AB AC AD I J K L M N O P I J K L M N O P I J K L M N O P I J K L M N O P I J K L M N AE
>`.pickRestart({
  A: "~@12 e2 ~ e2 ~", B: "[e2,b3,e4,g4]@2 ~@4 [b3,e4,g4]@4 [b3,e4,g4]@2 e2 ~@3",
  C: "[b3,e4,g4]@2 ~@10 [b3,e4,g4]@3 ~, ~@3 [b3,e4,g4]@3 ~@2, ~@10 e2@5 ~", // Em
  D: "[e2,b3,d4,f#4] ~@5 [e2,b3,d4,f#4] ~@3 [b3,d4,f#4]@2 ~@4", // Bm
  E: "[e2,b3,d4,f#4]@2 ~@4 [b3,d4,f#4]@4 [b3,d4,f#4]@2 e2 ~@3, ~@3 e2@3 ~@2", // Bm
  F: "[e2,b3,e4,g4] ~@4 e2 ~@2, ~@3 [b3,e4,g4]@3 ~@2", // Em
  G: "[e2,b3,e4,g4]@2 ~@10 [b3,e4,g4]@3 ~, ~@3 [b3,e4,g4]@3 ~@2, ~@10 e2@5 ~", // Em
  H: "[f#2 ~ f#2@2 ~@10 [c#3,f#3]@2 [c#3,f#3,a#3]@2 ~@8 [c#3,f#3,a#3]@2 f#4@2 ~@2, ~@4 f#2@4 f#2@4 f#2@17 ~@3, ~@3 c#3@2 [c#3,f#3]@2 ~@2 [c#3,f#3,a#3]@2 [c#3,f#3,a#3]@2 ~@3, ~@5 f#4!2 ~]/2", // F#5 F# F#5 F#
  I: "[a2,e3,a3]@12 ~@2 [a2,e3,a3] ~", J: "~@10 a2@2 c#3@2 c3 ~", K: "e3@7 ~@9",
  L: "~@4 [a2,e3,a3] ~@5 [a2,e3]@2 a3 ~@3", M: "[a2,e3,a3]@13 ~ [a2,e3,a3] ~",
  N: "~@2 [a2,e3,a3] ~@3 c3@2 c#3 ~ e3@2 f#3@2 ~@2", O: "[a2,e3,a3]@9 ~ [a2,e3,a3] ~@5",
  P: "[a2,e3,a3]@5 ~ c3@2 c#3@2 [d3,e3]@2 f#3@2 ~@2", Q: "g5@3 ~ g5@2 e5 ~ e5@5 ~ d5@2", R: "e5@2 d5@2 e5@3 ~ d5@7 ~",
  S: "~@2 e4@2 g4 ~ a4 ~ a4 ~ a4 ~ a4@2 g4@2", T: "a4@2 g4@2 e4@3 ~ e4@5 ~@3",
  U: "f#4@2 ~ d4@2 d4 ~@2 d4@2 ~ f#4@2 ~ f#4 ~", V: "f#4@2 ~ b3@2 ~ b3 ~ b3@2 d4@3 ~ e4@2",
  W: "a4@2 a4@2 b4 a4@3 a4@2 a4@2 b4 a4@2 ~, ~@5 g4 ~@10", X: "a4!2 b4@2 b4 a4 b4@2",
  Y: "[b4@2 b4@2 d5@2 ~@4 b4@2 e5 ~ a4@5 ~ b4 ~ g4@6 a4 ~ f#4@5 ~ g4 ~ f#4@4 e4@2 d4@2 e4@2, ~@2 d5 ~@9]/3",
  Z: "~ b3@5 ~@2", AA: "b4 g4 e4 b4 a#4 f#4 d4 a#4", AB: "a4 g4 a4@2 g4 e4 d4 e4",
  AC: "a#3@2 f#4@4 a#3 ~ b3@2 g#4@4 b3 ~", AD: "c4@2 a4@4 c4 ~ a#4@3 ~ a#4@3 ~", AE: "[a2,e3,a3] ~@7",
})).s("gm_overdriven_guitar").gain(0.41)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~ A B C D A E F G H I J K L M N O H I J K L M N O H I J K L M N O A B C D A E F G H I J K L M N O H I J K L M N O H I
  J K L M N O A B C D A E F G H I J K L M N O H I J K L M N O H I J K L M N O A B C D A B C D A B C D A B C D A B C D A
  E F G H I J K L M N O H I J K L P N O H I J K L M N O H I J K L M N O H I J K L M Q
>`.pickRestart({
  A: "[e3,b3,e4,g4,b4] ~@5 [e4,g4,b4]@4 [e4,g4,b4]@2 ~@4, ~@3 [e3,b3]@3 ~@2", // Em E5
  B: "[e3,b3,e4,g4,b4] ~@2 [e4,g4,b4]@2 [e4,g4,b4] ~@2, ~@3 [e3,b3]@3 ~@2", // Em E5
  C: "[e3,b3,d4,f#4,b4] ~@2 [d4,f#4,b4]@2 [d4,f#4,b4] ~@2, ~@3 [e3,b3]@3 ~@2", // Bm E5
  D: "[e3,b3,d4,f#4,b4]@2 ~@4 [d4,f#4,b4]@4 [d4,f#4,b4]@2 [e3,b3] ~@3, ~@3 [e3,b3]@3 ~@2", // Bm E5
  E: "[e3,b3,e4,g4,b4]@2 ~@4 [e3,b3,e4,g4,b4] ~@3 [e3,b3,e4,g4,b4]@6", // Em
  F: "f#3 ~ [f#3,f#4]@2 ~ f#3 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4,a#4]@2 [f#3,c#4,f#4,a#4]@2, ~@2 [c#4,f#4] ~@5", // F# F#5 F# F#5
  G: "[f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [c#4,f#4]@2 ~@4 [c#4,f#4]@2 f#2 ~, a#4@7 ~, ~@3 f#3@4 ~, ~@2 [c#4,f#4] ~, ~@5 f#2@2 ~", // F#5
  H: "[a2,e3,a3]@2 [a2,f#3,a3] ~ [a2,a3]@2 [a2,f#3,a3]@2, ~ e3", // A5 D A D
  I: "[a2,e3,a3]@4 [a2,f#3,a3] ~ [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,f#3] ~ e3@2, ~@3 a3", // A5 D A5 D
  J: "[a2,e3,a3]@3 ~ [a2,f#3,a3]@2 ~@2 [a2,e3,a3]@4 [a2,f#3,a3]@4", // A5 D A5 D
  K: "[a2,a3]@2 [a2,f#3,a3] [a2,e3,a3]@2 [a2,e3,a3] [a2,f#3,a3] e3, e3@3 ~@5", // A D A5 D
  L: "[a2,e3,a3]@4 [a2,f#3,a3]@3 ~ [a2,e3,a3]@4 [a2,f#3,a3]@4", // A5 D A5 D
  M: "[a2,e3,a3]@4 [a2,f#3,a3]@2 [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,f#3,a3]@3 ~", // A5 D A5 D
  N: "[a2,e3,a3]@3 ~ [a2,f#3,a3]@4 [e3,a3] ~ [e3,a3]@2 [a2,f#3,a3]@2 ~@2, ~@2 a2 ~", // A5 D A5 D
  O: "[a2,e3,a3]@4 [a2,f#3,a3] ~ [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,f#3,a3]@2 ~@2", // A5 D A5 D
  P: "[a2,e3,a3]@4 [a2,f#3,a3]@2 [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,f#3,a3]@3 ~, f#9 ~@15", Q: "[a2,e3,a3] ~@7",
})).s("gm_electric_guitar_jazz").gain(0.31).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@7 A B C@4 D@4 C@4 D@4 C@4 D@4 E@2 F@2 G@2 A B C@4 D@4 C@4 D@4 C@4 D@4 E@2 F@2 G@2 A B C@4 D@4 C@4 D@4 C@4 D@4 H@2
  ~@2 I J K@2 ~@16 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 L@2 ~
>`.pickRestart({
  A: "[f#3,f#4]", B: "[b2,c3,d3] e3 [g3,a3] [b3,c4,d4] ~ g4@2 ~ c#6@4 f#6@2 ~@2, f#4@3 ~ [e4,f4,f#5]@4 ~@8",
  C: "[a5@60 e5@3 ~]/4", D: "[a5@58 e5@2 f#5@2 e5 ~]/4", E: "[e4@7 b4]/2", F: "[f#4@27 ~ b4@4]/2",
  G: "[e4@19 f#4@5 g4@4 a4@3 ~]/2", H: "[e4,e5]/2", I: "g5@2 ~@2 [a4,a5] ~ [g4,g5] ~@3 [f#4,f#5]@5 ~, g4 ~@15",
  J: "[g4,g5] ~@3 [a4,a5] ~ [g4,g5] ~@2 [f#4,f#5]@6 ~", K: "[[e4,e5]@5 ~ [d4,d5]@9 b4@11 ~@6, ~@15 b3@9 ~@8]/2",
  L: "a5/2",
})).s("gm_string_ensemble_1").gain(0.46).pan(0.7)

// chords · string ensemble 1 · soft notes · Asus2 Csus2 Fmaj7 Gsus2 Cmaj7 Dsus2 Fsus2 Asus2 …
const string_ensemble_1_soft = note(`<
  ~@8
  [~ f3 ~@4 [a4,b4] [c5,d5] [e5,f5] [g5,a5] [b5,c6] [d6,e6] [f6,g6] a6 b6 ~]
  ~@31
  [~ f3 ~@4 [a4,b4] [c5,d5] [e5,f5] [g5,a5] [b5,c6] [d6,e6] [f6,g6] a6 b6 ~]
  ~@31
  [~ f3 ~@4 [a4,b4] [c5,d5] [e5,f5] [g5,a5] [b5,c6] [d6,e6] [f6,g6] a6 b6 ~]
  ~@87
>`).s("gm_string_ensemble_1").gain(0.31).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@8 A B@24 C@7 D B@15 E C@7 D B@6 C D B@7 E B@8 C@31 D C@14 B E B@16 C@6 F>".pickRestart({
  A: "~@4 x!4", B: "x!2 ~ x ~ x ~ x", C: "x ~@2 x ~ x ~ x", D: "x ~@2 x!5", E: "x!2 ~ x ~ x!3", F: "x",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B@15 C B@14 ~ A B@7 C B@7 D B@6 ~ A B@6 ~ A B@7 D B@7 C B@30 ~ A B@15 D B@7 C B@7 C B@5 E F
>`.pickRestart({
  A: "~@2 x ~@2 x!3", B: "~ x ~ x", C: "~@4 x ~@9 x!2", D: "~@2 x ~@3 x!2", E: "~@12 x!2 ~ x", F: "x",
})).gain(0.51)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@7 A B ~@15 C ~@14 A B ~@7 C ~@7 D ~@6 A B ~@6 A B ~@7 D ~@7 C ~@30 A B ~@15 D ~@7 C ~@7 C ~@4 E F ~
>`.pickRestart({
  A: "x!8", B: "x!2 ~ x!2 ~@3", C: "~@6 x ~@5 x!2 ~@2", D: "~@5 x ~@2", E: "~@7 x", F: "~@4 x ~ x!2 ~ x!2 ~@3 x ~",
})).gain(0.15)

// drums · clap
const clap = s("cp").struct("<~@33 A@6 ~@18 A@6 ~@26 A@30 ~@2 A@14 ~@18 A@6 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@8 A ~@15 B ~@15 A ~@7 B ~@7 C ~@7 A ~@7 A ~@7 C ~@7 B ~@31 A ~@15 C ~@7 B ~@7 B ~@5 D E
>`.pickRestart({
  A: "~@7 x", B: "~ x", C: "~@3 x", D: "~@3 x ~@3 x", E: "x",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<A B@8 A@30 C D A@22 C D A@6 C D A@46 C D A@38 E>".pickRestart({
  A: "x!4", B: "~ x ~ x", C: "~@2 x!2 ~@2 x ~", D: "~ x!2 ~@2 x!2 ~", E: "x",
})).gain(0.51)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@9 A@15 B A@14 ~@2 A@7 B A@6 C A@7 ~@2 A@6 ~@2 A@6 C A@8 B A@30 ~@2 A@14 C A@8 B A@7 B A@4 C B ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@3 x ~ x ~ x", C: "~ x ~ x ~ x ~@2",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A ~@15 B ~@15 A ~@7 B ~@7 C ~@7 A ~@7 A ~@7 C ~@7 B ~@31 A ~@15 C ~@7 B ~@7 B ~@5 D ~
>`.pickRestart({
  A: "~@5 x!2 ~", B: "~@5 x ~@2", C: "~@3 x ~@4", D: "x!2 ~@6",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@24 A ~@14 B ~@8 A ~@6 C ~@7 B ~@7 B ~@7 C ~@8 A ~@30 B ~@15 C ~@8 A ~@7 A ~@4 C A ~
>`.pickRestart({
  A: "~ x ~@6", B: "~@5 x ~@2", C: "~@7 x",
})).gain(0.51)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@8 A ~@14 B ~@16 A ~@6 B ~@8 C ~@7 A ~@7 A ~@7 C ~@6 B ~@32 A ~@15 C ~@6 B ~@7 B ~@5 D E ~
>`.pickRestart({
  A: "~ x ~ x!2 ~@3", B: "~@7 x", C: "~ x ~@6", D: "~@6 x!2", E: "~@5 x ~@2",
})).gain(0.51)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@15 A ~@7 A ~@5 A ~ A ~@7 A ~@7 A ~@5 A ~ A ~@5 A ~@9 A ~@3 A ~@3 A ~@7 A ~@21 A ~ A ~@7 A ~@7 A ~@7 A ~@7 A
  ~@6
>`.pickRestart({
  A: "x",
})).gain(0.51)

stack(
  bass, piano, overdriven_guitar, electric_guitar_jazz, string_ensemble_1, string_ensemble_1_soft, kick, snare,
  snare_soft, clap, low_tom, hihat, hihat_soft, mid_tom, open_hat, high_tom, crash
)

More by The Doobie Brothers