Strudelify

Swept Away

Yanni

KeyF majorTempo100 bpm
0:00/0:00
// Swept Away — Yanni
// 100 bpm, 4/4, key F 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/4 at bar 3, 4/4 at bar 8, 6/4 at bar 11, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 156 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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@5 B@7 C@8 D@7 E F G H I@2 J@2 G K L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S T U V W X Y@2 H I@2 J@2 G K L@2 M@2 N@2 O@2 P@2 Q@2
  R@2 S T Z V W AA AB AC@4 AD@2 AE@2 AD@2 AF AG@3 AH@5 AI@5 AJ AK AL AM AN@2 AO@2 I@2 J@2 G K L@2 M@2 N@2 O@2 P@2 Q@2
  R@2 S T Z V W AA AB AC@4 AD@2 AE@2 AP@2
>`.pickRestart({
  A: "[~@79 [f5,a5], ~@12 [f2,c3,c4,f4]@26 [g5,c6]@7 d6@3 c4@2 d4@30, ~@13 a4@31 a5@29 [g5,c6]@5 [g5,c6]@2, ~@14 d5@31 a3@31 [a5,d6]@4, ~@33 [f5,a5]@10 [f3,f5]@10 [c4,f4]@27]/5", // F F5 C5 D5 F F5
  B: "[~ [g5,c6]@2 ~@36 g6@2 f6@2 ~@48 d4@20 [g4,c5], ~@3 [a5,d6]@3 [f3,a5,d6]@10 a4@27 [c4,f6]@32 ~ [g4,c5]@10 f3@3 a3@23, ~@4 [g5,c6]@9 f4@25 f6@3 [f3,g6]@32 ~@8 [f2,f4]@31, ~@8 a3@28 c6@10 f4@5 d5@32 ~ [c3,d5]@28, ~@11 c4@26 d6@11 a4@23 [f4,a4]@11 a4@30]/7", // C5 D5 Dm F5 C5 Fsus2 F Csus2 …
  C: "[~ a4@3 ~@2 [g4,c5]@3 ~@37 f5@2 ~@38 f5@2 ~@39 f5, ~ d5@8 ~@5 c3@30 c5@10 [d3,d5]@17 g3@22 g5@8 d4@9 d6 a5@14 c5 d5@2, ~@4 [g4,c5]@2 ~@4 [g4,c5]@9 a3@29 g5 f5 d5@3 g5@16 d4@22 [f2,f5]@8 a3@29, ~@5 f4@11 f3@29 d5 a5@10 g3@3 a3@2 bb3@23 c5 d5 a5@8 [c3,c5]@15 c6@19, ~@5 a4@4 [a4,d5]@2 [f2,a4,d5]@10 c4@30 [g2,f5]@13 d4@2 a3@22 g5 f5 d5@6 f3@32]/8", // C5 D C5 F C D5 Dm G7
  D: "[~@2 f5@2 ~@38 f5@2 ~@21 d5@15 ~@14 c4@2 ~@10 [f4,a4]@2 ~@2 a3@2, a5@10 g3@10 a5@2 bb5@24 g5@9 g3@25 d5@28 f3 [c4,f4,a4]@3, ~ g5@4 [g2,f5]@10 bb3@23 d5 f5 a5@10 c3@10 d4@20 f2@4 f3@2 a3@2 c4@2 f3@2 a3@4 ~@2 c3@2 f3@4 a3@2 [c3,c5]@6, ~@4 d5@2 g5@6 a3@13 g5@12 c5@4 g5@3 d5@3 [g2,c5]@10 c4@23 [f4,a4]@22 g3@10, ~@7 [d3,d5]@10 d4@28 [c2,f5]@7 e3@10 g4@20 c3@14 f2@16]/7", // F G7 C C5 F D F5
  E: "~@7 c4, [f2,f4,a4,d5], ~ c3@7, ~ f3 c4 a3, ~@3 a3@2 f3@3", // Dm
  F: "~@7 c3, [f2,f4,a4,c5], ~ c3@3 a3@4, ~@2 f3@3 c3 f3@2, ~@3 g3@5", // F
  G: "~@7 [c4,bb4,g5], f2@4 [c4,c5,a5] f3 a3@2, ~ [c3,f5,f6]@7, ~@3 c5 a4 g6@11, ~@4 f3 g5 [a3,c5] a4@9", // C7 F F5 Am
  H: "~@7 [a3,g4,c5], [f2,d5,bb5]@3 f3, ~ c3 f3 [g3,a4,f5]@5, ~@3 a5@13, ~@3 c5@5 a3@2 c3@6", // Am7 Bb Dm
  I: "[~@7 c4 ~@5 c5 ~ a3, [a4,d5]@28 f3 [c5,f5]@3, f2@6 a3@2 ~@2 f3@2 a3 [c3,g4]@3, ~ c3@7 f2@8, ~@2 f3 a3 c4 f3@3 ~ c3@2 g3@5]/2", // D5 F5 C5
  J: "[~@5 c6 ~ c4 ~@7 c3, [f4,a4,d5]@7 f3, f2@8 c4@2 [f3,g5]@2 a3 [c6,f6]@3 ~@4 f3@2 a3@2 c4@8, ~ c3@7 [f2,a5,d6]@8, ~@2 f3 g3@5 ~ c3@4 a3@3]/2", // Dm Fsus2 F5 Dm
  K: "~@15 [g4,c5], [f2,d5,bb5]@6 f3 a3, ~ c3@2 [g3,a4,f5]@5, ~@3 [c5,a5]@13, ~@2 f3@2 a3 c3@3", // C5 Bb Dm F
  L: "[~@7 c4 ~@5 c5 ~ a3, f2@4 f3@2 a3@2 c4@2 f3@2 a3@4 ~@2 c3@4 g3@6 f3 [c5,f5]@3, [a4,d5] [a4,d5]@15, ~ [g4,c5]@15 ~@4 f3@4 a3@2 [c3,g4]@6, ~ c3@7 f2@8]/2", // F5 D5 C5
  M: "[~@14 c4@2 ~@11 [d4,f4] a4 g4 f4 d4, [f4,a4,d5]@12 a3 [f3,c4] ~@2, f2@6 a3@2 ~@2 f3 g3@3 ~@2, ~ c3@7 f2@6 ~@2, ~@2 f3 a3 c4 f3@3 ~ c3@5 c3 a2]/2", // Dm F5
  N: "[~@14 bb3@2 ~@11 [d4,f4] a4 g4 f4 d4, [g2,f4]@3 a3 bb3 d4@5 g3 a3 bb3 [g3,c4] ~@2, ~ g4@9 [c5,a5]@2 a3 [d5,bb5]@3 [bb4,g5]@16, ~ d3@7 bb2@6 ~ c3, ~ d4 g3@6 ~ d3@5 d3 ~]/2", // Dm G7 C5 F Gm Eb
  O: "[~@10 f5@2 ~@2 c3@2 ~@8 c4@2 ~ [d4,f4] a4 g4 f4 d4, [f2,f4]@10 [g3,c6]@2 f3 [f5,d6]@3 [c5,a5]@16, ~ g4@15 ~@2 c3@4 a3@4 [a3,c4]@2 ~@4, ~ c4@9 f3@4 f3 c3, ~ c3 f3 g3 a3@4 f2@6 ~@2]/2", // Dm F C5 Dm F Am
  P: "[~@14 bb3@2 ~@11 [d5,f5] a5 g5 f5 d5, [g2,f4]@3 a3 bb3 d4@8 [d3,c5] ~ d3, ~ g4@9 [c5,a5]@2 a3 [d5,bb5]@3 ~@4 f3@2 bb3@6 ~@4, ~ d3@7 [bb2,bb4,g5]@6 bb2 ~, ~ d4 g3@6 ~ d3@3 f3@2 ~@2]/2", // Dm G7 D7 F Gm Eb
  Q: "[~@15 c3, c2@6 e3@2 g3@2 [c4,a5] f5 [d4,c5] bb5 [c4,f5]@2 ~@2 e3@8 c4@2 g3@4, f5@2 c5@2 c3@11 c5@17, ~ g5@15 [e5,c6]@16, ~ g2@7 c3@2 g3 c4 [e4,d5,g5,bb5]@4]/2", // F D7 F5 C Em7b5
  R: "[~@31 a5, [f2,c6]@6 c6@16 a5 c5 c3 c5 f3 c5 [c4,a5] g5 [a3,f5]@2, ~ c5@2 c5@2 c5 f2@6 g3@20, ~@2 c3@5 c5 c3@6 f3 bb5@17, ~@4 f3@5 c5 f3 c5 bb5 a5 g5@2 [f2,a5] c5 c3 c5 f3 c5 f2@10]/2", // F5 F Dm F
  S: "~@12 f5 ~@2 d5, [d3,a5]@6 [d3,a5]@7 [f5,g5] [f3,e5]@2, ~ c5@2 c5@2 c5@2 c5@2 c5@2 c5@5, ~ f3@3 f3@2 d4@2, ~@2 a3@3 a3@3", // D5 Fsus2 Fmaj7
  T: "~@10 e3@2 c3 bb2@2 bb5, [c3,g4,e5]@13 ~@3, ~@2 e3@6 g3@5 ~@3, ~@4 g3@2 c4@7 ~@3, ~@6 [e4,c5]@9 ~", // C
  U: "~@15 a5, [a2,c6]@6 [a2,c6]@7 a5 [e3,g5]@2, ~ c5@2 c5@2 c5@2 c5@2 c5@2 c5@5, ~ e3@3 e3@2 [c4,bb5]@2, ~@2 a3@3 a3@3", // Am Em C7
  V: "~@12 a5 ~@2 a5, [g2,bb5]@6 g2@6 d4 [a5,bb5] [bb3,g5]@2, ~ c5@2 c5@2 c5 bb5@5 c5@5, ~@2 d3@5 c5 d3@8, ~@4 g3@5 c5 g3@6", // Gm Bbmaj7 Eb
  W: "~@12 g5 ~@2 e5, [c3,bb5]@6 [c3,bb5]@7 [g5,a5] [c4,f5]@2, ~ c5@2 c5@2 c5@2 c5@2 c5@2 c5@5, ~ e3@3 e3@2 e3@2, ~@2 g3@3 g3@3", // C7 Gsus2 F5
  X: "~@7 c4, bb4@3 f3 bb2 f3 bb3@2, bb3 f3 d3@6, ~ d5@15, ~ f5@7",
  Y: "[~@6 bb2 ~@8 [c4,bb4,g5], f4@19 c5 [f3,a4] [g5,g6] [a3,c5] a4 [c4,c5,a5]@2 f3@2 a3@4, bb3 f3 d3 bb2 d3 f3@2 c3 f2@8, ~ bb4@17 [c3,f5,f6]@14, ~ d5@15]/2", // C7 F G Am F F5
  Z: "~@15 a5, [a2,c6]@6 a2@7 c6 [e3,bb5]@2, ~ c5@2 c5@2 c5 c6@5 c5@5, ~@2 e3@5 c5 e3@4 [c4,d6]@4, ~@4 a3@5 c5 a3@6", // Am Edim Csus2
  AA: "f5 ~@3 c5 ~@2 bb2, bb2@5 d5 bb3@2 e5@2 [f3,bb4,d5] [a4,c5] d3@2 ~@2, ~@2 a5@11 [g4,bb4]@3, ~@2 d3 e5 f3 f5@9 ~@2, ~@2 f5 g5@11 ~@2", // Bb Am Gm
  AB: "~@10 [a4,c5] ~@3 c3@2, c3@4 c4 c5 g3@2 [c3,bb4,d5]@2 e3 [a4,c5] g3 [g4,bb4]@3, ~ g5@7, ~@2 [g3,e5] d5@2 e5@11, ~@3 f5@13", // Am Gm Am Gm C
  AC: "[[f2,f3]@2 [a3,c4,f4]!2 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [a3,c4,f4] ~ [a3,c4,f4] [a3,c4,f4]@2 ~@2 [bb1,bb2]@2 [bb3,d4,f4]!2 ~ [g3,c4,e4] ~ [c2,c3,g3,c4,e4] ~ [f2,f3,a3,c4,f4] ~ [f2,f3,a3,c4,f4] [f2,f3,a3,c4,f4]@2 ~@2, ~@7 [f3,bb3,d4]@2 ~@7]/2", // F C F Bb C F Bb
  AD: "[[f2,f3]@2 [a4,c5,f5]!2 ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [a4,c5,f5] ~ [a2,a3,a4,c5,f5] [a2,a3,a4,c5,f5]@2 [f4,bb4,d5]@4 [bb4,d5,f5]!2 [d2,d3] [c2,c3,g4,c5,e5] ~ [c2,c3,g4,c5,e5] ~ [f2,f3,a4,c5,f5] ~ [f2,f3,a4,c5,f5] [f2,f3,a4,c5,f5]@2 d3 c3, ~@6 [g2,g3]@3 [a2,a3]@2 ~@3 [bb2,bb3]@6 ~@12]/2", // F C F Bb D C F G …
  AE: "[[f2,f3]@2 [a4,c5,f5]!2 ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [a2,a3,a4,c5,f5] ~ [a2,a3,a4,c5,f5] [a2,a3,a4,c5,f5]@2 [bb2,bb3,f4,bb4,d5]@4 [d2,d3,a4,d5,f5,a5]!2 ~ [c2,c3,g4,c5,e5,g5] ~ [c2,c3,g4,c5,e5,g5] ~ [f2,f3,a4,c5,f5,a5] ~ [f2,f3,a4,c5,f5,a5] [f2,f3,a4,c5,f5,a5]@2 d3 c3, ~@6 [g2,g3]@3 ~@23]/2", // F C F Bb Dm C F G
  AF: "[f2,f3]@2 [a4,c5,f5]!2 ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [a2,a3,a4,c5,f5] ~ [a2,a3,a4,c5,f5] [a2,a3,a4,c5,f5]@2 [bb2,bb3,f4,bb4,d5]@2, ~@6 [g2,g3]@3 ~@7", // F C F Bb G
  AG: "[~@2 [d2,d3,a4,d5,f5,a5]!2 ~ [c2,c3,g4,c5,e5,g5] ~ [c2,c3,g4,c5,e5,g5] ~ [f2,f3,a4,c5,f5,a5] ~ [f2,f3,a4,c5,f5,a5] [f2,f3,a4,c5,f5,a5]@2 ~@33 a6, ~@7 c5@10 a3 c4 a3 d4 a3 c4 [a3,bb6], ~ c6@2, ~@8 f3@5 a3 a5@10, ~@9 a3 c4 a3 d4@2 c4 a3 [f3,a6]@8]/3", // Dm C F Bbmaj7 F
  AH: "[~@39 a4, bb6@18 a3 a5 c4@2 f5@10 [f4,g5,c6]@2 a4 [a5,d6] c5@2 f6@26 c6@2 a4 [a5,d6]@3 [c6,f6]@4 [a4,a5,d6]@2 c5@4, f3@6 a3@2 d4@2 a3@2 c4@2 [a3,bb5] a5 [f3,bb5]@14 a3@21 a5 c5@2 [a4,g5,c6]@2 d5@12 c5@2 a4@2 d5@8, ~@2 a3@2 c4@2 f6@20 a3@2 c4@20 [g5,c6]@2 a4 f5@29, ~@3 a6@19 a3@2 d4@14 [a4,c6]@2 [d5,a5,d6]@2 a4@2 c5@2 a4@2 f4@8 [a5,d6]@2 a4@2 c5@2 a4@2 [f4,g5]@16]/5", // Fsus2 D5 F5 D5 Bbmaj7 Bb5 Am7 C5 …
  AI: "[~@74 c3@2 [bb2,f3,bb3,f4,bb4,d5] [bb2,f3,bb3,f4,bb4,d5]@2 [bb2,f3,bb3,f4,bb4,d5], f4@8 [c5,c6]@10 f4@4 c4 f3@2 e4@2 c7@13, [a5,d6]@3 c6@3 [a4,d6]@2 d5@2 a4@2 c5@2 a4@18 g4@6 [a5,a6]@4 a3@6 g4@4 f4@2 [c4,c6]@2 d4@2 a3@2 c4@2 f3@2 a3@2 f3 bb4 c3 a4 f3@2 [a2,g4]@4 ~@4, ~@2 a4@2 c5@2 a5@22 c4@2 f3@4 d4 [f5,f6]@3 c4@2 d4@8 [f5,f6]@27 ~@5, ~@3 f6@13 g4@2 d4 [d5,d6] f4@2 [c4,f5,f6]@2 d4@2 a3@6 [d5,d6]@19 [a5,a6]@24 ~@5]/5", // Bb C D5 A C A7 F D …
  AJ: "[bb2,f3,bb3,f4,bb4,d5] [bb2,f3,bb3,g4,c5,e5] ~@4 [c3,g3,c4,g4,c5,e5]@9 [bb2,f3,bb3,f4,bb4,d5]", // Bb C7 C Bb
  AK: "[bb2,f3,bb3,f4,bb4,d5] [c3,g3,c4,g4,c5,e5] ~@4 [c3,g3,c4,g4,c5,e5]@6 [bb2,f3,bb3,f4,bb4,d5]@3 [bb2,f3,bb3,f4,bb4,d5]", // Bb C Bb
  AL: "[bb2,f3,bb3,f4,bb4,d5] [c3,g3,c4,g4,c5,e5] ~@4 [c3,g3,c4,g4,c5,e5]@9 [bb2,f3,bb3,f4,bb4,d5]", // Bb C Bb
  AM: "[bb2,f3,bb3] [c3,g3,c4] ~ bb4@2 ~@3 [e4,g4]@3 [d4,f4]@2 ~ f2 g2, g4 ~, c5@3 ~@2 [f4,a4]@3 ~@5 [c4,e4]@3, ~@3 [c3,g3,c4]@2 ~@3", // Bb5 C5 Em Dm F C C5
  AN: "[~@7 f3 ~@7 c3, d4@8 bb3 f5@9 d3@6 [bb4,d5,f5]@2 f3@2 [bb2,f4,bb4,d5]@4, bb2@2 f3@2 bb3@2 f3@2 d5@11 bb5@13, ~ f4@9 c6@22, ~@2 c5@8 f3@2 bb2@4 bb2@4 f3 a5 bb3@10]/2", // Bb
  AO: "[~@15 [a3,g4,c5], f4@16 [f2,d5,bb5]@2 c3 [c5,a5] f3@2 [g3,a4,f5]@2 a3@2 c3@2 f3@4, f2@2 c3 c5 [f3,a4] g6@27, [a4,c5]@2 f5@3 g5 [a3,c5] a4 [c4,c5,a5]@2 f3@2 a3@2 [c4,bb4,g5]@18, ~ f6@15]/2", // Am7 Bb F Dm F Am F C7
  AP: "[[f2,f3]@2 [a4,c5,f5]!2 ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [a4,c5,f5] ~ [a2,a3,a4,c5,f5] [a2,a3,a4,c5,f5]@2 [f4,bb4,d5]@4 [d2,d3,f5,a5,d6,f6]!2 ~ [c2,c3,e5,g5,c6,e6] ~ [c2,c3,e5,g5,c6,e6] ~ [f2,f3,f5,a5,c6,f6] ~ [f2,f3,f5,a5,c6,f6]!2 ~@3, ~@6 [g2,g3]@3 [a2,a3]@2 ~@3 [bb2,bb3]@6 ~@12]/2", // F C F Bb Dm C F G …
})).s("gm_piano").gain(0.31)

stack(piano)

More by Yanni