Strudelify

Elfin Dance, Op.12 No

Edvard Grieg

KeyE minorTempo120 bpm
0:00/0:00
// Elfin Dance, Op.12 No — Edvard Grieg
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 24 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "A.PIANO 1"
const piano = note("<A B C D E@2 F G H@2 I J K L M N@2 O P Q R S T U>".pickRestart({
  A: "[e4,g4,b4,e5] ~@3 [e4,g4,b4,e5] ~@2 [c4,c5,e5] ~@3 [e4,g4,b4,e5] ~@3 [e4,b4,e5] ~@2 g4 ~ a4 [e4,g4] b4 c5 ~ [e4,g4,b4] f#5@2 [e4,a4,e5] ~ d5 [g4,b4]", // Em C Em E5 Em A5 G
  B: "e4 e5 g5 ~ a#5 ~ b5 ~@2 b5 [b4,d5,f#5] ~@2 [b4,d5,f#5,b5] ~@2 [g4,d5,g5,b5] ~@3 [b4,d5,f#5,b5] ~@2 [b4,f#5] [d5,b5] ~@2 b4 c#5 ~@2 f#5, ~@15 [f#4,d5]", // Bm G Bm B5 G D
  C: "~@2 b4 [e4,f#5] f#4 [a#4,c#5] f#5 ~ d#5 b4 f#5 ~ b4 ~ f#5 ~ [b3,d#5] f#5 ~@2 [e4,g4,b4,e5] ~@2 [e4,g4,e5] ~@3 [c4,g4,e5] ~@2 [e4,g4,b4] ~, ~@2 [d4,d5]@2 ~@4 f#4@7 ~@17", // Esus2 A#m B Em C Em D
  D: "~@2 e4 ~@4 a4 e4 b4 c5 ~ [e4,g4,b4] ~ f#5 [e4,a4,e5] ~ d5 ~ [e4,g4,b4] e5 ~ g5 a#5 ~ b5 ~@3 [b4,d5,f#5,b5] ~@2", // Em A5 Em Bm
  E: "[[b4,d5,f#5,b5] ~@2 [g5,b5] [g4,d5] ~@2 [b4,d5,f#5,b5] ~@2 [b4,f#5] [d5,b5] ~@2 b4 c#5 ~ [f#4,d5]@2 f#5 ~ [d4,d5]@2 [e4,f#5] [f#4,a#4,c#5] ~ f#5 ~ [b4,d#5] ~ f#5@2 [b4,d#5] f#5 ~@2 [b3,b4,d#5] f#5 ~@2 b3@2 ~ [b2,b3] ~@3 [f#2,f#3] ~@2 [b2,b3] ~@3 [b2,b3] ~@3 e4 f#4 ~ [e3,c#4,g4] ~@2, ~@21 b4 ~@6 f#4@7 ~@5 b2 ~@23]/2", // Bm G G5 Bm B5 G D Esus2 …
  F: "[c#4,g4] e3 ~@2 [f#3,c#4] a#4 ~ [g3,c#4,e4] ~ a#4 ~ [g3,c#4,e4] a#4 ~@5 [b2,b3]@2 ~@2 [b2,b3] ~@3 [f#2,f#3] ~@2 [b2,b3] ~@2, ~@2 f#4 ~@13", // C#dim F#5 C#dim B F# B
  G: "~ [b2,b3] ~@3 e4 f#4 ~ [e3,c#4,g4] ~ a#4 c#4 e3 a#4@2 [f#3,c#4] ~@2 [g3,c#4,e4] ~@3 [g3,c#4,e4] a#4 ~ g4 ~ a4 ~ [g3,e4] c#5 ~, ~@11 g4@2 ~@2 f#4@2 ~@12 a#4@2 ~", // B C#dim F#5 C#dim C
  H: "[[g3,e4] ~ c#5 [a3,e4,a4] ~ c#5 ~ [a#3,e4,g4] ~ c#5 a#3 [e4,g4] c#5@2 ~ b4 ~ [a#3,g4] ~ e5 ~ [e4,g4] ~ e5 [d4,g4,b4] ~ e5 ~ c4 e5 ~ [c4,f#4] e5 ~ a#4 [c4,f#4] e5 ~ [b3,f#4,b4] e5 ~ b4 f#4 e5 ~ b4 ~ e5 ~@2 d#5@2 ~@3 d#5 ~@3 d#5 ~@2 [e4,g4,b4,e5] ~, a#4@2 ~@12 a#4@2 ~ c5@2 ~@2 c5@2 ~@4 [f#4,a#4]@2 ~@2 a#4@2 ~@31]/2", // C A5 Edim Em D# Em G Cdim …
  I: "~@2 [e4,g4,b4,e5] ~@2 [c4,g4] ~@3 [e4,b4] ~@3 e4 ~@2 g4 ~ a4 [e4,g4,b4] ~ c5 g4 [e4,b4] f#5@2 [e4,a4,e5] d5 ~ [e4,g4,b4] ~ e5", // Em C5 E5 Em E5 A5 Em
  J: "g5 ~ a#5 ~ b5 ~@2 [b4,d5,f#5,b5] ~@3 [b4,d5,f#5,b5] ~@2 [g4,d5,g5,b5] ~@3 [b4,d5,f#5,b5] ~@2 [b4,f#5] [d5,b5] ~@2 b4 c#5@2 [f#4,d5]@2 f#5@2", // Bm G Bm B5 G D
  K: "b4 [e4,f#5]@2 [f#4,a#4] ~ f#5 ~ d#5@2 f#5@2 [b4,d#5] ~ f#5 ~ [b3,b4,d#5] f#5 ~ b3@2 ~@2 [b2,b3] ~@3 [f#2,f#3] ~@2 [b2,b3] ~@2, [d4,d5]@2 ~ c#5@2 ~@2 f#4@7 ~@4 b2 ~@13, ~@7 b4 ~@24", // Esus2 F# B F# B D
  L: "~ [b2,b3] ~@3 e4 ~ f#4 g4 c#4 a#4 ~ [e3,c#4,g4] a#4 ~ [f#3,c#4] ~ a#4 c#4 [g3,e4] ~@2 [g3,c#4] ~@5 [b2,b3] ~@3, ~@15 f#4@2 ~@15", // B C#dim F#5 C Gdim B
  M: "[b2,b3] ~@3 [f#2,f#3] ~@3 [b2,b3] ~@2 [b2,b3] ~@3 e4 ~ f#4 ~ [e3,c#4,g4] a#4 ~ [e3,c#4,g4] ~ a#4 [f#3,c#4,f#4] ~@3 [g3,c#4,e4] a#4 ~", // B F# B C#dim F#5 C#dim
  N: "[[g3,c#4,e4] ~ a#4 ~ g4 ~ a4 [g3,e4] c#5@2 [g3,e4] ~@2 [a3,e4,a4] ~ c#5@2 [a#3,e4,g4] c#5@2 g4 [a#3,e4] c#5@2 ~ b4@2 [a#3,g4] ~@2 g4 ~ e5@2 ~ e5@2 a#4 c4 e5 ~ [c4,f#4,a#4] e5 ~ [c4,f#4,a#4] ~ e5 ~ [b3,f#4,b4] e5@2 [b3,f#4,b4] ~ e5 ~ [b3,f#4,b4] e5 ~ b4 ~ d#5 ~ b4 d#5, ~@7 a#4@2 ~ a#4@2 c#5@2 ~@10 a#4@2 ~ c5@2 e5@2 e4@2 ~ [d4,g4,b4]@2 ~ f#4@2 ~@25, ~@15 c5 ~@16]/2", // C#dim C A5 Edim A#dim D# Cm7b5 B5 …
  O: "~@2 b4 d#5 ~ [e4,g4,b4,e5] ~@3 [e4,g4,b4,e5] ~@2 [c4,g4,c5,e5] ~@3 [e4,g4,b4,e5] ~@2 b4 [e4,g4,e5] ~@2 g4 a4 ~ [e4,b4] g4 c5 ~ [g4,b4] f#5", // Em C Em E5 G
  P: "~ [e4,a4,e5] ~ d5 b4 g4 e5 g5 ~ a#5 ~ b5 ~@3 [b4,d5,f#5,b5] ~@2 b5 [b4,d5,f#5] ~@2 [g4,d5,g5,b5] ~@3 [b4,d5,f#5,b5] ~@2 [b4,d5,f#5,b5] ~@2", // A5 Bm G Bm
  Q: "~ b4 c#5@2 ~ f#5 ~ [d4,d5]@2 [e4,f#5] [f#4,a#4] c#5 f#5 ~ d#5@2 f#5 ~ [b4,d#5] ~ f#5 ~ [b3,d#5] ~@2 [e4,g4,b4,e5] ~@3 [e4,g4] ~@2, ~@4 [f#4,d5]@2 ~ b4 ~@6 f#4@7 ~@11, ~@14 b4 ~@17", // D Esus2 F# B Em D
  R: "c5 ~@3 [e4,b4] ~@6 g4 a4 ~ [g4,b4] c5 ~ [e4,b4] ~ f#5 [e4,a4,e5] ~ d5 ~ [g4,b4] e5 ~ g5 ~ a#5 b5@2", // E5 G E5 A5 G
  S: "~@2 [c4,e4]@2 g#4 ~ a4 c5 ~ e5@2 ~@2 c4@2 ~@2 f4 ~@6 a3@2 d4 ~ d#4 ~@2 b4", // C
  T: "~@5 [e2,b2,g3,b3,e4] ~@3 [b2,e3,g3,e4] ~@2 [a2,e3,g3] c4 ~@2 [e2,b2,e3,g3,b3] ~@3 [e2,b2,e3,e4] ~@2 [e2,c3,e3,e4] ~@3 e2 [b2,e3,g3,b3] ~@3, ~@14 e4 ~", // Em A7 Em E5 C Em
  U: "~@6 d#5 [e3,b3,e5] ~@11 [e4,b4,g5,e6] ~@12", // E5 Em
})).s("gm_piano").gain(0.32)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<A ~ B C ~ D E F ~ G H ~@2 I J ~ K L M N O P Q R>".pickRestart({
  A: "~@8 g4 ~@6 g4 ~@16", B: "~@12 d#5 ~@10 b4 ~@3 c5 ~@3 e5", C: "~@2 [g4,b4,e5] ~@2 g4 ~@3 g4 ~@22", D: "~@31 a#4",
  E: "~@2 a#4 ~@29", F: "~@16 a#4 ~@3 a#4 ~@11",
  G: "~@10 b3 ~@2 [b3,f#4] ~@3 [b3,f#4,b4] ~@3 [b3,f#4] ~@3 f#4 b3 ~@5, ~@21 b4@2 ~@2 b4@2 ~@5", // B5
  H: "~@5 c5 ~@3 [g4,e5] ~@2 g4 [b4,e5] ~@18", I: "~@9 e3 ~@10 a#4 ~@2 e4 a#4@2 ~@6", J: "~@27 a#4 ~@4",
  K: "~@27 [b3,f#4] ~@2 f#4 b3", L: "~@2 [b3,f#4] ~@27 e4 ~", M: "~@5 e4 ~@26", N: "~@22 b4 f#5 ~@5 [b4,e5] ~@2",
  O: "[c4,g4,e5] ~@3 [g4,e5] ~@2 [b4,e5] [e4,g4] ~@5 e4 ~@2 g4 ~@6 e4 ~@7", // C E5 Em
  P: "~@13 a3@2 e4 ~@3 a4 ~ c5 ~@3 b2 ~@3 f#4 ~@2, ~@12 f#3 ~@3", Q: "~@5 e3 ~@7 e4 ~@6 [g3,b3] ~@2 [g3,a3] ~@8",
  R: "~@5 b4 ~ g4 ~@9 b5 d#6 ~@13",
})).s("gm_piano").gain(0.16)

stack(piano, piano_soft)

More by Edvard Grieg