Strudelify

Dance of the Reed Flutes

Sarah Bacon

KeyD majorTempo60 bpm
0:00/0:00
// Dance of the Reed Flutes — Sarah Bacon
// 60 bpm, 2/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5609298; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 40 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/2)

// 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 · flute
const flute = note("<A B C D E@2 F G A B C D E@2 H I J@2 K L M N O@2 A B C D E@2 F G A B C D E@2 P@2>".pickRestart({
  A: "f#5 ~ e5 ~ f#5 ~ e5 ~ f#5@2 ~@2 e5@2 ~@2", B: "e5@2 ~@2 d5 f#5 a5 d6 f#6@8",
  C: "g6 ~ f#6 ~ g6 ~ f#6 ~ e6@2 d6 ~ a5 ~ f#5 ~", D: "d5@8 d6 c#6@7", E: "e6 ~ e5 ~ e5 ~ e5 ~ f5@2 ~@2 f#5@2 ~@2",
  F: "e6 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~", G: "e5 ~ f#5 ~ g5 ~ a5 ~ g6@4 e6 c#6 g5 e5",
  H: "f#6 ~ f#5 ~ f#5 ~ f#5 ~ f#5 ~ e5 ~ f#5 ~ e5 ~", I: "a5 ~ g#5 ~ a5 ~ g#5 ~ b5 ~ a5 ~ b5 ~ a5 ~",
  J: "b5 ~ a5 ~ b5 ~ a5 ~ b5 ~ a5 ~ b5 ~ a5 ~", K: "c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ e5 ~ e5 ~",
  L: "c#5 ~ c#5 ~ d5 ~ d5 ~ e5 ~ e5 ~ e5 ~ e5 ~", M: "e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~",
  N: "c#5 ~ c#5 ~ e5 ~ e5 ~ c#5 ~ c#5 ~ e5 ~ e5 ~", O: "c#5 ~ d5 ~ d#5 ~ e5 ~ c#5 ~ d5 ~ d#5 ~ e5 ~",
  P: "[d6@4 a#5 d6 g6 a#6@5 a6@8 f#6@8 ~@4]/2",
})).s("gm_flute").gain(0.3)

// other · flute
const flute_2 = note("<A B C D E@2 F G A B C D E@2 H I J K L@3 M N@2 A B C D E@2 F G A B C D E@2 O@2>".pickRestart({
  A: "d5 ~ c#5 ~ d5 ~ c#5 ~ d5@2 ~@2 c#5@2 ~@2", B: "a4@2 ~@2 a4 d5 f#5 a5 d6@8",
  C: "d6 ~ c#6 ~ d6 ~ c#6 ~ b5@2 a5 ~ f#5 ~ d5 ~", D: "a#4@8 a#5 a5@7", E: "b5 ~ b4 ~ b4 ~ b4 ~ c#5 b4@2 ~ a4@2 ~@2",
  F: "d6 ~ d5 ~ d5 ~ d5 ~ d5 ~ c#5 ~ b4 ~ c#5 ~", G: "d5 ~ c#5 ~ b4 ~ a4 ~ e6@4 c#6 g5 e5 c#5",
  H: "d6 ~ d5 ~ d5 ~ d5 ~ d#5 ~ e5 ~ d#5 ~ e5 ~", I: "f5 ~ e5 ~ f5 ~ e5 ~ f5 ~ e5 ~ f5 ~ e5 ~",
  J: "e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ g5 ~ g5 ~", K: "g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~",
  L: "b4 ~ a4 ~ b4 ~ a4 ~ b4 ~ a4 ~ b4 ~ a4 ~", M: "b4 ~ a4 ~ b4 ~ a4 ~ b4 ~ a4 ~ b4 ~ c#5 ~",
  N: "a4 ~ b4 ~ c5 ~ c#5 ~ a4 ~ b4 ~ c5 ~ c#5 ~", O: "[a#5@4 g5 a#5 d6 e6@5 e6@8 d6@8 ~@4]/2",
})).s("gm_flute").gain(0.3)

// other · flute
const flute_3 = note("<~@16 A B C D E F ~ G H ~@15>".pickRestart({
  A: "g5@11 ~ e5@4", B: "c#5 d5 f#5@2", C: "e5@11 ~ c#5@4", D: "a4 b4 d5@2", E: "c#5@11 ~ a4@4", F: "c#5 a4 c#5 a4",
  G: "e5 d5 c#5 b4 c#5 b4 a4 g4", H: "f#4 ~@3",
})).s("gm_flute").gain(0.3)

stack(flute, flute_2, flute_3)