Strudelify

overfly

Elisha Weber

KeyA♭ majorTempo120 bpm
0:00/0:00
// overfly — Elisha Weber
// 120 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/661781; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 42 bars on a 16-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 · violin
const violin = note("<A B C D E@3 F G H I J K H L@2 M N M N O@2 P ~@19>".pickRestart({
  A: "~@8 ab4@3 g4@3 ~@2", B: "eb4@8 ab4@3 g4@3 ~@2", C: "f4 ~", D: "g4 ~@3",
  E: "[ab4@8 ab4@3 eb5@3 c5@10 ab4@3 eb5@3 c5@10 ab4@2 ab4@2 g4@2 ab4@2]/3", F: "ab4@2 bb4 ab4@2 g4 ab4!2",
  G: "eb5@3 c6@3 eb5@2", H: "~ g4 ab4@2 g4 ab4 eb4 ab3", I: "ab4@3 bb5@3 g5@2", J: "~ ab4 bb4@2 db5 c5 ab4 eb4",
  K: "eb5@3 eb5@3 eb5@2", L: "[ab4 g4 ab4 bb4@2 ab4 g4 eb5@2 eb4 g4 ab4 db5 c5 bb4 ab4]/2", M: "eb4",
  N: "db5 c5@2 bb4@2 ab4@3", O: "[~@2 bb4 c5!4 ab4@2 eb5@2 c5@2 bb4@2 ab4]/2", P: "bb4@2 ab4 ab4@4 ab4",
})).s("gm_violin").gain(0.3)

// other · cello · "Violoncello"
const cello = note("<A@3 B C@3 D E F G H I F J@2 K L M N O P Q R S T K L M U V W@4 X Y@3 X ~@2>".pickRestart({
  A: "[~@7 c3@2 c3 f3 ab3 c4@3 db3@2 ab2 db3 f3 db4@4]/3", B: "eb3 bb2 eb3 g3 bb3@4",
  C: "[ab2 eb3 ab3 c4 eb4@3 eb3@2 ab2 c3 eb3 eb4@3 db3@2 ab2 db3 f3@3 db4@2]/3", D: "ab3@3 g3@3 db3@2",
  E: "c2 ab2 eb3 ab3 c3 c4 ab3 g3", F: "db2 db3 f3 ab3 db3 db4 ab3!2", G: "eb2 eb3 g3 bb3 g3 eb3 eb2 eb3",
  H: "f2 f3 ab3 c4 f3 eb4 c4 ab3", I: "c2 c3 eb3 ab3 c3 c4 ab3 eb3", J: "[f3@2 eb4 eb3@3 bb3 db3@5 db4@4]/2",
  K: "c2 c3 eb3 ab3 c4 eb4 ab3 c4", L: "ab3 eb4 c4 ab3 eb3 c3 c2 c3", M: "db2 db3 f3 ab3 db4 f4 ab3 db4",
  N: "ab3 f4 db4 ab3 db3 ab2 db2 db3", O: "f2 f3 ab3 c4 f3 eb4 c4@2", P: "eb3!2 c4 eb3 eb4 c4 eb3 c4",
  Q: "db2 db3 ab3 db3 db4 ab3 db3@2", R: "db3@2 ab3 eb3@2 eb3 bb3 g3", S: "bb2!2 db3 f3 bb3 db4 f4 db4",
  T: "bb3 f4 db4 bb3 f3 db3 bb2!2", U: "ab3 f4 db4 ab3 db3 db2 db3 db2", V: "eb2 eb3!2 bb3 g3 bb3 g3 eb3",
  W: "[eb3@6 bb3@4 eb4@4 eb2@10 ~@6 f2@4 c3@2 f3@2 ab3@2 eb4@3 eb3@3 db3@4 ab2@2 db3@2 f3@2 db4@2 ab3@2 db3@2 ab2@2]/4",
  X: "eb3 bb2 eb3 g3 bb3 eb3 bb2 eb2",
  Y: "[ab2@2 ab2@2 ab3@2 eb3@2 ab2@3 g2@3 f2@4 f2@2 f3@2 ab3@2 eb4@3 eb3@3 db3@4 ab2@2 db3@2 f3@2 db4@2 ab3@2 db3@2 ab2@2]/3",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello"
const cello_2 = note("<A@3 B C@3 D E F G ~@31>".pickRestart({
  A: "[~@7 f2@2 c3 f3 ab3 eb4@3 db2@2 ab2 db3 f3 ab3@4]/3", B: "eb2 bb2 eb3 g3 bb3@4",
  C: "[ab2 eb3 ab3 c4 eb4@3 c2@2 ab2 c3 eb3 ab3@3 db2@2 ab2 db3 f3@3 ab3@2]/3", D: "f2@3 eb2@3 db2@2",
  E: "c2 ab2 eb3 ab3 c3 c4 ab3 g3", F: "db2 db3 f3 ab3 db3 db4 ab3!2", G: "eb2 eb3 g3 bb3 g3 eb3 eb2 eb3",
})).s("gm_cello").gain(0.3)

stack(violin, cello, cello_2)