Strudelify

birthday suit

Cosmo Sheldrake

KeyA♭ majorTempo185 bpm
0:00/0:00
// birthday suit — Cosmo Sheldrake
// 185 bpm, 6/8, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 1 "Violin" named as a string part, played on violin (its acoustic bass patch is not one); ch 4 "Viola" named as a string part, played on viola (its taiko drum patch is not one); ch 16 "Double Bass" named as a bass, played on acoustic bass (its pizzicato strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5916410; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(185/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 · violin
const violin = note(`<
  ~@8 A B C@2 D ~@7 E@4 F ~@2 G H ~@2 I J@2 K L M@2 D N O P Q@2 R S@5 ~ T@2 ~@2 U@3 ~ U@3 ~@2 V@3 W@6 ~@4
>`.pickRestart({
  A: "c4", B: "bb3", C: "ab3", D: "g3@5 ~@11", E: "[~@8 c4@5 c4@11 c4@5 bb3@29 ~ c4@2 bb3@3]/4", F: "ab3@11 ~@5",
  G: "f4!2", H: "[e4,g4]@5 ~@11", I: "~ c4", J: "c4/2", K: "bb3@8 bb3@5 bb3@3", L: "bb3!2", M: "[c4@29 ab3@3]/2",
  N: "~ g3", O: "g3 ab3", P: "c4@13 c4@3", Q: "[c4@5 eb4@27]/2", R: "db4", S: "[~ db4@18 c4@48 ~@13]/5",
  T: "[~@4 bb3@6 ab3@3 g3@16 ~@3]/2", U: "[~@5 bb3@5 ab3@3 g3@21 ~@14]/3", V: "[~@5 ab3@8 c4@35]/3",
  W: "[c4@9 ~ c4@9 c4@74 ~@3]/6",
})).s("gm_violin").gain(0.3)

// other · viola
const viola = note(`<
  ~@8 A B C@2 D ~@7 E@4 F ~@2 G H I@2 J K@2 L G M@2 N O P@2 Q@2 B R@6 S@2 T@2 U@3 T U@3 T V@4 W@6 ~@4
>`.pickRestart({
  A: "g3", B: "f3", C: "eb3", D: "d3@5 ~@11", E: "[~@8 f3@5 f3@11 g3@5 eb3@29 ~ f3@2 eb3@3]/4", F: "db3@11 ~@5",
  G: "f3!2", H: "~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3, [c3,g3]@5 ~@11", I: "~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3",
  J: "~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3, ~ ab3", K: "ab3/2", L: "f3@8 f3@5 f3@3",
  M: "[~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3 ~@3 c5@2 [ab3,bb4]@3, c3@29 ~@3]/2", // Absus2
  N: "~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3, g3@5 ~@11", O: "~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3, ~ c4", P: "[c4@29 c4@3]/2",
  Q: "[~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3 ~@3 c5@2 bb4@3, g3@5 eb3@27]/2",
  R: "[~ f3@18 e3@48 ~@9 db4@9 db4@6 db4 ~ db4 ~@2]/6",
  S: "[~@4 g3@6 f3@3 ~@3 c5@2 bb4@3 eb4@3 c5@2 bb4@3 ~@3, ~ c4@12 eb3@16 ~@3]/2", T: "c5@2 bb4@3 eb4@3 c5@2 bb4@3 ~@3",
  U: "[c5@2 bb4@3 eb4@3 c5@2 [f3,bb4]@3 ~@3 c5@2 bb4@3 eb4@3 c5@2 bb4@3 ~@3 c5@2 bb4@3 eb4@3 c5@2 bb4@3 ~@3, ~@5 g3@5 ~@3 eb3@21 ~@14]/3", // Bb5
  V: "[c5@2 bb4@3 eb4@3 c5@2 bb4@3 ~@8 f3@8 ab3@35, ~@13 ab4@16 ~@35]/4", W: "[ab3@9 ~ ab3@9 g3@74 ~@3]/6",
})).s("gm_viola").gain(0.2).pan(0.4)

// other · string ensemble 1 · "Viola"
const string_ensemble_1 = note(`<
  ~@4 A@2 B ~ C D E@2 F ~@3 A@2 G ~ H@4 I J ~ K F ~@2 L M@2 N O P@2 Q R S T U@2 V W@5 ~ X@6 Y@4 Z@6 AA@6 ~@4
>`.pickRestart({
  A: "[g3@5 g3@24 g3@3]/2", B: "f3@4 eb3@3 ~@9", C: "c4@11 db4@2 c4@3", D: "bb3", E: "ab3", F: "g3@5 ~@11",
  G: "f3@3 eb3@2 eb3@4 ~@7", H: "[~@8 ab3@5 ab3@11 bb3@5 g3@29 ~ ab3@2 g3@3]/4", I: "f3@5 ~@3 f3@5 eb3@3",
  J: "f3@5 eb3@3 f3@5 eb3@3", K: "f3!2", L: "~ f3", M: "f3/2", N: "db4@8 db4@5 db4@3", O: "db4 db3",
  P: "[g3@29 g3@3]/2", Q: "e3@5 ~@11", R: "~ c3", S: "c3 db3", T: "eb3@13 eb3@3", U: "[g3@5 c3@27]/2", V: "db3",
  W: "[~ db3@18 c3@48 ~@13]/5", X: "[~@4 g3@6 f3@3 eb3@21 eb3@3 c4@5 c4@3 g3@5 eb3@19 g3@5 f3@3 eb3@19]/6",
  Y: "[~@2 eb3@3 c4@5 c4@3 g3@8 eb3@8 c3@8 g3@5 f3@3 eb3@19]/4",
  Z: "[~@2 eb3@3 c4@5 c4@3 g3@8 eb3@8 c3@8 eb3@8 c3@8 db3@8 f3@35]/6", AA: "[f3@9 ~ f3@9 e3@74 ~@3]/6",
})).s("gm_string_ensemble_1").gain(0.35)

// other · cello · "Violoncello"
const cello = note(`<
  ~@8 A B C@2 D ~@7 E@4 F ~@2 G D ~@2 H I@2 J K L@2 D M N O P@2 C Q@5 ~ R@6 S@4 T@6 U V@8 ~
>`.pickRestart({
  A: "c3", B: "bb2", C: "ab2", D: "g2@5 ~@11", E: "[~@8 ab2@5 ab2@11 bb2@5 g2@29 ~ ab2@2 g2@3]/4", F: "f2@11 ~@5",
  G: "f2!2", H: "~ f2", I: "f2/2", J: "db3@8 db3@5 db3@3", K: "db3 bb2", L: "[c3@29 ab2@3]/2", M: "~ c2", N: "g2 ab2",
  O: "eb2@13 eb2@3", P: "[f2@5 eb2@27]/2", Q: "[~ ab2@18 g2@48 ~@13]/5",
  R: "[~@4 g2@6 f2@3 eb2@21 eb2@3 c3@5 c3@3 g2@5 eb2@19 g2@5 f2@3 eb2@19]/6",
  S: "[~@2 eb2@3 c3@5 c3@3 g2@8 eb2@8 c2@8 g2@5 f2@3 eb2@19]/4",
  T: "[~@2 eb2@3 c3@5 c3@3 g2@8 eb2@8 c2@8 eb2@8 c2@8 db2@8 f2@35]/6", U: "f2@9 ~ f2@6", V: "[~@3 e2@125]/8",
})).s("gm_cello").gain(0.27)

// other · clarinet · "Contrabass Clarinet"
const clarinet = note(`<
  ~@12 A@8 B C D@2 ~@4 A@4 ~@4 A@4 ~@2 D@2 ~@7 E F G H I F G H I F G H J K L M N O@8 ~
>`.pickRestart({
  A: "c2@3 ~@5 c3@3 ~@5", B: "f2@3 ~@5 f3@3 ~@5", C: "ab3@3 ~@5 f3@3 ~@5", D: "eb2@3 ~@5 eb3@3 ~@5", E: "~@13 ab2@3",
  F: "~@5 ab3@3 ~@5 ab2@3", G: "~@5 ab3@3 ~@5 g2@3", H: "~@5 g3@3 ~@5 g2@3", I: "~@5 g3@3 ~@5 ab2@3",
  J: "~@5 g3@3 ~@5 db2@3", K: "~@5 db3@3 ~@5 db2@3", L: "~@7 db2", M: "~@7 f2@3 ~@6", N: "db3@3 ~@7 f3@3 ~@3",
  O: "[~@3 c3@125]/8",
})).s("gm_clarinet").gain(0.3).pan(0.3)

// bass · acoustic bass · "Double Bass"
const bass = note(`<
  ~@12 A@5 B A@2 C D E F G ~@2 H A@4 I J K L A@4 G ~ E@2 M ~@6 N O P Q R O P Q R O P Q S T U V W X@3 ~@6
>`.pickRestart({
  A: "c2@3 ~@5 c3@3 ~@5", B: "c2@3 ~@5 c3@3 bb2@2 c3@3", C: "f2@3 ~@5 f3@3 ~@5", D: "ab3@3 ~@5 f3@3 eb3@2 f3@3",
  E: "eb2@3 ~@5 eb3@3 ~@5", F: "eb2@3 ~@5 eb3@3 db3@2 eb3@3", G: "db2@5 ~@11", H: "db2@5 ~@3 db2@3 c2@2 db2@3",
  I: "db2", J: "db3", K: "ab2", L: "db2!2", M: "db2@3 ~@5", N: "~@13 ab2@3", O: "~@5 ab3@3 ~@5 ab2@3",
  P: "~@5 ab3@3 ~@5 g2@3", Q: "~@5 g3@3 ~@5 g2@3", R: "~@5 g3@3 ~@5 ab2@3", S: "~@5 g3@3 ~@5 db2@3",
  T: "~@2 db2@3 db3@3 ~@5 db2@3", U: "~@7 db2", V: "~@4 db2@3 db3@3 ~@6", W: "db3@3 ~@4 db3@3 f3@3 ~@3",
  X: "[~@3 c3@43 ~@2]/3",
})).s("gm_acoustic_bass").gain(0.3).pan(0.6)

// other · melodic tom · "Roto-toms"
const melodic_tom = note("<~@28 A@4 ~@4 A@4 ~@2 A@2 ~@8 B@11 C@2 ~@12>".pickRestart({
  A: "~@3 g4@2 g4@3 ~@3 g4@2 g4@3", B: "g4@2 g4@3 eb5@3 g4@2 g4@3 ~@3", C: "[g4@2 g4@3 eb5@3 g4@2 g4@3 db4@16 ~@3]/2",
})).s("gm_melodic_tom").gain(0.17).pan(0.8)

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

// drums · snare
const snare = s("sd").struct("<~@49 A B C D ~ D ~ D ~ D ~ D ~ D@2 ~@13>".pickRestart({
  A: "~@9 x ~@2 x ~@3", B: "~@5 x ~@5 x ~ x ~@2", C: "~ x!12 ~@3", D: "~@13 x ~@2",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@51 A ~@2 A B ~ A C ~@2 B ~ C ~@11 D ~>".pickRestart({
  A: "~@13 x ~@2", B: "~@5 x ~@10", C: "~@5 x ~@7 x ~@2", D: "~@7 x",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@52 [~@13 x ~@2]!5 ~@2 [~@13 x ~@2]!5 ~@12 [~@4 x!3 ~@9]>").gain(0.3)

stack(violin, viola, string_ensemble_1, cello, clarinet, bass, melodic_tom, kick, snare, crash, ride)

More by Cosmo Sheldrake