Strudelify

I Need to Know

Marc Anthony

KeyD♭ majorTempo115 bpm
0:00/0:00
// I Need to Know — Marc Anthony
// 115 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 brass section (copy of ch 3 synth brass 1)
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B C D E B C D F G H I J K H I L B C D F B C D F B C D F B C D F G H I J K H I L 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 M ~@7
>`.pickRestart({
  A: "~@7 f2", B: "bb2 db3 [f3,bb3,db4] ~@2 [bb3,db4] ~ f3", C: "c3 f3 [a3,c4] [a3,gb4] [a3,f4] ~@2 f4",
  D: "[c3,a3] [f3,c4,eb4] [a3,c4,eb4] ~@2 [a3,c4,eb4] ~ f3", E: "[bb3,db4]!3 ~@2 [bb3,db4]!2 ~",
  F: "[bb3,db4]!3 ~@2 [bb3,db4]!2 f3", G: "[bb3,f4] [f3,db4] f4 gb4 f4 [db4,f4] ~ [f3,f4]",
  H: "[a3,f4] c4 f4 gb4 f4 ~@2 [f3,f4]", I: "[a3,f4] c4 f4 gb4 f4 [c4,eb4] ~ [f3,f4]",
  J: "[bb3,f4] db4 f4 gb4 f4 ~@2 [f3,f4]", K: "[bb3,f4] db4 f4 gb4 f4 [db4,f4] ~ [f3,f4]",
  L: "[f3,bb3,f4]!3 ~@2 [f3,bb3,f4]!2 ~", M: "bb2 db3 [f3,bb3,db4] ~@5",
})).s("gm_piano").gain(0.4)

// other · cello
const cello = note(`<
  ~ A B C A@2 B C A ~@8 A B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C
  A@2 B C A ~@8
>`.pickRestart({
  A: "bb4 ~ db5 ~", B: "c5 ~ eb5 ~", C: "a4 ~ c5 ~",
})).s("gm_cello").gain(0.4).pan(0.6)

// other · synth brass 1
const synth_brass_1 = note(`<
  ~@5 A B A B ~@16 A B A B A B A B ~@16 A B A B A B A B A B A B A B A B A B A B ~@8
>`.pickRestart({
  A: "f5 ~ f5@8 ~@2 f5@2 eb5@2", B: "~ f5@4 ~ gb5 f5",
})).s("gm_synth_brass_1").gain(0.4).pan(0.4)

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

// drums · snare
const snare = s("sd").struct("<~@4 A B@3 A B@7 A B@7 A B@3 A B@3 A ~@7 A B@7 A B@11 A B@7 A ~@8>".pickRestart({
  A: "x!3 ~@2 x!2 ~", B: "~ x ~ x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A B@3 A ~@8 B@7 A B@3 A B@3 A ~@7 A B@7 A B@11 A B@7 A ~@8>".pickRestart({
  A: "x!3 ~@2 x!2 ~", B: "~ x ~ x",
})).gain(0.64)

// drums · cowbell
const cowbell = s("cb").struct("<~@4 [~@2 x!2] [x!4]!28 ~@7 [x!4]!27 ~@10>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@69 x ~@7>").gain(0.64)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct(`<
  ~@6 A ~@3 B ~@3 B ~@3 B ~@3 C ~@3 B ~@3 B ~@11 B ~@3 B ~@3 B ~@3 B ~@9 B ~@12
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@3 x", C: "~ x",
})).gain(7.52)

stack(piano, cello, synth_brass_1, kick, snare, mid_tom, cowbell, crash, vibraslap)

More by Marc Anthony