Strudelify

Giga Sonate da Camera a Tre

Arcangelo Corelli

KeyG majorTempo80 bpm
0:00/0:00
// Giga Sonate da Camera a Tre — Arcangelo Corelli
// 80 bpm, 3/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5946428; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 146 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/1.5)

// 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 · "Alto Recorder"
const recorder = note(`<
  ~@2 A B C D E F G H I J K I L M N I O P Q R S O T U V W X Y Z AA AB R ~@2 A B C D E F G H I J K I L M N I O P Q R S O
  T U V W X Y Z AA AB R AC AD R AE R U AF@2 AG AH AE AI AJ AK AE@2 R AL AM@2 AN@2 AO@2 AP@2 AQ AR AS@2 U AT F X Y Z AA
  AU R AC AD R AE R U AF@2 AG AH AE AI AJ AK AE@2 R AL AM@2 AN@2 AO@2 AP@2 AQ AR AS@2 U AT F X Y Z AA AU R
>`.pickRestart({
  A: "a5@5 g5@5 ~ f#5@5", B: "g5@5 d5@5 ~ b4@5", C: "c5@5 e5@5 ~ f#5@5", D: "g5@5 d5@5 ~ e5@5", E: "f#5@5 a5@5 ~ d5@5",
  F: "e5@5 f#5@5 ~ g5@5", G: "f#5@11 d5@5", H: "b4", I: "d5@11 d5@5", J: "d5@5 a4@5 ~ d5@5", K: "d5@5 e5@3 d5@3 c#5@5",
  L: "d5@5 b4@5 ~ g5@5", M: "e5@5 f#5@5 ~ d5@5", N: "d5@11 c#5@5", O: "g5@11 g5@5", P: "e5@11 e5@5",
  Q: "a5@5 g5@5 ~ a5@5", R: "d5", S: "b5", T: "e5@5 d5@5 ~ e5@5", U: "f#5", V: "b5@5 a5@5 ~ g5@5", W: "f#5@11 g5@5",
  X: "g5@11 f#5@5", Y: "b4@11 d5@5", Z: "c5@11 e5@5", AA: "d5@11 e5@5", AB: "c5@11 d5@5", AC: "b5@11 b5@5",
  AD: "f#5@5 g5@5 ~ e5@5", AE: "e5", AF: "[e5@21 f#5@5 ~ e5@5]/2", AG: "d#5@5 b4@5 ~ e5@5", AH: "e5@11 d#5@5",
  AI: "e5@5 d5@5 ~ c5@5", AJ: "b4@11 a4@5", AK: "a5@11 g#5@5", AL: "a5", AM: "[g5@5 d5@5 ~ g5@10 d5@5 ~ f5@5]/2",
  AN: "[e5@5 d5@5 ~ e5@10 a5@5 ~ g5@5]/2", AO: "[f#5@5 e5@5 ~ d5@10 c5@5 ~ b4@5]/2", AP: "e5/2",
  AQ: "f#5@5 e5@5 ~ f#5@5", AR: "f#5@5 e5@5 ~ d5@5", AS: "[g5@21 f#5@5 ~ e5@5]/2", AT: "g5", AU: "e5@11 d5@5",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Tenor Recorder"
const recorder_2 = note(`<
  ~@2 A B C D E F G H I J K L M N O P Q R S T U V W T X Y Z AA AB AC AD H ~@2 A B C D E F G H I J K L M N O P Q R S T U
  V W T X Y Z AA AB AC AD H ~@2 AE AF S AG AH@2 AI@2 X AJ AK AL R AM AN AO X H AP AQ T F AR@2 AS AT AU AV@2 F AU AW AX X
  AY G H ~@2 AE AF S AG AH@2 AI@2 X AJ AK AL R AM AN AO X H AP AQ T F AR@2 AS AT AU AV@2 F AU AW AX X AY G H
>`.pickRestart({
  A: "f#4@5 e4@5 ~ f#4@5", B: "g4@5 b4@5 ~ g4@5", C: "a4@5 c5@5 ~ a4@5", D: "b4@5 g4@5 ~ e4@5", E: "f#4@5 a4@5 ~ b4@5",
  F: "g4@5 a4@5 ~ b4@5", G: "c5@11 a4@5", H: "b4", I: "g4@5 e4@3 f#4@3 g4@5", J: "f#4@5 d4@5 ~ f#4@5",
  K: "b4@5 a4@5 ~ e4@5", L: "a4@5 f#4@11", M: "g4@5 e4@5 ~ g4@5", N: "a4@5 c#5@5 ~ b4@5", O: "b4@5 a4@11",
  P: "f#4@11 a4@5", Q: "~@11 d5@5", R: "c5@11 c5@5", S: "a4@5 g4@5 ~ a4@5", T: "f#4", U: "f#4@5 b4@5 ~ c5@2 d5@3",
  V: "e5@11 e5@5", W: "a4@5 g4@5 ~ a4@2 g4@3", X: "g4", Y: "f#4@5 b4@5 ~ g4@5", Z: "b4@5 c5@5 ~ d5@5", AA: "d4@11 g4@5",
  AB: "g4@11 c5@5", AC: "a4@5 f#4@5 ~ g4@5", AD: "e4@5 f#4@5 ~ a4@5", AE: "b4@11 b4@5", AF: "c#5@11 b4@5",
  AG: "d#5@5 c5@5 ~ d#5@5", AH: "b4@11 c5@5", AI: "b4/2", AJ: "a4@5 b4@5 ~ a4@5", AK: "g#4@11 a4@5", AL: "a4@5 b4@11",
  AM: "c#5@5 a4@5 ~ c#5@5", AN: "a4@5 f#4@5 ~ a4@5", AO: "b4@5 c5@5 ~ a4@5", AP: "e5", AQ: "c#5",
  AR: "[c5@21 d5@5 ~ c#5@5]/2", AS: "d5", AT: "d5@5 c5@5 ~ d5@5", AU: "c5@11 d5@5", AV: "[e5@21 d5@5 ~ c5@5]/2",
  AW: "d5@5 d5@11", AX: "b4@11 f#4@5", AY: "a4@5 b4@5 ~ c5@5",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Bass Recorder"
const recorder_3 = note(`<
  ~@3 A B C D E F G A H I F J K L D M N O P Q I E D C R P S N R T A ~@3 A B C D E F G A H I F J K L D M N O P Q I E D C
  R P S N R T A J U V W D X Y Z AA V AB E D I AC W D AD AE V E AF D AG AH@2 AI@2 AJ@2 D AG E D S N D T AE J U V W D X Y
  Z AA V AB E D I AC W D AD AE V E AF D AG AH@2 AI@2 AJ@2 D AG E D S N D T AE
>`.pickRestart({
  A: "g3", B: "a3", C: "b3@11 c4@5", D: "d4", E: "c4", F: "d4@11 f#4@5", G: "g4@11 d4@5", H: "f#4", I: "e4",
  J: "g4@11 g4@5", K: "a4@11 f#4@5", L: "g4@5 a4@11", M: "~@11 g3@5", N: "c4@11 c4@5", O: "a3@11 a3@5",
  P: "d4@5 c4@5 ~ d4@5", Q: "b3@11 g3@5", R: "d4@5 b3@5 ~ c4@5", S: "g3@11 b3@5", T: "a3@11 d4@5",
  U: "d4@5 e4@5 ~ c4@5", V: "b3", W: "c#4", X: "d#4", Y: "e4@11 e4@5", Z: "g3@11 a3@5", AA: "b3@11 a3@5",
  AB: "e4@11 d4@5", AC: "a3@5 b3@5 ~ c4@5", AD: "d4@5 e4@5 ~ f#4@5", AE: "g4", AF: "a3@5 b3@5 ~ c#4@5",
  AG: "b3@5 a3@5 ~ g3@5", AH: "[c4@21 b3@5 ~ a3@5]/2", AI: "[d4@21 c4@5 ~ b3@5]/2", AJ: "[e4@21 d4@5 ~ c4@5]/2",
})).s("gm_recorder").gain(0.3)

stack(recorder, recorder_2, recorder_3)

More by Arcangelo Corelli