Strudelify

narcotic

Liquido

KeyF majorTempo200 bpm
0:00/0:00
// narcotic — Liquido
// 200 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4658271; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 176 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(200/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 · overdriven guitar · "Lead Guitar"
const overdriven_guitar = note(`<
  ~@17 A@2 B@2 C@2 A D A@2 B@2 C@2 A D ~@32 A@2 B@2 C@2 A D A@2 B@2 C@2 A D ~@32 A@2 B@2 C@2 A D A@2 B@2 C@2 A D E ~ B@2
  C@2 A@2 E ~ B@2 C@2 A@2 E ~ B@2 C@2 A@2 E ~ B@2 C@2 A@2 B@2 C@2 A D A@2 B@2 C@2 A D E
>`.pickRestart({
  A: "[g3,bb3,eb4]!4", B: "[ab3,c4,f4]!4", C: "[ab3,c4,eb4]!4", D: "[g3,bb3,eb4] [ab3,c4,eb4]", E: "[g3,bb3,eb4] ~@3",
})).s("gm_overdriven_guitar").gain(0.3)

// other · acoustic guitar nylon · "Rhythm Guitar"
const acoustic_guitar_nylon = note(`<
  ~@49 A B C D E F A B A B C D G H I@2 ~@32 A B C D E F A B A B C D G H I@2 ~@63
>`.pickRestart({
  A: "g4 eb4 bb3 g4", B: "eb4 bb3 g4 eb4", C: "ab4 f4 c4 ab4", D: "f4 c4 ab4 f4", E: "eb4 c4 ab3 eb4",
  F: "c4 ab3 eb4 f4", G: "g3!4", H: "c4!4", I: "eb4!4",
})).s("gm_acoustic_guitar_nylon").gain(0.3)

// bass · electric bass finger · "Bass Guitar"
const bass = note(`<
  ~@17 A@2 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 A C A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@4
  B@2 C@2 A@4 B@2 C@2 A@4 B@2 A C A@4 B@2 C@2 A@4 B@2 C@2 A@2 D ~ B@2 C@2 A@2 D ~ B@2 C@2 A@2 D ~ B@2 C@2 A@2 D ~ B@2
  C@2 A@2 B@2 C@2 A@4 B@2 C@2 A@2 D
>`.pickRestart({
  A: "eb2!4", B: "f2!4", C: "ab2!4", D: "eb2 ~@3",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · epiano2 · "Klavier"
const epiano2 = note(`<
  A@8 B@2 C@2 D@2 E@2 F G C@2 D@2 E@2 F G C@2 D@2 E@2 F ~@32 H@16 ~@32 H@16 ~@30 H@16 I
>`.pickRestart({
  A: "[g4@19 ~ f4@3 ~ g4@3 ~ f4@3 ~ g4@3 ~ f4@3 ~ g4@3 ~ f4 ~@7 g4@3 ~ ab4@3 ~ g4@3 ~ ab4@3 ~ g4@3 ~ ab4@3 ~ bb4 ~@7 bb4@3 ~ c5@3 ~ bb4@3 ~ c5@3 ~ bb4@3 ~ c5@3 ~ bb4 ~@7 f4@3 ~ g4@3 ~ f4@3 ~, eb2@46 ab4@5 ~@27 c5@5 ~@27 g4@5 ~@13, ~@48 f2@8 [f2,c3,f3]@23 ~ ab2@8 [ab2,eb3,ab3]@23 ~ eb2@8 [eb2,bb2,eb3]@8]/8", // F5 Ab5 Eb5
  B: "[eb2@6 ~@2 ab4@3 ~@9 f4@3 ~ g4@3 ~ f4@3 ~, g4@3 ~@5 bb1@8 eb2@8 [eb2,bb2,eb3]@8, ~@14 g4@5 ~@13]/2", // Eb5
  C: "[g4@3 ~ f4@3 ~ g4@3 ~ f4 ~@7 g4@3 ~ ab4@3 ~ g4@3 ~, eb2 [eb2,bb2,eb3] f2 [f2,c3,f3], ~@14 ab4@5 ~@13]/2", // Eb5 F5
  D: "[ab4@3 ~ g4@3 ~ ab4@3 ~ bb4 ~@7 bb4@3 ~ c5@3 ~ bb4@3 ~, f2 [f2,c3,f3] ab2 [ab2,eb3,ab3], ~@14 c5@5 ~@13]/2", // F5 Ab5
  E: "[c5@3 ~ bb4@3 ~ c5@3 ~ bb4 ~@7 f4@3 ~ g4@3 ~ f4@3 ~, ab2 [ab2,eb3,ab3] eb2 [eb2,bb2,eb3], ~@7 g4@2 ~@7]/2", // Ab5 Eb5
  F: "eb2@3 ~ bb1@4, g4@3 ~@5 ab4@3 ~@5", G: "g4@4 f4@3 ~ g4@3 ~ f4@3 ~, eb2 [eb2,bb2,eb3]",
  H: "[g4@4 f4@3 ~ g4@3 ~ f4@3 ~ g4@3 ~ f4@3 ~ g4@3 ~ f4 ~@7 g4@3 ~ ab4@3 ~ g4@3 ~ ab4@3 ~ g4@3 ~ ab4@3 ~ bb4 ~@7 bb4@3 ~ c5@3 ~ bb4@3 ~ c5@3 ~ bb4@3 ~ c5@3 ~ bb4 ~@7 f4@3 ~ g4@3 ~ f4@3 ~ g4@3 ~@5 ab2@8, eb2@30 ab4@5 ~@27 c5@5 ~@27 g4@5 ~@21 ab4@3 ~@5, ~@32 f2@30 ~@2 ab2@30 ~@2 eb2@23 ~@9]/8",
  I: "eb2@15 ~, g4 ~@3",
})).s("gm_epiano2").gain(0.45)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@17 A B@7 A B@6 ~@33 A B@7 A B@7 ~@32 A B@7 A B@7 ~@2 A B@5 C ~ A B@5 C ~ A B@5 C ~ A B@2 D A B@7 A B@6 D C
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x", D: "x!2",
})).gain(0.45)

// drums · crash
const crash = s("cr").struct(`<
  ~@17 A ~@7 A ~@6 B A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@9 A ~@7 A ~@7 A
  ~@7 A ~@2 C A ~@7 A ~@8
>`.pickRestart({
  A: "x", B: "x!2", C: "~ x ~ x",
})).gain(0.45)

// drums · ride
const ride = s("rd").struct(`<
  ~@33 A B C B C B C B A B C B C B C B A B C B C B C B A B C B D B@3 ~@16 A B C B C B C B A B C B C B C B A B C B C B C
  B A B C B D B@3 ~@63
>`.pickRestart({
  A: "~@2 x ~ x!3 ~", B: "x!4", C: "x ~ x ~ x!3 ~", D: "~ x!3",
})).gain(0.45)

stack(overdriven_guitar, acoustic_guitar_nylon, bass, epiano2, kick, snare, hihat, crash, ride)