Strudelify

Your Move

Yes

KeyE majorTempo132 bpm
0:00/0:00
// Your Move — Yes
// 132 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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 · flute · "Anderson"
const flute = note(`<
  A@2 B C@2 D E F G@2 ~@8 H I J@2 K L M N O P ~@2 Q R S T@2 U@2 V W X@2 Y Z AA AB@2 AC AD AE AF AG AH@2 Y AI AJ AK AL@3
  ~ Q R S T@2 AM@2 AN AO AP@2 AN AO AP@2 AQ AR AS@2 AT AU AV AW AX@4 Q R S AY@2 AZ@2 AN AO ~@2 AN AO ~@2 AN AO ~@2 AN AO
  ~@2 Q R BA BB@3 ~
>`.pickRestart({
  A: "[~ e5 f#5@2 g#5@3 ~ g#5@3 g#5@3 ~ f#5@3 ~ f#5@3 f#5@3 ~ f#5@3 ~ e5@2]/2", B: "~ e5@3 ~ e5@3 ~ g#5@3 g#5@3 ~",
  C: "[g#5@3 ~ g#5@3 f#5@3 ~ f#5@3 ~ e5@7 ~@10]/2", D: "~@9 e5 a5@2 b5@3 ~", E: "b5@3 b5@3 ~ a5@3 ~ a5@3 a5@2",
  F: "~@2 a5@3 ~ g5@3 g5@3 ~ g5@3", G: "[~ b5@3 b5@3 ~ b5@3 ~ b5@3 a5@3 ~ a5@3 ~ a5@7 ~@2]/2",
  H: "~@2 e5@3 ~ f#5@3 ~ f#5@3 ~ e5@2", I: "~@2 e5@3 ~ f#5 ~ e5@4 ~@2 e5!2",
  J: "[e5@3 ~ f#5 ~ e5@5 ~ c#5 ~ c#5@4 b4@10 ~@4]/2", K: "~@2 f#5@3 ~ f#5 ~ e5@3 ~ f#5 ~ e5@2",
  L: "~@2 f#5@3 ~ f#5@5 ~@5", M: "~@6 c#5 ~ e5 ~ c#5 ~ e5@3 ~", N: "g#5@9 ~ f#5 ~ e5 ~ e5@2",
  O: "c#5 ~ e5@4 c#5@2 b4@6 c#5@2", P: "g#4@11 ~@5", Q: "g#5@3 ~ a5 ~ g#5@3 ~ a5 ~ g#5@3 ~",
  R: "a5 ~ g#5@3 ~ a5 ~ g#5@3 ~ a5 ~ g#5@2", S: "~@2 a5 ~ g#5@5 ~@3 g#5@3 ~", T: "[a5@3 ~ a5@28]/2",
  U: "[~@4 a5@5 ~ b5@3 ~ g#5@6 ~@2 f#5@2 e5@4 ~@4]/2", V: "e5@3 ~ f#5 ~ e5@5 ~ f#5 ~ f#5@2",
  W: "~@2 e5 ~ f#5@3 ~ f#5@4 ~@4", X: "[~@2 e5@3 ~ f#5 ~ e5 ~ c#5@3 ~ c#5@4 b4 ~ b4@5 ~@7]/2",
  Y: "~@2 e5@3 ~ f#5 ~ e5@3 ~ f#5 ~ e5@2", Z: "~@2 f#5 e5 f#5@7 ~@5", AA: "~@4 e5 ~ f#5 ~ e5@3 ~ f#5 ~ g#5@2",
  AB: "[~@2 f#5@3 ~@5 e5 ~ c#5 ~ e5@6 c#5@2 b4@5 ~@5]/2", AC: "e5@3 ~ c#5 ~ b4@5 ~@5", AD: "g#5@6 ~ a5",
  AE: "~@2 g#5@3 ~ e5@8 ~@2", AF: "e5@3 ~ f#5 ~ f#5@2 e5@3 ~ e5 ~ e5@2", AG: "~@2 f#5 ~ f#5 ~ f#5@2 e5@3 ~@5",
  AH: "[~@2 e5 ~ f#5@3 ~ e5 ~ c#5@3 ~ c#5@13 ~@5]/2", AI: "~@2 f#5 ~ f#5 ~ f#5@7 ~@3", AJ: "~@6 c#5 ~ e5 ~ e5 ~ e5@3 ~",
  AK: "~@4 e5 ~ e5 ~ e5 ~ e5@5 ~", AL: "[g#5@23 ~ a5@3 ~ b5@20]/3",
  AM: "[~@4 a5@5 ~ b5@3 ~ b5@5 ~ b5@3 ~ g#5 f#5 e5@5 ~]/2", AN: "b5 ~ g#5 ~ a5 ~ f#5 ~",
  AO: "g#5@2 ~@2 e5@2 ~@2 f#5@2 ~@2 c#5@2 b4 ~", AP: "[d#5@5 ~@3 e5@3 ~ g#5@7 ~ c#5@7 ~@5]/2",
  AQ: "e5@3 ~ f#5 ~ f#5@5 ~ e5 ~ e5@2", AR: "~@2 f#5 ~ f#5 ~ f#5@4 g#5 ~@5",
  AS: "[~@2 a5 ~ a5@3 ~ e5@3 ~ c#5 ~ c#5@4 b4@5 ~@9]/2", AT: "~@3 e5@2 f#5@2 ~ e5@2 ~ f#5@2 f#5@3",
  AU: "~@2 f#5 ~ f#5 ~ f#5@2 g#5@4 ~@4", AV: "~@6 g#5 ~ a5 ~ a5 ~ g#5@3 ~", AW: "~@4 g#5@3 ~ g#5@2 f#5 ~ e5@3 ~",
  AX: "[b5@21 ~@3 e5@3 ~ b5@24 ~@12]/4", AY: "[a5@3 ~ a5@23 ~@5]/2",
  AZ: "[~@4 b5@7 ~ g#5 ~ b5@5 ~ c#6@3 ~ g#5 f#5 e5@5 ~]/2", BA: "~@2 a5 ~ g#5@7 ~ g#5@3 ~", BB: "[a5@3 ~ a5@42 ~@2]/3",
})).s("gm_flute").gain(0.64).pan(0.6)

// chords · acoustic guitar steel · "Howe"
const acoustic_guitar_steel = note(`<
  ~@10 A B@2 C@2 D@3 E F G F E F G F E F G F E F G F@4 E F G F E F G F E F G F E F G F E F G F E F G F E F G F@4 E F G F
  E F G F E F G F E F G F E F G F E F G F@4 E F G F E F G F E F G F E F G F E F G H@2 ~@2
>`.pickRestart({
  A: "~@2 [g#4,b4] ~ [g#4,b4] [a4,c#5] [g#4,b4] ~ [b3,g#4,b4]@2 [c#4,a4,c#5]@2 [b3,g#4,b4]@2 [e4,c#5,e5] ~", // G#m A G#m E F#m E C#m
  B: "[~@2 [d#4,b4,d#5] ~@3 [b3,g#4,b4]@4 e4@2 b3@2 ~@4 [g#4,b4] ~ [g#4,b4] [a4,c#5] [g#4,b4] ~ [g#4,b4]@2 [a4,c#5]@2 [g#4,b4]@2 [f#3,f#4] ~, ~@7 e3@5 ~@4]/2", // G#m E G#m A G#m A G#m F#
  C: "[~@2 [e3,e4] ~@3 [b3,g#4]@4 e4@2 c#4@2 ~@4 [g#4,b4] ~ [g#4,b4] [a4,c#5] [g#4,b4] ~ [b3,g#4,b4]@2 [c#4,a4,c#5]@2 [b3,g#4,b4]@2 [e4,c#5,e5] ~, ~@14 g#3@9 ~@9]/2", // E G#m A G#m E F#m E C#m
  D: "[~@2 [d#4,b4,d#5] ~@3 [f#4,d#5,f#5] ~@3 [e4,c#5,e5] ~@3 a5@4 f#5@2 ~@2 a5@2 ~@4 a5@2 ~@4 a5@2 g#5@2 ~@2 a5@2 ~@4 g#5@2, ~@20 e4@4 f#5@4 ~@2 f#5@5 ~@7 f#5@4 ~@2, ~@13 e4@2 ~ e4@2 ~ e4@2 ~ e4@2]/3", // G#m D#m C#m
  E: "~@2 [e4,g#4] ~@3 [e4,g#4]!2, [e4,g#4]@2 ~ [e4,g#4]@3 ~@2, ~ b3@3 ~ b3@3", // E
  F: "~@2 [f#4,a4] ~@3 [f#4,a4]!2, [f#4,a4]@2 ~ [f#4,a4]@3 ~@2, ~ c#4@3 ~ c#4@3", // F#m
  G: "~@2 [g#4,b4] ~@3 [g#4,b4]!2, [g#4,b4]@2 ~ [g#4,b4]@3 ~@2, ~ d#4@3 ~ d#4@3", // G#m
  H: "[~@5 a4@18 ~@9, [e4,a4]@4 e4@19 ~@9, ~ c#4@12 ~@3]/2", // A5
})).s("gm_acoustic_guitar_steel").gain(0.45).pan(0.4)

// bass · acoustic bass · "Squire"
const bass = note("<~@18 A@77 B C D E F G F E H C I E F J K L M N K O@3 ~>".pickRestart({
  A: "e2 ~@3", B: "e2", C: "c#2@15 ~", D: "b1", E: "a1@15 ~", F: "g#1@15 ~", G: "f#1", H: "e2@15 ~", I: "b1@15 ~",
  J: "f#1@7 ~", K: "g#1@7 ~", L: "a1@6 ~@2 b1@5 ~@3", M: "e1@15 ~", N: "f#1@15 ~", O: "[a1@47 ~]/3",
})).s("gm_acoustic_bass").gain(0.5)

// chords · ocarina · "Kaye Ocarina"
const ocarina = note(`<
  ~@49 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C ~@10 D E F G D@2 F G D H F G I J F G K ~@2 L M N O P Q P R L M N O P Q P R P Q
  S T ~@3
>`.pickRestart({
  A: "[~ [e5,g#5,b5]@4 [c#5,f#5,a5]@3]/2", // E F#m
  B: "[[b4,d#5,g#5]@19 ~ [c#5,f#5] ~ g#5 ~ [c#5,f#5,a5] ~ [e5,a5,c#6]@6, ~@10 a5 ~@5]/2", // G#m F#5 F#m A
  C: "[c#5,f#5] ~ g#5 ~ [c#5,f#5,a5] ~ [e5,a5,c#6]@6 ~@4, a5 ~@7", D: "~@4 [e5,g#5,b5]@9 ~@3",
  E: "~@4 [c#5,a5,c#6]@9 ~@3", F: "[b4,d#5,g#5]@11 ~@5",
  G: "~@4 [c#5,f#5] ~ g#5 ~ [c#5,f#5,a5] ~ [e5,a5,c#6]@5 ~, ~@2 a5 ~@5", H: "~ [c#5,f#5,a5]@2 ~",
  I: "~ [e5,g#5,b5]@2 ~", J: "~@4 [c#5,f#5,a5]@9 ~@3", K: "[c#5,f#5] ~ g#5 ~ [c#5,f#5,a5] ~ [e5,a5,c#6]@7 ~@3, a5 ~@7",
  L: "~@2 e5 ~ b4 ~ e5 ~ b4 ~ f#5 ~ b4 ~ e5 ~", M: "~@2 c#5 ~ a4 ~ c#5 ~ a4 ~ c#5 ~ a4 ~ c#5 ~",
  N: "~@2 e5 ~ b4 ~ e5 ~ b4 ~ e5 ~ b4 ~ e5 ~", O: "~@2 c#5 ~ a4 ~ c#5 ~ a4 ~ d#5 ~ a4 ~ c#5 ~",
  P: "b4 ~ e5 ~ b4 ~ e5 ~ b4 ~ e5 ~ b4 ~ e5 ~", Q: "a4 ~ c#5 ~ a4 ~ c#5 ~ a4 ~ c#5 ~ a4 ~ c#5 ~",
  R: "c#5 ~ e5 ~ c#5 ~ e5 ~ b4 ~ e5 ~ b4 ~ e5 ~", S: "b4 ~ e5 ~ b4 ~ e5 ~ b4 ~ e5 ~ b4@3 ~", T: "a5!9 ~@7",
})).s("gm_ocarina").gain(0.22).pan(0.8)

// chords · drawbar organ · "Kaye ChOrg."
const drawbar_organ = note("<~@95 A B C D E F E D A B C D E G H I J K L M@3 ~>".pickRestart({
  A: "[e2,e4,g#4,b4]", B: "[c#2,e4,a4,c#5]", C: "[b1,e4,b4,d#5]", D: "[a1,e4,a4,c#5]", E: "[g#1,e4,g#4,b4]",
  F: "[f#1,e4,f#4,a4]", G: "[e4,f#4,a4], f#1@7 ~", H: "[e4,g#4,b4], g#1@7 ~", I: "a1@6 ~@2 b1@5 ~@3, [e4,a4,c#5]",
  J: "[e1,e4,g#4,b4]", K: "[f#1,e4,a4,c#5]", L: "[e4,b4,d#5], g#1@7 ~",
  M: "[[e4,a4,c#5,e5]@2 [e4,a4,c#5,e5]@21 ~, a1@47 ~]/3", // A
})).s("gm_drawbar_organ").gain(0.57).pan(0.4)

// other · taiko drum · "Bruford BD"
const taiko_drum = note("<~@18 [a2@3 ~]!77 ~@23>").s("gm_taiko_drum").gain(0.8)

// other · drawbar organ
const drawbar_organ_2 = note("<~@98 A B C@2 D E@3 A B F@2 G H@6 ~>".pickRestart({
  A: "g#5@3 f#5@3 e5@2", B: "f#5", C: "[b4@27 b4@4 ~]/2", D: "a5@6 g#5@6 f#5@3 ~", E: "e5/3", F: "[b4@7 [g#5,b5]]/2",
  G: "[a5,c#6]@6 ~ g#5@5 [f#5,a5]@4, ~@3 b5@3 ~@2", H: "[e5, g#5@31 ~@65]/6",
})).s("gm_drawbar_organ").gain(0.32).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@95 x!15 [x!2] x!3 [x!2 ~@2] ~@3>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@94 A ~@11 B ~@2 B ~@3 B ~@4>".pickRestart({
  A: "~@6 x!3 ~ x ~ x ~@3", B: "~@3 x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@93 A B ~@11 C ~@2 C ~@3 C ~@4>".pickRestart({
  A: "~@15 x", B: "x", C: "~@10 x!2 ~@4",
})).gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@93 [~@3 x!2 ~@5 x ~@5] ~@24>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@95 [x!3 ~]!19 [x!2 ~@2] ~@3>").gain(0.24)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@95 [~@3 x]!19 ~@4>").gain(0.16)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@37 [~ x ~ x ~ x ~ x]!57 [~ x ~ x ~@4] ~@23>").gain(1.43)

// drums · shaker
const shaker = s("sh").struct("<~@37 [x!4]!57 [x!2 ~@2] ~@23>").gain(0.36)

stack(
  flute, acoustic_guitar_steel, bass, ocarina, drawbar_organ, taiko_drum, drawbar_organ_2, kick, low_tom, mid_tom,
  high_tom, crash, crash_soft, cabasa, shaker
)

More by Yes