Strudelify

You Should Be Dancing

Bee Gees

KeyG minorTempo121 bpm
0:00/0:00
// You Should Be Dancing — Bee Gees
// 121 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(121/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(`<
  A@3 B C D E F G H I J G H I K L M N O C D E F G H I J G H I K L M N O C D E F A P A P Q R S T Q R S T G H I J G H I K
  L M N O C D E F L M N O C D E F ~
>`.pickRestart({
  A: "g1 ~ g1 ~ g1 ~ g1 ~", B: "g1 ~ g1 ~ g1 d2 f2 gb2", C: "g2 g2@2 ~@3 bb2!3 ~@2 d2 f2 ~ g2 ~",
  D: "f2 gb2 g2 ~@3 g1!2 g1@2 ~@6", E: "f2 gb2 g2 ~@3 bb2!3 ~@2 d2 f2 ~ g2 ~",
  F: "f2 gb2 g2 ~@3 g1!2 g1@2 ~@2 f1@2 gb1@2", G: "g1@2 ~@2 g1@2 ~ d1 f1@2 g1 ~ g1@2 f1@2",
  H: "g1@2 ~@2 g1@2 ~ g1 c2@2 bb1@2 c2@2 d2@2", I: "g1@2 ~@2 g1@2 ~ d1 f1 ~ g1 ~ g1@2 f1@2",
  J: "g1@2 ~@2 g1@2 ~ g1 c2@2 bb1 ~ c2 ~ d2@2", K: "g1@2 ~@2 g1@2 ~ f1 g1@2 f1 ~ g1 ~ bb1@2",
  L: "c2@5 ~ c2@2 b1@5 ~ b1@2", M: "bb1@2 ~ bb1 b1@2 ~ b1", N: "c2@4 ~@2 c2@2 b1@3 ~@3 b1@2",
  O: "bb1@3 ~@3 bb1@2 b1@3 ~ bb2@4", P: "g1 ~ g1 ~ g1 f1 g1 ~", Q: "g2@7 ~", R: "a2@7 ~", S: "g1 ~ g2 ~ f2 ~ f2 g2",
  T: "g1@2 ~@2 g2@2 ~ f2 g2 f2 d2@2 g1@2 ~@2",
})).s("gm_electric_bass_finger").gain(0.47)

// other · brass section
const brass_section = note(`<
  ~@7 A ~@10 B@3 ~@13 B@3 ~@3 C D C E F G H I J K L ~@11 B@3 ~@5 M@2 N O N P ~
>`.pickRestart({
  A: "[d5,g5]", B: "[[eb5,g5]@11 ~@5]/3",
  C: "[g4,g5]!2 ~ [f4,f5]!2 ~ [a4,a5]!2 ~ [f4,f5]!2 ~ [f4,f5] [gb4,gb5] [g4,g5] ~", // G F A F Gb G
  D: "[g4,g5]!2 ~ [f4,f5] [a4,a5] ~ [f4,f5] [g4,g5] ~@8", // G F A F G
  E: "[g4,g5]!2 ~ [f4,f5] [a4,a5] ~ [f4,f5] [g4,g5] ~@4 g4 ~ a4 ~", F: "bb4@15 ~", G: "a4@7 ~",
  H: "g4 ~ f4 a4 ~ f4 g4 ~@9", I: "g4 ~ f4 a4 ~ f4 g4 ~@5 [g4,g5] ~ [a4,a5] ~", J: "[bb4,bb5]@15 ~", K: "[c5,c6]@7 ~",
  L: "[c5,c6] ~ [bb4,bb5] [d5,d6] ~ [bb4,bb5] [c5,c6] ~@9", M: "[eb5,g5]/2",
  N: "~@2 [d3,d4] ~@2 [f3,f4] ~@2 [g3,g4]@3 [bb3,bb4] ~@4", // D F G Bb
  O: "~@2 [c4,c5] ~@2 [bb3,bb4] [g3,g4] ~ [f3,f4]@3 [d3,d4] ~@4", // C Bb G F D
  P: "~@2 [c4,c5] ~@2 [bb3,bb4] [g3,g4] ~ [f3,f4]@4 [d3,d4] ~ [f3,f4] ~", // C Bb G F D F
})).s("gm_brass_section").gain(0.44).pan(0)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@3 A@2 B A B ~@7 A ~@4 C@4 ~ A ~ A ~ A ~ A ~@4 C@4 ~@13 A ~ A ~ A ~ A ~@4 C@4 ~@4 C@4 ~
>`.pickRestart({
  A: "~@2 g2 ~ f3@2 g2@2 e3@2 g2@2 d3@2 ~@2", B: "~@2 g2@2 f3@2 g2@2 e3 ~ g2@2 ~@4", C: "~ g3 ~ g3 ~ g3 ~ g3",
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.7)

// other · distortion guitar
const distortion_guitar = note("<~@44 A@4 B@2 C D E ~@24>".pickRestart({
  A: "[~@4 f5@14 ~@2 f5@2 d5 ~ f5 ~ g5@9 ~ f5@2 d5 ~ f5 ~ g5@4 f5@6 d5 ~ c5 ~ c5@2 bb4 ~ d5@4]/4",
  B: "[~@4 c6@2 bb5 ~ c6 ~ d6@8 ~@2 c6@2 bb5 ~ d6@7 ~]/2", C: "f3 g3 bb3 f3 g3 bb3 f3 g3 bb3 f3 g3 bb3 g3 f3 bb3 g3",
  D: "f3 bb3 g3 f3 c4 bb3 g3 f3 e3 eb3 d3 c3 b2 bb2 a2 ab2", E: "g2 ~@15",
})).s("gm_distortion_guitar").gain(0.35)

// other · brass section
const brass_section_2 = note("<~@19 A ~@15 A ~@4 B C B D E F G H E I J ~@12 A ~@7 A K L K M ~>".pickRestart({
  A: "[eb5,g5]", B: "g4!2 ~ f4!2 ~ a4!2 ~ f4!2 ~ f4 gb4 g4 ~", C: "g4!2 ~ f4 a4 ~ f4 g4 ~@8",
  D: "g4!2 ~ f4 a4 ~ f4 g4 ~@4 g4 ~ a4 ~", E: "bb4@15 ~", F: "a4@7 ~", G: "g4 ~ f4 a4 ~ f4 g4 ~@9",
  H: "g4 ~ f4 a4 ~ f4 g4 ~@5 g4 ~ a4 ~", I: "c5@7 ~", J: "c5 ~ bb4 d5 ~ bb4 c5 ~@9",
  K: "~@2 [d3,d4] ~@2 [f3,f4] ~@2 [g3,g4]@3 [bb3,bb4] ~@4", // D F G Bb
  L: "~@2 [c4,c5] ~@2 [bb3,bb4] [g3,g4] ~ [f3,f4]@3 [d3,d4] ~@4", // C Bb G F D
  M: "~@2 [c4,c5] ~@2 [bb3,bb4] [g3,g4] ~ [f3,f4]@4 d3 ~ [f3,f4] ~", // C Bb G F
})).s("gm_brass_section").gain(0.44).pan(1)

// chords · string ensemble 1
const string_ensemble_1 = note("<A@8 ~@8 B@4 C@4 ~@8 B@4 C@4 ~@4 D E ~@2 D E ~@10 B@4 C@4 B@4 C@4 ~>".pickRestart({
  A: "[~@15 [g5,g6]@112 ~]/8", B: "[eb5,g5]/4", C: "[[g5,g6]@63 ~]/4", D: "[d5,bb5]", E: "[c5,a5]",
})).s("gm_string_ensemble_1").gain(0.16)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~@5 A ~ A ~@5 A ~ A ~
>`.pickRestart({
  A: "~@10 [d5,g5]!2 [bb4,d5,g5] ~@3", // G5 Gm
})).s("gm_electric_guitar_muted").gain(0.33).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~@3 A B C B D E ~@7 F G F G H I H J E ~@7 F G F G H I H J K ~@3 L M N O P M N O Q ~@7 F G F G H I H J F G F G H I H J
  ~
>`.pickRestart({
  A: "~@11 [g3,d4,g4]!2 ~ [g3,d4,g4] ~", // G5
  B: "[g3,d4,g4]!2 ~ [g3,d4,g4] ~@2 [g3,d4,g4] [g3,d4] ~ [g3,d4,g4] [g3,d4] ~ [g3,d4,g4] [g3,d4] ~ [g3,d4,g4]", // G5
  C: "[g3,d4] ~ [g3,d4,g4]!2 ~ [g3,d4,g4] [g3,d4] ~ [g3,d4,g4] [g3,d4] ~ [g3,d4,g4] [g3,d4] ~ [g3,d4,g4] ~", // G5
  D: "[g3,d4] ~ [g3,d4,g4]!2 ~ [g3,d4,g4] [g3,d4] ~ [g3,d4,g4] [g3,d4] ~ [g3,d4,g4] [g3,d4]@3 ~", E: "[g3,d4,g4]@15 ~",
  F: "[eb4,g4,c5] ~@2 [eb4,g4,c5] ~@2 [eb4,g4,c5]!2 ~ [eb4,g4,c5] [eb4,g4] ~ [eb4,g4,c5]!2 ~ [eb4,g4,c5]", // Cm Eb Cm
  G: "[eb4,g4] ~ [eb4,g4,c5]!2 ~ [eb4,g4,c5] [eb4,g4] ~ [eb4,g4,c5]!2 ~ [eb4,g4,c5] [eb4,g4] ~ [eb4,g4,c5] ~", // Eb Cm Eb Cm Eb Cm
  H: "[g3,d4,g4]!2 ~ [g3,d4,g4] ~@2 [g3,d4,g4] d4 ~ [g3,d4,g4] d4 ~ [g3,d4,g4] d4 ~ [g3,d4,g4]", // G5
  I: "d4 ~ [g3,d4,g4]!2 ~ [g3,d4,g4] d4 ~ [g3,d4,g4] d4 ~ [g3,d4,g4] d4 ~ [g3,d4,g4] ~", // G5
  J: "d4 ~ [g3,d4,g4]!2 ~ [g3,d4,g4] d4 ~ [g3,d4,g4] d4 ~ [g3,d4,g4] [g3,d4]@3 ~", K: "[g3,d4,g4]",
  L: "[g3,bb3,d4,g4]@3 ~", M: "[a3,c4,e4,a4]@13 ~@3",
  N: "[bb3,d4,g4] ~ [bb3,d4,g4]!3 ~ [bb3,d4,g4]!3 ~ [bb3,d4,g4]!3 ~ [bb3,d4,g4]!2", // Gm
  O: "[bb3,d4,g4] ~ [bb3,d4,g4]!3 ~ [bb3,d4,g4]!3 ~ [bb3,d4,g4] [bb3,d4] [c4,e4]@4, ~@11 g4@5", // Gm Bb C
  P: "[g3,bb3,d4]@3 ~, g4 ~@15", Q: "[g3,bb3,d4]@15 ~, g4 ~@15",
})).s("gm_electric_guitar_clean").gain(0.31).pan(0.4)

// chords · lead 5 charang
const lead_5_charang = note(`<
  ~@4 A B C D E F G H E F G H I@2 J@2 A B C D E F G H E F G H I@2 J@2 A B C D ~@12 E F G H E F G H I@2 J@2 A B C D I@2
  J@2 A B C D ~
>`.pickRestart({
  A: "g3@2 [bb3,d4] ~@2 g3 [c4,e4] ~", B: "~@2 g3@2 [d4,f4]@2 g3@2 [c4,e4] ~ [bb3,d4] ~ [c4,e4]@3 ~, ~@10 g3@5 ~",
  C: "g3@2 [bb3,d4] ~@2 g3 [a3,e4] ~", D: "~@2 g3@2 [bb3,f4]@2 g3@2 [c4,e4] ~ [bb3,d4] ~ [c4,e4]@4, ~@10 g3@5 ~",
  E: "g2@2 [bb3,d4] ~@2 g2 [c4,e4] ~", F: "~@2 g2@2 [d4,f4]@2 g2@2 [c4,e4] ~ [bb3,d4] ~ [c4,e4]@3 ~, ~@10 g2@5 ~",
  G: "g2@2 [bb3,d4] ~@2 g2 [a3,e4] ~", H: "~@2 g2@2 [bb3,f4]@2 g2@2 [c4,e4] ~ [bb3,d4] ~ [c4,e4]@4, ~@10 g2@5 ~",
  I: "[[c4,eb4]@5 ~ [c4,eb4] ~ [b3,eb4]@5 ~ [bb3,eb4,g4]@7 ~ [bb3,eb4,g4]@2 [b3,eb4]@3 ~ [b3,eb4]@3 ~, g4@13 ~@11 g4@7 ~]/2", // Cm B Eb B
  J: "[[c4,eb4]@5 ~ [c4,eb4] ~ [b3,eb4]@5 ~ [bb3,eb4,g4]@7 ~ eb4@2 [b3,eb4]@3 ~ [b3,eb4]@3 ~, g4@13 ~@9 g4@9 ~, ~@22 bb3 ~@9]/2", // Cm B Eb B
})).s("gm_lead_5_charang").gain(0.14)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@8 A ~ B ~ C@2 D@2 E F E G H I J K L ~ B ~ M@2 D@2 E F E G H I J K ~@12 A ~ B ~ C@2 D@2 E F E G H I J K E F E G H I J
  K ~
>`.pickRestart({
  A: "~ d4 ~ f4 ~ f4 g4 ~ f4 g4 ~ a4@3 ~@2", B: "~ d4 ~ f4@2 g4 ~ g4 f4 g4@3 ~@4",
  C: "[~ d4 ~ f4@2 g4 ~ g4 ~ g4 ~ c5@3 ~ bb4@3 ~@14]/2", D: "[~ d4 ~ f4@2 d4 ~ c4 ~ bb3@9 ~@14]/2",
  E: "~ g4 ~ bb4!3 b4 c5 ~@8", F: "~@9 c5@7", G: "~ c5@10 ~@2 bb4 ~ bb4", H: "~ g4 ~ c5@5 ~ bb4@7", I: "~ g4@7 ~@8",
  J: "~@3 c5@5 ~ bb4@6 ~", K: "~ g4@10 ~@5", L: "~ d4 ~ f4 ~ g4 ~ g4 ~ f4 ~ g4 ~ a4@3",
  M: "[~ d4 ~ f4@2 g4 ~ g4 ~ g4 ~ c5@12 ~@9]/2",
})).s("gm_lead_2_sawtooth").gain(0.39)

// drums · kick
const kick = s("bd").struct("<A@11 B A@3 B A@7 B A@3 B A@3 B A@13 C A C A D A@5 B A@3 B A@7 B A@8 ~>".pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~@2 x", C: "x!3 ~", D: "x",
})).gain(0.72)

// drums · clap
const clap = s("cp").struct("<~@4 [~ x ~ x]!36 ~@12 [~ x ~ x]!24 ~>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@3 A B@35 C B@3 C B D B E B F B@26 ~>".pickRestart({
  A: "~@14 x!2", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~@4 x ~@4 x!7", E: "~@4 x ~@7 x ~@2 x", F: "~ x!15",
})).gain(0.56)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A@3 B C A@10 D A@7 D A@7 D A@3 D A@3 E C A@2 B A B A B A B A D A@7 D A@3 D A@3 D A@3 D A@3 D ~
>`.pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "~ x!7", D: "x!7 ~", E: "x!6 ~ x",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@3 A ~@11 B ~@7 B ~@7 B ~@3 B ~@3 A ~@3 A ~ A ~ A ~ A ~ B ~@7 B ~@3 B ~@3 B ~@3 B ~@3 B ~
>`.pickRestart({
  A: "~@3 x", B: "~@7 x",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@35 A ~@3 A@3 ~ A@3 ~@21 A ~@4>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · bongos
const bongos = s("bongo:18").struct("<[~@12 x!4]!76 ~>").gain(1.26)

// drums · congas
const congas = s("conga:13").struct(`<
  A B A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B C B C B C B C B C B C B C B C B ~
>`.pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!6", B: "x", C: "x ~ x!2 ~@2 x!3 ~ x!2 ~ x!3",
})).gain(1.28)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@3 x!2 ~@11", B: "~@3 x ~@4",
})).gain(1.28)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "x ~@2 x ~ x ~@2", B: "x ~@2 x!2 ~@5 x ~@5",
})).gain(1.28)

// drums · ht
const ht = s("ht").struct("<~ A ~ A ~ A ~ A ~@33 A ~ A ~@33>".pickRestart({
  A: "~@13 x ~@2",
})).gain(0.48)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct(`<
  ~@2 A ~ A ~ A ~ A ~@7 A ~@7 A ~@7 A ~@7 A ~ A ~ A ~ A ~ A ~ A ~@9 A ~@7 A ~@8
>`.pickRestart({
  A: "x",
})).gain(3.06)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@4 [x!16]!72 ~>").gain(1.62)

// drums · triangle
const triangle = s("triangles:35").struct(`<
  A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B A B A B A B A B C B A B C
  B A B C B A B C B A B C B A B C B ~
>`.pickRestart({
// … 16 more lines

More by Bee Gees