Strudelify

Wish to Wish

S.E.N.S.

KeyG majorTempo68 bpm
0:00/0:00
// Wish to Wish — S.E.N.S.
// 68 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2, 3/4 at bar 50) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5759886; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 50 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(68/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(`<
  A B@4 C D@2 E F@2 G H@2 I J K@2 L@2 M N O P Q R B@4 C D@2 E S@2 T U V W X Y Z AA AB AC AD AE AF@2
>`.pickRestart({
  A: "~@3 d4",
  B: "[g2@2 d3@2 a3@2 b3@2 ~@4 b4@2 c5 ~ f#2@2 d3@2 a3@2 b3@2 ~@4 a4@2 b4 ~ e2@2 b2@2 e3@2 f#3@2 ~@4 g4@2 a4 ~ d2@2 b2@2 d3@2 f#3@2 e4@4 d4@4, b4@11 ~@4 a4@12 ~@4 g4@12 ~@4 f#4@9 ~@8, ~ d4 ~ d4 ~ g3 ~ b3]/4",
  C: "c2 g2 e3 g3 ~@2 e4 f#4, e4@11 ~@5, ~ c4",
  D: "[e2@2 b2@2 f#3@2 g3@2 ~@4 g4@2 a4 ~ d2@2 a2@2 d3@2 f#3@2 ~@4 e4@4, g4@11 ~@4 f#4@12 ~@5, ~ b3 ~ a3]/2",
  E: "d2 a2 d3 f#3 a3 d4 f#4 a4, d4 ~",
  F: "[g2@2 d3@2 a3@2 b3@2 ~@4 [b4,b5]@2 [c5,c6] ~ f#2@2 d3@2 a3@2 b3@2 ~@4 [g4,g5]@4, [b4,b5]@11 ~@4 [a4,a5]@12 ~@5, ~ d4 ~ d4]/2", // B C G B A
  G: "e2 b2 e3 f#3 ~@2 [b3,b4]@2, [g4,g5]@11 ~@5, ~ g3", // B G
  H: "[d2@2 b2@2 d3@2 f#3@2 ~@4 [e5,e6]@2 [d5,d6] ~ c2@2 g2@2 e3@2 g3@2 ~@6 [c5,c6]@2, [f#4,f#5]@11 ~@4 [e5,e6]@14 ~@3, ~ b3 ~ c4]/2", // E D C F# E
  I: "e2 b2 f#3 g3 b3@3 [b3,b4], [b4,b5]@4 [g4,g5]@9 ~@3", // B G
  J: "d2 a2 d3 f#3 ~@3 [e4,e5], [a3,a4]@4 [f#4,f#5]@9 ~@3, ~ a3", // E A F#
  K: "[b1@2 f#2@2 b2@2 d#3@2 f#3@2 b3@2 [d#4,b4,g5]@2 [a4,f#5] ~ e2@2 b2@2 f#3@2 ~@6 [b4,g5]@2 [c5,a5]@2, [d#4,d#5]@11 ~@3 f#4@2 ~@6 g3@10, ~@15 [b4,g5]@12 ~@5, ~@3 d4]/2", // D#aug D Em F D# Em
  L: "[d2@2 a2@2 e3@2 [a4,f#5] [g4,e5] [g4,d5]@4 [b4,g5]@2 [a4,f#5] ~ e2@2 b2@2 f#3@2 ~@6 [b4,g5]@2 [c5,a5]@2, [b4,g5]@6 f#3@9 [b4,g5]@12 ~@5, ~@4 a3@4 ~@3 g3@5, ~@3 d4]/2", // D C G5 Em D Em F Em
  M: "d2@2 a2@2 e3@2 [a4,f#5] [g4,e5] [f#4,d5]@6 d5@2, [b4,g5]@3 f#3@5, ~ a3", // D C D Em
  N: "[c3,d5]@2 c5 ~ c4@2 d4@2 e4@2 g3@2 c4@2 [e3,c5]@2, ~ g3 ~@6, ~@3 g5@9 ~@4", // Csus2 C
  O: "[e2,c5]@2 b4 ~ g3@2 b3@2 e4@2 b3@2 d4@2 [g3,d5]@2, ~ b2 ~@6, ~@3 g5@9 ~@4", // C G5
  P: "[c3,d5]@2 c5 ~ c4@2 d4@2 e4@2 g3@2 [c4,c5,g5]@2 [e3,d5,a5]@2, ~ g3 ~@6, ~@3 g5@9 ~@4", // Csus2 C5 Dsus2
  Q: "d2 a2 d3 g3 a3 d4 e4 f#4, [c5,g5]", R: "d2 a2 d3 f#3 a3@2 d4@2, [a4,d5,f#5]@11 ~@5",
  S: "[~@2 d4@2 a4@2 b4@2 d5@4 b3@2 c4 ~@3 d4@2 a4@2 b4@2 d5@4 g3@4, g2@15 ~ f#2@15 ~, b3@11 ~@4 a3@12 ~@5]/2",
  T: "e2 b2 f#3 g3 a4@2 b4@2, g4 b3", U: "d2 b2 d3 f#3 e4@2 d4@2, f#4 b3", V: "c2 g2 e3 g3 c4@2 c4@2, e4@11 ~@5",
  W: "e2 b2 f#3 g3 ~@2 g4 a4, b3 g4@2 ~, ~ b3",
  X: "d2@2 a2@2 d3@2 f#3@2 ~@4 b4 [c5,d5] [e5,f#5] [g5,a5], f#4@11 ~@5, ~ a3", // Csus2 Esus2 Gsus2
  Y: "c3@2 g3@2 b3@2 g5 e5 g4@4 g5@2 b5@2, b5@3 e4 ~@4",
  Z: "b2@2 f#3@2 a3@2 f#5 d5 f#4@4 f#5@2 a5@2, a5@5 ~@11, g#5 ~@5 d4@2 ~@8",
  AA: "a2@2 e3@2 g3@2 e5 ~ e4@4 e5@2 g5@2, g5@6 ~ c5@5 ~@4, f5 ~@5 c4@2 ~@8",
  AB: "g2@2 d3@2 [a5,a#5] ~ b3@2 [c6,c#6] ~ f#4@2 b4@2 d5@2, f#5@2 f#3 ~ d4 ~@3, ~@5 b5@3 ~ d6@3 b5@4", // A#maj7 C#maj7
  AC: "[d6,d#6] ~ g3@2 b3@2 [g5,b5] [e5,g5] g4@2 b4@2 [g5,b5]@2 [b5,e6]@2, c3 ~@2 e4 ~@4, ~ [b5,e6]@5 ~@6 e5@4", // D#maj7 G Em G E5
  AD: "b2@2 f#3@2 a3@2 [f#5,a5] [d5,f#5] f#4@2 a4@2 [f#5,a5]@2 [a5,d6]@2, [a5,d6]@3 d4 ~@2 d5@2", // F#m D F#m D5
  AE: "c3@2 g3@2 b3@2 [e5,g5] ~ g4@2 b4@2 g5@2 [g5,b5]@2, [g5,b5]@3 e4 ~@4, ~@7 [c5,e5]@5 e5@4", // Em G C
  AF: "[d2@2 a2@2 d3@2 f#3@2 a3@2 d4@2 f#4@2 a4@2 [a4,d5,f#5]@11 ~@5, [f#5,a5]@4 [a5,d6]@4 [a5,d6,f#6]@19 ~@5]/2", // D F#m D5 D
})).s("gm_piano").gain(0.3)

stack(piano)