Strudelify

This Is the Right Time

Stansfield Lisa

KeyE♭ majorTempo120 bpm
0:00/0:00
// This Is the Right Time — Stansfield Lisa
// 120 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 129 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: edit a riff to change every repeat.

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@6 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 ~@4 A@2 B@2 A@2 B@2 C@2 D@2 E@2 F@2
  G@2 H@2 I@2 J@2 K@4 L@2 ~@8 A@2 B@2 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 F@2 G@2 H@2 I@2 F@2 G@2 H@2 I@2 ~@5
>`.pickRestart({
  A: "[[db3,f3,ab3]@5 ~ [c3,eb3,g3,bb3]@9 ~, c4@3 ~@5]/2", B: "[[db3,f3,ab3]@10 ~@2 [c3,eb3,g3,bb3]@19 ~, c4@3 ~@5]/2",
  C: "[[ab3,bb3,db4,f4]@10 ~@2 [ab3,bb3,c4,eb4]@17 ~@3]/2", D: "[[gb3,bb3,db4,f4]@9 ~@3 [f3,ab3,c4,eb4]@18 ~@2]/2",
  E: "[[g3,bb3,d4,f4]@15 ~]/2", F: "[[ab3,c4,db4]@9 ~@3 [f3,g3,bb3]@20, f4@6 eb4@9 ~]/2",
  G: "[[ab3,f4]@3 [f3,bb3]@5, [c4,db4]@4 ~@2 [g3,eb4]@9 ~]/2", H: "[[ab3,c4,db4,f4]@11 ~ [f3,g3,bb3,eb4]@17 ~@3]/2",
  I: "[[db3,f3,ab3,c4]@9 ~@3 [c3,eb3,g3,bb3]@19 ~]/2", J: "[[ab3,c4]@11 ~ [bb3,eb4,f4,g4]@17 ~@3, [db4,f4]@9 ~@23]/2",
  K: "[[c4,db4,f4]@10 ~@2 [bb3,eb4,f4,g4]@17 ~@3, ab3@3 ~@5]/2", // Dbmaj7 Eb
  L: "[[db3,f3,ab3]@9 ~@3 [eb3,g3,bb3]@19 ~, c4@3 ~@5]/2", // Db Eb
})).s("gm_epiano1").gain(0.32).pan(0.3)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@4 A B A B A B A C D B A B A B A B A B A B A B A B A B@5 E@2 B@8 ~@4 A B A B A B A B@5 E@2 B@8 ~@8 B@4 F ~@11 B@4 E@2
  B@24 G ~@4
>`.pickRestart({
  A: "bb1@2 f1@2 ab1@2 f1 bb1 ~ bb1 f1@2 ab1@2 f1@2", B: "bb1@2 f1@2 ab1@2 f1 bb1 ~ bb1 f1@2 ab1@2 c2@2",
  C: "bb1@2 f1@2 ab1@2 f1 bb1 ~ bb1 f1@2 ab1@2 c2 ~", D: "~@2 f1@2 ab1@2 f1 bb1 ~ bb1 f1@2 ab1@2 f1@2",
  E: "[g1@11 ~@3 c2@2]/2", F: "bb1 ~@7", G: "f1@3 ~@13",
})).s("gm_fretless_bass").gain(0.38)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@2 A B C D ~@38 E F G H ~@34 E F G ~@44>".pickRestart({
  A: "~@2 [ab4,c5] ~@2 [ab4,c5] ~@2 c5@2 ~ f4@2 ~ [g4,bb4]@2, ~@8 ab4 ~@2 ab4 ~@4", // Ab Gm
  B: "~@2 [ab4,c5]@2 ~ ab4@2 ~ [ab4,c5]@2 ~ [g4,bb4] ~@2 [f4,ab4]@2, ~@5 c5 ~@10", // Ab Gm Fm
  C: "~@2 [ab4,c5]@2 ~ [ab4,c5]@2 ~ [ab4,c5]@2 ~ [f4,ab4] ~@2 bb4@2, ~@14 g4 ~", // Ab Fm
  D: "~@2 [ab4,c5] ~@2 ab4@2 ~ [ab4,c5]@2 ~ [g4,bb4]@2 ~ f4@2, ~@5 c5 ~@8 ab4 ~", // Ab Gm
  E: "~@2 c5@2 ~ [ab4,c5] ~@2 [ab4,c5]@2 ~ [f4,ab4] ~@2 bb4@2, ~@2 ab4 ~@11 g4 ~", // Ab Fm
  F: "~@2 c5@2 ~ [ab4,c5] ~@2 [ab4,c5]@2 ~ bb4@2 ~ f4@2, ~@2 ab4 ~@8 g4 ~@2 ab4 ~", // Ab
  G: "~@2 c5@2 ~ [ab4,c5] ~@2 [ab4,c5]@2 ~ [f4,ab4] ~@2 [g4,bb4] ~, ~@2 ab4 ~@13", // Ab Fm Gm
  H: "~@2 [ab4,c5] ~@2 [ab4,c5] ~@2 [ab4,c5] ~@2 [g4,bb4] ~@2 [f4,ab4] ~", // Ab Gm Fm
})).s("gm_rock_organ").gain(0.38)

// other · piano · "A.PIANO 1"
const piano = note(`<
  A@4 ~@32 B@2 C@2 D@3 ~@19 B@2 C@2 D@3 ~ B@2 C@2 D@3 ~@23 B@2 C@2 D@3 ~ B@2 C@2 D@3 ~ B@2 C@2 D@3 ~@6
>`.pickRestart({
  A: "[c5@3 ab4@3 eb4@2 [f4,ab4,c5]@4 [g4,bb4]@6 ~@2 f4@2 ab4@4 [eb4,ab4,c5]@4 [db4,f4,bb4]@4 [c4,eb4,f4,ab4]@16 ~@14, ~@3 eb4@2 ~@11]/4", // Fm Gm Ab Bbm Fm7
  B: "[ab4@3 f4@3 c4@2 ab4@4 g4@16 ~@4]/2", C: "[ab4@3 f4@3 c4@2 ab4@4 g4@17 ~@3]/2",
  D: "[ab4@3 f4@3 c4@2 ab4@4 g4@6 eb4@2 f4@2 ab4@4 f4@4 eb4@4 db4@10 ~@4]/3",
})).s("gm_piano").gain(0.4).pan(0.4)

// other · piano · "A.PIANO 1"
const piano_2 = note("<~@39 A@2 ~@24 B@2 ~@6 C@2 ~@28 C@2 ~@6 C@2 ~@6 C@2 ~@8>".pickRestart({
  A: "[eb5!2 ~ eb5@2 c5 ~@2 c5@2 bb4 ~ bb4@2 ab4@6 ~@12]/2", B: "[eb5!2 ~ eb5 ~ c5 ~@2 c5@2 bb4 ~ bb4@2 ab4@4 ~@14]/2",
  C: "[eb5!2 ~ eb5 ~ c5 ~ c5@3 bb4 ~ bb4@2 ab4@7 ~@11]/2",
})).s("gm_piano").gain(0.45).pan(0.7)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@6 A B A B A B A B C ~ C ~ C ~ C ~ A B A B A B A B D E F G H@2 C I C I C I C I ~@4 C ~ C ~ A B A B J K L M H@2 C I C
  I C I C I ~@16 A B A B A B A B D E F G H@2 A B A B A B A B A B A B A B A B A B A B A B A B N O P ~@2
>`.pickRestart({
  A: "~@2 [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~@3 [eb5,g5,bb5]!2", // Fm Eb
  B: "~ [eb5,g5,bb5]!2 ~ [eb5,g5,bb5] ~ [eb5,g5,bb5] ~@9", // Eb
  C: "~@2 [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~@5", // Fm
  D: "~@2 [ab4,bb4,db5,f5]!2 ~ [ab4,bb4,db5,f5]!2 ~ [ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~@5", // Bbm7
  E: "~@2 [ab4,bb4,c5,eb5]!2 ~ [ab4,bb4,c5,eb5]!2 ~ [ab4,bb4,c5,eb5] ~ [ab4,bb4,c5,eb5] ~@5", // Ab
  F: "~@2 [gb4,bb4,db5,f5]!2 ~ [gb4,bb4,db5,f5]!2 ~ [gb4,bb4,db5,f5] ~ [gb4,bb4,db5,f5] ~@5", // Gbmaj7
  G: "~@2 [f4,ab4,c5,eb5]!2 ~ [f4,ab4,c5,eb5]!2 ~ [f4,ab4,c5,eb5] ~ [f4,ab4,c5,eb5] ~@5", H: "[g5,bb5,c6,f6]/2",
  I: "~@2 [eb5,g5,bb5]!2 ~ [eb5,g5,bb5]!2 ~ [eb5,g5,bb5] ~ [eb5,g5,bb5] ~@5", // Eb
  J: "~@2 [ab4,bb4,db5,f5]!2 ~ [ab4,bb4,db5,f5]!2 ~ [ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~@3 [eb5,g5,bb5]!2", // Bbm7 Eb
  K: "~ [eb5,g5,bb5] [ab4,bb4,c5,eb5,g5,bb5] [ab4,bb4,c5,eb5] [eb5,g5,bb5] [ab4,bb4,c5,eb5] [ab4,bb4,c5,eb5,g5,bb5] ~ [ab4,bb4,c5,eb5] ~ [ab4,bb4,c5,eb5] ~@5", // Eb Abmaj7 Ab Eb Ab Abmaj7 Ab
  L: "~@2 [gb4,bb4,db5,f5]!2 ~ [gb4,bb4,db5,f5]!2 ~ [gb4,bb4,db5,f5] ~ [gb4,bb4,db5,f5] ~@3 [f4,ab4,c5,eb5]!2", // Gbmaj7 Fm7
  M: "~ [f4,ab4,c5,eb5]!2 ~ [f4,ab4,c5,eb5] ~ [f4,ab4,c5,eb5] ~@9", // Fm7
  N: "~@2 [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] [eb5,g5,bb5]!2 ~ [eb5,g5,bb5]!2", // Fm Eb
  O: "~ [eb5,g5,bb5] ~ [eb5,g5,bb5] [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~@4 [eb5,g5,bb5] ~@2", P: "g5 bb5 ~@14",
})).s("gm_percussive_organ").gain(0.15).pan(0.2)

// chords · percussive organ · "ORGAN 2" · soft notes · Fm Eb Eb5 Eb Cm7 Fm Eb Fm …
const percussive_organ_soft = note(`<
  ~@125
  [~@10 [f5,ab5,c6] ~ [f5,ab5,c6] ~ [eb5,g5,bb5] ~]
  [[eb5,bb5] [eb5,g5] ~ [eb5,f5,g5,ab5,bb5,c6] [f5,ab5,c6] [eb5,g5,bb5] [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] [eb5,g5,bb5]!2 ~ [eb5,g5,bb5]]
  [[eb5,g5,bb5] ~ [eb5,g5,bb5] ~ [eb5,g5,bb5] [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] [eb5,g5,bb5]!2]
  [~ [eb5,g5,bb5]!2 ~ [eb5,g5,bb5] ~ [eb5,g5,bb5] ~@9]
>`).s("gm_percussive_organ").gain(0.07).pan(0.2)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@36 A@6 B@2 ~@18 A@6 B@2 ~@30 A@6 B@2 A@6 B@2 A@6 B@2 ~@5>".pickRestart({
  A: "[[db4,f4]@3 [bb3,eb4]@5]/2", B: "[[ab3,c4]@3 [g3,bb3]@5]/2",
})).s("gm_string_ensemble_1").gain(0.38)

// other · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note(`<
  ~@30 A@2 B C D@2 E@2 F@2 E@2 F@2 ~@12 A@2 B C D@2 E@2 F@2 G@2 F@2 H@6 I@2 ~@16 A@2 B C D@2 E@2 F@2 G@2 F@2 E@2 F@2 G@2
  F@2 E@2 F@2 G@2 F@2 ~@5
>`.pickRestart({
  A: "[f4@3 eb4@5]/2", B: "f4@3 eb4", C: "ab4 bb4", D: "c5/2", E: "[ab5@3 eb6@4 eb5]/2", F: "[ab5@3 eb5@5]/2",
  G: "[ab5@11 eb6@17 eb5@4]/2", H: "[c5@3 bb4@5]/2", I: "[c5@3 eb5@5]/2",
})).s("gm_synth_strings_2").gain(0.38)

// chords · percussive organ · "ORGAN 2"
const percussive_organ_2 = note(`<
  ~@6 A B A B A B A B C ~ C ~ C ~ C ~ A B A B A B A B D E F G H@2 C I C I C I C I ~@4 C ~ C ~ A B A B J K L M H@2 C I C
  I C I C I ~@16 A B A B A B A B D E F G H@2 A B A B A B A B A B A B A B A B A B A B A B A B N O P Q B
>`.pickRestart({
  A: "~@3 [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~@3 [eb5,g5,bb5]", // Fm Eb
  B: "[eb5,g5,bb5] ~ [eb5,g5,bb5]!2 ~ [eb5,g5,bb5] ~ [eb5,g5,bb5] ~@8", // Eb
  C: "~@3 [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] ~@4", // Fm
  D: "~@3 [ab4,bb4,db5,f5]!2 ~ [ab4,bb4,db5,f5]!2 ~ [ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~@4", // Bbm7
  E: "~@3 [ab4,bb4,c5,eb5]!2 ~ [ab4,bb4,c5,eb5]!2 ~ [ab4,bb4,c5,eb5] ~ [ab4,bb4,c5,eb5] ~@4", // Ab
  F: "~@3 [gb4,bb4,db5,f5]!2 ~ [gb4,bb4,db5,f5]!2 ~ [gb4,bb4,db5,f5] ~ [gb4,bb4,db5,f5] ~@4", // Gbmaj7
  G: "~@3 [f4,ab4,c5,eb5]!2 ~ [f4,ab4,c5,eb5]!2 ~ [f4,ab4,c5,eb5] ~ [f4,ab4,c5,eb5] ~@4", H: "[g6,bb6,c7,f7]/2",
  I: "~@3 [eb5,g5,bb5]!2 ~ [eb5,g5,bb5]!2 ~ [eb5,g5,bb5] ~ [eb5,g5,bb5] ~@4", // Eb
  J: "~@3 [ab4,bb4,db5,f5]!2 ~ [ab4,bb4,db5,f5]!2 ~ [ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~@3 [eb5,g5,bb5]", // Bbm7 Eb
  K: "[eb5,g5,bb5] ~ [eb5,g5,bb5] [ab4,bb4,c5,eb5,g5,bb5] [ab4,bb4,c5,eb5] [eb5,g5,bb5] [ab4,bb4,c5,eb5] [ab4,bb4,c5,eb5,g5,bb5] ~ [ab4,bb4,c5,eb5] ~ [ab4,bb4,c5,eb5] ~@4", // Eb Abmaj7 Ab Eb Ab Abmaj7 Ab
  L: "~@3 [gb4,bb4,db5,f5]!2 ~ [gb4,bb4,db5,f5]!2 ~ [gb4,bb4,db5,f5] ~ [gb4,bb4,db5,f5] ~@3 [f4,ab4,c5,eb5]", // Gbmaj7 Fm7
  M: "[f4,ab4,c5,eb5] ~ [f4,ab4,c5,eb5]!2 ~ [f4,ab4,c5,eb5] ~ [f4,ab4,c5,eb5] ~@8", // Fm7
  N: "~@3 [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] [eb5,g5,bb5]!2 ~ [eb5,g5,bb5]", // Fm Eb
  O: "[eb5,g5,bb5] ~ [eb5,g5,bb5] ~ [eb5,g5,bb5] [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] [eb5,g5,bb5]!2", // Eb Fm Eb
  P: "~ [eb5,g5,bb5]!2 ~ [eb5,f5,g5,ab5,bb5,c6] [f5,ab5,c6] [eb5,g5,bb5] [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] [eb5,g5,bb5]!2 ~", // Eb Cm7 Fm Eb Fm Eb
  Q: "[eb5,g5,bb5]!2 ~ [eb5,g5,bb5] ~ [eb5,g5,bb5] [f5,ab5,c6]!2 ~ [f5,ab5,c6]!2 ~ [f5,ab5,c6] ~ [f5,ab5,c6] [eb5,g5,bb5]", // Eb Fm Eb
})).s("gm_percussive_organ").gain(0.07).pan(0.6)

// other · pad poly · "POLYSYNTH"
const pad_poly = note("<~@34 A B ~@24 A B ~@8 C@6 D@2 ~@20 A B ~@29>".pickRestart({
  A: "c3 f3 bb3 d4 g3 f3 bb3 c3", B: "g3 f4 f3 g3 bb3 d4 f3@2", C: "[db3@3 eb3@5]/2", D: "[db3@12 eb3@19 ~]/2",
})).s("gm_pad_poly").gain(0.44).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B A C A C A@3 C A C A C A C A C A C A C A C A C A@6 D C D C D C E C A@5 C A C A C A C A@6 D C D C D C E C D C D
  C D C E C D C D C D C E C A C A C A C A C A@6 D C D C D C E C D C D C D C E C D C D C D C E C ~@5
>`.pickRestart({
  A: "x!4", B: "~@2 x ~@3 x ~@2 x ~@2 x ~@3", C: "x ~ x ~ x!3 ~", D: "x ~ x!3 ~ x ~", E: "x!3 ~ x ~ x ~",
})).gain(0.44)

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

// drums · clap
const clap = s("cp").struct("<~@6 [~ x ~ x]!35 [~ x ~@2] [~ x ~ x]!82 ~@5>").gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<~@85 [~ x ~@2] ~@43>").gain(0.55)

// drums · hihat
const hihat = s("hh").struct("<~@2 A@40 ~@2 A@24 ~@2 A@6 ~@2 A@6 ~@2 A@20 ~@2 A@6 ~@2 A@6 ~@7>".pickRestart({
  A: "x!4",
})).gain(0.27)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 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 ~@2 A B A B A B A B A B A B A B A
  B A B A B A B A B ~@2 A B A B A B ~@2 A B A B A B ~@2 A B A B A B A B A B A B A B A B A B A B ~@2 A B A B A B ~@2 A B
  A B A B ~@7
>`.pickRestart({
  A: "~ x ~ x ~@3 x", B: "~@2 x ~@3 x!2 ~@6 x ~",
})).gain(0.27)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A ~@7 A ~@15 A ~@5 A ~@3 A ~ A ~ A ~@11 A ~@5 A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~@9 A ~@5 A ~@3 A ~ A ~ A
  ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.38)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@36
  [x!2 ~ x ~@3 x!3 ~ x ~@4]!6
  ~
  [x!2 ~ x ~@3 x!3 ~ x ~@4]!5
  ~@14
  [x!2 ~ x ~@3 x!3 ~ x ~@4]!24
  x
  ~@42
>`).gain(0.72)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  ~@36 A ~ B A C ~ C@3 ~ B A ~@14 A ~ B A C@5 ~ B A C@5 ~ B A C@4 ~@43
>`.pickRestart({
  A: "x ~@14 x", B: "x", C: "~@15 x",
})).gain(0.72)

// drums · congas
// … 39 more lines

More by Stansfield Lisa