Strudelify

Big Girls Dont Cry (dirty Dancing)

The Four Seasons

KeyD majorTempo130 bpm
0:00/0:00
// Big Girls Dont Cry (dirty Dancing) — The Four Seasons
// 130 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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.

// chords · lead 5 charang · "Lead 5"
const lead_5_charang = note(`<
  A B C D E B C D E B C D A B C D E B F G H I J K L M ~@2 A B C D A B C D E B C D E B C D A B C D A B C D A B F G H I J
  K L M ~@2 A B C D A B C D E B C D E B C D E B F G H I J K L M ~@8 N
>`.pickRestart({
  A: "[g2,g3,b3,d4] ~@5 [g2,b3,d4]@2 [g#3,b3,e4] ~@5 [e2,e4]@2, ~@6 g3 ~ e2@3 ~@3 [g#3,b3] ~", // G E G#m
  B: "[a2,a3,c4,e4] ~@3 a3 ~ [a3,c4,e4] ~ [d2,f#3,a3,d4] ~ d2 ~ [f#3,a3,d4]@2 f#2 ~, ~@6 a2@2 ~@4 e2 ~@3", // Am D
  C: "[g2,g3,b3,d4] ~@3 g3 ~ [g3,b3,d4] ~ [e2,g#3,b3,e4] ~@3 g#3 ~ [e2,e4]@2, ~@6 g2@2 ~@6 [g#3,b3] ~", // G E G#m
  D: "[a2,a3,c4] ~@3 a3 ~ [a3,c4,e4] ~ [d2,f#3,a3,d4] ~ d2 ~ [f#3,a3,d4]@2 f#2 ~, ~@6 a2@2 ~@4 e2 ~@3", // Am D
  E: "[g2,g3,b3,d4] ~@5 [g2,b3,d4]@2 [g#3,b3,e4] ~@5 [g#3,b3,e4] ~, ~@6 g3 ~ e2@3 ~@3 e2@2", // G E
  F: "[g3,b3,d4]@2 a1 ~ [g3,b3,d4]@2 d2 ~ [g3,c4,e4]@2 d2 ~ [g3,c4,e4]@2 g1 ~, g1 ~@3 b1 ~@3 c2 ~@3 e2 ~@3", // G C
  G: "[g3,d4] ~@7, [g1,b3] ~@15", H: "e2@2 e1 ~ [a#4,e5] ~ [b4,e5] ~ [a4,e5] ~ e5@2 e2@2 e1@2, ~@10 g#4 ~@5",
  I: "[a#4,e5] ~ [b4,e5] ~ [a4,e5] ~ [g#4,e5] ~ e2 ~ e1@2 e2 ~ a2 ~", // A#dim E5 A5 C#m
  J: "a1@2 a2 ~ [d#4,a4] ~ [e4,a4] ~ [d4,a4] ~ [c#4,a4] ~ a2 ~ a1 ~", // D#dim A5 D5 F#m
  K: "[d#4,a4] ~ [e4,a4] ~ [d4,a4] ~ [c#4,a4] ~ a2 ~ a1@2 a2 ~ d3 ~", // D#dim A5 D5 F#m
  L: "d2@2 d3 ~ [g#4,d5] ~ [a4,d5] ~ [g4,d5] ~ [f#4,d5] ~ d3 ~ d2 ~", // G#dim D5 G5 D
  M: "[g#4,d5] ~ [a4,d5] ~ [g4,d5] ~ [f#4,d5] ~ d3 ~ d2 ~ d3 ~ d2 ~", N: "[g4,g5] ~@7",
})).s("gm_lead_5_charang").gain(0.46)

// bass · electric bass finger · "ElFngBas"
const bass = note(`<
  A B A C A B A D A B A C A B A D A B E F G H I J K L M N A B A C A B A C A B A C A B A D A B A C A B A D A B E F G H I
  J K L M N A B A C A B A D A B A C A B A C A B E F G H I J K L M N M N M N M N O
>`.pickRestart({
  A: "g2 ~@5 g2@2 e2@2 ~@4 e2@2", B: "a2 ~@5 a2@2 d2 ~ d2 ~ e2@2 f#2 ~", C: "a2@2 ~@4 a2@2 d2 ~ d2@2 e2@2 f#2 ~",
  D: "a2@2 ~@4 a2@2 d2 ~ d2 ~ e2@2 f#2 ~", E: "g2 ~ a1 ~ b1 ~ d2 ~ c2 ~ d2 ~ e2 ~ g2 ~", F: "g2 ~@15",
  G: "e2 ~ e2 ~ g#2@2 e2 ~ b2@2 e2 ~ a2@2 g#2 ~", H: "e2 ~ e2 ~ g#2@2 e2 ~ b2@2 e2 ~ a2@2 g#2@2",
  I: "a1 ~ a1 ~ c#2@2 a1 ~ e2@2 a1 ~ d2@2 c#2 ~", J: "a1 ~ a1 ~ c#2 ~ a1 ~ e2@2 a1 ~ d2 ~ c#2@2",
  K: "d2 ~ d2 ~ f#2@2 d2 ~ a2@2 d2 ~ g2 ~ f#2 ~", L: "d2 ~ d2 ~ f#2 ~ d2 ~ a2 ~ d2 ~ g2@2 f#2 ~", M: "g1 ~@15",
  N: "~@10 d2@2 e2 ~ f#2 ~", O: "g2 ~@7",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · epiano2 · "ChrsdPno"
const epiano2 = note(`<
  ~@4 A ~@2 B A ~ C B A ~@2 B A ~ D E F G F H I ~ J K A ~@2 B A ~ C B L M N@2 A ~@2 B A ~ C B A ~@2 B A ~ D E F G F H I
  ~ J K A ~@2 B A ~ C B L M N@2 A ~@2 B A ~ D E F G F H I ~ J K J K J K J K O
>`.pickRestart({
  A: "[d3,g3,b3]@6 ~@2 [e3,g#3,b3]@5 ~@3", B: "[e3,a3] [e3,a3,c4] ~ [d3,f#3,a3]@3 ~@2, c4 ~@15",
  C: "~@2 [d3,g3,b3] ~ [e3,g#3,b3] ~@3", D: "~@2 [d3,g3,b3] ~ [e3,g3,c4] ~ [e3,g3,c4] ~",
  E: "[d3,g3,b3]@2 ~@6 d3@3 ~ d#3@4", F: "e3 ~", G: "~@8 e3@3 ~ e3@3 ~", H: "~@8 e3@3 ~ d#3@3 ~", I: "d3 ~",
  J: "[g3,b3,d4]@7 ~ [f#3,a3,d4]@7 ~", K: "[e3,g3,c4]@7 ~ [f#3,a3,d4]@6 ~@2", L: "[g2,g3] ~@5 d5@2 e5 ~ d5 ~ b4 ~ g4 ~",
  M: "g4 ~@3 g4@3 ~ e4 ~ d4@5 ~", N: "[~@6 g4@2 b4 ~ d5 ~ b4 ~ d5@6 d5@3 ~ b4 ~ g4 ~ g4@3 ~]/2", O: "[g4,g5] ~@7",
})).s("gm_epiano2").gain(0.51)

// other · electric guitar muted · "ElMutGit"
const electric_guitar_muted = note(`<
  A B A C A B A C A B A C A B A C A B D E ~@8 A B A C A B A C A B A C A B A C A B A C A B A C A B D E ~@8 A B A C A B A
  C A B A C A B A C A B D E ~@15
>`.pickRestart({
  A: "b3 ~@5 b3 ~ g#3 ~@5 g#3 ~", B: "c4 ~@5 c4 ~ a3 ~ a3 ~@3 a3 ~", C: "c4 ~@5 c4 ~ a3 ~ a3 ~ a3 ~@3",
  D: "g2 ~ a2 ~ b2 ~ d3 ~ c3 ~ d3 ~ e3 ~ g3 ~", E: "g3 ~@15",
})).s("gm_electric_guitar_muted").gain(0.51)

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

// drums · clap
const clap = s("cp").struct("<[x!4]!19 ~ [x!4]!35 ~ [x!4]!27 ~ [x!4]!14 ~>").gain(0.6)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!19 [x ~@2 x] [~ x ~ x]!35 [x ~@2 x] [~ x ~ x]!27 [x ~@2 x] [~ x ~ x]!14 x>")
  .gain(0.6)

// drums · cowbell
const cowbell = s("cb").struct("<[x!4]!19 x [x!4]!35 x [x!4]!27 ~ [x!4]!14 ~>").gain(0.6)

stack(lead_5_charang, bass, epiano2, electric_guitar_muted, kick, clap, snare, cowbell)

More by The Four Seasons