Strudelify
KeyG minorTempo60 bpm
0:00/0:00
// Adagio — Tomaso Albinoni
// 60 bpm, 6/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/1582971; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 26 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/6)

// 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.

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<~@13 A@3 B@4 C D@3 ~@2>".pickRestart({
  A: "[~@21 c5@3 b4@2 c5@3 db5@5 db5 eb5 f5@2 eb5 db5 ~ g4@2 ~ b4@2 c5@2 d5 d5@2 ~ f5@2 g5@2 ab5 ~ bb5 b5 c6@16 ~@8 c5@4 ~ d5@4 eb5@3, ~@40 c5@2 ~ g4@2 ~@6 eb5@2 ~@43]/3",
  B: "[~ d5@4 c5@4 ~ b4@4 c5@10 [c5,d5] eb5@21 ~@6 d5@19 ~ f5@13 ~@4 f5@2 g5@19 g5@13 ~@5, ~@51 eb5@2 ~@75]/4", // Csus2
  C: "~ bb5@13 bb5@6 a5@12, g5 ~@15", D: "[~@4 d5 eb5 gb5 a5 bb5@19 a5@38 ~@31]/3",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note("<~@13 A@3 B@4 C D@3 ~@2>".pickRestart({
  A: "[~@21 c5@3 b4@2 c5@3 db5@5 db5 eb5 f5@2 eb5 db5 ~ g4@2 ~ b4@2 c5@2 d5 d5@2 ~ f5@2 g5@2 ab5 ~ bb5 b5 c6@16 ~@8 c5@4 ~ d5@4 eb5@3, ~@40 c5@2 ~ g4@2 ~@6 eb5@2 ~@43]/3",
  B: "[~ d5@4 c5@4 ~ b4@4 c5@10 [c5,d5] eb5@21 ~@6 d5@19 ~ d5@13 ~@4 d5@2 eb5@19 d5@13 ~@5, ~@51 eb5@2 ~@75]/4", // Csus2
  C: "~ g5@13 g5@6 d5@10 g4 a4, d5 ~@15", D: "[[bb4,d5] eb5@6 ~ d5@58 ~@30]/3",
})).s("gm_trumpet").gain(0.4)

// other · french horn · "Mellophone"
const french_horn = note("<~@4 A B@2 C D@8 E@3 F G H@3 ~@2>".pickRestart({
  A: "g3@16 c4@4 d4 eb4@4 d4 ~ eb4@4 c4", B: "[gb4@16 d4@4 e4 gb4@4 d4 ~ g4@16 d4@5 g4@5 d4@5 ~ g4@5]/2",
  C: "f4@11 c4@10 c4@5 ~ eb4@5",
  D: "[f4@15 g4 f4@24 e4@3 f4@4 g4 f4@58 ~@5 f4@3 gb4@35 f4@8 f4@11 eb4@2 d4@3 c4@3 [c4,d4] eb4 [f4,g4] ab4 [bb4,c5] c5@3 b4@2 c5@3 db4@11 ~ g4@2 ~ b4@2 g4@2 ~ bb4@2 c5 c5@2 bb4@2 ab4 ~ bb4 b4 c5@16 ~@8 c5@4 ~ d5@4 eb5@3, ~@200 c5@2 ~ g4@2 ~@3 a4@2 ~@46]/8", // Csus2 Fsus2 Bbsus2
  E: "[~ d5@4 c5@4 ~ b4@4 c5@10 [f4,g4] ab4@21 ~@5 c5 c5@6 ~ b4@13 d5@13 ~@4 c5@2 d5@5]/3", F: "~ c5@13 bb4@13 ~@5",
  G: "~@4 d4 [e4,f4] g4 [a4,bb4] c5@6 bb4@6 ~@4 [d4,eb4] gb4 a4 bb4@5", H: "[~ a4@64 ~@31]/3",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Mellophone"
const french_horn_2 = note("<~@4 A B@2 C D@8 E@4 F G@3 ~@2>".pickRestart({
  A: "g3@16 a3@4 b3 c4@4 b3 ~ c4@4 a3", B: "[d4@16 b3@4 db4 d4@4 b3 ~ e4@16 bb3@5 eb4@5 bb3@5 ~ eb4@5]/2",
  C: "c4@11 a3@10 c4@5 ~ eb4@5",
  D: "[c4@15 d4 d4@24 c4@3 c4@4 d4 f4@58 ~@5 f4@3 gb4@35 f4@8 f4@11 eb4@2 d4@3 c4@3 [c4,d4] eb4 [f4,g4] ab4 [bb4,c5] c5@3 b4@2 c5@3 db4@11 ~ g4@2 ~ b4@2 g4@2 ~ bb4@2 c5 c5@2 bb4@2 ab4 ~ bb4 b4 c5@16 ~@8 c5@4 ~ d4@4 eb4@3, ~@200 c5@2 ~ g4@2 ~@3 a4@2 ~@46]/8", // Csus2 Fsus2 Bbsus2
  E: "[~ d4@4 c4@4 ~ b3@4 c4@10 a3@22 ~@6 c5@6 ~ b4@13 d5@13 ~@4 f4@2 g4@19 g4@13 ~@5, ~@51 a4@2 ~@75]/4",
  F: "~@4 d4 [e4,f4] g4 [a4,bb4] c5@6 bb4@6 ~@4 [d4,eb4] gb4 a4 bb4@5", G: "[~ a4@64 ~@31]/3",
})).s("gm_french_horn").gain(0.4)

// other · tuba · "Euphonium"
const tuba = note("<~@4 A@2 B C D E@7 F@4 G@4 ~@2>".pickRestart({
  A: "[bb3 c4@2 d4]/2", B: "d4@11 g3@5 g3@5 c4@3 d4@3 ~ c4@2 a3@2, ~@27 bb3@2 ~@3",
  C: "c4@11 f4@5 c4@5 bb3@3 c4@3 ~ bb3@2 g3@2, ~@27 a3@2 ~@3", D: "f3 a3",
  E: "[bb3@16 c4@58 ~@5 c4@3 c4@35 f3@24 c4@8 ~@5 eb4@3 f4@11 ~@9 eb3@2 ~ c3@2 bb2@2 ab2@2 g2@2 eb4@16 ~@8 c4@4 ~ d4@4 eb4@3, ~@179 d3@2 ~@43]/7",
  F: "[~ d4@4 c4@4 ~ b3@4 c4@10 [c4,d4] eb4@21 ~@6 g4@6 ~ g4@13 ab4@13 ~@4 d4@2 eb4@19 e4@13 ~@5, ~@51 a4@2 ~@75]/4", // Csus2
  G: "[~ d4@13 eb4@2 ~ g4@2 ~ d4@19 ~ bb4@19 d4@38 ~@31, g4@2 ~@14 d4@2 ~ eb4@2 ~@107]/4",
})).s("gm_tuba").gain(0.45)

// other · tuba · "Euphonium"
const tuba_2 = note("<~@4 A B C D E F@7 G@4 H@4 ~@2>".pickRestart({
  A: "bb3 a3", B: "a3 g3", C: "g3 eb3", D: "f3!2", E: "a3!2",
  F: "[f3@16 c4@58 ~@5 f3@3 c4@35 f3@24 g3@8 ~@5 eb3@3 f3@11 ~@9 eb3@2 ~ c3@2 bb2@2 ab2@2 g2@2 eb3@16 ~@8 c4@4 ~ d4@4 eb4@3, ~@179 d3@2 ~@43]/7",
  G: "[~ d4@4 c4@4 ~ b3@4 c4@10 gb3@22 ~@6 d4@19 ~ b3@13 ~@4 c4@2 eb4@19 e4@13 ~@5, ~@51 eb4@2 ~@75]/4",
  H: "[~ d4@13 eb4@6 a3@38 ~ a3@38 ~@31, e4 ~@63]/4",
})).s("gm_tuba").gain(0.45)

// bass · tuba · "B♭ Tuba"
const bass = note("<~@4 A B C D E F@7 G@3 H I J@3 ~@2>".pickRestart({
  A: "g2 f2", B: "gb2 a2", C: "eb2 c2", D: "d2 bb1", E: "f2!2",
  F: "[bb1@16 f3@58 ~@5 a2@3 d2@35 g2@24 eb2@8 ~@5 eb3@3 f3@11 c3@9 eb3@2 ~ c3@2 bb2@2 ab2@2 g2@2 g2@16 ~@8 c3@4 ~ d3@4 eb3@3, ~@179 d3@2 ~@43]/7",
  G: "[~ d3@4 c3@4 ~ b2@4 c3@10 gb2@22 ~@6 d3@19 ~ f3@13 ~@4 f3@2 d3@5, ~@51 eb3@2 ~@43]/3", H: "~ c3@13 db3@13 ~@5",
  I: "~ g2@6 ~@2 c3@2 ~ a2@2 g2@2 ~ e2@2 ~ d2@3 ~ bb2@3 a2@5, db3@2 ~@6 d3@2 ~ bb2@2 ~@3 f2@2 ~ eb2@2 ~@11",
  J: "[~@4 g2 a2 bb2 c3 d3@58 ~@30]/3",
})).s("gm_tuba").gain(0.45)

// bass · tuba · "B♭ Tuba"
const bass_2 = note("<~@4 A B C D E F@7 G@4 H@4 ~@2>".pickRestart({
  A: "g2", B: "g2!2", C: "g2 c2", D: "d2 bb2", E: "f2 a2",
  F: "[bb2@16 a2@58 ~@5 c3@3 d2@35 g2@24 eb2@8 ~@5 eb2@3 f2@11 c3@9 eb3@2 ~ c3@2 bb2@2 ab2@2 g2@2 g2@16 ~@8 c3@4 ~ d3@4 eb3@3, ~@179 d3@2 ~@43]/7",
  G: "[~ d3@4 c3@4 ~ b2@4 c3@10 gb2@22 ~@6 d2@19 ~ d2@13 ~@4 d2@2 g2@19 e2@13 ~@5, ~@51 c3@2 ~@75]/4",
  H: "[~ d2@6 ~ d2@3 bb1@3 g1@3 e1@3 d2@3 ~ a1@3 d2@13 bb2@19 a1@38 ~@31, g2 ~@63]/4",
})).s("gm_tuba").gain(0.45)

// chords · church organ · "Pipe Organ"
const church_organ = note("<A@5 ~@17 B@4>".pickRestart({
  A: "[~@9 [g1,g2,bb3,d4,g4]@29 ~ bb4@14 [d1,d2,g4]@15 [a4,b4] c5@14 [a4,bb4] bb4@13 [g4,a4] ~@11 g4@2 gb4@2 [bb3,d4,g4]@15 [bb3,d4,g4]@16 ~@16, ~@38 [bb3,d4]@30 ~@29 [d1,d2]@15 ~ [g1,g2]@31 ~@16, ~@38 [eb1,eb2,g4]@15 ~@15 [c1,c2,c4,eb4]@15 [db1,db2,e4,g4]@15 g4@10 gb4@3 ~@49, ~@39 a4 ~@57 d4@10 ~ c4@5 ~@47, ~@99 a4@11 ~@50]/5", // Gm G5 Asus2 Bbmaj7 Gsus2 Gm Bb D …
  B: "[~@14 [g1,g3,g4]@89 ~@25]/4", // G
})).s("gm_church_organ").gain(0.3)

stack(trumpet, trumpet_2, french_horn, french_horn_2, tuba, tuba_2, bass, bass_2, church_organ)

More by Tomaso Albinoni