Strudelify

Edelweiss

Julie Andrews

KeyB♭ majorTempo120 bpm
0:00/0:00
// Edelweiss — Julie Andrews
// 120 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 51 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · piano
const piano = note("<A@4 B@6 C@8 D E@3 F@6 B@6 C@8 D E@3 G@5>".pickRestart({
  A: "[bb4@9 d5@9 bb4@9 c5@11 ~@3 bb3@6 ~]/4",
  B: "[~@2 f4@3 f4@3 ~@3 bb3@6 ~@3 eb3@3 bb3@3 ~@3 bb3@6 bb3@9 ~@3 eb4@3 eb4@3 ~@3 eb4@3 eb4@3 ~@3 bb3@6 ~]/6",
  C: "[~@2 f4@3 f4@3 ~@3 bb3@6 ~@3 eb3@3 bb3@3 ~@3 bb3@6 eb4@9 ~@3 f4@3 f4@3 ~@3 f4@3 f4@3 f4@3 ~@3 eb4@3 eb4@9 ~@3 bb3@6 ~@3 f4@3 f4]/8",
  D: "~@5 eb4@6 ~", E: "[~@2 g4@6 ~@3 f4@3 f4@3 ~@3 eb4@3 eb4@3 ~@3 bb3@6 ~]/3",
  F: "[~@2 f4@3 f4@3 ~@3 bb3@6 ~@3 bb3@3 bb3@3 ~@3 bb3@6 eb4@9 ~@3 d4@3 d4@3 ~@3 d4@3 d4@3 ~@3 bb3@6 ~]/6",
  G: "[~@2 f4@3 f4@3 ~@3 bb3@6 ~@3 bb3@3 bb3@3 ~@3 bb3@6 eb4@9 f4@3 bb4@3 bb4@3 bb5@6 ~]/5",
})).s("gm_piano").gain(0.31)

// other · piano
const piano_2 = note("<A@4 B@2 C@4 D ~ E@5 F@2 G@3 H@6 B@2 C@4 D ~ E@5 F@2 G@3 I@5>".pickRestart({
  A: "[d4@9 bb4@9 g4@9 a4@11 ~@3 f3@6 ~]/4", B: "[~@2 f3@6 ~@3 f3@6 ~@7]/2",
  C: "[~@5 f3@6 f3@9 ~@3 bb3@3 bb3@3 ~@3 a3@3 a3@3 ~@10]/4", D: "~@2 eb4@3 eb4@3 ~@4",
  E: "[~@11 a3@9 ~@3 d4@3 d4@3 ~@3 d4@3 d4@3 eb4@3 ~@3 c4@3 a3@9 ~@4]/5", F: "[~@8 d4@3 d4@3 ~@3 bb3@6 ~]/2",
  G: "[~@2 c4@6 ~@3 c4@3 c4@3 ~@3 a3@3 a3@3 ~@10]/3",
  H: "[~@2 d4@3 d4@3 ~@3 eb3@6 ~@3 eb3@6 ~@9 a3@9 ~@3 bb3@3 bb3@3 ~@3 bb3@3 bb3@3 ~@3 f3@6 ~]/6",
  I: "[~@2 d4@3 d4@3 ~@3 eb3@6 ~@3 eb3@6 ~@9 a3@9 d4@3 f4@3 f4@3 d5@6 ~]/5",
})).s("gm_piano").gain(0.31)

// other · piano
const piano_3 = note("<A@6 B@4 C@2 ~ D@3 ~ E@2 ~@3 F ~ G H ~ I@7 C@2 ~ D@3 ~ E@2 ~@3 F ~ G J@2>".pickRestart({
  A: "[~@9 f4@9 eb4@9 eb4@11 bb2@9 a2@9 d3@9 g2@7]/6", B: "[~@2 f2@9 g2@9 c3@9 ~@3 f3@3 c3@3 ~@3 f3@6 ~]/4",
  C: "[~@2 f3@6 ~@3 f3@6 ~@7]/2", D: "[~@11 bb3@3 bb3@3 ~@3 bb3@3 bb3@3 ~@10]/3", E: "[~@8 bb3@3 bb3@3 ~@10]/2",
  F: "~@2 c4@3 c4@3 ~@4", G: "~@5 f3@6 ~", H: "~ f3@3 ~@2",
  I: "[~@2 bb2@9 a2@9 d3@9 g2@9 f2@9 g2@9 c3@9 ~@3 f3@3 c3@3 ~@3 f3@6 ~]/7", J: "[~@2 f3@6 f3@3 bb3@3 d4@3 bb4@6 ~]/2",
})).s("gm_piano").gain(0.31)

// other · piano
const piano_4 = note("<A@2 B@2 ~@3 C@8 D@3 E@8 F ~@4 C@8 D@3 E@8 G>".pickRestart({
  A: "f3!4", B: "[f3@6 f3@7 f3@7 f3@8 ~@20]/2", C: "[~@8 c2@9 f2@9 bb2@9 a2@9 d3@9 g2@9 f2@9 f2@9 bb2@9 f2@7]/8",
  D: "[~@2 a2@3 f3@3 ~@3 f2@3 f3@3 ~@3 bb2@3 f3@3 ~@3 f2@3 f3@3 ~]/3",
  E: "[~@2 eb2@3 bb2@3 g3@3 e2@3 c3@3 g3@3 f2@3 c3@3 a3@3 f2@3 c3@3 f3@3 bb2@9 ab2@9 g2@9 gb2@9 f2@9 f2@9 bb2@3 f3]/8",
  F: "~@5 f2@3 f3@3 ~", G: "~@2 bb3@3 f4@6 ~",
})).s("gm_piano").gain(0.31)

// other · piano
const piano_5 = note("<~@12 A@4 ~@5 B C ~@13 A@4 ~@5 B C ~@3 D>".pickRestart({
  A: "[~@5 d3@6 f3@9 ~@3 f3@6 ~@3 f3@6 ~@10]/4", B: "~@5 f3@6 ~", C: "~ d3@3 ~@2", D: "~@5 d4@6 ~",
})).s("gm_piano").gain(0.31)

stack(piano, piano_2, piano_3, piano_4, piano_5)