Strudelify
Please Don't Go (dub reprise) cover art

1992 · Please Don't Go

Please Don't Go (dub reprise)

Double You

KeyB♭ majorTempo120 bpm
0:00/0:00
// Please Don't Go (dub reprise) — Double You
// 120 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 1 "+808 TOM" (synth drum patch on one pitch) is played as the kit's tom
// note: Full arrangement: all 185 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@23 A B C D E B C D F B C D E B C D F G D H E G D H F B C D E B C D F G D H E G D H F B C D E B C D F ~@3 I B C D F G
  D H E G D H F G D H E G D H F G D H E G D H F ~@16 B C D E B C D F G D H E G D H F G D H E G D H F G D H E G D H F G D
  H E G D H F ~@8 G D H E G D H F G D H E G D H F ~
>`.pickRestart({
  A: "~@12 eb1 g1 bb1 g1", B: "bb1!3 ~ bb1 ~ bb1!2 ~ bb1!2 ~ bb1@2 bb1 g1",
  C: "~ g1!2 ~ g1 ~ g1!2 ~ g1!2 ~ g1@2 g1 ab1", D: "~ ab1!2 ~ ab1 ~ ab1!2 ~ ab1!2 ~ ab1@2 ab1 eb1",
  E: "~ eb1!2 ~ eb1 ~ eb1!3 f1 ab1 bb1 ab1 f1 eb1 bb1", F: "~ eb1!2 ~ eb1 ~ eb1!3 f1 ab1 c2 ab1 f1 eb1 bb1",
  G: "bb1!3 ~ bb1 ~ bb1!2 ~ bb1!2 ~ bb1@2 bb1 ab1", H: "~ eb1!2 ~ eb1 ~ eb1!2 ~ eb1!2 ~ eb1@2 eb1!2",
  I: "~@9 f1 ab1 bb1 ab1 f1 eb1 bb1",
})).s("gm_electric_bass_finger").gain(0.37)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@16 A B C D A B C D A B C D A B C D A B C D A B C D E F G D E F G D A B C D A B C D E F G D E F G D A B C D A B C D A
  B C D A B C D E F G D E F G D E F G D E F G D E F G D E F G D ~@16 A B C D A B C D E F G D E F G D ~@8 E F G D E F G D
  E F G D E F G D ~@8 E F G D E F G D E F G D E F G D ~
>`.pickRestart({
  A: "~@2 [f4,bb4,eb5]@2 ~ [f4,bb4,d5]@2 ~ [f4,bb4,eb5]@2 ~ [f4,bb4,d5]@2 ~ [f4,bb4,d5]@2", // Ebsus2 Bb Ebsus2 Bb
  B: "~@2 [f4,bb4,eb5]@2 ~ [f4,bb4,d5]@2 ~ [f4,bb4,eb5]@2 ~ [f4,bb4,d5]@2 ~ [ab4,bb4,c5]@2", // Ebsus2 Bb Ebsus2 Bb Ab
  C: "~@2 [ab4,c5,eb5]@2 ~ [ab4,bb4,d5]@2 ~ [ab4,c5,eb5]@2 ~ [ab4,bb4,d5]@2 ~ [g4,bb4]@2", // Ab Bb7 Ab Bb7 Gm
  D: "~@2 [g4,bb4,eb5]@2 ~ [g4,bb4,d5]@2 ~ [g4,bb4,eb5]@2 ~ [g4,bb4,d5]@2 ~ [f4,bb4,d5]@2", // Eb Gm Eb Gm Bb
  E: "~@2 [f4,bb4,eb5]@2 ~ [f4,bb4,d5]@2 ~ [f4,bb4,eb5]@2 ~ [f4,bb4,d5]@2 ~ [f4,ab4,c5]@2", // Ebsus2 Bb Ebsus2 Bb Fm
  F: "~@2 [ab4,c5,eb5]@2 ~ [ab4,bb4,d5]@2 ~ [ab4,c5,eb5]@2 ~ [ab4,bb4,d5]@2 ~ [eb4,g4,bb4]@2", // Ab Bb7 Ab Bb7 Eb
  G: "~@2 [g4,bb4,eb5]@2 ~ [g4,bb4,d5]@2 ~ [g4,bb4,eb5]@2 ~ [g4,bb4,d5]@2 ~ [g4,bb4]@2", // Eb Gm Eb Gm
})).s("gm_percussive_organ").gain(0.23)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@28 A@4 ~@8 B C D E B C D E ~@8 B C D E B C D E F@2 G H A@4 ~@8 B C D E B C D E B C D E B C D E B C D E B C D E ~@48
  B C D E B C D E ~@8 B C D E B C D E B C D E B C D I@2
>`.pickRestart({
  A: "[f5@6 d5@2 eb5@3 f5@3 f5@8 d5@2 eb5@3 f5@3 eb5@8 d5@2 eb5@3 d5@3 bb4@18]/4", B: "[f4,f5] [d4,d5] [f4,f5] [d5,d6]",
  C: "[c5,c6]@2 [eb4,eb5] [c5,c6]", D: "[bb4,bb5]",
  E: "[bb4,bb5]@6 [eb4,eb5] [f4,f5] [g4,g5]@2 [f4,f5]@2 [eb4,eb5]@2 [g4,g5]@2", F: "f6/2", G: "eb6", H: "bb5",
  I: "[[bb4,bb5]@6 [eb4,eb5] f4 [g4,g5]@2 [f4,f5]@2 [eb4,eb5]@2 [g4,g5]@10 ~@8, ~@7 f5@2 ~@23]/2", // Bb Eb G F Eb G
})).s("gm_string_ensemble_1").gain(0.3)

// other · alto sax
const alto_sax = note(`<
  ~@64 A B A B A B A B ~@24 A B A B A B A B ~@24 A B A B A B A B ~@16 A B A B A B A B ~@16 A B A B A B A B ~
>`.pickRestart({
  A: "~ bb4 ~@2 f4 ~@3 f4 ~@2 f4 ~@2 f4 ~", B: "~@2 bb4 ~ f4!2 ~@2 f4 ~@2 f4 ~ f4 g4 ~",
})).s("gm_alto_sax").gain(0.56)

// other · alto sax · soft notes
const alto_sax_soft = note(`<
  ~@64 A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@7 f4 ~@8",
})).s("gm_alto_sax").gain(0.32)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<A B C D E B C D A B C F A B C F A B C F ~@92 G@8 ~@65>".pickRestart({
  A: "[bb2,f3,bb3,c4,f4]", B: "[g2,f3,bb3,c4,f4]", C: "[ab2,eb3,bb3,c4,eb4]", D: "[c3,g3,bb3,c4,eb4,f4]",
  E: "[bb2,f3,bb3,c4,d4,f4]", F: "[c3,bb3,c4,eb4,f4]",
  G: "[bb2@16 g2@15 ~ [ab2,eb3]@16 [c3,g3]@16 [bb2,d4]@16 g2@15 ~ [ab2,eb3]@16 [c3,g3]@16, [bb3,c4], [f3,f4] eb4 [f3,f4] eb4]/8", // Ab5 C5 Bb Ab5 C5 Bbsus2 F
})).s("gm_string_ensemble_2").gain(0.13)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@8 A ~@2 B A ~@2 B A ~@2 B ~@95 C ~@3 C ~@65>".pickRestart({
  A: "d4", B: "g3", C: "f4",
})).s("gm_string_ensemble_2").gain(0.08)

// other · recorder
const recorder = note("<A ~ B C D E F G A ~ B C D E F G ~@96 A ~ B C D E F G ~@65>".pickRestart({
  A: "bb5 ~@2 bb5 ~ bb5 ~@2 bb5 ~@2 bb5 ~ bb5 ~@2", B: "~@5 bb6 ~@2 bb6 ~@2 bb6 ~ bb6 ~@2", C: "bb6 ~@2 bb6 ~@12",
  D: "~@3 bb5 ~ bb5 ~@2 bb5 ~@2 bb5 ~ bb5 ~@2", E: "bb5 ~@15", F: "~@3 bb6 ~ bb6 ~@2 bb6 ~@2 bb6 ~ bb6 ~@2",
  G: "bb6 ~@15",
})).s("gm_recorder").gain(0.05)

// other · recorder · soft notes
const recorder_soft = note("<~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~@97 A ~ B ~ C ~ D ~@65>".pickRestart({
  A: "bb5 ~@2 bb5 ~ bb5 ~@10", B: "~@5 bb6 ~@2 bb6 ~@2 bb6 ~@4", C: "~@3 bb5 ~ bb5 ~@2 bb5 ~@7",
  D: "~@3 bb6 ~ bb6 ~@2 bb6 ~@7",
})).s("gm_recorder").gain(0.03)

// other · piano · "A.PIANO 1"
const piano = note(`<
  ~@8 A@2 B C D E F G H I H ~@13 J@2 B C D E F G K L M N K L O@2 P Q R@2 S E T U K L V N K L W@3 ~@7 X Y Z@2 D E F AA K
  L AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP ~@15 A@2 B C D E AQ@2 H I H ~@36 I K L AB N K L AR@2 ~@17
>`.pickRestart({
  A: "[f5@3 ~@3 d5@2 eb5@2 f5@2 ~@2 f5@3 eb5 d5@3 ~@9 bb4@2]/2", B: "~@6 d5@2 eb5 ~ eb5@2 ~@3 bb4",
  C: "bb4@3 ~@11 d5 ~", D: "f5@3 eb5 d5@3 ~@3 d5!2 eb5 ~ f5 ~", E: "f5@3 eb5 d5@4 ~@6 d5@2",
  F: "eb5!2 ~@4 d5@2 eb5@2 ~ eb5@2 d5 ~@2", G: "~ bb4@3 ~@6 d5@2 ~@2 g4@2, c5 ~@7", H: "f4 ~@3", I: "~@10 d5@3 ~ g4@2",
  J: "[f5@3 ~@3 d5@2 eb5@2 f5@2 ~@2 f5@3 eb5 d5@3 ~@11]/2", K: "f4@4 ~@10 d5 ~", L: "f5@11 eb5 d5@3 c5",
  M: "bb4@4 ~@2 d5@2 ~@2 eb5@3 d5 c5 ~", N: "bb4@5 ~@5 d5@2 ~@2 g4@2",
  O: "[bb4@5 ~ bb4 c5 d5@4 c5 ~ c5 bb4@6 ~@9 f5 ~]/2", P: "f5@4 ~@6 d5@2 ~ eb5 f5@2", Q: "f5 ~ d5@3 ~@9 d5 ~",
  R: "[eb5@4 ~@2 d5 ~ eb5@3 ~ d5 ~@2 bb4@8 ~@6 d5 f5 ~, ~@7 c5 ~@8]/2", S: "f5@3 eb5 d5@4 ~@6 [d5,f5] ~",
  T: "eb5 ~ eb5@3 ~ d5 ~ eb5@3 d5 eb5@3 d5", U: "c5 bb4@7 ~@2 d5@2 ~@2 g4@2", V: "bb4@4 ~@2 d5@2 ~@2 eb5@4 d5 c5",
  W: "[bb4@5 ~ bb4 c5 d5@4 c5 ~@2 bb4@4 ~@3 d5@2 ~@2 g4@2 ~@3 f4@6 ~@11, ~@7 c5 ~@7 g4 ~@8]/3",
  X: "f5@4 ~@2 d5@2 eb5 ~ f5@2 ~@2 f5@2", Y: "~@2 eb5 d5@5 ~@6 bb4@2",
  Z: "[~@6 d5@2 eb5 ~ eb5@2 ~@2 bb4 bb4@3 ~@12 d5 ~]/2", AA: "c5 bb4@6 ~@2 bb4 d5@2 ~ g4@2 ~",
  AB: "bb4@5 ~ d5@2 ~@2 eb5@3 ~ d5 c5", AC: "bb4@5 ~ g5@2 ~@2 f5@2 ~@2 f5@2", AD: "~@10 d5@2 eb5 ~ f5 ~",
  AE: "f5@3 eb5 d5@4 ~ d5 d5@2 eb5 ~ f5 ~", AF: "f5@3 eb5 d5@5 ~ eb5!2 ~@2 f5@2",
  AG: "~@2 f5@2 ~@2 f5@2 ~@2 f5@2 ~@2 f5 ~", AH: "g5@3 f5 d5@4 ~@2 d5!2 eb5 ~ f5 ~",
  AI: "f5@4 eb5@3 ~@3 d5!2 eb5 ~ f5 ~", AJ: "f5 eb5@3 ~ g5@2 eb5", AK: "~@2 g5@4 eb5@3 ~ eb5@2 ~@2 [eb5,bb5] ~",
  AL: "[f5,bb5]@3 [eb5,g5] [d5,f5]@5 ~ [f5,bb5]@2 ~@2 [f5,bb5] ~", // Bb5 Eb Dm Bb5
  AM: "[f5,bb5]@2 g5@6 ~@2 d5@2 eb5 ~ f5 ~, ~ eb5@2 ~@5", AN: "f5@3 eb5 d5@3 ~@3 [eb5,bb5]@2 ~@2 [f5,bb5]@2",
  AO: "~@2 [f5,bb5]@2 ~@2 [f5,bb5]@2 ~@2 [f5,bb5] ~ [f5,bb5] ~ [g5,c6]@2", AP: "~ [f5,bb5] [d5,f5]@6 ~@8",
  AQ: "[eb5!2 ~@4 d5@2 eb5@2 ~ eb5@2 d5 ~ c5@2 bb4@3 ~@6 d5@2 ~@2 g4@2]/2",
  AR: "[bb4@4 ~@2 bb4 c5 d5@4 c5 ~ c5 bb4@7 ~@10]/2",
})).s("gm_piano").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  ~@20 A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B ~@4 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 ~@4 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 ~@8 A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2",
})).gain(0.8)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@20 A@11 ~ A@23 ~ A@16 ~@4 A@36 ~@8 A@16 ~@8 A@16 B@8 A@16 ~>".pickRestart({
  A: "~@7 x ~@8", B: "x ~@6 x!2 ~@7",
})).gain(0.24)

// drums · clap
const clap = s("cp").struct("<~@32 [~ x ~ x]!80 ~@8 [~ x ~ x]!64 ~>").gain(0.72)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@32 [~@7 x ~@8]!80 ~@8 [~@7 x ~@8]!64 ~>").gain(0.16)

// drums · snare
const snare = s("sd").struct(`<
  ~@20 A B A B A B A B A B A C D E D E D E D E D E D E D E D E D E D E D E D F D E D E D E D E D E D E D E D E D E D E D
  E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E ~@8 D E D E D E D E D E D E D E D E ~@7 G D E D
  E D E D E D E D E D E D E@8 H D E D E D E D E D E D E D E D E ~
>`.pickRestart({
  A: "~@4 x ~@6 x!2 ~@2 x", B: "~@4 x ~@6 x!2 ~@3", C: "~@4 x ~@5 x ~ x!4", D: "~@4 x ~ x!2 ~ x ~ x!2 ~@2 x",
  E: "~@4 x ~ x!2 ~ x ~ x!2 ~@3", F: "~@3 x!5 ~ x!7", G: "~@10 x ~ x!4", H: "~@4 x ~ x!2 ~ x!7",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@20
  [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!116
  ~@8
  [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!16
  ~@8
  [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!16
  ~
>`).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@20 [~ x ~ x ~ x ~ x]!116 ~@8 [~ x ~ x ~ x ~ x]!16 ~@8 [~ x ~ x ~ x ~ x]!16 ~>")
  .gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@20 A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B ~@4 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 ~@4 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 ~@8 A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~@3 A ~@7 A ~@23 A ~@19 A ~@43 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@8
>`.pickRestart({
  A: "x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@16
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!96
  ~@8
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!16
  ~@8
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!40
  ~
>`).gain(0.4)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@16
  [~ x ~@3 x ~@3 x ~@3 x ~@2]!96
  ~@8
  [~ x ~@3 x ~@3 x ~@3 x ~@2]!16
  ~@8
  [~ x ~@3 x ~@3 x ~@3 x ~@2]!40
  ~
>`).gain(0.16)

// drums · shaker
// … 25 more lines

More by Double You