Strudelify

Telemann 44

D. Festi

KeyF majorTempo80 bpm
0:00/0:00
// Telemann 44 — D. Festi
// 80 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3007096; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 33 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · recorder · "Altblockflöte"
const recorder = note("<A ~@3 B C A D E F B C A G H I J ~ K L M N O P Q R S T U V W X Y>".pickRestart({
  A: "f5 g5 a5 bb5 c6@2 d6 e6 f6@2 f5@2 ~@4", B: "a5 c5 bb5 d6", C: "bb5@4 ~@2 a5 g5 a5 bb5 c6 d6 e5@3 f5", D: "~@7 c5",
  E: "bb4 c5 d5 e5 f5@2 g5 a5 bb5@2 bb4@2 ~@4", F: "~ d5 c5 bb4 ~ d5 c5 bb4 ~ g5 f5 e5 ~ g5 f5 e5", G: "~@7 gb5",
  H: "g5 gb5 g5 d5 g5 gb5 g5!3 e5 f5@2 ~@4", I: "~@7 e5", J: "e5 d5 e5 a4 d5 c5 d5 b4 c5@4 ~@4",
  K: "~@6 db5@2 d5 e5 f5 g5 a5 bb5 [bb5,c6] a5", L: "bb5 a5 bb5 gb5 ~@4", M: "~ d6 ~ d6 ~ d6 ~ d6 bb5 a5 g5 a5 a5@3 g5",
  N: "g5 ~@3", O: "~@5 a5 bb5 g5 f5 g5 a5 bb5 c6@2 d6 e6", P: "f6 ~@7", Q: "~@6 c5@2 bb4 c5 d5 e5 f5@2 g5 a5",
  R: "bb5 ~@7", S: "~@6 c5@2 d5 c5 d5 bb4 d5 c5 d5 f5", T: "e5 f5 g5@4 ~@10", U: "~@5 a4 bb4 g4 a4 e5 f5 bb5 g5@3 f5",
  V: "f5 d6 e5 c6", W: "~ bb4 a4 bb4 ~ bb4 a4 g4 ~ a4 g4 a4 ~ a4 g4 f4", X: "bb4@4 d6@4 e6@4 ~ bb5 a5 g5",
  Y: "a5 ~ c5@2",
})).s("gm_recorder").gain(0.5)

// other · recorder · "Altblockflöte"
const recorder_2 = note("<A B ~@2 C D E B F G C D A H I J K L M N O P Q R S T M U V W X Y Z>".pickRestart({
  A: "~@7 e5", B: "d5 e5 f5 g5 a5@2 bb5 c6 d6@2 d5@2 ~@4", C: "~ a4 g4 f4 ~ a4 g4 f4 bb5 a5 g5 f5 d6 c6 bb5 a5",
  D: "g5@4 ~@2 a5 g5 a5 bb5 c6 d6 e5@3 f5", E: "c5@4 ~@3 e5", F: "~@7 a4", G: "g4 bb5 e5 bb5",
  H: "d5 c5 d5 b4 c5 b4 c5 a4 b4 a4 g4@2 ~@4", I: "~@7 f5", J: "f5 e5 f5 g4 f5 e5 f5!3 d5 e5@2 ~@4",
  K: "~@9 g5 c6 d6 b5@3 c6", L: "c6@4 ~@6 e5 f5 g5 e5 f5 d5", M: "e5 d5 c5@2 ~@12",
  N: "~ d6 ~ d6 ~ d6 ~ d6 g5@2 gb5@2 g5@2 a5@2", O: "bb5 a5 bb5 a5 ~@4", P: "~@8 c5 d5 e5 f5 g5 a5 bb5 c6",
  Q: "a5 bb5 c6@2 ~@12", R: "~@2 f5@2 ~@2 e5@2 d5 e5 f5 g5 a5@2 bb5 c6", S: "d6 ~@7",
  T: "~@6 a5@2 g5 f5 g5 e5 f5 e5 f5 d5", U: "~@5 f5 g5 e5 c5 e5 f5 c5 f5 e5 f5 f4", V: "bb4 ~",
  W: "~ d5 db5 d5 ~ d5 c5 b4 ~ c5 b4 c5 ~ c5 bb4 a4", X: "d5 bb5 c5 a5", Y: "~ bb5 a5 bb5 ~ bb5 a5 bb5 c6@4 ~@4",
  Z: "~ e5 f5 d5 e5@3 f5 f5@8",
})).s("gm_recorder").gain(0.5)

// other · recorder · "Altblockflöte"
const recorder_3 = note("<~@2 A B C D ~ E F G C D H I J K L M N O P Q R S T U V W X Y Z AA AB>".pickRestart({
  A: "~@7 a4", B: "g4 bb5 e5 bb5", C: "f4@4 a5@4 d6@4 bb5 a5 g5 f5", D: "~@6 c5!2",
  E: "~@6 e5@2 d5 e5 f5 g5 a5@2 bb5 c6", F: "d6 d5 ~@6", G: "~ bb4 a4 g4 ~ bb4 a4 g4 ~ e5 d5 c5 ~ e5 d5 c5",
  H: "f4@4 ~@4 f5 g5 a5 bb5 c6@2 d6 e6", I: "f6 f5 ~@6", J: "~@6 g5@2 a5 g5 a5 f5 a5 g5 a5 c6", K: "b5 c6 d6@2 ~@12",
  L: "~@5 e5 f5 d5 e5 c5 e5 f5 g5@2 g4@2", M: "c5@2 ~@5 b4", N: "c5 d5 e5 f5 g5 a5 [a5,bb5] g5 f5 e5 d5@2 ~@4",
  O: "~@9 d6 ~ d6 ~ d6 ~ d6", P: "g5 gb5 g5 gb5 ~@4", Q: "g4 a4 b4 c5 d5 e5 f5 g5 e5 f5 g5@2 ~@4", R: "~@7 e5",
  S: "d5 c5 d5 e5 f5@2 g5 bb5 a5@2 a5@2 ~@4", T: "~ d5 ~@5 a5", U: "g5 f5 g5 e5 f5 e5 f5 d5 e5 d5 c5@2 ~@4",
  V: "~@7 bb5", W: "bb5 a5 bb5 c5 bb5 a5 bb5!3 g5 a5@2 ~@4", X: "~@7 db5", Y: "d5 b4 c5 a4",
  Z: "~ d5 c5 d5 ~ g5 f5 e5 ~ c5 bb4 c5 ~ f5 e5 d5", AA: "g4@4 bb5@4 g5@4 ~ g5 f5 e5", AB: "f5 ~ f4@2",
})).s("gm_recorder").gain(0.5)

// other · recorder · "Altblockflöte" · soft notes
const recorder_soft = note(`<
  ~@5
  [c5@2 c5 bb4 c5 bb4 a4 g4 a4 bb4 c5 d5 ~@4]
  [f4 ~]
  ~@4
  [c5@2 c5 bb4 c5 bb4 a4 g4 a4 bb4 c5 d5 ~@4]
  ~@12
  [~@5 bb4 ~@2]
  ~@8
>`).s("gm_recorder").gain(0.3)

stack(recorder, recorder_2, recorder_3, recorder_soft)