Strudelify

whatcha say

Kelly Cam

KeyB♭ majorTempo144 bpm
0:00/0:00
// whatcha say — Kelly Cam
// 144 bpm, 2/2, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 2/2 at bar 2) are rendered on a constant 2/2 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5884298; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(144/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.

// other · violin · "Violin II"
const violin = note(`<
  A B@2 C D E@2 C D F@2 G H I J K L I M N O@2 P@2 Q R S T U V@2 W X Y@2 C D E@2 C D F@2 C D E@2 C Z AA@2 G H I J K L I M
  N O@2 P@2 Q R S T U V@2 W X Y@2 C D E@2 C D F@2 C D E@2 C Z AB@2 AC AD AE AF AG AD AH@2 AC AD AE AF AG AD AH AI T U
  V@2 W X AJ AK AL@2
>`.pickRestart({
  A: "~@4 g3!4", B: "[g3 d4 c4 c4@5]/2", C: "g3@2 bb3 a3 g3@4", D: "f4@4 d4@2 f4 g4",
  E: "[g4 d4 c4@2 d4@6 c4!2 d4 c4 bb3 a3]/2", F: "[g4@2 d5 c5 c5@2 c5@5 bb4 a4 bb4 f4@2]/2",
  G: "bb3@2 bb3 f4 bb3@2 bb3@2", H: "bb3 f4 bb3@2 bb3@2 bb3@2", I: "bb3@2 c4@2 d4 c4 bb3@2 bb3@2 c4@2 d4@4",
  J: "bb3 c4 d4@2 bb3 c4 f4@2", K: "bb3@2 d4 f4 bb3@2 bb3@2", L: "d4 f4 bb3@2 bb3@2 d4 bb3",
  M: "bb3 c4@2 d4@2 c4 bb3@2", N: "g3@3 bb3 d4 c4 bb3 g3", O: "[bb3 g3 bb3@2 bb3@3 c4@4 bb3 d4 c4 bb3 g3]/2",
  P: "[bb3@2 g3@2 bb3@2 g3@2 c4@4 g3@2 g3 f4@7 bb3@2 bb3@2 bb3@2 bb3@4]/2", Q: "f4 bb3!5 bb3@2",
  R: "~@2 g3@2 bb3@2 g3@2 bb3@4 bb3 c4@3", S: "c4@4 ~ c4!2 d4", T: "eb4@2 eb4@2 eb4@2 d4 c4",
  U: "d4@2 c4 bb3 bb3@2 bb3 g3", V: "[bb3 a3 g3 bb3@2 g3 c4@6 ~@2 c4 d4]/2", W: "eb4 d4 eb4!2 eb4@2 d4 c4",
  X: "c4 d4 c4 bb3 bb3@2 bb3!2", Y: "[f4@2 d4 d4@2 c4 d4 c4@3 ~ f4 bb3 c4!2 bb3]/2", Z: "f4@4 g4!4",
  AA: "[g4 d4 c4 c4@5]/2", AB: "[g4 d4 c4 ~ c5@4, ~@3 c4@5]/2", AC: "bb3@2 d4!2 eb4 d4 c4@2",
  AD: "bb3@2 c4@2 bb3 c4 d4 c4", AE: "d4@4 d4@2 c4@2 d4 c4@3 c4@4", AF: "d4@2 c4@2 d4@2 c4@2 d4 c4@3 c4@4",
  AG: "bb3!2 d4!2 eb4 d4 c4@2", AH: "d4 c4 d4 c4 d4 c4 bb3@2", AI: "d4@2 f4@2 g4 c4!2 d4", AJ: "f4@2 d4 d4@2 c4 d4!2",
  AK: "g4 f4!2 d4 g4@4", AL: "[g4 d5 c5 c5@5]/2",
})).s("gm_violin").gain(0.3)

// other · violin · "Violin III"
const violin_2 = note(`<
  A B C D E F G D H C ~ I J K L I M K N O P Q R O P S T I U K L I U K V I U K L I U K N I U K L I U W X I J K L I M K N
  O P Q R O P S T I U K L I U K V I U K L I U K N I U K L I U W X O P Q R O P S V O P Q R O P S Y Z AA AB AC O P S AD
  AE@2
>`.pickRestart({
  A: "~@4 [g3,d4]!4", B: "[g3,d4]!4", C: "[g3,d4]", D: "eb4!2", E: "[bb3,d4] [bb3,f4]", F: "[g3,d4]!2", G: "[c4,f4]!2",
  H: "d4 f4", I: "eb4@3 eb4 eb4@4", J: "bb3@3 bb3@5", K: "g3@3 g3 g3@4", L: "f4@3 f4 f4@4", M: "bb3 bb3@2 bb3 bb3@4",
  N: "d4@3 d4 d4@4", O: "eb4@6 f4 g3", P: "bb3", Q: "g3@6 bb3 g3", R: "f4@6 g3 f4", S: "g3@6 f4 g3", T: "f4 d4",
  U: "bb3@3 bb3 bb3@4", V: "d4!2", W: "g3!3 a3", X: "a3", Y: "d4@2 d4!2", Z: "eb4 [g3,bb3]", AA: "[bb3,f4]!2",
  AB: "[bb3,d4]!2", AC: "[a3,c4]!2", AD: "d4", AE: "[[g3,d4]!3 [g3,d4]@5]/2",
})).s("gm_violin").gain(0.3)

stack(violin, violin_2)