Strudelify

Everybody Loves Somebody

Dean Martin

KeyF majorTempo80 bpm
0:00/0:00
// Everybody Loves Somebody — Martin Dean
// 80 bpm, 4/4, key F 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 71 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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@3 B@8 C D@2 E@5 F@8 G@8 H I@8 J@2 K@5 L@8 M@8 N O P ~>".pickRestart({
  A: "[~@13 f1@7 ~ f1@2 g1@2 a1@6 ab1@6 g1@9 ~ d2@2 g2@5 ~ g1@6 g1@11]/3",
  B: "[~ c2@5 ~ c1@5 ~ f1@10 c2@2 c1@6 c2@6 f1@10 f1@2 f1@12 bb1@9 ~ bb1@2 a1@6 d2@5 ~ g1@9 ~ g1@2 g1@12 c2@7 ~ c2@2 g1@2 c1@6 c2@6 f1@7 ~ f1@2 g1@2 a1@6 ab1@5 ~ g1@10 d1@2 g1@6 d2@6 g1@9 ~ d1]/8",
  C: "~ g1@8 g1@2 f1@2 eb1@4 eb2@2 d2@5", D: "[~ db2@6 c2@6 f1@9 ~ f1@2 f1@6 a1@6 bb1@11]/2",
  E: "[~ a1@6 d2@4 d1@2 g1@9 ~ g1@2 g1@12 c2@9 ~ c2@2 c2@6 c1@6 f1@9 ~ f1@2 a1@5 ~ ab1@6 g1@10 d1@2 g1@6 d2@6 g1@5 ~ g2@5]/5",
  F: "[~ c2@6 c1@6 f1@9 ~ f1@2 f1@5 ~ c2@2 eb1@2 e1@2 f1@9 ~ f1@2 c2@6 c1@5 ~ f1@10 c2@2 f2@6 f1@6 bb1@9 ~ bb1@2 f1@9 ~ a1@2 bb1@9 ~ f1@2 bb1@5 ~ a1@6 d2@10 d2@2 d2@6 a1@6 g1@9 ~ g1@2 g1@6 g2@5 ~ c2@10 c2]/8",
  G: "[~ c2@12 c2@10 c2@2 c2@6 c1@6 f1@9 ~ f1@2 f1@6 a1@6 bb1@9 ~ bb1@2 a1@6 d2@6 g1@8 d2@2 d1@2 g1@5 ~ d2@5 ~ c2@10 g1@2 c2@6 e1@6 f1@10 f1@2 a1@6 ab1@6 g1@10 d1@2 g1@5 ~ d2@6 g1@8 bb1@2 b1]/8",
  H: "~ c2@6 c1@6 f1@11",
  I: "[~ c2@4 c1@4 c2@4 f1@10 f1@2 f1@12 bb1@9 ~ bb1@2 a1@6 d2@5 ~ g1@9 ~ g1@2 g1@12 c2@7 ~ c2@2 g1@2 c1@6 c2@6 f1@7 ~ f1@2 g1@2 a1@6 ab1@5 ~ g1@10 d1@2 g1@6 d2@6 g1@9 ~ d1@2 g1@8 b1@2 d2@2 eb2@6 d2@5]/8",
  J: "[~ db2@6 c2@5 ~ f1@9 ~ f1@2 f1@5 ~ a1@6 bb1@11]/2",
  K: "[~ a1@6 d2@4 d1@2 g1@9 ~ g1@2 g1@12 c2@9 ~ c2@2 c2@6 c1@6 f1@9 ~ f1@2 a1@5 ~ ab1@6 g1@10 d1@2 g1@6 d2@6 g1@6 g2@5]/5",
  L: "[~ c2@6 c1@6 f1@9 ~ f1@2 f1@5 ~ c2@2 eb1@2 e1@2 f1@9 ~ f1@2 c2@6 c1@5 ~ f1@10 c2@2 f2@6 f1@6 bb1@9 ~ bb1@2 f1@9 ~ f1@2 bb1@9 ~ f1@2 bb1@6 c2@6 d2@10 d2@2 d2@5 ~ a1@6 g1@9 ~ g1@2 g1@6 g2@5 ~ c2@10 c2]/8",
  M: "[~ c2@12 c2@10 c2@2 c2@6 c1@6 f1@9 ~ f1@2 f1@6 c2@6 bb1@9 ~ bb1@2 a1@6 d2@6 g1@8 d2@2 g2@2 g1@10 g1@2 c2@7 ~ g1@2 c2@2 c1@6 c2@6 f1@10 f1@2 a1@6 ab1@6 g1@10 d2@2 g2@12 ~@11]/8",
  N: "~@13 c2@6 c1@5", O: "~ f1@10 f1@2 f1@6 c2@5", P: "~ f1@23",
})).s("gm_acoustic_bass").gain(0.48)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  A B@2 C D@2 E@3 F@3 G@2 H@3 I@2 J@8 K@3 L@3 M@2 N O@2 E@3 P@3 Q@2 E@3 R@2 S@8 K@3 T@3 U@3 V W ~
>`.pickRestart({
  A: "~@13 [c4,f4,a4]@11", // F
  B: "[~ [c4,e4,g4,c5]@6 [b3,eb4,gb4,b4]@6 g4@12 f4@12 f4@6 e4@5, ~@13 [bb3,d4,bb4]@24 [b3,d4,a4]@11]/2", // C B Bb Bm7
  C: "~ d4@6 db4@6 [a3,c4,f4]@11, ~ [bb3,g4]@12 ~@11", // F Eb
  D: "[~ [e3,ab3,c4]@12 c4@12 db4@12 [f3,bb3,d4]@11, ~@13 [f3,a3]@24 ~@11]/2", // Eaug Bb F
  E: "[~ [a3,c4,eb4]@6 [gb3,a3,d4]@6 d4@12 eb4@12 g3@12 ab3@12 [a3,c4,f4]@11, ~@13 [g3,bb3]@24 [c4,e4]@24 ~@11]/3", // Adim D F Gm C
  F: "[~ [a3,c4,e4,g4]@6 [ab3,b3,eb4,gb4]@6 a3@12 g3@12 e4@12 d4@12 [db4,f4,a4]@6 [c4,gb4,bb4]@5, ~@13 [bb3,d4,f4]@24 [f3,a3,b3]@24 a3 ~@5 bb3 ~@4]/3", // Am7 Abm7 Dbaug Cm7b5 Bb Bm7b5
  G: "[~ [b3,eb4,g4]@6 [bb3,e4,a4]@6 c4@12 db4@12 [bb3,d4,f4]@11, ~ g3 ~@5 a3 ~@5 [a3,f4]@24 ~@11]/2", // Baug A Bb Dm
  H: "[~ [a3,c4,eb4]@6 [gb3,a3,d4]@6 d4@12 eb4@12 g3@18 ab3@6 [a3,c4,f4]@11, ~@13 [g3,bb3]@24 [c4,e4]@24 ~@11]/3", // Adim D F Gm C
  I: "[~ [a3,c4,e4,g4]@6 [ab3,b3,eb4,gb4]@6 a3@12 g3@12 e4@6 eb4@5, ~@13 [bb3,d4,f4]@24 [f3,a3,b3]@11, ~@37 a4 ~@10]/2", // Am7 Abm7 Bb Bm7b5
  J: "[~ d4@6 [e3,db4]@6 g3@12 f3@12 [a3,c4]@12 [g3,bb3,eb4]@12 c4@12 db4@12 [bb3,d4]@12 [a3,db4]@12 [bb3,d4]@18 [db4,e4,g4]@6 d4@12 db4@5 ~ c4@5 ~ a4@12 g4@12 [c4,e4,g4]@11, ~ bb3@12 [a3,c4]@24 ~@24 [a3,f4]@24 ~@72 [b3,f4]@24 ~@11, ~ c4 ~@11 f4 ~@23 f4@24 ~@24 f4@42 ~@6 [f4,a4]@24 ~@35]/8", // Dbm Am Eb Bb A Bb Dbdim C …
  K: "[~ [eb4,gb4,a4]@12 [g4,bb4]@12 [ab4,c5]@12 [c4,c5]@12 [db4,db5]@12 [d4,f4,bb4,d5]@11, ~@13 [c4,e4]@24 [f4,a4]@24 ~@11]/3", // Ebdim Gm Ab C Db Bb C F
  L: "[~ [c4,eb4,g4]@6 [d4,gb4,a4]@6 d4@12 eb4@12 g4@12 ab4@11 c4 [c4,f4,a4]@11, ~ a3@12 [bb3,g4,bb4]@24 [c4,e4]@24 c5 ~@10]/3", // Cm D F Eb C
  M: "[e4 [c4,e4,g4,c5]@5 [eb4,eb5] [b3,eb4,gb4,b4]@5 d4 g4@12 f4@11 a4 f4@6 e4@5, ~ e5 ~@11 [bb3,d4,bb4]@24 [b3,d4,a4]@11, ~@13 d5 ~@23 a5 ~@10]/2", // C Eb B Bb Bm7
  N: "c4 d4@6 db4@5 f4 [a3,c4,f4]@11, ~ [bb3,g4]@12 ~@11, ~ c5 ~@11 f5 ~@10", // F Eb
  O: "[~@3 [e4,ab4]@2 ~@6 [e3,ab5]@2 c4@12 db4@12 [f3,bb3,d4]@11, ~ [c4,c5]@6 [c4,c5]@6 ~@35, ~@5 [e4,ab4]@8 c6 ~@34, ~@9 [ab3,e5]@4 [f3,a3]@24 ~@11]/2", // E Bb C E Dbm F
  P: "[~ [a3,c4,e4,g4]@6 [ab3,b3,eb4,gb4]@6 a3@12 g3@12 e4@12 d4@11 a4 [db4,f4,a4]@5 bb4 [c4,gb4,bb4]@5, ~@13 [bb3,d4,f4]@24 [f3,a3,b3]@24 a5 ~@5 bb5 ~@4]/3", // Am7 Abm7 Dbaug Cm7b5 Bb Bm7b5
  Q: "[g4 [b3,eb4,g4]@5 a4 [bb3,e4,a4]@6 c4@12 db4@12 [bb3,d4,f4]@11, ~ g5 ~@5 a5 ~@5 [a3,f4]@24 ~@11]/2", // Baug A Bb Dm
  R: "[~ [a3,c4,e4,g4]@6 [ab3,b3,eb4,gb4]@6 a3@12 g3@11 g4 e4@5 gb4 eb4@5, ~@13 [bb3,d4,f4]@24 [f3,a3,b3]@11, ~@37 g5 ~@5 gb5 ~@4]/2", // Am7 Abm7 Bb Bm7b5
  S: "[f4 d4@5 e4 [e3,db4]@5 f4 g3@12 f3@12 [a3,c4]@12 [g3,bb3,eb4]@12 c4@12 db4@12 [bb3,d4]@12 [a3,db4]@12 ~@18 g4@6 d4@12 db4@5 ~ c4@5 ~ a4@12 g4@12 [c4,e4,g4]@11, ~ bb3@12 [a3,c4]@24 f4@24 [a3,f4]@24 f4@42 ~@6 [f4,a4]@24 ~@35, ~ f5 ~@5 e5 ~@5 f5 ~@95 [bb3,d4]@24 ~@24 [b3,f4]@24 ~@11]/8", // Dbm Am Eb Bb A C Am Dm …
  T: "[~ [c4,eb4,g4]@6 [d4,gb4,a4]@6 d4@12 eb4@12 g4@12 ab4@12 [c4,f4,a4]@11, ~ a3@12 [bb3,g4,bb4]@24 [c4,e4]@24 ~@11]/3", // Cm D F Eb C
  U: "[~ [c4,e4,g4,c5]@6 [b3,eb4,gb4,b4]@6 [g4,bb4]@12 bb3@12 ~@12 d4@12 ~@2 g3 ~ c4 ~ g4@2 g4@2 c5, ~@13 d4@24 g2@8 e4@16 ~@11, ~@39 f3@22 [c3,bb3,d4,f4]@6 [c3,bb3,db4,e4]@5, ~@41 a3@20 ~@11, ~@43 b3@18 ~@11]/3", // C B Gm Bb Bbdim
  V: "~ c5 ~@3 a5 ~ g5 ~@3 f5 ~ db5 ~@3 a5 ~ g5 ~@3 f5, ~ [f3,a3,c4,f4]@12 [f3,a3,db4,f4]@11", // F Faug
  W: "~ [f3,a3,c4,e4,g4]@4 [f3,a3,c4,e4,g4,c5,e5]@19, ~ [c5,e5] ~@22", // Fmaj7 C
})).s("gm_epiano1").gain(0.46)

// chords · string ensemble 1 · "STR/CHOIR"
const string_ensemble_1 = note(`<
  A B@4 ~@7 C D E@3 F@2 G H@7 I@3 J@3 K@2 L M@8 ~@5 N@4 ~@3 O@6 J@3 P@2 C Q@2 ~
>`.pickRestart({
  A: "~@13 [f3,a3,c4]@11", // F
  B: "[~ [g3,c4,e4]@6 [gb3,b3,eb4]@6 bb3@6 a3@6 [g3,bb3]@6 a3@6 e4@6 eb4@6 d4@6 [e3,db4]@6 [f3,a3]@12 [e3,ab3]@10 ~@13, ~@13 d4@24 b3@12 bb3@12 c4@24 ~@11, ~@13 f3@12 ~@6 f3@24 ~@41]/4", // C B Gm Dbm F E
  C: "~@13 c3@11", D: "~ db3@12 d3@11",
  E: "[~ [eb3,g3]@6 [d3,gb3,a3]@6 d3@12 ~@6 c4@6 bb3@12 ~@6 ab3@6 [f3,a3,c4]@11, ~@13 g3@42 ~@17, ~@13 bb3@18 ~@18 c4@12 ~@11, ~@25 eb3@12 e3@24 ~@11]/3", // Eb D F
  F: "[~ [g3,c4,e4]@6 [gb3,b3,eb4]@6 bb3@6 a3@6 [g3,bb3]@6 a3@6 e4@6 eb4@5, ~@13 d4@24 b3@11, ~@13 f3@12 ~@6 f3@17]/2", // C B Gm
  G: "~ d4@6 [e3,db4]@6 f3@6 d3@2 c3@2 g3, ~ bb3@12 [a3,c4]@11", // Dbm Am
  H: "[~ f3@2 d4@2 ~@2 g4@2 ~@16 [g3,bb3]@12 c4@12 db4@12 [bb3,d4]@12 [a3,db4]@12 [bb3,d4]@18 [db4,e4,g4]@6 d4@12 db4@6 c4@6 a4@12 g4@12 [c4,e4,g4]@11, ~@5 [a3,c4]@20 ~@12 a3@24 ~@72 [b3,f4]@24 ~@11, ~@9 f4@95 ~@5 [f4,a4]@24 ~@35]/7", // Gm Bb A Bb Dbdim C Am Bdim …
  I: "[~ [eb4,gb4,a4]@12 [g4,bb4]@12 [ab4,c5]@12 [c4,c5]@12 [db4,db5]@12 [d4,f4,bb4,d5]@11, ~@13 [c4,e4]@24 [f4,a4]@24 ~@11]/3", // Ebdim Gm Ab C Db Bb C F
  J: "[~ [c4,eb4,g4]@6 [d4,gb4,a4]@6 d4@12 eb4@12 g4@12 ab4@12 [c4,f4,a4]@11, ~ a3@12 [bb3,g4,bb4]@24 e4@24 ~@11, ~@37 c4@18 ~@17]/3", // Cm D F Eb
  K: "[~ [c4,e4,g4,c5]@6 [b3,eb4,gb4,b4]@6 g4@12 f4@12 f4@6 e4@5, ~@13 [bb3,d4,bb4]@24 [b3,d4,a4]@11]/2", // C B Bb Bm7
  L: "~ d4@6 db4@6 [a3,c4,f4]@11, ~ [bb3,g4]@12 ~@11", // F Eb
  M: "[~@11 e3@2 [a3,f4]@179, ~ c5@8 ab3@4 ~@179, ~@3 ab4@10 ~@179, ~@5 e4@8 ~@179, ~@7 c4@6 ~@179]/8", // Dm
  N: "[~ [a3,c4,e4,g4]@6 [ab3,b3,eb4,gb4]@6 a3@12 g3@12 e4@6 eb4@6 d4@6 [e3,db4]@6 g3@12 f3@12 ~@11, ~@13 [bb3,d4,f4]@24 f3@18 ~@41, ~@37 [a3,b3]@12 bb3@12 [a3,c4]@24 ~@11]/4", // Am7 Abm7 Dbm Bb Asus2 Am
  O: "[~@7 g4@6 d4@12 db4@5 ~ c4@6 a4@12 g4@12 [e4,g4]@12 [eb4,gb4,a4]@12 [g4,bb4]@12 [ab4,c5]@12 [c4,c5]@12 [db4,db5]@12 [d4,f4,bb4,d5]@11, ~@13 [f4,a4]@24 [b3,f4]@24 c4@24 [c4,e4]@24 [f4,a4]@24 ~@11]/6", // Em Ebdim Gm Ab C Db Bb F …
  P: "[~ [c4,e4,g4,c5]@6 [b3,eb4,gb4,b4]@6 [g4,bb4]@12 bb3@12 ~@11, ~@13 d4@24 ~@11]/2", // C B Gm
  Q: "[~ c5@4 a5@2 g5@4 f5@2 db5@4 a5@2 g5@4 f5@2 [f3,a3,c4,e4,g4,c6]@2 ~@2 [f3,a3,c4,e4,g4,c6]@19, ~ [f3,a3,c4,f4]@12 [f3,a3,db4,f4]@12 ~@23]/2", // Fmaj7 F Faug
})).s("gm_string_ensemble_1").gain(0.35)

// chords · string ensemble 1 · "STR/CHOIR" · soft notes
const string_ensemble_1_soft = note("<~@30 A B C ~@29 A B C ~@6>".pickRestart({
  A: "~ eb5@6 d5@17", B: "~ eb5@12 e5@11", C: "~ [d4,d5]@6 c5@17, ~@7 c4@6 ~@11",
})).s("gm_string_ensemble_1").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  A B@6 C B@3 C B C B@3 C@2 B@17 D B@6 E F B@8 C B@2 C B C B G B@4 C H ~ G I H
>`.pickRestart({
  A: "~@11 x ~ x ~@9 x", B: "~ x ~@11 x ~@9 x", C: "~ x ~@11 x ~@10", D: "~ x ~@9 x ~ x ~@9 x",
  E: "~ x ~@11 x ~@2 x ~@2 x ~@2 x ~", F: "~ x ~@2 x ~@2 x!2 ~ x ~@2 x ~@9 x", G: "~ x ~@9 x ~ x ~@10", H: "~ x ~@22",
  I: "~ x ~@3 x ~@17 x",
})).gain(0.6)

// drums · rim
const rim = s("rim").struct(`<
  ~@4
  [~@19 x ~@4]
  [~@7 x ~@11 x ~@4]!15
  [~@7 x ~@16]
  ~@31
  [~@19 x ~@4]
  [~@7 x ~@11 x ~@4]!7
  ~@11
>`).gain(0.48)

// drums · snare
const snare = s("sd").struct("<A B@3 C ~@15 D B@15 A B@6 E F B@7 ~@8 G B@5 ~ H B ~@2>".pickRestart({
  A: "~@19 x ~@4", B: "~@7 x ~@11 x ~@4", C: "~@7 x ~@16", D: "~@9 x ~ x ~@7 x ~@4", E: "~@7 x ~@9 x ~@5 x",
  F: "~@5 x ~@3 x ~ x ~@7 x ~@4", G: "~@5 x ~ x ~@11 x ~@4", H: "~@17 x ~ x ~@4",
})).gain(0.54)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@43 [~@7 x ~@2 x ~] [~ x ~@4 x ~@5] ~@22 [~@5 x ~@2] ~@3>").gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@7 A ~@23 B ~@15 C ~@14 D ~@2 E>".pickRestart({
  A: "~@11 x ~@12", B: "~@5 x ~ x!3 ~@14", C: "~@3 x ~@4", D: "~@11 x", E: "x",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<A ~@3 B C@7 D C@7 E C@15 ~@7 F G ~@7 H C@7 B C@5 ~@5>".pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~@5 x ~@3 x ~ x ~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  D: "~ x ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x", E: "~ x ~ x ~ x ~@7 x ~ x ~ x ~ x ~ x ~ x", F: "~@5 x!3",
  G: "x!3 ~@5", H: "~@3 x ~@3 x ~@5 x ~ x ~ x ~ x ~ x ~ x",
})).gain(0.18)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A B@3 ~@17 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C A B@6 D A B@7 ~@9 C@3 E ~ F@2 B ~@2
>`.pickRestart({
  A: "~@17 x ~@5 x", B: "~@5 x ~@5 x ~@5 x ~@5 x", C: "~ x ~@4", D: "~@5 x ~@5 x ~@12", E: "~ x!3 ~@2", F: "~@7 x ~@16",
})).gain(0.06)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~@31 B ~@15 C ~@14 D ~ E ~>".pickRestart({
  A: "~@5 x ~@4 x ~@13", B: "~@3 x!3 ~@18", C: "~@5 x ~@18", D: "~@7 x", E: "~@23 x",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<[~@3 x ~@4] ~@19 [~@7 x ~@16] ~@15 [~ x ~@22] ~@23 [~ x ~@22] ~@10>").gain(0.24)

// drums · crash
const crash = s("cr").struct("<A ~@35 A ~@7 A ~@23 B C ~>".pickRestart({
  A: "~@13 x ~@10", B: "~ x ~@22", C: "~ x ~@3 x ~@18",
})).gain(0.6)

// drums · ride
const ride = s("rd").struct("<A B@3 C ~@31 A B@7 D B@7 C ~@13 C ~ E ~@2>".pickRestart({
  A: "~@15 x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", C: "~ x ~@22",
  D: "~ x ~ x ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x", E: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
})).gain(0.18)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~ A@3 ~@33 A@4 ~ A@2 ~ A@7 ~@16 B ~@2>".pickRestart({
  A: "~ x ~@4", B: "~@2 x",
})).gain(0.12)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~@36 [~@3 x ~@4] ~@15 [~@11 x ~@12] ~@14 [~@23 x] ~@2 x>").gain(3.58)

stack(
  bass, epiano1, string_ensemble_1, string_ensemble_1_soft, kick, rim, snare, snare_soft, low_tom, hihat, hihat_soft,
  mid_tom, open_hat, crash, ride, ride_soft, bell_tree
)

More by Dean Martin