Strudelify

Miami

Will Smith

KeyF minorTempo109 bpm
0:00/0:00
// Miami — Will Smith
// 109 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(109/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.

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A ~ B ~ A ~ C ~ D ~ D ~ D ~ E ~ D ~ C F G F H ~ A ~ B ~ A ~ C I G I H ~ D ~ D ~ D ~ E ~ D ~ C ~ A ~ B ~ A ~ C ~ D ~
  D ~ D ~ E ~ D ~ C F G F H ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ C J
>`.pickRestart({
  A: "~@4 f4@6 bb4 db5 eb5 db5 bb4@2", B: "[ab4,c5,eb5]@2 ~ [bb4,db5,f5]@3 ~@2",
  C: "[ab4,c5,eb5]@4 ~@2 [bb4,db5,f5]@6 bb4 db5 eb5@2", D: "~ f4@2 ~", E: "~@4 f4@8 bb4 db5 eb5@2",
  F: "~@2 f5@2 bb4 db5 eb5 f5@3 eb5 f5 ~@2 db5@2", G: "~@2 f5@2 bb4 db5 eb5 f5@3 eb5 f5@2 db5 bb4@2",
  H: "~@2 f5@2 bb4 db5 eb5 f5 [g4,bb4,db5,f5]@4 [g4,bb4,db5,f5]@4", I: "~@2 f5@2 bb4 db5 eb5 f5@3 eb5 f5 ~@2 bb4@2",
  J: "bb3!8 ab3@2 bb3 bb3@3 ~@2",
})).s("gm_string_ensemble_1").gain(0.25)

// bass · acoustic bass
const bass = note(`<
  A B A B A B A B A B A B A B A C A B A C D E D F A B A B A B A B D E D F A B A B A B A C A B A C A B A B A B A G A B A
  B A B A C A B A C D E D F A B A G A B A G A B A G A B A C H
>`.pickRestart({
  A: "bb2@2 ~@3 bb2 db3 eb3 f3 ab3 f3@2 ~@2 eb2@2", B: "f2@2 ~ f2@3 gb2@2 gb2@2 ~ gb2@3 gb2@2",
  C: "f2@2 ~ f2@3 gb2@2 gb2@4 gb2@4", D: "eb2@4 eb2@2 eb2!2 eb2@2 ~ eb2 eb3 db3 eb3@2",
  E: "eb2@4 eb2@2 eb2!2 eb2@4 ~@4", F: "eb2@4 eb2@2 eb2!2 g3@4 g3@4", G: "f2@2 ~ f2@3 gb2@2 gb2@2 ~ gb2@3 ab2@2",
  H: "bb2!8 ab2@2 bb2 bb2@3 ~@2",
})).s("gm_acoustic_bass").gain(0.25)

// chords · tenor sax
const tenor_sax = note(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B
>`.pickRestart({
  A: "~ [db5,f5,bb5] [c5,eb5,ab5] ~", B: "bb3!8 ab3@2 bb3 bb3@3 ~@2",
})).s("gm_tenor_sax").gain(0.25)

// other · trumpet
const trumpet = note(`<
  ~ A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@7 A ~@3 A ~@7 A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@7 A ~ A ~ A ~ A
  ~ A ~ A ~ A ~@2 B
>`.pickRestart({
  A: "~ f4@2 ~", B: "bb3!8 ab3@2 bb3 bb3@3 ~@2",
})).s("gm_trumpet").gain(0.41)

// drums · kick
const kick = s("bd").struct("<[x!4]!35 ~ [x!4]!52 ~>").gain(0.45)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!35 ~ [~ x ~ x]!52 ~>").gain(0.35)

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 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.2)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!35 ~ [~ x ~ x]!52 ~>").gain(0.45)

// 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 ~ 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!3", B: "x!4",
})).gain(0.45)

// drums · hihat · soft notes
const hihat_soft = 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 ~ 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: "~@3 x ~ x ~ x", B: "~ x ~ x ~ x ~ x",
})).gain(0.15)

// 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 ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "x",
})).gain(0.45)

// drums · shaker
const shaker = s("sh").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 ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~ x ~@6",
})).gain(0.15)

// drums · rim
const rim = s("rim").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 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.4)

stack(
  string_ensemble_1, bass, tenor_sax, trumpet, kick, clap, clap_soft, snare, hihat, hihat_soft, open_hat, shaker, rim
)

More by Will Smith