Strudelify

One More Chance

The Notorious B.I.G.

KeyC majorTempo91 bpm
0:00/0:00
// One More Chance — The Notorious B.I.G.
// 91 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 57 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(91/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 · recorder
const recorder = note("<~@8 A ~@24 B@2 C@2 D@2 E@2 ~@16>".pickRestart({
  A: "~@2 e5@2 d5 c5 a4 g4 c5 d5 c5@5 ~, ~@2 d5 ~@13", B: "[e5@5 d5 c5 d5@6 c5@2 b4@6 a4 g4 g4@7 ~@2]/2",
  C: "[e5@5 f5 d5 d5@6 c5@2 b4@6 c5 ~ g5@6 ~@3]/2", D: "[e5@5 f5 d5 d5@5 ~ c5 ~ b4@6 a4 g4 g4@5 ~@2 g4 ~]/2",
  E: "[e5@5 f5 d5 d5@6 c5@2 b4@6 c5 ~ g5@7 ~@2]/2",
})).s("gm_recorder").gain(0.18)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@4 A@2 B C ~@8 D@2 E@2 D@2 F G D@2 ~@10 D@2 ~@2 D@2 ~@15>".pickRestart({
  A: "[~@8 [g3,c4,e4]@2 [a3,d4,f4]@2 [c4,e4,g4] ~ [c4,e4,g4]@15 ~@3, ~@14 d4 ~@17]/2", // C Dm C
  B: "g4@2 f4@2 e4@2 d4@2 c4@2 d4@2 e4 ~ e4@2, ~@14 d4 ~", C: "~@2 [e4,f4] e4 d4@12",
  D: "[~@8 [g3,c4,e4]@2 [a3,d4,f4]@2 [c4,e4,g4] ~ [c4,e4,g4]@14 ~@4, ~@14 d4 ~@17]/2", // C Dm C
  E: "[g4@2 f4@2 e4@2 d4@2 c4@2 d4@2 e4 ~ d4 e4@3 [e4,f4] e4 d4@11 ~, ~@15 f4 ~@16]/2", // Fmaj7
  F: "g4 f4 e4 d4 c4 d4 e4!2, ~@14 d4 ~", G: "~@2 e4 [e4,f4] d4@10 ~@2",
})).s("gm_string_ensemble_1").gain(0.28)

// other · bassoon · "BOboe"
const bassoon = note("<~ A@8 ~@8 A@8 ~@20 A@12>".pickRestart({
  A: "[g5@6 a5 e5@3 g5 d5@3 e5@17 ~]/4",
})).s("gm_bassoon").gain(0.15)

// chords · epiano1 · "EPiano"
const epiano1 = note("<~ A@8 ~ B ~ B ~ B ~ B A@8 ~ B ~ B ~ B ~ B A@8 ~ B ~ B ~@4 A@8>".pickRestart({
  A: "[~@14 [f3,a3,c4,e4]@11 ~@7]/2", B: "~@6 b3 ~@9",
})).s("gm_epiano1").gain(0.28)

// bass · slap bass 1 · "Bass1"
const bass = note(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@6 c3 ~@9",
})).s("gm_slap_bass_1").gain(0.45)

// bass · electric bass pick · "Bass2"
const bass_2 = note(`<
  ~ 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
>`.pickRestart({
  A: "f1@3 c2@3 f2 ~@9", B: "f1@3 c2@3 c3 ~@9",
})).s("gm_electric_bass_pick").gain(0.45)

// drums · kick
const kick = s("bd").struct(`<
  ~ 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
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~@5", B: "x ~@2 x ~@2 x ~@9",
})).gain(0.6)

// drums · rim
const rim = s("rim").struct("<~ [~ x ~ x]!56>").gain(0.6)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ 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
>`.pickRestart({
  A: "x!5 ~ x!2", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~",
})).gain(0.6)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(0.6)

// drums · shaker
const shaker = s("sh").struct("<[x!4] ~@56>").gain(0.6)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@5 x!2 ~",
})).gain(2.59)

// drums · bell tree
const bell_tree = s("marktrees:0").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@9 x ~ x ~@4",
})).gain(2.86)

stack(
  recorder, string_ensemble_1, bassoon, epiano1, bass, bass_2, kick, rim, hihat, open_hat, shaker, jingle_bells,
  bell_tree
)

More by The Notorious B.I.G.