Strudelify

One For Daddy-O (WIP)

L.T. (YTBB)

KeyB♭ majorTempo105 bpm
0:00/0:00
// One For Daddy-O (WIP) — L.T. (YTBB)
// 105 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "Alto Sax" alto sax (copy of ch 1 "Trumpet" trumpet); ch 4 "Tenor Sax" tenor sax (copy of ch 1 "Trumpet" trumpet)
// note: Transcription provider: pdmx. https://musescore.com/score/5464080; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 31 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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 · piano
const piano = note("<A B C D E F G H I J ~@2 I J ~@6 I J ~@2 I J ~@5>".pickRestart({
  A: "~@8 e5@3 f5@2 bb5@3 [e5,bb5]@5 [eb5,bb5]@8 ~@3", // Edim Eb5
  B: "~@6 db5@2 eb5@2 e5@2 eb5@2 db5@2 bb4@2 f4@2 ab4 a4 ~ c5 bb4@2 gb4@2 f4@2 eb4@2",
  C: "db4@4 ~@2 eb4 c4 db4 bb3 ~@5 g3", D: "c4 a3 bb3 c4 db4 eb4 f4 gb4 bb4 c5 db5 eb5 f5 ~@3",
  E: "~@8 f5@5 eb5@3 db5@5 bb4@3 ~@8", F: "eb5@5 e5@3 eb5@2 eb5@2 db5@4 bb4@5 f4@3 a4@5 bb4@3",
  G: "~@5 db5@3 f5@3 bb5@2 c6@3 eb6@5 db6@3 c6@5 bb5@3", H: "c6@5 ~@27",
  I: "~@8 [bb2,bb3]@3 ~@3 [c3,c4]@2 [db3,db4]@5 [f3,f4]@3 [g3,g4]@4 ~@4", J: "[bb3,bb4] ~@7",
})).s("gm_piano").gain(0.3)

// bass · acoustic bass · "Bass"
const bass = note("<A B C D E F G H I J K L M N O P Q R S ~ I J K L M N O P Q R S>".pickRestart({
  A: "bb2 g2", B: "db2 f2", C: "bb1 db2", D: "gb2@2 f2 a1", E: "bb1 g1", F: "c2@2 f2 a2", G: "bb2 db2", H: "gb2 ~@3",
  I: "bb1@2 c2!2", J: "db2 f1", K: "bb1@2 f2 c3", L: "bb2@2 f2 e2", M: "eb2 bb2", N: "eb2@2 e2 f2", O: "bb1 f2",
  P: "bb1@2 f2 c2", Q: "db2!2", R: "f2@2 f1 ab1", S: "bb1 ~@3",
})).s("gm_acoustic_bass").gain(0.3)

// drums · rim
const rim = s("rim").struct("<~ [~ x ~@2]!6 ~@2 [~ x ~@2]!9 ~@3 [~ x ~@2]!9 ~>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<A B@6 ~ A B@9 ~@2 A B@9 ~>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<[~ x ~ x]!7 x [~ x ~ x]!10 x ~ [~ x ~ x]!10 x>").gain(0.3)

// drums · ride
const ride = s("rd").struct(`<
  [x ~@7 x ~@4 x ~@2 x ~@7 x ~@4 x ~@2]!7
  ~
  [x ~@7 x ~@4 x ~@2 x ~@7 x ~@4 x ~@2]!10
  ~@2
  [x ~@7 x ~@4 x ~@2 x ~@7 x ~@4 x ~@2]!10
  ~
>`).gain(0.3)

// drums · splash
const splash = s("cr").struct("<x ~@7 x ~@11 x ~@10>").gain(0.3)

stack(piano, bass, rim, snare, hihat, ride, splash)