Strudelify

20 Leichte und melodische Lektionen für Flöte Op.93 vol 2 No. 20

E. Kohler

KeyA majorTempo75 bpm
0:00/0:00
// 20 Leichte und melodische Lektionen für Flöte Op.93 vol 2 No. 20 — E. Kohler
// 75 bpm, 3/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5926244; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/1.5)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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 · "Flûte"
const flute = note(`<
  ~@8 A B C D E F G H ~@8 A B C D E F G I J K L M N@2 O P Q K R@2 S T U V W X W Y Z AA X AB AC AD AC AE AF AG AH AI AJ@2
  AK B AL AM AN AO AP AQ AK B C D AR AS AT AU
>`.pickRestart({
  A: "~@5 g#5@3 f#5 ~@2 c#5 ~ a4 ~@2", B: "d5@11 c#5@5", C: "a5@3 f5@2 g#5@3 f#5 ~@2 a5 ~ c#6 ~@2", D: "f#6@11 d6@5",
  E: "f#5@2 d#5@2 ~ f#5@3 ~@3 a5 ~@4, ~@2 c5 ~@5", F: "c#6@2 a5@2 ~ c#5@10 ~, ~@2 e5 ~@5",
  G: "e5@2 g#5@2 ~ e6@3 ~@3 g#5 ~@4, ~@2 b5 ~@5", H: "a5@3 ~@13", I: "a5 ~@2 a5@2 g#5@3 a5@3 b5@2 c#6@3",
  J: "d6@8 a5@3 f#5@5", K: "~@3 f#5@2 f5@3 f#5@3 g5@2 a5@3", L: "b5@8 g5@3 e5@5", M: "~@3 e5@2 f#5@3 e5@3 c#5@2 b4@3",
  N: "a4@3 b5@2 g5@5 ~ g5@3 ~@2", O: "f#5@3 d6@2 a5@11", P: "~@3 a5@2 g#5@3 a5@3 b5@2 c#6@3", Q: "e6@8 d6@3 a5@5",
  R: "[c#6@8 b5@3 e5@10 d#5@3 e5@3 f#5@2 g5@3]/2", S: "b5@3 a5@2 g5 ~@2 f#5 ~@2 e5 ~ d5 ~@2",
  T: "c#5 ~@2 b4 ~ a4 ~@2 g4 ~@2 f#4 ~ e4@3", U: "d4 ~@2 f#4 ~ a4 ~@2 d5 ~@2 f#5 ~ a5 ~@2", V: "d6@5 ~@11",
  W: "e5 f#5 e5 c#5@2 a4@3 f#5@3 c#5@2 a4@3", X: "e5@8 f#5@3 g#5@2 a5@3", Y: "e5@15 ~",
  Z: "e5 f#5 e5 d5@2 g#4@3 f#5@3 d5@2 g#4@3", AA: "e5@8 g#5@3 a5@2 b5@3", AB: "d5@5 d5@5 ~ d6@5",
  AC: "c#6 d6 ~ c#6 d6 c#6 ~ d6 c#6 d6 ~ c#6 d6 c#6 ~ d6", AD: "c#6 d6 ~ a5@2 c#6@3 d6@3 e6@2 f#6@3",
  AE: "c#6 d6 ~ a5@2 e5@3 c#5@3 a4@5", AF: "d6", AG: "~@3 f#6@2 d6@3 b5@3 c#6@2 d6@3",
  AH: "c#6@3 e6@2 c#6@3 a5@3 b5@2 c#6@3", AI: "b5@3 d6@2 b5@3 g#5@3 e5@2 b5@3", AJ: "a5@5 a5@5 ~ a5@5",
  AK: "a5@3 f5@2 g#5@3 f#5 ~@2 c#5 ~ a4 ~@2", AL: "a5@3 f5@2 g#5@3 f#5 ~@2 a5 ~ c#6@3", AM: "f#6@11 f6@5",
  AN: "d6@2 c#6@2 ~ d6@3 ~@3 d6 ~@4, ~@2 b5 ~@5", AO: "c#6@2 b5@2 ~ c#6@10 ~, ~@2 a5 ~@5",
  AP: "b5@2 a5@2 ~ b5@3 ~@3 a5 ~@4, ~@2 g#5 ~@5", AQ: "g#5@5 ~@3 g#5 ~@2 f#5 ~ g#5 ~@2",
  AR: "c6@2 a5@2 ~ c5@3 ~@3 c6 ~@4, ~@2 d#5 ~@5", AS: "c#6@2 a5@2 ~ c#5@10 ~, ~@2 f#5 ~@5",
  AT: "c5@3 c#5@2 d5 ~@2 c#5 ~@2 a5 ~ g#5 ~@2", AU: "f#5@3 ~@2 f#6@3 ~@8",
})).s("gm_flute").gain(0.4)

// other · flute · "Flûte" · soft notes
const flute_soft = note("<A B C D E F G H I ~@7 A B J D K F L H I ~@57>".pickRestart({
  A: "a5@3 f5@2 g#5@3 f#5 ~@2 c#5 ~ a4 ~@2", B: "d5@11 c#5@5", C: "a5@3 f5@2 g#5@3 f#5 ~@2 a5 ~ c#6@3",
  D: "f#6@11 f6@5", E: "d6@2 c#6@2 ~ d6@5 ~ d6@3 ~@2, ~@2 b5 ~@5", F: "c#6@2 b5@2 ~ c#6@10 ~, ~@2 a5 ~@5",
  G: "b5@2 a5@2 ~ b5@5 ~ a5@3 ~@2, ~@2 g#5 ~@5", H: "g#5@5 ~@3 g#5 ~@2 f#5 ~ g#5 ~@2", I: "a5@3 f5@3 ~@10",
  J: "a5@3 f5@2 g#5@3 f#5 ~@2 a5 ~ c#6 ~@2", K: "d6@2 c#6@2 ~ d6@3 ~@3 d6 ~@4, ~@2 b5 ~@5",
  L: "b5@2 a5@2 ~ b5@3 ~@3 a5 ~@4, ~@2 g#5 ~@5",
})).s("gm_flute").gain(0.2)

stack(flute, flute_soft)