Strudelify

arriettys song

Cecile Corbel

KeyB♭ majorTempo120 bpm
0:00/0:00
// arriettys song — Cecile Corbel
// 120 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5354056; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// 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
const flute = note(`<
  A@2 B C D E B C F G H I J K L ~ M N O ~ P Q G R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AB AC AD AE AF AJ AK AL AM
  AN AO AL AM AP AQ ~ AR AS AR AS AT AU AN AV AT Y AW AX AY Y Z AZ BA BB BC BD BE BF BG BH BA BB BC BD BE BI BG BJ BK BL
  BG BM BG BN BG BO BK BL BG BM BG BN BP@7 BQ@8 BR@3
>`.pickRestart({
  A: "[~@5 g4@3 a4@3 bb4@2 d5@8 f4@3 g4@3 a4@2 c5@3]/2", B: "bb4@5 g4@3 a4@3 bb4@5", C: "c5@5 bb4@5 ~ a4@5",
  D: "bb4@5 g4@3 a4@3 bb4@2 d5@3", E: "f4@5 f4@3 g4@3 a4@2 c5@3", F: "d5@5 d5@5 ~@2 eb5 ~@3, ~@11 d5@5",
  G: "c5@5 c5@5 ~ bb4@5", H: "d5@5 g4@10 ~", I: "~@11 g4@5", J: "d5@5 d5@5 ~ d5@5", K: "c5@8 bb4@3 c5@2 bb4@3",
  L: "d5@5 f5@10 ~", M: "~@11 d5@2 g5@3", N: "f5@5 c5@5 ~ c5@5", O: "bb4@5 ~@3", P: "~@11 d5@5", Q: "g4@10 ~ d5@5",
  R: "c5@3 bb4@2 g4@10 ~", S: "g5@3 d5@2 a5@3 d5@3 bb5@5", T: "c6@10 ~ g5@5", U: "f5@5 d5@5 ~ f5@5",
  V: "eb5@5 c5@5 ~ eb5@5", W: "a5@8 g5@3 f5@5", X: "g5@5 eb5@5 ~ g5@5", Y: "f5@5 bb4@5 ~ f5@5",
  Z: "g5@5 f5@5 ~ eb5@2 f5@3", AA: "f5@10 ~ c5@2 eb5@3", AB: "f5@5 f5@3 eb5@3 f5@2 bb5@3", AC: "g5@10 ~ f5@2 eb5@3",
  AD: "f5@5 f5@3 g5@3 f5@2 eb5@3", AE: "c5@5 bb4@10 ~", AF: "f5@3 f5@2 f5@3 g5@3 f5@2 eb5@3", AG: "c5@8 c5@3 eb5@5",
  AH: "f5@10 ~ eb5@5", AI: "d5@10 ~ c5@2 eb5@3", AJ: "c5@10 ~ eb5@5", AK: "f5@15 ~", AL: "~@11 c5@5",
  AM: "g5@5 g5@5 ~ g5@5", AN: "f5@5 f5@5 ~ eb5@5", AO: "g5@3 c5@2 c5@10 ~", AP: "f5@5 bb4@3 eb5@3 f5@2 eb5@3",
  AQ: "g5@5 bb5@10 ~", AR: "eb5@10 ~ g5@2 c6@3", AS: "bb5@5 f5@3 f5@8", AT: "eb5@10 ~ g5@5", AU: "c5@10 ~ g5@5",
  AV: "f5@3 eb5@2 c5@10 ~", AW: "g5@5 c5@5 ~ g5@5", AX: "a5@10 ~ g5@2 f5@3", AY: "g5@3 f5@2 eb5@5 ~ g5@5",
  AZ: "f5@10 ~ g4@2 bb4@3", BA: "c5@5 c5@3 bb4@3 c5@2 f5@3", BB: "d5@10 ~ c5@2 bb4@3", BC: "c5@5 c5@3 d5@3 c5@2 bb4@3",
  BD: "g4@5 f4@10 ~", BE: "c5@3 c5@2 c5@3 d5@3 c5@2 bb4@3", BF: "g4@8 g4@3 bb4@5", BG: "c5@15 ~",
  BH: "~@8 d4@3 g4@2 bb4@3", BI: "g4@10 ~ bb4@5", BJ: "~@3 bb4@2 a4@3 g4@3 f4@5", BK: "d5@15 ~",
  BL: "eb5@5 d5@3 f4@3 bb4@2 d5@3", BM: "d5@5 d5@3 f4@3 bb4@2 d5@3", BN: "d5@5 c5@3 eb4@3 a4@2 c5@3",
  BO: "d4@3 a4@2 d5@5 ~ eb5@5",
  BP: "[c5@25 ~ d5@15 ~ eb5@5 d5@3 f4@3 bb4@2 d5@3 c5@15 ~ d5@5 d5@3 f4@3 bb4@2 d5@3 c5@15 ~ d5@5 c5]/7",
  BQ: "[~@2 eb4@3 a4@2 c5@3 c5@15 ~ d4@3 a4@2 d5@5 ~ eb5@5 d5@15 ~ eb5@5 d5@3 f4@3 bb4@2 d5@3 c5@15 ~ d5@5 d5@3 f4@3 bb4@2 d5@3 c5@15 ~ d5@5 c5]/8",
  BR: "[~@2 eb4@3 a4@2 c5@3 c5@25 ~@13]/3",
})).s("gm_flute").gain(0.3)

stack(flute)