Strudelify

Concerto in G

Domenico Dragonetti

KeyG majorTempo100 bpm
0:00/0:00
// Concerto in G — Domenico Dragonetti
// 100 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5075355; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 122 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "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.

// chords · piano
const piano = note(`<
  A B C A D E F G H I@2 J K@2 L M N O P ~@11 Q R ~@3 S T@2 U V W ~@6 X ~@5 Y@2 Z ~@2 AA AB AC AD AE AF AG AH AI AJ AK AL
  AM AN AO AP AQ AR AS AT AU AV J K@2 L M N O AW AX AY AZ BA ~ BB BC BD BE BF BG BH BI BJ@2 BK BL BM BN BO BP BQ BR BS
  BT BU BV BW@4 BX BY BZ
>`.pickRestart({
  A: "[b3,d4] g3 [b3,d4] g3 [b3,d4] g3 [b3,d4] g3 [b3,d4] g3 [b3,d4] g3 [b3,d4] g3 [b3,d4] g3, [g1,g2]@15 ~ [b1,b2]@15 ~", // Bm G B
  B: "[a3,d4] f#3 [a3,d4] f#3 [a3,d4] f#3 [a3,d4] ~@3 c3@2 b2@2 a2@2, d3@19 ~@13, d2@14 f#3@17 ~, ~@16 [a3,f#4]@15 ~", // D5 D
  C: "a2 g2 f#2 e2 d2 c2 b1 a1",
  D: "[a3,d4] f#3 [a3,d4] f#3 [a3,d4] f#3 [a3,d4] f#3 [d4,f#4] a3 [d4,f#4] a3 [d4,f#4] a3 [d4,f#4] a3, [d2,d3]@15 ~", // D5 D
  E: "[c4,e4] a3 [c4,e4] a3 [c4,e4] a3 [c4,e4] a3 [c4,e4] a3 [c4,e4] a3 [c4,e4] a3 [c4,e4] a3, [a1,a2]@15 ~ [c2,c3]@15 ~", // C A C
  F: "e4 b3 e4 b3 e4 b3 e4 b3 g4 e4 g4 e4 g4 e4 g4 e4, [e2,e3]@15 ~, g4 b4", // E
  G: "f#4 d4 f#4 d4 f#4 d4 f#4 d4 f#4 d4 f#4 d4 f#4 d4 f#4 d4, d5, [b1,b2]@15 ~ [d2,d3]@15 ~", // B D
  H: "g4 c4 g4 c4 g4 c4 g4 c4 g4 e4 g4 e4 g4 e4 g4 e4, [e2,e3,c5] [c2,c3,e5]", // C
  I: "[g4 d4 g4 d4 g4 d4 g4 d4 ~@2 c5@2 b4@2 a4@2 a4@2 g4@2 f#4@2 e4@2 d4@2 c4@2 b3@2 a3@2, d5@19 ~@45, [b1,b2]@15 ~ [c2,c3]@30 ~@2 [d2,d3]@15 ~, ~@2 e4 ~@5]/2", // B C D
  J: "[g3,b3,d4]!8, g2@15 ~", // G
  K: "[[d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d2,d3,f#3,d4]@15 ~@9, f#2@15 ~@49]/2", // D5 D
  L: "[g2,d3,g3,b3,d4] [b2,d3,g3,d4,g4]", M: "[d3,a3,d4,f#4]", N: "[b2,g3,d4,g4]@15 ~ [g2,b3,d4,g4]@15 ~",
  O: "~@2 [d2,d3,d4,g4,b4,d5] ~@3 [d2,d3,c4,d4,f#4] ~", P: "[g1,g2,b3,d4,g4] [d1,d2,d3] ~@6", Q: "g4 [g3,b4]",
  R: "[f#3,a3,d4,a4,d5]", S: "~@7 a3, ~@3 c#4",
  T: "[[a1,a2]@15 ~ f#2@11 ~ e2@4 [f#3,a3,d4]@4 [f#3,a3,d4,a4]@4 d4@4 [g3,b3,d4,b4]@4 [b3,d4]@4 [b3,d4,g4,d5]@4 ~@4 [c#4,e4,a4,e5]@4, ~@2 a2@5 [b3,d4,g4,d5], ~ d2, ~@5 [f#3,a3]@3, ~@5 a4 [g3,b4]@2]/2", // A D G Bm G A G F#m …
  U: "~@2 a3@3 c#4@2 b3, [c#4,e4,a4,e5]@11 ~@21", // A
  V: "a3 [c#3,e3,a3,e4]!2 [d3,f#3,a3,f#4]!2 [f#3,a3,d4,a4]!2 [g#3,b3,e4,b4]", // A D E
  W: "~@5 g#2 f#2 ~, [g#3,b3,e4,b4]@3 ~@5, ~ e2@2 ~", X: "[f#3,a3,d4] [a3,d4,f#4]",
  Y: "[[a3,d4,f#4]@8 [d4,f#4,a4]@8 [f#4,a4,d5]@31 ~ [a3,d4,f#4]@15 ~, [a1,a2]@61 ~@3]/2", // D A
  Z: "a3@15 ~@9 c#4@8, [a1,a2,e4]@15 ~, d4@23 ~@9, ~@16 g3@15 ~", // A5
  AA: "[a2,a3,c#4,a4]@2 [a3,c#4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [e4,a4,c#5]@2 g3 f#3 [e4,a4,c#5]@2 [e4,a4,c#5]@2, ~@2 a3@3 [e4,a4,c#5] g3@2", // A
  AB: "[b2,d4,g4,d5]@2 [b3,d4,g4,d5]@2 [d4,g4,d5]@2 [d4,g4,d5]@2 [c#4,g4,e5]@2 a3 g3 [c#4,g4,e5]@2 [c#4,g4,e5]@2, ~@2 b3@3 [c#4,g4,e5] a3@2", // G G5 C#dim
  AC: "[a2,d4,f#4,a4]@2 [a3,d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,g4,b4]@2 g3 f#3 [d4,g4,b4]@2 [d4,g4,b4]@2, ~@2 a3@3 [d4,g4,b4] g3@2", // D G
  AD: "[g2,c#4,e4,b4]@2 [g3,c#4,e4,b4]@2 [c#4,e4,b4]@2 [c#4,e4,b4]@2 [d4,a4]@2 f#3 e3 [d4,a4]@2 [d4,a4]@2, ~@2 g3@3 [d4,a4] f#3@2", // C#m7b5 C#m7 D5
  AE: "[f#2,a3,d4,a4]@2 [f#3,a3,d4,a4]@2 [a3,d4,a4]@2 [a3,d4,a4]@2 [g3,d4,g4]@2 e3 d3 [g3,d4,g4]@2 [g3,d4,g4]@2, ~@2 f#3@3 [g3,d4,g4] e3@2", // D D5 G5
  AF: "[e2,g3,b3,g4]@2 [e3,g3,b3,g4]@2 [g3,a3,e4]@2 [g3,a3,e4]@2 ~ d3 c#3 b2 [e3,a3,e4]@2 [e3,a3,e4]@2, ~@2 e3@2 [e3,a3,e4]!2 c#3@2", // Em A7 A5
  AG: "[d4,f#4,a4,d5]!8", AH: "[b3,d4,g4,d5]!4 [a3,d4,f#4,d5]!2 [b3,d4,g4,d5]!2",
  AI: "[g3,b3,d4,g4,b4] ~@3 [d3,a3,d4,f#4,a4] ~ [d3,a3,d4,f#4,a4] ~ [g3,b3,d4,g4,b4] ~@3 [d3,a3,d4,f#4,a4] ~ [g3,b3,d4,g4,b4] ~", // G D G D G
  AJ: "[e3,g4]@2 [c3,e4]@2 [a2,a3,c4] ~@3, c5@19 ~@13, c4@15 ~@17", AK: "[c4,e4,a4,e5]!4 [d4,g4,d5,g5]!4",
  AL: "[c4,e4,a4,e5]!2 [c4,d4,a4,d5]!2 [b3,d4,g4,d5]!4", // Am D7 G
  AM: "[a3,f#4,a4] [b3,g4,b4] a3@2 a3 [b3,g4,b4] [a3,f#4,a4]@2, [d3,d4], ~@2 [f#4,a4]@3 ~@3", // D Em D F#m
  AN: "d3!2 e3 f#3 g3 a3 b3 c4 d4@4 ~@4, [b3,d4,g4] ~@7", AO: "[e2,g3,b3]@15 ~ [a2,a3,c4]@15 ~, e4@15 ~",
  AP: "b2@15 ~ a2@15 ~, [f#3,b3,d#4]@15 ~", AQ: "[g2,e3]@15 ~ [e2,g3]@15 ~, [b3,e4]@15 ~",
  AR: "[c#2,e4]@15 ~ [a1,c#4]@15 ~, [e3,a3]@15 ~", AS: "g1 f#2@14 ~ [d2,f#3]@15 ~, [d3,a3]@15 ~, d4@15 ~@17",
  AT: "[b1,b2,g3,d4]@15 ~ [g1,g2,b3,d4,g4]@15 ~", AU: "[d2,d3,a3,d4,f#4]@15 ~",
  AV: "[f#3,a3] [g3,b3] [f#3,a3]@2 ~@4, [d1,d2,d4] ~", // F#m G F#m D
  AW: "[g3,b3,d4,g4]@11 ~ [f#3,f#4]@2 [e3,e4]@2 [d3,d4]@4 [c3,c4]@4 [b2,b3]@4 [a2,a3]@4", // G F# E D C B A
  AX: "[g2,g3] [f#2,f#3] [e2,e3] [d2,d3] [c2,c3] [b1,b2] [a1,a2] [g1,g2]", // G F# E D C B A G
  AY: "[f1,f2]@18 ~ [e1,f2]@2 [g1,g2]@3 [c2,c3]@3 [e2,e3]@2 [f2,f3]@3", // F Fmaj7 G C E F
  AZ: "[g2,g3]@3 [c2,c3]@2 [f#2,e3]@3 [g2,g3]@3 [a2,a3]@2 [b2,b3]@3 [c3,c4]@3 [e3,e4]@2 [f3,f4]@3 [g3,g4]@3 [a3,a4]@2 [b3,b4]@3", // G C F#7 G A B C E …
  BA: "~ [c3,g3,c4]@31, [c2,e4,g4,c5]", BB: "~@4 e1 ~@11", BC: "[c4,g4,c5] [e4,a4,c5] [d4,a4,c5] [f#4,a4,d5]",
  BD: "[g4,b4,d5]@15 ~ [d4,g4,b4]@15 ~", BE: "[b3,d4,g4]@15 ~ [g3,b3,d4]@8 [d3,g3,b3]@8", BF: "[d1,d2,d3,a3,c4]@15 ~",
  BG: "~@4 [g1,g2] ~@3, [d3,g3,b3]@19 ~@13", // G
  BH: "[c3,e3,g3,c4] ~@2 [g2,d3,g3,b3,d4] [c2,c3,g3,c4,e4] ~@2 [f2,c3,a3,c4,f4]", // C G C F
  BI: "[e2,c3,g3,c4,g4] ~@5 [c2,c3,g3,c4,e4] ~", // C
  BJ: "[[f#3,a3,c4,d4]@4 [g3,b3]@2 [f#3,a3,c4]@2 [g3,b3,d4]@5 ~@3, [d2,d3]@49 ~@15]/2", // D7 G F#dim G D
  BK: "d5 g5 d5 b4, [g3,g4], b2@15 ~ g2@15 ~", BL: "a4 c5 a4 f#4, [d3,d4], f#3@15 ~ c4@15 ~",
  BM: "g4 d5 [g3,b4] [f#3,a4], [d3,d4], b3@15 ~@17", BN: "[c3,d3,a3]@2 [b2,d3,g3] ~, d4@3 ~",
  BO: "[b2,g3]@2 ~ c4, d4@3 ~, ~ [a2,f#3]", BP: "[d2,a3]@2 ~ b3, c4@3 ~, ~ [g2,g3]",
  BQ: "[b2,g3,d4,g4]@23 ~ [c3,g3,e4,g4]@8", BR: "[b3,d4,g4] [a3,c4,f#4] [g3,b3,g4] [g3,b3,d4], d3@15 ~ g2@15 ~",
  BS: "[b2,g3,g4]@2 ~ c4, d4@3 ~, ~ [a2,f#3,f#4]", BT: "[d3,f#3,a4]@2 ~ b3, c4@3 ~, ~ [g2,g3,g4]",
  BU: "[b2,g3,d4]@23 ~ [a2,g3,e4]@8", BV: "[g3,b3] [f#3,a3] [g2,g3,b3] ~, d4@23 ~@9, d3 ~",
  BW: "[[c3,d3]@4 [d3,f#3]@4 [b2,d3,g3]@4 [d3,g3,b3]@4 [d3,f#3,d4]@11 c2 [b1,d3,g3,d4]@2 [c2,e3,g3,e4]@2, d2@103 ~@25, d1@91 ~@37]/4", // Csus2 D G D G C
  BX: "[d1,d2] [d3,g3,b3,d4,g4,b4,d5] [d1,d2] [d2,d3,c4,d4,f#4]", // D G D D7
  BY: "[g1,g2,g3,b3,d4,g4] ~ [g2,g3,g4]@2 [f#2,f#3,g3,g4]@2 [e2,e3,g3,g4]@2 [d2,d3,g3,g4]@2 [c2,c3,g3,g4]@2 [b1,b2,g3,g4]@2 [a1,a2,g3,g4]@2", // G Gmaj7 Em G5 C5 Em A7
  BZ: "[g1,g2,g3,b3,d4,g4]@15 ~", // G
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@18 A B C D E F G H I J K L M ~ N@3 O ~@5 P Q R S T@2 U V W X Y Z ~@3 AA AB ~@64
>`.pickRestart({
  A: "~@2 [e1,e2,e3] [f#1,f#2,f#3] [g1,g2,g3] [a1,a2,a3] [b1,b2,b3] [a1,a2,a3]", // E F# G A B A
  B: "[g1,g2,g3] [d1,d2,d3] [e1,e2,e3] [f#1,f#2,f#3] [g1,g2,g3] [a1,a2,a3] [b1,b2,b3] [c2,c3,c4]", // G D E F# G A B C
  C: "[d2,d3,d4] [c#2,c#3,c#4] [d2,d3,d4] [e2,e3,e4] [f#2,f#3,f#4] [e2,e3,e4] [f#2,f#3,f#4] [g2,g3,g4]", // D C# D E F# E F# G
  D: "[f#4,a4] [e4,g4] [d4,f#4] [c#4,e4] [f#4,a4] [e4,g4] [d4,f#4] [c#4,e4], [a2,a3]@15 ~ [a1,a2]@15 ~", // F#m Em D C#m F#m Em D C#m …
  E: "[f#3,a3,d4]!8, d2@15 ~", F: "[d3,a3,d4]!8, g2@15 ~", G: "[g2,e3,a3,c#4]@15 ~ [e2,c#4]@8 [a1,e4]@8, ~ g3",
  H: "e4 c#4 [f#3,d4] ~, d2@23 ~@9, g3 ~", I: "~@4 [f#3,b3,d4]@4 [f#3,b3,d4]@4 [f#3,b3,d4]@4 [f#3,b3,d4]@15 ~, b2@15 ~",
  J: "~ [e3,b3,d4]!3 [e3,b3,d4]@2 ~@2, e2@23 ~@9", // E7
  K: "~@4 [g3,b3,d4]@4 [g3,b3,d4]@4 [g3,b3,d4]@4 [g1,g2,g3,b3,d4]@15 ~, [b1,b2]@15 ~@17", // G B
  L: "~ [f#3,a3,d4]!3 [f#3,a3,d4]@2 [c3,a3,e4]@2, [d2,d3]@23 ~@9", M: "b2 b3@14 ~@17, d4@15 ~",
  N: "[[a1,a2,g3,c#4]@17 ~@7]/3", O: "a3@8 ~@8 g3@15 ~, [a1,a2]@15 ~, d4@23 ~@9, f#3@15 ~@17, ~@8 b3@19 ~@5",
  P: "~ [c#4,e4,a4,e5]!2 [e4,g4,c#5,a5]!2 [c#4,e4,a4,e5]!2 [a3,c#4,g4,c#5]", // A A7 A A7
  Q: "[a3,c#5] [g3,g4] [f#3,a4] [g3,b4], c#4 [d4,d5]", R: "[g3,c#4,e4,a4]@15 ~ [f#3,d4,a4]@15 ~",
  S: "[e3,d4]@8 [a2,c#4]@8 [a2,f#3,a3,d4,f#4]@15 ~, [g3,g4] ~", // E7 A D G
  T: "[[g3,b3,e4]@8 [f#3,a3,d4]@8 [e3,g3,c#4]@15 ~ [f#3,a3,d4]@8 [g3,c#4,e4]@8 [a3,d4,f#4]@15 ~, a2@61 ~@3]/2", // Em D C#dim D C#dim D
  U: "a2@15 ~", V: "[a1,a2]@2 [c#2,c#3]@2 [e2,e3]@2 [a2,a3] ~, [a3,c#4,e4,a4]@19 ~@13",
  W: "[c#4,e4,a4,e5]@15 ~ [c4,d4,a4,e5]@8 [b3,d4,g4,g5]@8", X: "[c4,d4] d#4 d4 [c4,d5], a4@15 ~, f#5@23 ~@9",
  Y: "[b3,d5] [e3,c#5] [g3,b4] [c#3,a4], g4 e4", // Bm C#m G F#m
  Z: "[a3,f#4,a4] [g3,g4] [a3,a4] [b3,b4] [c#4,c#5] [d4,d5] [e4,e5] [f#4,f#5], d3@15 ~", // D G A B C# D E F#
  AA: "[d2,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [a3,d4,f#4]@2 c3 b2 [a3,d4,f#4]@2 [a3,d4,f#4]@2, ~@2 d3@3 [a3,d4,f#4] c3@2", // D
  AB: "[d2,a3,d4,f#4]@2 [c3,a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [g3,d4,g4]@2 b2 a2 [g3,d4,g4]@2 [g3,d4,g4]@2, ~@2 c3@3 [g3,d4,g4] b2@2", // D D7 D G5
})).s("gm_piano").gain(0.2)

stack(piano, piano_soft)

More by Domenico Dragonetti