Strudelify

creep

Chris Davis

KeyF majorTempo75 bpm
0:00/0:00
// creep — Chris Davis
// 75 bpm, 6/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 9 "Bass Trombone" trombone (copy of ch 4 "Bari Sax" baritone sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5879993; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 53 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/3)

// 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 · alto sax · "Alto Sax 1"
const alto_sax = note("<~@17 A B C@2 D E F@2 G@2 H@2 I@2 J ~@21>".pickRestart({
  A: "f3@5 a3", B: "c4@2 c4 a3@2 c4", C: "[a3@9 a3 g3 ab3]/2", D: "a3@5 db4", E: "e4@2 e4 db4@2 e4",
  F: "[a3@9 db4 d4 e4]/2", G: "d4/2", H: "[bb3@3 d4]/2", I: "db4/2", J: "db4 c4 db4 ~@9",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Tenor Sax 1"
const tenor_sax = note("<~@17 A B C@2 D E F@2 G@2 H@2 I@2 J ~@21>".pickRestart({
  A: "f3@5 a3", B: "c4@2 c4 a3@2 c4", C: "[a3@9 a3 g3 ab3]/2", D: "a3@5 db4", E: "e4@2 e4 db4@2 e4",
  F: "[a3@9 db4 d4 e4]/2", G: "bb3/2", H: "[d4@3 bb3]/2", I: "db4/2", J: "db4 c4 db4 ~@9",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Bari Sax"
const baritone_sax = note("<~@17 A B C D E F G H I J K L M N O ~@21>".pickRestart({
  A: "f2@5 a2", B: "c3@2 c3 a2@2 c3", C: "f2@3 f2@2 a2", D: "c3!2", E: "a2@5 db3", F: "e3@2 e3 db3@2 e3", G: "a2",
  H: "a2!2", I: "bb2@5 d3", J: "f3@2 f3 d3@2 f3", K: "bb2", L: "f3!2", M: "bb2@5 db3", N: "bb2!2", O: "eb3 ~@5",
})).s("gm_baritone_sax").gain(0.3)

// other · trumpet · "Trumpet 2"
const trumpet = note("<~@17 A B C@2 D E F@2 G@2 H@2 I@2 J ~@21>".pickRestart({
  A: "f4@5 a4", B: "c5@2 c5 a4@2 c5", C: "[a4@9 a4 g4 ab4]/2", D: "a4@5 db4", E: "e4@2 e4 db4@2 e4",
  F: "[a4@9 db4 d4 e4]/2", G: "d4/2", H: "[bb3@3 d4]/2", I: "bb3/2", J: "db4 c4 bb3 ~@9",
})).s("gm_trumpet").gain(0.3)

// other · trombone · "Trombone 1"
const trombone = note("<~@17 A B C@2 D E F@2 G@2 H@2 I@2 J ~@21>".pickRestart({
  A: "f3@5 a3", B: "c4@2 c4 a3@2 c4", C: "[f3@9 f3 g3 ab3]/2", D: "a3@5 db4", E: "e4@2 e4 db4@2 e4",
  F: "[a3@9 db4 d4 e4]/2", G: "d4/2", H: "[bb3@3 d4]/2", I: "bb3/2", J: "db4 c4 bb3 ~@9",
})).s("gm_trombone").gain(0.3)

// chords · piano
const piano = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV ~@4
>`.pickRestart({
  A: "f5@10 ~ [g5,bb5], [f2,f3,a4,c5], ~@5 [f5,a5]", B: "[f5,a5]@11 ~ [a5,c6]@11 ~, f2@23 ~",
  C: "~@3 [a4,a5] [db5,db6] [a5,a6], [a2,a3]@23 ~", D: "[g5,g6]@11 ~ [g5,db6,e6]@11 ~, [a2,a3]@23 ~",
  E: "[f5,bb5,d6]@11 ~ [a5,a6]@4 [d6,d7]@4 [a5,a6]@4, [bb2,bb3]@23 ~", // Bb A D A Bb
  F: "[f5,f6]@11 ~ [f5,bb5,d6]@11 ~, [bb2,bb3]@23 ~", G: "[f5,bb5,db6]@11 ~ [f5,bb5,f6]@4 g6@8, [bb2,bb3]@23 ~",
  H: "[bb2,bb3,f5,bb5,db6]@11 ~ [c3,c4,e5,g5,c6]@11 ~", // Bbm C
  I: "[c5,f5,a5]@11 ~ a5@2 c6@2 g5@2 a5@2 f5@2 g5@2, [f2,f3]@23 ~", J: "e5@4 f5@8 [c5,f5,a5]@11 ~, f2@23 ~",
  K: "[a4,db5,e5]@11 ~ [a5,a6]@4 [db6,db7]@4 [e6,e7]@4, [a2,a3]@23 ~", L: "[a6,a7]@11 ~ [db4,e4,a4]@11 ~, a2@23 ~",
  M: "[d4,f4,a4]@2 a4 c5 a4 g4, [bb2,bb3]@23 ~", N: "[d4,f4,a4]@2 a4 c5 a4 g4, bb2@23 ~",
  O: "[db4,f4,ab4]@2 ab4 c5 ab4 g4, [bb2,bb3]@23 ~", P: "[bb2,db4,f4,ab4]@11 ~ [c3,c4,e4,g4]@11 ~",
  Q: "[c4,f4,a4]!5 [a2,c4,f4,a4], f2@19 ~@5", R: "[c4,f4,a4]!2 [c3,c4,f4,a4] [c4,f4,a4]!2 [c3,c4,f4,a4], c3@2 ~ a2@2 ~",
  S: "[c4,f4,a4]!6, f2@23 ~", T: "[c4,f4,a4]!6", U: "[db4,e4,a4]!5 [db3,db4,e4,a4], a2@19 ~@5",
  V: "[db4,e4,a4]!2 [e3,db4,e4,a4] [db4,e4,a4]!2 [e3,db4,e4,a4], e3@2 ~ db3@2 ~", W: "[db4,e4,a4]!6, a2@23 ~",
  X: "[db4,e4,a4]!6, a2@11 ~ a2@11 ~", Y: "[d4,f4,bb4]!5 [d3,d4,f4,bb4], bb2@19 ~@5",
  Z: "[d4,f4,bb4]!2 [f3,d4,f4,bb4] [d4,f4,bb4]!2 [f3,d4,f4,bb4], f3@2 ~ d3@2 ~", AA: "[d4,f4,bb4]!6, bb2@23 ~",
  AB: "[d4,f4,bb4]!6, f3@11 ~ f3@11 ~", AC: "[db4,f4,ab4]!5 [db3,db4,f4,ab4], bb2@19 ~@5",
  AD: "[db4,f4,ab4]!6, bb2@11 ~ bb2@11 ~", AE: "[eb3,eb4,g4,bb4] ~@5", AF: "c6@11 ~ c7@11 ~, c4@23 ~",
  AG: "[a4,c5,f5]@11 ~ a6@4 c7@4 a6@4", AH: "f6@11 ~ [f2,f3]@11 ~", AI: "[a2,a3]@11 ~ a6@4 ab6@4 g6@4",
  AJ: "e6@4 db6@4 a5@4 [a4,c5,e5]@11 ~", AK: "[bb4,d5,f5]@11 ~ [f5,f6]@4 [g5,g6]@4 [a5,a6]@4",
  AL: "[d5,d6]@11 ~ [d5,f5]@11 ~", AM: "[bb4,db5,f5] bb4 db5 f5 bb4 db5", AN: "g5 bb4 db5 f5 bb4 db5",
  AO: "[a3,c4,f4]@11 ~ [a3,c4,f4]@11 ~", AP: "[c4,f4,a4]@11 ~ [a3,c4,f4]@11 ~", AQ: "[a3,db4,e4]@11 ~ e6@4 g6@4 a6@4",
  AR: "e6@11 ~ [a4,db5,e5]@11 ~", AS: "[bb4,d5,f5]@11 ~ [f5,f6]@4 [g5,g6]@4 [f5,f6]@4", AT: "[a5,a6]@8 [f5,f6]@15 ~",
  AU: "[bb4,d5,f5]@2 [f5,f6]!2 [g5,g6] [f5,f6]", AV: "[a5,a6]@8 [f5,f6]@4 [c5,e5,g5]@11 ~",
})).s("gm_piano").gain(0.3)

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

// drums · kick
const kick = s("bd").struct("<~ [x ~@4 x]!30 ~@2 [x ~@4 x]!8 x ~@6 [x!3 ~@3] [x ~@4 x]!4>").gain(0.3)

// drums · rim
const rim = s("rim").struct("<~ [~ x]!30 ~@2 [~ x]!8 ~@8 [~ x]!4>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@48 [x!3 ~@3] ~@4>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~ [x!6]!30 ~@2 [x!6]!8 ~@7 [x!3 ~@3] [~ x!5] [x!6]!3>").gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@48 [~@8 x!4] ~@4>").gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@48 [~@6 x!2 ~@4] ~@4>").gain(0.3)

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

stack(
  alto_sax, tenor_sax, baritone_sax, trumpet, trombone, piano, bass, kick, rim, snare, hihat, mid_tom, high_tom, crash
)