Strudelify

Neutron Dance

The Pointer Sisters

KeyE majorTempo108 bpm
0:00/0:00
// Neutron Dance — The Pointer Sisters
// 108 bpm, 2/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 1 "HONKY-TONK" piano (copy of ch 5 "A.PIANO 1" piano)
// note: Full arrangement: all 194 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/2)

// 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 · synth bass 2 · "BASS"
const bass = note(`<
  ~ A B@2 C@2 B@2 D@2 E F G F@2 H I F E F G F E F G F E F G F@2 H I A B@2 C@2 B@2 D@2 E F G F E F G F E F G F E F G F@2
  H I A B@2 C@2 B@2 J K@3 L K@2 M N F@3 G F@2 O I F E F G F E F G F E F G F E F G F@3 P K@3 L K@2 M N F@3 G F@2 O I Q
  ~@15 K@3 L K@2 M N F@3 G F@2 O I F G F G F G H I A B@2 C@2 B@2 R A B@2 C@2 B@2 R A B@2 C@2 B@2 R A B@2 ~@6
>`.pickRestart({
  A: "e1!2 e1@2 g#1@2 g#1@2", B: "[b1@2 b1@2 c#2@2 c#2 d2@2 d2 d2@2 c#2@2 ~@2]/2",
  C: "[b1@2 b1@2 g#1@2 g#1 e1@2 e1 e1@2 g#1@2 g#1@2]/2", D: "[b1@2 b1@2 g#1@2 g#1 e1@2 e1 e1@2 e1@2 e1@2]/2",
  E: "e1!3 ~", F: "e1!4", G: "e1@2 e1@2 e1 b0 c#1@2", H: "e1!2 c#1!2", I: "d1!2 d#1!2", J: "b1!2 g#1!2", K: "a1!4",
  L: "a1 f#1 g1 g#1", M: "a1!2 f#1!2", N: "g1!2 g#1 a1", O: "e1!2 e1@2 c#1@2 c#1@2", P: "e1!3 g#1", Q: "e1 ~@3",
  R: "b1@2 b1@2 g#1@2 g#1 e1",
})).s("gm_synth_bass_2").gain(0.64)

// bass · synth bass 2 · "BASS" · soft notes
const bass_soft = note(`<
  ~@3 A ~@3 A ~@2 B ~@7 B ~@3 B ~@3 B ~@8 A ~@3 A ~@2 B ~@3 B ~@3 B ~@3 B ~@8 A ~@3 A ~@18 B ~@3 B ~@3 B ~@3 B ~@64 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A C@2 D@2 E@2
>`.pickRestart({
  A: "~@3 c#2", B: "~@3 e1", C: "[b1@2 b1@2 g#1@2 g#1 e1@2 e1 e1@2 g#1@2 g#1@2]/2",
  D: "[b1@2 b1@2 c#2@2 c#2 d2@2 d2 d2@2 c#2@2 c#2@2]/2", E: "[b1@2 b1@2 g#1@2 g#1 e1@2 ~@7]/2",
})).s("gm_synth_bass_2").gain(0.4)

// other · acoustic guitar nylon · "A.GUITAR"
const acoustic_guitar_nylon = note("<~@9 A B A B A B A B ~@24 A B A B ~@40 A B A B ~@105>".pickRestart({
  A: "e4 ~@3 b3 ~@3", B: "e4 ~@2 b3 ~ b3 ~ b3",
})).s("gm_acoustic_guitar_nylon").gain(0.46)

// chords · rock organ · "ORGAN"
const rock_organ = note(`<
  ~@8 A@2 B@2 A@2 B@2 C@2 ~@14 A@2 B@2 A@2 D@2 E F@4 ~ A@16 B@2 A@2 B@2 G H@8 ~@8 I@4 ~ A@14 G H@8 ~@23 J H@8 ~@8 K@4
  L@3 M ~@18 N@2 O@4 ~@9
>`.pickRestart({
  A: "[~@7 [b4,d5,e5]@2 [b4,d5,e5]!2 ~@5]/2", // E7
  B: "[[b4,d5,e5] ~@2 [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5]@2 [b4,d5,e5]!2 ~@5]/2", C: "[~@5 g5 f#5 [d5,e5]@5 ~@4]/2",
  D: "[[b4,d5,e5] ~@2 [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5]@2 [b4,d5,e5] ~@6]/2", // E7
  E: "~@11 [e4,g4,a4,c5] [f4,g#4,a#4,c#5] [f#4,g4,a4,a#4,b4,c5,d5,d#5] [g#4,b4,c#5,e5] [a4,a#4,c5,c#5,d5,d#5,f5,f#5]", // Am7 A#m7 C#m7
  F: "[[b4,d5,e5,g5]@60 [a#4,c#5,d#5,f#5] [g#4,a4,b4,c5,c#5,d5,e5,f5] [g4,a#4,c5,d#5]@2]/4", // Em7 D#m7 Cm7
  G: "~@13 [a5,c6,d#6,f6] [a#5,c#6,e6,f#6] [b5,c6,d6,d#6,f6,f#6,g6,g#6]", H: "[c#6,e6,g6,a6]/8",
  I: "[[b4,d5,e5,g5]@60 [a#4,c#5,d#5,f#5] [g#4,a4,b4,c5,c#5,d5,e5,f5] [g4,a#4,c5,d#5] ~]/4", // Em7 D#m7 Cm7
  J: "~@7 [c5,d#5,f#5,g#5] [c#5,e5,g5,a5] [d5,d#5,f5,f#5,g#5,a5,a#5,b5] [e5,g5,a#5,c6] [f5,f#5,g#5,a5,b5,c6,c#6,d6] [g5,a#5,c#6,d#6] [g#5,a5,b5,c6,d6,d#6,e6,f6] [a#5,c#6,e6,f#6] [b5,c6,d6,d#6,f6,f#6,g6,g#6]", // G#7 A7 C7 D#7 F#7
  K: "[b5,e6]/4", L: "[[b5,e6,g6]@9 [c#6,f#6,a6] [b5,e6,g6] [c#6,f#6,a6]]/3",
  M: "[b5,e6,g6] [c#6,f#6,a6] [b5,e6,g6] [c#6,f#6,a6]", N: "[b5,e6,a6]/2", O: "[b5,e6,b6]/4",
})).s("gm_rock_organ").gain(0.46)

// chords · rock organ · "ORGAN" · soft notes
const rock_organ_soft = note("<~@39 A B ~@27 C ~@35 C ~@24 D@4 E@2 ~ F ~@40 G@2 ~@6 G@2 H@2 I@4 ~>".pickRestart({
  A: "~@2 [b4,d5,e5] ~@5", B: "~@8 [b3,d4,e4,g4] [c4,c#4,d#4,e4,f4,f#4,g#4,a4] [d4,f4,g4,a#4] [d#4,f#4,g#4,b4] ~@4",
  C: "~@11 [f#5,a5,c6,d6] [g5,a#5,c#6,d#6] [g#5,b5,d6,e6] ~@2", D: "e6/4", E: "[b5,e6,g#6]/2",
  F: "[c#4,e4,g4,a4] [d4,d#4,f4,f#4,g#4,a4,a#4,b4] [e4,g4,a#4,c5] [f4,f#4,g#4,a4,b4,c5,c#5,d5] [g4,a#4,c#5,d#5] [g#4,a4,b4,c5,d5,d#5,e5,f5] [a#4,c#5,e5,f#5] [b4,d5,f5,g5] ~@8", // A7 C7 D#7 F#7 G7
  G: "[b5,e6,g6]/2", H: "[b5,e6,a6]/2", I: "[b5,e6,b6]/4",
})).s("gm_rock_organ").gain(0.23)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@17 A B@2 C D E@2 ~ A F@2 G H I@2 J K L@2 M K N ~@6 A B@2 C D E@2 ~ A F@2 G H I@2 J K L@2 M K N ~ O P@2 Q@2 R@2 Q@2 S
  T@2 U S T@2 ~@5 V W@2 X Y Z@4 AA@2 X AB AC@2 AD P@2 Q@2 R@2 Q@2 S T@2 U S T@2 J ~@16 P@2 Q@2 R@2 Q@2 S T@2 U S T@2 ~
  AE AF@2 AG@2 AH@2 AI AJ AK@2 AL@2 AM@2 AN AJ AK@2 AL@2 AM@2 AN AJ AK@2 AL@2 AM@2 AN AJ AK@2 ~@6
>`.pickRestart({
  A: "e4!2 g#4!2", B: "[b4@2 ~@2 c#5@2 ~ e5@3 ~@6]/2", C: "~@7 e5",
  D: "[d5,a5]@4 [d5,g5]@4 e5@2 ~@2 c#5@3 d#5, ~@2 c#5 ~, ~@10 e5@5 ~", // D5 G5
  E: "[b4@2 [a4,b4]@2 [g4,a4] ~ b4 [e4,g4]@3 ~@6, d5 ~@31]/2", F: "[b4@2 b4@2 c#5@2 ~ [e5,g#5]@5 ~@4]/2",
  G: "~@5 c#5@2 ~", H: "[d5,e5]!2 [c#5,e5] ~", I: "[[b4,e5]@2 [b4,g5]@2 e5@2 [b4,d5] [e4,e5]@3 ~@6, ~@4 g4 ~@11]/2",
  J: "~@11 [f5,f#5] [g5,b5]@4", K: "[e5,g#5] ~", L: "[c#6 [d6,d#6] ~@24 d6@2 b5@4, ~ e6@25 ~@6]/2",
  M: "f5 g5@3 ~@6 e5 [g5,b5]@5, ~ f#5 ~@9 [f5,f#5] ~@4", N: "~ e6@2 d6@2 a#5 b5@2 g#5@4 ~@4, ~ d#6 ~@14",
  O: "~@4 c#5 e5@3", P: "[[g5,b5,e6]@4 [f#5,b5,e6]@3 [e5,a5,e6]@3 ~@2 c#5@2 e5@2]/2",
  Q: "[[g5,b5,e6]@2 [g5,b5,e6]@2 [g5,b5,e6]@2 [f#5,b5,e6] [e5,a5,e6]@3 ~@3 e5@3]/2", // Em Esus2 A5
  R: "[[g5,b5,e6]@4 [f#5,b5,e6]@3 [e5,a5,e6]@3 ~@3 e5@3]/2", S: "[b4,e5,f#5]!4",
  T: "[[b4,e5,f#5]!3 [b4,e5,f#5]@2 [b4,e5,f#5]@2 [b4,e5,f#5]@3 ~@6]/2", U: "~@2 b4 c#5", V: "[e4,e5]!2 [g#4,g#5]!2",
  W: "[[b4,b5] [b4,b5]@2 [c#5,c#6]@2 [e5,e6]@2 [e5,e6]@3 ~@6]/2", X: "~@5 c#5@2 b4", Y: "d5!2 c#5!2",
  Z: "[b4@2 b4@2 a4@2 g4 a4@2 g4 ~ c#5@2 e5@2 g5@2 e5 g5@2 ~@3 a5@3 g5@2 e5@2 e5@2]/4",
  AA: "[[b4,e5,g#5]@2 [b4,e5,g#5]@2 ~ [b4,e5,g#5]@2 [b4,e5,g#5]@2 [e5,g#5,b5] ~@6]/2", AB: "e5@2 c#5 e5@3 c#5@2",
  AC: "[e5@2 c#5@2 e5 c#5@2 e5@3 ~@6]/2", AD: "~ d5@2 d5@2 e5@3", AE: "a5 g5 e5 d5",
  AF: "[e5@2 d5 e5@3 d5 e5@2 g#5 ~@6]/2", AG: "[~@7 [d5,e5]@3 [d5,e5]@2 [c#5,e5]@2 [c#5,e5]@2]/2",
  AH: "[[b4,e5]@2 [b4,e5]@2 [a4,e5]@2 [g4,e5] [a4,e5]@2 [g4,e5] ~@6]/2", // E5 A5 C A5 C
  AI: "~@3 [e5,b5,d6]@2 [e5,a5,c#6]@2 [e5,a5,c#6]", AJ: "[e5,a5,c#6] [e5,g5,b5] ~@6",
  AK: "[[b4,e5,g#5]!3 [b4,e5,g#5]@2 [b4,e5,g#5]@2 [b4,e5,g#5]@2 [e5,g#5,b5] ~@6]/2", // E
  AL: "[~@3 [e5,b5,d6]@2 [e5,a#5,c#6]@2 [e5,a#5,c#6]@2 [e5,g5,b5] ~@6]/2", // E7 A#dim Em
  AM: "[[b4,e5,g#5]!3 [b4,e5,g#5]@2 [b4,e5,g#5]@2 [b4,e5,g#5]@3 ~@6]/2", // E
  AN: "~@3 [e5,b5,d6]@2 [e5,a#5,c#6]@2 [e5,a#5,c#6]", // E7 A#dim
})).s("gm_piano").gain(0.5)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@18 A ~ B ~ C ~@3 D ~ E F G ~ H ~ I ~ J ~ K ~@7 A ~ B ~ C ~@3 D ~ E F G ~ H ~ I ~ J ~ K ~@5 L ~ L ~ L ~@21 M ~@9 L ~
  L ~ L ~@7 H ~@19 L ~ L ~ L ~@43 N@2 O@2 P ~
>`.pickRestart({
  A: "~@2 b4@2 ~@2 c#5 ~", B: "~@5 c#5@2 ~", C: "~@5 [g#4,b4] ~@2", D: "~@6 [e5,g#5] ~", E: "~@7 b4", F: "~@3 [c#5,e5]",
  G: "~@5 g#4 ~@2", H: "~@11 e5 ~@4", I: "c6 ~@15", J: "e5 ~@9 d#5 ~@5", K: "[c#6,d6] ~@4 [g#5,a5] ~@10",
  L: "~@4 c#5 ~@3", M: "~@4 [b4,e5,g#5] ~@3", N: "[~@3 [e5,b5,d6]@2 [e5,a#5,c#6]@2 [e5,a#5,c#6]@2 [e5,g5,b5] ~@6]/2",
  O: "[[b4,e5,g#5]!3 [b4,e5,g#5]@2 [b4,e5,g#5]@2 [b4,e5,g#5]@3 ~@6]/2", // E
  P: "~@3 [e5,b5,d6]@2 [e5,a#5,c#6]@2 [e5,a#5,c#6]", // E7 A#dim
})).s("gm_piano").gain(0.29)

// chords · acoustic guitar steel · "E.GUITAR"
const acoustic_guitar_steel = note("<~@17 A@24 B@4 A@23 ~ C@8 A@8 B@4 A@16 C@8 A@8 D ~@15 C@8 A@48 ~>".pickRestart({
  A: "[g#3,b3,d4,e4]!4", B: "[g3,b3,d4,e4]!4", C: "[g3,a3,c#4,e4]!4", D: "[g#3,b3,d4,e4] ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.45)

// other · english horn · "HORN"
const english_horn = note(`<
  ~@17 A B C D C B E F G B E F G B E F ~@12 A B C D C B E H G B E H G B E H ~@28 A B C D C B E H G B E H G B E H ~@48 C
  B E I C B E I C B E I C B E I C B E I C B E I C B E I C B E I C B C F ~@5
>`.pickRestart({
  A: "~@3 e4!3 ~ e3", B: "e4!2 ~ d4 ~ e4 ~@2", C: "~@3 e3 e4!2 ~ e3", D: "[d4,e4]!2 ~ [d4,g4] ~ e4 ~@2",
  E: "~@3 e3 ~ e4 ~ e3", F: "d4!2 ~ g4 ~@4", G: "~@3 e3 e4 ~@2 e3", H: "d4 ~@2 g4 ~@4", I: "d4 ~@2 g4 ~ e4 ~@2",
})).s("gm_english_horn").gain(0.33)

// other · english horn · "HORN" · soft notes
const english_horn_soft = note(`<
  ~@23 A ~ B ~ A ~ B ~ A ~@19 A C B ~ A C B ~ A C ~@34 A C B ~ A C B ~ A C ~@50 A C ~@2 A C ~@2 A C ~@2 A C ~@2 A C ~@2
  A C ~@2 A C ~@2 A C ~@3 B D E D F ~
>`.pickRestart({
  A: "~@4 e4 ~@3", B: "~@5 e4 ~@2", C: "~ d4 ~@6", D: "~@3 e3 e4!2 ~ e3", E: "e4!2 ~ d4 ~ e4 ~@2",
  F: "d4!2 ~ g4 ~ e4 ~@2",
})).s("gm_english_horn").gain(0.19)

// other · lead 1 square · "SYNTH LEAD"
const lead_1_square = note(`<
  ~@69 A B A C A B A D E F E G E F E G ~@20 A B A C A B A D E F E G E F E H ~@16 A B A C A B A D E F E G E F E G ~@41
>`.pickRestart({
  A: "~@3 a2 a3 g3 f#3 e3", B: "~ a2 ~ a2 ~ a3 ~ a3", C: "~@5 a3 ~ a2", D: "~@3 a3 ~ a2 ~@2", E: "~@3 e2 e3!2 ~ e2",
  F: "e3!2 ~ d3 ~ e3 ~@2", G: "d3!2 ~ g3 ~ f3 ~@2", H: "d3!2 ~ g3 ~@4",
})).s("gm_lead_1_square").gain(0.56)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!192 ~>").gain(0.7)

// drums · snare
const snare = s("sd").struct(`<
  A B@7 C B@7 D B@15 D B@7 D B@3 D B@15 D B@7 D B@7 D B@11 D B@7 D B@7 D B@7 D B@7 D ~@16 B@7 D B@15 D B@7 D B@7 D B@7 D
  B@7 D ~
>`.pickRestart({
  A: "~@5 x!3", B: "~ x ~ x", C: "~@2 x ~@2 x!2 ~", D: "~@2 x ~@2 x!3",
})).gain(0.7)

// drums · clap
const clap = s("cp").struct("<~@77 A B A B A B A B ~@28 A B A B A B A ~@25 A B A B A B A B ~@41>".pickRestart({
  A: "~ x ~ x", B: "~ x!3",
})).gain(0.54)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B C A@2 D A@3 B A@3 B C A@2 B A@3 B A@3 B A@3 B C A@2 B C A@2 B A@3 B C A@2 B A@3 B A@3 B A@3 B C A@2 B C A@2 B
  C A@2 B A@3 B C A@10 B C A@2 B A@3 B A@3 B A@3 B A@7 B C A@6 B E@16 C A@2 B A@3 B C A@7 C A@2 B C A@2 B C A@2 B A@3 B
  C A@2 B C A@2 B C A@2 B A@3 B C A@2 B A@3 B ~
>`.pickRestart({
  A: "x ~ x!3 ~ x!2", B: "x ~ x!6", C: "~@2 x!3 ~ x!2", D: "x ~ x!5 ~", E: "~ x ~ x",
})).gain(0.62)

// drums · mid tom
const mid_tom = s("mt").struct("<~@121 A B A C A B A D ~ E ~ F ~ E ~ F ~@57>".pickRestart({
  A: "~@2 x!2 ~@4", B: "x ~ x!2 ~ x ~@2", C: "x ~ x!2 ~@2 x!2", D: "x!2 ~ x!2 ~ x!2", E: "x!2 ~ x ~ x!2 ~",
  F: "x!2 ~ x ~ x ~ x",
})).gain(0.62)

// drums · high tom
const high_tom = s("ht").struct("<~@121 A B A C A B A D E ~ E F E ~ E F ~@57>".pickRestart({
  A: "~@4 x ~ x!2", B: "~ x", C: "~@4 x!2 ~@2", D: "~@2 x ~@2 x ~@2", E: "x!4 ~ x!2 ~", F: "~@3 x",
})).gain(0.7)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@2 B ~@8 A ~@15 A ~@3 A ~@7 A ~@15 A ~@3 A ~@3 A ~@7 A ~@11 A ~@23 A ~@23 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A
  ~@3 A ~@7 A ~@8
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.7)

// drums · tambourine
const tambourine = s("tb").struct("<~@77 A@8 ~@20 A@3 B A B A C A@7 ~ C@16 ~@8 A@8 ~@41>".pickRestart({
  A: "x ~ x!3 ~ x!2", B: "x!5 ~ x!2", C: "x!8",
})).gain(0.54)

stack(
  bass, bass_soft, acoustic_guitar_nylon, rock_organ, rock_organ_soft, piano, piano_soft, acoustic_guitar_steel,
  english_horn, english_horn_soft, lead_1_square, kick, snare, clap, low_tom, hihat, mid_tom, high_tom, crash,
  tambourine
)

More by The Pointer Sisters