Strudelify

Passe et Medio - Recorder Quartet

T Susato

KeyD minorTempo120 bpm
0:00/0:00
// Passe et Medio - Recorder Quartet — T Susato
// 120 bpm, 2/2, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5843907; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 53 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 · recorder · "Soprano Recorder"
const recorder = note(`<
  A B C D E F G H A B C I J K L A B C D E F G H A B C I J K L M N@2 O P L Q R@2 S T U V@2 W R@2 S T U X Y Z
>`.pickRestart({
  A: "f6@3 e6", B: "d6@2 f6@4 e6 d6", C: "e6@3 d6 e6 f6 e6 d6", D: "e6@3 e6", E: "d6@3 db6 d6 e6 d6@2",
  F: "d6 f6 e6 d6", G: "db6@3 b5 db6 d6 db6 b5", H: "db6@6 d6 e6", I: "e6 f6 g6 f6 e6@2 d6@2",
  J: "db6 d6 e6 db6 d6@2 b5@2", K: "db6@2 a5@2 d6@6 db6 b5 d6@2 db6@2", L: "d6@3 d6", M: "f6 e6",
  N: "[c6 e6 d6@3 d6 db6@2]/2", O: "db6 f6", P: "e6@2 c6 e6", Q: "db6!2", R: "[c6 d6 e6@3 e6!2 c6]/2", S: "d6 e6 f6@2",
  T: "f6!2 f6@2", U: "e6@2 d6 f6", V: "[e6@4 d6@4 db6@4 d6@8 db6 d6 db6 d6 d6@8]/2", W: "d6!2 d6@2", X: "e6 d6 db6 d6",
  Y: "d6@4 db6 d6 db6 d6 d6@8", Z: "d6",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Tenor Recorder"
const recorder_2 = note(`<
  A B C D E F G H I J K L M N O A B C D E F G H I J K L M N O P Q@2 R S E T U V W X Y@2 Z AA U V W X Y@2 Z AB
>`.pickRestart({
  A: "a4@3 g4", B: "d5@3 b4", C: "c5@3 c5", D: "e5@3 d5 c5@2 c5 b4", E: "a4@2 a4!2", F: "bb4 a4@2 g4", G: "a4@3 a4",
  H: "a4", I: "a4@4 a4 g4 f4 g4", J: "a4@2 f4@2 f4 g4 a4 b4", K: "c5", L: "c5 d5 e5 d5 c5 bb4 a4 g4", M: "a4@2 f4 g4",
  N: "a4 g4 a4@2", O: "gb4@3 gb4", P: "c5!2", Q: "[c5 bb4 a4@3 a4 db5@2]/2", R: "g4@2 a4 b4 c5@4", S: "c5@2 c5 bb4",
  T: "a4@4 e5 d5 db5 b4", U: "a4@2 b4@2 c5 d5 e5 f5", V: "e5 c5!2 g4", W: "d5@2 g4@2 f4 g4 a4 b4", X: "c5!2 c5@2",
  Y: "[c5@2 a4 c5@2 a4!2 g4]/2", Z: "a4 gb4", AA: "gb4!2 gb4@2", AB: "gb4",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Bass Recorder"
const recorder_3 = note(`<
  A B C D E F G H B@2 I J K L M A B C D E F G H B@2 I J K L M N O@2 P Q R S T U V W@2 X Y Z T U V W@2 X Y B
>`.pickRestart({
  A: "d4 a4 f4 e4", B: "d4", C: "c4 d4 e4@2", D: "g4@3 f4 e4@2 d4@2", E: "a3", F: "bb3@2 c4 bb3", G: "a3@3 a4",
  H: "a4@4 a3@2 b3 c4", I: "c4", J: "c4@3 d4", K: "a3@2 bb3 b3", L: "db4 bb3 a3@2", M: "d4@3 d4", N: "c4 b3 c4 d4",
  O: "[e4 c4 d4@3 d4 a4@2]/2", P: "a3@2 c4 b3", Q: "c4 d4 e4 c4", R: "d4@2 d4!2", S: "a3 a4",
  T: "a4@2 f4 d4 c4 b3 c4 d4", U: "e4@2 c4 e4", V: "d4 c4 f4@2", W: "[f4!3 c4@2 c4 d4@2]/2", X: "e4 f4 a3 bb3",
  Y: "a3 d4", Z: "d4@2 d4@2 d4@3 gb4",
})).s("gm_recorder").gain(0.3)

stack(recorder, recorder_2, recorder_3)