Strudelify

It's All Good

DMX

KeyF♯ minorTempo100 bpm
0:00/0:00
// It's All Good — DMX
// 100 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: 645 stray notes after a silence of more than 6 bars (from bar 326) are dropped
// note: Full arrangement: all 155 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.

// other · string ensemble 1 · "Backgound"
const string_ensemble_1 = note(`<
  ~@25 A B A C A B A B ~@14 D E F G H I J K L ~ A C A B A B A B ~@14 D E F G D E F G D E F G H I J K M ~@11 N O ~@2 P Q
  ~@26 A B A C A B A B A B A C A B A B
>`.pickRestart({
  A: "~@4 a4 b4@2 a4 ~@5 a4 b4 c5", B: "c#5@2 ~@2 a4 b4@2 a4 ~@8", C: "c#5@2 ~@3 b4@2 a4 ~@8, ~@5 a4 ~@10",
  D: "[c#4,c#5]@3 [c#4,c#5]@2 ~ [c#4,c#5]@3 ~ [c#4,c#5]@2 ~ [c#4,c#5]@3", // C#
  E: "[b3,b4] c#4@2 [b3,b4] [c#4,c#5]@2 [b3,b4]@3 [a3,a4] [f#3,f#4]@3 ~@3, c#5@3 ~@13", // B C# B A F#
  F: "[c#4,c#5]@3 [c#4,c#5]@3 [b3,b4] [c#4,c#5]@2 ~ [c#4,c#5]@2 ~ [c#4,c#5]@3", // C# B C#
  G: "[e4,e5]@3 [c#4,c#5]@3 [b3,b4]@4 [c#4,c#5]@3 ~@2 c#5", // E C# B C#
  H: "[b3,b4] [c#4,c#5]@2 [c#4,c#5]@2 ~ [c#4,c#5]@3 ~ [a#3,b3,b4] [c#4,c#5]@2 [c#4,c#5]@2 ~, ~@3 [b3,b4] ~@12", // B C# Bmaj7 C# B
  I: "[a3,b3,b4] [c#4,c#5]@2 [c#4,c#5]@3 [b3,b4]@3 [a3,a4] [f#3,f#4]@2 ~@2 c#5 ~, ~@10 g#3 ~@5", // Asus2 C# B A F#
  J: "[c#4,c#5]@2 ~ [c#4,c#5]@3 [b3,b4] [c#4,c#5]@2 ~ [c#4,c#5]@2 ~ [c#4,c#5]@3", // C# B C#
  K: "[e4,e5] [c#4,c#5] [b3,b4] [c#4,c#5]", L: "b3 [a3,a4]@14 ~", M: "[b3,b4] [a3,a4]@15", N: "~@4 a4 b4@2 a4@2 ~@7",
  O: "~@4 b4@2 ~ a4 ~@8, ~@4 a4 ~@11", P: "~@4 b4@3 a4 ~@8", Q: "~@4 b4@3 a4 ~@8, ~@4 a4 ~@11",
})).s("gm_string_ensemble_1").gain(0.34)

// other · electric guitar muted · "Guitar1"
const electric_guitar_muted = note(`<
  ~@17 A B C D E F G H A B C D E F G H A B C D E F G H A B C D I J K L M N O P Q R A B C D E F G H A B C D E F G H A B C
  D E F S J K L M N O P Q R K L M N O P Q R ~@20 A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H ~@8
>`.pickRestart({
  A: "[b3,d4,f#4,b4]@3 [b3,d4,f#4,b4] ~@2 [b3,f#4,b4] ~@3 [b3,b4] ~@2 [b3,b4] ~@2", // Bm B5 B
  B: "[c#4,c#5] ~@2 [c#4,c#5] ~@2 [a3,a4] ~ a3 [a3,a4] ~ [a3,a4] ~ [a3,a4] [b3,f#4,b4] ~", // C# A B5
  C: "[b3,d4,f#4,b4]@2 ~ [b3,d4,f#4,b4] [b3,d4,b4] ~ [b3,b4] ~@3 [b3,b4] ~ b3 [b3,b4] ~@2", // Bm B
  D: "[c#4,c#5] ~@2 [c#4,c#5] ~@2 a3!2 [a3,a4]!2 ~ [a3,a4] ~ [a3,a4] [b3,f#4]@2", // C# A B5
  E: "[b3,d4,f#4,b4]@2 ~ [b3,d4,f#4,b4] b3 ~ [b3,b4] ~ a4 ~ [b3,b4] ~ b3 [b3,b4] ~@2", // Bm B
  F: "[c#4,c#5] c#5 ~ [c#4,c#5] ~@2 [a3,a4] ~ [a3,a4]!2 ~ [a3,a4]@2 ~ [b3,f#4]@2, ~@13 [a3,f#4]@2 ~", // C# A B5 D
  G: "[b3,d4,f#4,b4]@3 [b3,d4,f#4,b4] b3 ~ [b3,b4] ~@3 [b3,b4] ~ b3 [b3,b4] ~@2", // Bm B
  H: "[c#4,c#5] ~@2 [c#4,c#5] ~ [c#4,c#5] ~@2 [c#4,c#5] [d4,d5] ~ [c#4,c#5] ~ [a3,a4] ~@2", // C# D C# A
  I: "[f#3,b3,f#4]@2 [f#3,f#4]!2 ~@2 [f#3,f#4] ~ f#4 f#3 f#4 ~ f#3 [f#3,f#4] ~@2", // B5 F#
  J: "f#4 ~@2 f#5 f#4 ~ [f#4,f#5] ~ f#5 ~ [f#4,f#5] ~@2 [f#4,f#5] ~@2", // F#
  K: "[f#3,f#4] ~ f#3 [f#3,f#4] ~@2 [f#3,f#4] ~@3 [f#3,f#4] ~ f#3 [f#3,f#4] ~@2", // F#
  L: "~@3 [f#4,f#5] ~@2 [f#4,f#5] ~ f#5 f#4 ~ f#4 [f#4,f#5] ~ f#4 f#5", // F#
  M: "f#3 ~ f#4 ~@2 [f#3,f#4] ~@2 [f#3,f#4] ~@2 f#4 f#3 ~ f#3 [f#3,f#4]", // F#
  N: "~@2 [f#4,f#5] ~@2 f#5 ~ f#4 [f#4,f#5] ~ f#4 [f#4,f#5] ~@2 [f#4,f#5] ~", // F#
  O: "~@2 [f#3,f#4] ~@2 [f#3,f#4] ~@2 [f#3,f#4]@2 f#3 f#4 f#3 ~ f#3 f#4", // F#
  P: "f#4 ~ [f#4,f#5] ~@2 [f#4,f#5] ~@2 [f#4,f#5]!2 ~ f4 [f#4,f#5]!2 ~@2", // F#
  Q: "[f#3,f#4]@2 ~ [f#3,f#4] ~@2 [f#3,f#4]!2 ~@2 [f#3,f#4] ~@2 [f#3,f#4] ~@2", // F#
  R: "[f#4,f#5]!2 ~ f#5 ~@2 [f#4,f#5] ~@2 [f#4,f#5] ~@2 [f#4,f#5] ~@2 [f#4,f#5]", // F#
  S: "[f#3,f#4]@2 [f#3,f#4]!2 ~@2 [f#3,f#4] ~ f#4 f#3 f#4 ~ f#3 [f#3,f#4] ~@2", // F#
})).s("gm_electric_guitar_muted").gain(0.28)

// other · electric guitar jazz · "Guitar2"
const electric_guitar_jazz = note(`<
  ~@115 A B C D E B F G H I J K L I M N H I J K L I M N H I J K L I M N ~@8
>`.pickRestart({
  A: "~@2 [f#4,f#5] ~ [a4,a5] ~ [b4,b5] ~ [a4,a5] ~ [e4,f#5] ~ [f#4,f#5]!2 ~@2", // F# A B A Esus2 F#
  B: "[e4,e5] ~@2 [e4,e5] ~ [e4,e5] ~ e4 [f#4,f#5]!2 ~@2 [f#4,f#5]@2 ~@2", // E F#
  C: "~@2 [f#4,f#5] ~ [a4,a5] ~ [b4,b5] ~ [a4,a5] ~ [f#4,f#5]!2 ~ [f#4,f#5] ~ f4", // F# A B A F#
  D: "[e4,e5] ~ e4 [e4,e5] ~ [e4,e5] ~ e4 f#5 [f#4,f#5] ~@2 [f#4,f#5] ~ [f#4,f#5] ~", // E F#
  E: "f#5 ~ [f#4,f#5] ~ [a4,a5] ~ [b4,b5] ~ [a4,a5] ~ [f#4,f#5]!2 f4 [f#4,f#5] ~@2", // F# A B A F#
  F: "~@2 [f#4,f#5] ~ [a4,a5] ~ [b4,b5] ~ [a4,a5] ~ [f#4,f#5]!2 ~ [f#4,f#5] ~@2", // F# A B A F#
  G: "[e4,e5] ~@2 [e4,e5] ~ [e4,e5] ~ [d#4,e4] ~ f#5 ~ e4 [f#4,f#5]@2 ~@2, ~@4 [f#4,f#5] ~@3", // E Emaj7 F#
  H: "~@2 f#4 ~ [a4,a5] ~ [b4,b5] ~ [a4,a5] ~ [f#4,f#5] f#5 ~ [f#4,f#5] ~ e4", // A B A F#
  I: "[e4,e5] ~@2 [e4,e5] ~ [e4,e5] ~ e4 [f#4,f#5]!2 ~ e4 [f#4,f#5]@2 ~@2", // E F#
  J: "~@2 [f#4,f#5] ~ [a4,a5] ~ [b4,b5] ~ [a4,a5] ~ [f#4,f#5] f#4 ~ [f#4,f#5] ~ e4", // F# A B A F#
  K: "[e4,e5] ~@2 [e4,e5] ~ [e4,e5] ~ e4 [f#4,f#5]!2 ~ e4 [f#4,f#5] ~ [f#4,f#5] ~", // E F#
  L: "~@2 [f#4,f#5] ~ [a4,a5] ~ [b4,b5] ~ [a4,a5] ~ [f#4,f#5] ~ f#4 [f#4,f#5] ~ [e4,e5]", // F# A B A F# E
  M: "~@2 [f#4,f#5] ~ [a4,a5] ~ [b4,b5] ~ [a4,a5] ~ [f#4,f#5] ~ e4 [f#4,f#5] ~ e4", // F# A B A F#
  N: "[e4,e5] ~@2 [e4,e5] ~ [e4,e5] ~ e4 [f#4,f#5]!2 ~ [e4,e5] [f#4,f#5]@2 [f#4,f#5] ~", // E F# E F#
})).s("gm_electric_guitar_jazz").gain(0.15)

// other · electric guitar jazz · "Guitar2" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@118 A ~@2 B ~ C ~ D E ~@2 F G C ~ D E ~@2 F G C ~ D E ~@2 F G ~@8
>`.pickRestart({
  A: "~@11 [e4,f4] ~@4", B: "~@15 f4", C: "~@2 f#5 ~@8 f#4 ~@3 e5", D: "~@11 f#5 ~@3 e5", E: "~@2 e5 ~@8 e5 ~@4",
  F: "~@15 e5", G: "~@7 d5 ~@8",
})).s("gm_electric_guitar_jazz").gain(0.07)

// other · synth strings 1 · "String"
const synth_strings_1 = note(`<
  ~@55 A B@2 C A B@2 C A D A B@2 C A B@6 C ~@46 A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C ~@8
>`.pickRestart({
  A: "f#4@3 a4", B: "[g#4@5 a4 f#4@8 a4@2]/2", C: "g#4@2 c#5 a4", D: "g#4@5 a4 f#4@2",
})).s("gm_synth_strings_1").gain(0.2)

// chords · epiano1 · "E.Piano"
const epiano1 = note(`<
  ~@41 A B A B C D E F G H I J K L A B A B A M A B A B A B A M A B A B A M A B C D E F G H I J K L E F G H I J K N ~@24
  A M A B A B A B A M A B A B A B A M A B A B A B A M A B A B A B A M A B
>`.pickRestart({
  A: "~@6 a4@9 ~, b3@15 ~, ~@2 d4@13 ~, ~@4 f#4@11 ~",
  B: "[c#4,e4,g#4,b4] ~@2 [c#4,e4,g#4,b4] ~@4 [f#3,a3,c#4,e4] ~@2 [f#3,a3,c#4,e4] ~@4", // C#m7 F#m7
  C: "c#4@10 ~@3 a4@3, f#4, a4@13 ~@3, ~@5 c#4@3", D: "~@5 c#4@3, f#3, c#4@5 ~@3, ~ a3@7, ~ f#4@3",
  E: "~@13 f#4@3, f#3@5 c#4@3, c#4@8 f#4@5 ~@3, f#4 a4@3, ~ a3@5 [f#3,a3]@2", // F#m
  F: "~@7 e4, e3@3 b3, g#4@3 g#3@5, ~@2 e4@9 g#4@5, ~ b3 b4@2", G: "~@7 f#4, a4, f#3@5 a3@3, ~ a3@2 c#4@5, ~ f#4@2 f#3",
  H: "~@13 e5@3, e3@3 g#3, ~ b3@3 b3@4, ~@2 g#3@3 b4@3, ~@3 e4@5",
  I: "~@7 f#4, [f#3,c#5], ~ a3@7, ~@2 c#4@3 a4@3, ~@3 a4 f#4@2 c#4@2", // F#5
  J: "~@7 g#4, e3@5 e4 b3@2, b4 g#3@3, ~ g#4@3 b4@4, ~ b3@2 e5@5",
  K: "~@3 c#4, [f#3,c#5], a4@3 f#4 a4@4, f#4@2 c#4@3 [f#4,b4]@3, ~ a3@7", // F#5 B5
  L: "~@12 b3@3 ~, [e3,b4]@15 ~, g#4@6 e4@9 ~, e4@4 g#3@11 ~, ~@2 b3@8 g#4@5 ~", // E5
  M: "[c#4,e4,g#4,b4] ~@2 [c#4,e4,g#4,b4] ~@4 [a3,c#4,e4] ~@2 [f#3,a3,e4] ~@4, ~@8 f#3@2 ~ c#4@2 ~@3", // C#m7 A F#m7
  N: "~@3 b3, [e3,b4]@15 ~, g#4@6 e4@9 ~, e4@4 g#3@11 ~, ~@2 b3@8 g#4@5 ~", // E5
})).s("gm_epiano1").gain(0.17)

// bass · slap bass 2 · "Bass"
const bass = note(`<
  ~@9 A B C D A B C E A B C D A B C D A B C D A B C D A B C D A B C D A B C D F G H I J K L M J N A B C D A B C D A B C
  D A B C D A B C D A B F G H I J K L M J N O I J K L M J N ~@4 A B C D A B C D A B C D A B C D A B C D A B C D A B C D
  A B C D A B C D A B C D A B C D A B C D ~@8
>`.pickRestart({
  A: "b1@2 ~@2 b1@2 ~ a1 ~ b1 a1 ~ f#1 ~ f#1 [a1,b1]", B: "c#2@2 ~@2 c#2@2 ~ e2 f#2 c#2 f#1 ~ a1 ~ b2!2",
  C: "b1 ~@3 b1 ~@2 a1 b1!2 a1 ~ f#1 ~ f#1 [a1,b1]", D: "c#2@2 ~@2 c#2@2 ~ b1 c#2 a1 f#1 ~ a1 ~ b2!2",
  E: "c#2@2 ~@2 c#2@2 ~ b1 ~@8", F: "f#1 f#2 f#1 f#2 f#1 f#2 f#1 f#2",
  G: "a1@2 g2 ~ f#2@2 e3 ~ c#3@2 b3 ~ a3 g3 [c3,d3,e3,f3] [e2,f2,g2,a2,b2]", // Dm7 Em
  H: "[a1,b1,c2,d2] ~ f#2@2 g#1@2 g#2@2 a1@2 a2@2 c#2@2 c#3@2, f#1 ~@7", // D7
  I: "e2@2 e3@2 c#2@2 c#3@2 b1 c#3 b2 c#2 b2@2 a2@2", J: "f#1 f#2 g#1 g#2 a1 a2 c#2 c#3",
  K: "e2@2 e3@2 c#2@2 c#3@2 b1 b2 a2 b1 a2@2 f#2@2", L: "f#1@2 f#2@2 g#1@2 g#2@2 a1@2 a2@2 c#2 ~ c#3@2",
  M: "e2@2 e3@2 c#2@2 c#3@2 b1 c#3 b2 b1 b2 a2 f#2 g#1", N: "e2@2 e3@2 c#2@2 c#3@2 b1 c#3 b2 c#2 b2@2 a2 b2",
  O: "f#1 f#2 g#1 g#2 a1 a2 c#2 c#3, a1 ~@15",
})).s("gm_slap_bass_2").gain(0.25)

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

// drums · clap
const clap = s("cp").struct("<~@5 A@3 B A@7 B A@78 ~@4 A@48 ~@8>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.46)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B C B D B C B E B C B D B C B C B C B C B C B C B C B C B C B C B C B F C G H@7 I H C H C B C B C B C B C B C B
  C B C B C B F C G B@5 D H J H@7 I ~@3 K H C H C B C B C B C B D 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 ~@8
>`.pickRestart({
  A: "~@2 x!2", B: "~@4 x ~@7 x ~@2 x", C: "~ x ~ x", D: "~@4 x ~@7 x ~ x!2", E: "~ x!3", F: "~@4 x ~@7 x!2 ~@2",
  G: "~@4 x ~@3 x!2 ~ x!2 ~@3", H: "~@4 x ~@2 x ~@4 x ~@3", I: "~@2 x ~@2 x!2 ~", J: "~@2 x ~ x!2 ~@10", K: "~@5 x!2 ~",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct("<~@9 A@7 B A@69 C A@8 D ~@3 A@48 ~@8>".pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "x!3 ~@5", D: "x",
})).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@7 A ~@27 B ~ A ~@7 B ~@21 B ~ A ~@7 B ~@3 A ~@3 B ~@3 B ~@56>".pickRestart({
  A: "~@15 x", B: "~@7 x",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@7 A ~@29 B ~@7 C ~@23 B ~@7 D ~@3 B ~@3 C ~@3 E ~@56>".pickRestart({
  A: "~@10 x ~@2 x!2 ~", B: "~@13 x!2 ~", C: "~@12 x!2 ~@2", D: "~@4 x ~@2 x ~@2 x ~ x!2 ~@2", E: "~@13 x ~@2",
})).gain(0.46)

// drums · high tom
const high_tom = s("ht").struct("<~@46 [~@3 x] ~@31 [~@3 x] ~@7 [~ x] ~@68>").gain(0.46)

// drums · crash
const crash = s("cr").struct("<~@9 A ~@7 A ~@27 A ~ A ~@7 A ~@21 A ~ A ~@7 A ~@3 A ~@3 A ~@59>".pickRestart({
  A: "x",
})).gain(0.41)

// drums · congas
const congas = s("conga:18").struct("<~@17 [~@7 x ~@8]!78 ~@4 [~@7 x ~@8]!48 ~@8>").gain(0.98)

// drums · congas
const congas_2 = s("conga:33").struct(`<
  ~@17 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 C B A B A B A B D ~@3 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 ~@8
>`.pickRestart({
  A: "x ~@8 x ~@6", B: "~@9 x ~@5 x", C: "~@9 x ~@6", D: "x",
})).gain(0.98)

stack(
  string_ensemble_1, electric_guitar_muted, electric_guitar_jazz, electric_guitar_jazz_2, synth_strings_1, epiano1,
  bass, kick, clap, snare, hihat, low_tom, mid_tom, high_tom, crash, congas, congas_2
)

More by DMX