Strudelify

Bee and Puppycat: Where Jellyfish Come From

Will Weisenfeld (Baths Music)

KeyG majorTempo75 bpm
0:00/0:00
// Bee and Puppycat: Where Jellyfish Come From — Will Weisenfeld (Baths Music)
// 75 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 34, 4/4 at bar 34) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5907606; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 39 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// chords · cello · "Violoncello"
const cello = note("<A B C D E B C D F G H@2 G I@2 B C D E B C D F G H@2 G I@2 J K L M ~@6>".pickRestart({
  A: "c2 e2 g2 [g2,e3]@3 g2 b2 d3 [d2,b2]@3", B: "c2 g2 f2 [c2,g2]@3 b2 d3 g2 [d2,b2]@3",
  C: "c3 e3 g2 c2 e2 g2 [g2,d3]@3 [c3,g3]@3", D: "c2 g2 e2 [c2,g2]@3 b2 d3 g2 [d2,b2]@3",
  E: "c3 e3 g2 c2 e2 g2 [g2,d3]@3 [c2,g2]@3", F: "c3 e3 g2 c2 e2 g2 [g2,d3]@3 [e2,c3]@3",
  G: "~ [b2,d3] [g2,d3] [g2,c3]", H: "[[a2,e3]@2 [d2,d3]@5 ~]/2", I: "[[a2,e3] [d2,d3]@3]/2",
  J: "~@3 e3!3 e3@3 ~ e3 c3", K: "d3 c3 g2@7 c3!2 e3", L: "b2@3 ~ b2!2 b2@3 ~ b2 g2", M: "a2 g2 f2@3 a2 c3@6",
})).s("gm_cello").gain(0.3)

// chords · cello · "Violoncello" · soft notes
const cello_soft = note("<~@33 A B C D E@2>".pickRestart({
  A: "~@2 [f2,c3]!2", B: "[f2,c3]!2 [a2,e3]!2", C: "[a2,e3]!2 [d2,g2]!2", D: "[d2,g2]!2 [a2,f3]@2", E: "[e3@3 ~]/2",
})).s("gm_cello").gain(0.2)

// chords · cello · "Violoncello"
const cello_2 = note("<A B C D E B C D F G H@2 I J@2 B C D E B C D F G H@2 I J@2 ~@4 K L@2 M N@2>".pickRestart({
  A: "g2 e2 c2 [c2,c3]@3 d3 b2 g2 [g2,g3]@3", B: "c3 f2 g2 [e2,c3]@3 d3 b2 g2 [g2,d3]@3",
  C: "c2 c3 e2!2 c2 e2 [d2,b2]@3 [g2,e3]@3", D: "e2 c2 e2 [e2,c3]@3 g2 d2 b2 [g2,d3]@3",
  E: "c2 c3 e2!2 c2 e2 [d2,b2]@3 [e2,c3]@3", F: "c2 c3 e2!2 c2 e2 [d2,b2]@3 [c2,g2]@3", G: "~ [d2,g2] [d2,b2] [e3,g3]",
  H: "[[c2,e2]@2 [g2,b2]@5 ~]/2", I: "~ [d2,g2] [d2,b2] [c2,e2]", J: "[[c2,e2] [g2,b2]@3]/2", K: "~@9 e3!3",
  L: "[e3@3 ~ e3 c3 d3 c3 g2@7 ~ c3 e3 b2@3 ~ b2!2]/2", M: "b2@3 ~ b2 g2 a2 g2 f2 f2@2 a2", N: "[c3@3 ~]/2",
})).s("gm_cello").gain(0.3)

// chords · cello · "Violoncello" · soft notes · F5 A5 G5 F5 C5
const cello_soft_2 = note("<~@29 [[f2,c3]!4] [[a2,e3]!4] [[d2,g2]!4] [[c2,f2]!2 [c2,g2]!2] [[c2,g2] ~] ~@5>")
  .s("gm_cello").gain(0.2)

stack(cello, cello_soft, cello_2, cello_soft_2)