Strudelify

Life in the Streets (Street mix)

Prince Ital Joe

KeyE♭ majorTempo86 bpm
0:00/0:00
// Life in the Streets (Street mix) — Prince Ital Joe
// 86 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(86/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 · fretless bass · "FRETLESS"
const bass = note(`<
  A@2 B C D@2 B E F@2 G@2 F@2 H I F@2 G@2 F@2 G@2 J K L M J K L M N F@2 G@2 F@2 G@2 F@2 G@2 F@2 G@2 J K L M J K L M J K
  L M J K L M J K L M J K L M J K L M J K L M H
>`.pickRestart({
  A: "eb3/2", B: "c3", C: "ab2 bb2", D: "eb2/2", E: "ab2@8 ab2@3 g2@3 f2@2", F: "[eb2@7 ab2]/2",
  G: "[eb2@13 bb1 c2@2]/2", H: "eb2", I: "bb1@3 ab2", J: "eb2@5 ~@2 eb2!2 ~ eb2@3 ~ eb2@2",
  K: "d2@5 ~@2 d2!2 ~ d2@2 ~@2 d2@2", L: "c2@4 ~@3 c2!2 ~ c2@3 ~ c2 ~", M: "ab1@6 ~ ab1 bb1 ~ bb1@3 ~ bb1@2",
  N: "eb2@5 ab2@2 g2",
})).s("gm_fretless_bass").gain(0.59)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@24 A B C D A B C D ~@17 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 ~
>`.pickRestart({
  A: "eb4 ~ eb4@2 ~ eb4 ~ eb4 ab4 ~@2 g4 ~@2 f4 eb4", B: "d4 ~ d4 ~@2 bb3 ~ bb3 ab4 ~@2 g4@2 ~ f4 eb4",
  C: "c4 ~ ab3 ~@2 ab3 ~ ab3 ab4 ~@2 g4 ~@2 f4 eb4", D: "ab3 ~ ab3 ~@2 ab3 ~ ab3 bb3 ~ bb3 ~@2 bb3 ~ bb3",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.7)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  A@2 B@2 A@2 B@2 C@2 D E C@2 D F C@2 D E C@2 D E ~@9 C@2 D E C@2 D E C@2 D E C@2 D E ~@33
>`.pickRestart({
  A: "[[eb4,g4] [f4,d5], bb4]/2", B: "[[eb4,ab4,c5]@3 [d4,f4,bb4]]/2", C: "[[eb4,g4] [d4,f4], bb3]/2",
  D: "[c4,eb4,ab4]", E: "[d4,f4,bb4]", F: "[bb3,d4,f4]",
})).s("gm_pad_warm").gain(0.35).pan(0.4)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@16 A@8 B C D E B C D E ~@17 B C D E B C D E B C D E B C D E B C D E B C D E B C D E B C D E B
>`.pickRestart({
  A: "[[eb5,g5]@12 [eb5,g5]@2 [d5,f5]@13 ~ [d5,f5]@2 [c5,eb5]@14 [c5,eb5]@2 [d5,f5]@14 [d5,f5]@4]/4", B: "[bb4,eb5]",
  C: "[bb4,d5]", D: "[ab4,c5]", E: "[ab4,c5]@8 [c5,eb5]@4 [bb4,d5]@3 ~",
})).s("gm_rock_organ").gain(0.45).pan(0.8)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@24 A B C D A B C D E ~@16 A B C D F B C D F B C D F B C D F B C D F B C D F B C D F B C D F
>`.pickRestart({
  A: "[eb3,bb3,eb4]", B: "[d3,bb3,d4]", C: "[ab2,c3,c4]", D: "[ab2,eb3,ab3] [bb2,f3,bb3]", E: "[eb2,eb3]",
  F: "[eb3,eb4], bb3 ~@15", // Eb
})).s("gm_distortion_guitar").gain(0.4).pan(0.4)

// chords · acoustic guitar steel · "+12STR GTR"
const acoustic_guitar_steel_2 = note(`<
  A B C D A B C D E F G H E F G I E F G H E F G H A B C D A B C D ~ E F G H E F G H E F G H E F G H 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 J K
>`.pickRestart({
  A: "~@7 eb4, eb3, ~ bb3@2 bb3@5, ~@2 eb4@3 eb4 bb4@2, ~ g4", B: "~@7 d4, d3, ~ bb3@2 bb3@5, ~@2 d4@3 d4 bb4@2, ~ g4",
  C: "~@7 eb4, c3, ~ ab3@2 ab3@5, ~@2 eb4@3 eb4 c5@2, ~ ab4",
  D: "~@7 d4, ab2 bb2, ~ eb4@4 bb3@3, ~ c5@2 bb4, ~@3 ab4@4 ~",
  E: "~@7 eb4, eb3, ~ bb4@2 bb4@3 bb4@2, ~@2 eb4@3 eb4@2 ~, ~ g4",
  F: "~@7 d4, eb3, ~ bb4@2 bb4@3 bb4@2, ~@2 d4@3 d4@2 ~, ~ g4",
  G: "~@7 eb4, eb3, ~ c5@2 c5@3 c5@2, ~@2 eb4@3 eb4@2 ~, ~@4 g4@3 ~",
  H: "~@7 d4, eb3, ~ bb4@2 bb4@2 ~ bb4@2, ~@2 d4@3 d4@2 ~, ~ g4", I: "[f3,bb3,d4,f4,bb4]",
  J: "~@7 d4, ab2@8 bb2@7 ~, ~ eb4@4 ~@3, ~ c5@2 bb4, ~@3 ab4@4 ~", K: "[bb2,eb3,bb3,eb4,g4]",
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.7)

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

// drums · snare
const snare = s("sd").struct("<~@8 [~ x ~ x]!7 ~ [~ x ~ x]!16 x [~ x ~ x]!48 ~>").gain(0.53)

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

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!14 ~@2]!7 ~ [x!14 ~@2]!16 ~ [x!14 ~@2]!48 ~>").gain(0.27)

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

// drums · crash
const crash = s("cr").struct("<~@24 A ~@3 A ~@20 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A>".pickRestart({
  A: "x",
})).gain(0.33)

// drums · shaker
const shaker = s("sh").struct("<~@8 [x!16]!7 ~ [x!16]!16 ~ [x!16]!48 ~>").gain(0.27)

// drums · claves
const claves = s("clave:2").struct("<~@4 [~@3 x]!11 ~ [~@3 x]!16 ~ [~@3 x]!48 ~>").gain(1.96)

stack(
  bass, acoustic_guitar_steel, pad_warm, rock_organ, distortion_guitar, acoustic_guitar_steel_2, kick, snare, clap,
  hihat, open_hat, crash, shaker, claves
)

More by Prince Ital Joe