Strudelify

Themes for Solo Cello

Kirara Wright

KeyB♭ majorTempo60 bpm
0:00/0:00
// Themes for Solo Cello — Kirara Wright
// 60 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 6/8 at bar 10, 3/4 at bar 17, 4/4 at bar 24) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5893375; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 33 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/4)

// 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.

// chords · piano
const piano = note("<~@9 A B C D B E F G@2 H I J@3 K@3 L@3 M@3 N>".pickRestart({
  A: "~@13 ab3 b3 e4, ~@6 e5 b4", B: "b3 ab3 ~ ab3 b3 e4 b3 ab3 ~ a3 db4 e4 db4 a3 ~ a3, ~ e5 b4 ~ e5 a4 ~ e5",
  C: "db4 e4 db4 a3 ~ a3 db4 gb4 db4 a3 ~ a3 db4 gb4 db4 a3, a4 ~ gb5 db5 ~ gb5 db5 ~",
  D: "~ a3 d4 f4 d4 a3 ~ a3 b3 gb4 b3 a3 ~ ab3 b3 e4, f5 a4 ~ gb5 b4 ~ e5 b4",
  E: "db4 e4 db4 a3 ~ g3 c4 e4 c4 g3 ~ g3 c4 e4 c4 g3, a4 ~ e5 g4 ~ e5 g4 ~",
  F: "~ b3 eb4 gb4 eb4 b3 ~ b3 e4 ab4 e4 b3 ~@4, eb5 b4 ~ e5 b4 ~@3",
  G: "[~@24 [f2,f3,c4,f4,a4]@2 ~@2 [f2,f3,c4,f4,a4] [f2,f3,c4,f4,a4]@9 ~ [c2,c3,e4,g4,bb4]@2 ~@2 [c2,c3,e4,g4,bb4] [c2,c3,e4,g4,bb4]@9 ~ [c2,c3,e4,g4,bb4]@2 ~@2 [c2,c3,e4,g4,bb4] [c2,c3,e4,g4,bb4]@2 ~@3 [c2,c3,e4,g4,bb4]@2 ~@3 [f2,f3,c4,f4,a4]@2 ~@2 [f2,f3,c4,f4,a4] [f2,f3,c4,f4,a4]@9 ~ [f2,f4]@2 ~ a4@2 [f3,a3,c4,c5]@2 ~ f5@2 [f3,a3,c4,c6]@2]/2", // F C7 F
  H: "~ a5@2 [d2,f4]@2 ~ a4@2 [f3,a3,d4,d5]@2 ~ a5@2 [f3,a3,d4,c5]@2 ~ d5@2 [g2,g4]@2 ~ bb4@2 [g3,bb3,d4,d5]@2 ~ g5@2 [g3,bb3,d4,d6]@2 ~ bb5@2 [e2,g4]@2 ~ bb4@2 [g3,bb3,e4,e5]@2 ~ g5@2 [g3,bb3,e4,e6]@2 ~ bb5@2", // Dm Dm7 G Gm Em Edim
  I: "[c2,e4]@2 ~ g4@2 [g3,c4,e4,c5]@2 ~ e5@2 [g3,c4,e4,c6]@2 ~ g5@2 [c2,e4]@2 ~ g4@2 [g3,c4,e4,c5]@2 ~ e5@2 [g3,c4,e4,c6]@2 ~ g5@2 [f2,f4]@2 ~ bb4@2 [f3,bb3,c4,c5]@2 ~ f5@2 [f3,bb3,c4,c6]@2 ~ bb5@2 [f2,f4]@2 ~", // C F Fsus4 F
  J: "[a4@2 [f3,a3,c4,c5]@2 ~ f5@2 [f3,a3,c4,c6]@2 ~ a5@2 [f2,f4]@2 ~ a4@2 [f3,a3,c4,c5]@2 ~ f5@2 [f3,a3,c4,c6]@2 ~ a5@2 [f2,f4]@2 ~ a4@2 [f3,a3,c4,c5]@2 ~ f5@2 [f3,a3,c4,c6]@2 ~ a5@2 [bb2,f4]@2 ~ bb4@2 [f3,bb3,e4,e5]@2 ~ bb5@2 [f3,bb3,e4,f6]@2 ~ e6@2 [bb2,f4]@2 ~ bb4@2 [f3,bb3,d4,d5]@2 ~ f5@2 [f3,bb3,d4,d6]@2 ~ bb5@2 [a2,e4]@2 ~ a4@2 [a3,c4,e4,c5]@2 ~ e5@2 [a3,c4,e4,c6]@2 ~ a5@2 [g2,bb4]@2 ~ d5@2 [f3,a3,d4,g5]@2 ~ bb5@2 [f3,a3,d4,g6]@2 ~ d6@2 [e2,e4]@2 ~ g4@2 [e3,g3,c4,c5]@2 ~ e5@2 [e3,g3,c4,c6]@2 ~ g5@2 [f2,c3,f3,a3,c4,f4]@14 ~@13]/3", // F Bb5 Bb Bb5 Bb A5 Am Gm …
  K: "[~@3 [bb3,db4,f4]@14 [bb3,db4,f4]@14 ~ [bb3,db4,f4]@14 [bb3,db4,f4]@14 ~ [bb3,eb4,gb4]@14 [bb3,eb4,gb4]@14 [bb3,eb4,gb4]@14 ~ [bb3,eb4,gb4]@14 [ab3,c4,eb4]@14 ~ [ab3,c4,eb4]@11]/3", // Bbm Ebm Ab
  L: "[~@3 [ab3,c4,eb4]@14 [ab3,c4,eb4]@14 ~ [ab3,db4,f4]@14 [ab3,db4,f4]@14 ~ [ab3,db4,f4]@14 [ab3,db4,f4]@14 [gb3,bb3,db4]@14 ~ [gb3,bb3,db4]@14 [gb3,bb3,db4]@14 ~ [gb3,bb3,db4]@11]/3", // Ab Db Gb
  M: "[~@3 [gb3,b3,eb4]@14 [gb3,b3,eb4]@14 ~ [gb3,b3,eb4]@14 [gb3,b3,eb4]@14 ~ [f3,bb3,c4]@14 [f3,bb3,c4]@14 [f3,a3,c4]@14 ~ [f3,a3,c4]@14 [f3,bb3,db4]@14 ~ [f3,bb3,db4]@11]/3", // B Fsus4 F Bbm
  N: "~@3 [f3,bb3,db4]@14 [f3,bb3,db4]@14 ~@17", // Bbm
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  [g3 d4 bb3 d4 g3 d4 bb3 d4]!2
  [f3 d4 bb3 d4 f3 d4 bb3 d4]
  [eb3 c4 g3 c4 eb3 c4 g3 c4]
  [g3 d4 bb3 d4 g3 d4 bb3 d4]!2
  [f3 d4 bb3 d4 f3 d4 bb3 d4]
  [eb3 c4 g3 c4 eb3 c4 g3 c4]
  [g3 d4 bb3 d4 g3 d4 bb3 d4]
  ~@24
>`).s("gm_piano").gain(0.15)

stack(piano, piano_soft)