Strudelify

Oboe Concerto in D minor Op.9 No.2

Tomaso Albinoni

KeyB♭ majorTempo140 bpm
0:00/0:00
// Oboe Concerto in D minor Op.9 No.2 — Tomaso Albinoni
// 140 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5993893; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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.

// other · trumpet
const trumpet = note("<~@29 A B@2 C ~@6 D@2 E F ~@5 G H I@2 J@5 K L@3 M@2 N O P Q R>".pickRestart({
  A: "eb4@3 g4@2 bb4@3 ab4@3 c5@2 eb5@3", B: "[f5@6 g5@6 ab5@6 ab5@6 ~@4 ab5 a5 bb5 b5]/2", C: "c6 ~@3",
  D: "[~@3 c5 b4 bb4@2 a4@2 ab4@3 g4@2 e4 f4@17]/2", E: "~ g4@2 ab4 bb4 ab4@2 bb4 c5 ~ eb5@5 db5", F: "c5",
  G: "~@3 f4@8 ~@3 gb5@2", H: "f5@3 f5@2 f5 eb5@2 f5@2 ~@2 f4@4", I: "[f5@8 d5@4 c5@3 g4@13 ~@4]/2",
  J: "[~@4 f5@4 d5@4 c5@3 g4@8 ~@3 bb4@2 c5 bb4@2 eb5@9 c5@3 bb4@3 eb4@8 ~@4 eb4@2 f4 eb4@2 c5@11 g4 ab4 bb4 ab4 bb4 ~]/5",
  K: "c5@2 ~@4 c5 ~@8 [g4,a4]", L: "[c5@18 db5@2 c5@2 g4@2 bb4@2 c5@2 e5@2 g4 bb4@13 c4 d4 eb4 ~, bb4 ~@47]/3",
  M: "[g4 ab4 ~ c5 db5 c5@2 eb5 d5 db5 c5 b4 bb4@2 e4 bb4@17]/2", N: "~@2 c4 ~ db4 ~ d4 ~ eb4 f4 gb4 g4 ab4@4",
  O: "g4@12 g5 ab5 g5 f5", P: "g5", Q: "~ g5 ~ g5 ~ g5 ~ g5", R: "c6 ~@7",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note("<~@24 A B A B C D E F G ~@6 H@3 I@3 J@2 K L M N@2 O@3 P@2 Q R S R@2 T U V W X Y>".pickRestart({
  A: "~@3 c3@3 ~@5 db3@3 ~@2", B: "~@3 c3@3 ~@5 bb2@3 db3 ~", C: "e3@3 g3@2 c4@3 ab3@3 db4@2 f4@3",
  D: "eb3@3 g3@2 bb3@3 ab3@3 c4@2 eb4@3", E: "f4@3 f4@3 f4@2", F: "~@12 ab3 a3 bb3 b3", G: "c4 ~@3",
  H: "[~@3 c4 b3 bb3@2 a3@2 ab3@3 g3@2 e3 f3@3 c4@2 db4 c4@2 eb4@2 db4@2 c4 db4@2 c4@10 ~@2 eb4@5 g4]/3",
  I: "[e4@18 f4@2 e4@2 bb3@2 c4@2 e4@2 g4@2 c4 bb3@17]/3", J: "[~@3 e4 f4 e4@2 f4@2 e4@3 c4@2 e4 c4@17]/2",
  K: "~@3 c4 b3 bb3@2 a3@2 ab3@3 g3@2 e3 f3", L: "~@3 f2@8 ~@3 gb3@2", M: "f3@3 f3@2 f3 eb3@2 f3@2 ~@2 f3@4",
  N: "[f4@8 d4@4 c4@3 g3@13 ~@4]/2", O: "[~@4 f4@4 d4@4 c4@3 g3@8 ~@3 bb3@2 c4 bb3@2 eb4@2 ~@15]/3",
  P: "[~@10 eb3@2 f3 eb3@2 ab3@11 g3 ab3 bb3 ab3 bb3 ~]/2", Q: "g3@2 ~@4 g3 ~@9", R: "~@3 c4@3 ~@5 db4@3 ~@2",
  S: "~@3 c4@3 ~@5 e4@3 c4 ~", T: "~@3 c4@2 ~ c4@2 db4@3 db4@2 db4@3", U: "~@2 c4 ~ bb3 ~ ab3 ~ g3 f3 e3 eb3 db3@4",
  V: "c3", W: "g3", X: "~ ab3 ~ ab3 ~ ab3 ~ ab3", Y: "g3 ~@7",
})).s("gm_trombone").gain(0.3)

// chords · piano
const piano = note(`<
  ~@20 A B C D A B C D E F G@2 H ~ A B C D C I J K L C D C M N O P Q R S T U V W X A B C@2 Y Z AA AB ~@2
>`.pickRestart({
  A: "e4 ~ [f4,ab4] ~ [f4,ab4] ~ c5 ~@2 db5@2 eb5 db5@2 c5@2, e3 f3, ~@4 db5@2 ~ [f4,bb4,db5]@2 ~@7", // Fm Bbm
  B: "[e4,ab4] ~ [e4,bb4] ~ [f4,ab4] ~ c5 ~@2 db5@2 db5 [f4,ab4,c5]@2 bb4@2, e3 f3, ~@4 c5@2 ~ [f4,bb4,db5]@2 ~@7", // E Edim Fm Bbm
  C: "e4@3 [f4,ab4] db5@2 c5 ~@2 db5@2 eb5 db5@2 c5@2, e3@7 [f4,bb4,db5]@2 ~@7, ~ f3", // Fm Bbm
  D: "[e4,ab4] ~ bb4 db5 c5@2 c5 ~@2 db5@2 db5 [f4,ab4,c5]@2 bb4@2, e3@7 [f4,bb4,db5]@2 ~@7, ~ f3", // E Fm Bbm
  E: "[c3,c5,eb5,g5,c6] [bb2,bb4,db5,f5,bb5]", F: "[ab2,ab4,c5,f5,ab5] [gb2,gb4,bb4,db5,f5]",
  G: "[[f2,f4,ab4,c5,f5]@6 [e2,e4,g4,bb4,db5,f5]@6 [eb4,f4,ab4]@4 ~@2 [d4,f4,g4,bb4]@6 db4@4 ab4 a4 bb4 b4, ~@6 [eb2,bb4]@3 ~@7]/2", // Fm Gm7b5 Fm7 Gm7 Eb5
  H: "c5 ~@3", I: "[c3,g4,bb4,db5,eb5] ~@15", J: "f2@3 c2@3 eb2@2 f2@3 c2@3 db2@2, [f4,ab4,c5,f5]@15 ~",
  K: "f2@3 c2@3 eb2@2 ~@2 db2@2 ~@2 [db2,d2,eb2,e2] [f2,gb2,g2,ab2,a2,bb2,b2,c3], ~@5 [db4,eb4,g4,db5]@3", // Eb7
  L: "[db3,d3,eb3,e4,ab4] ~ [e4,bb4] ~ [f4,ab4] ~ c5 ~@2 db5@2 db5 [f4,ab4,c5]@2 bb4@2, e3 f3, ~@4 c5@2 ~ [f4,bb4,db5]@2 ~@7", // Dbm Edim Fm Bbm
  M: "[g3,e4]@4 ~@4 [ab3,f4,ab4,c5]@3 [ab3,f4,ab4,c5]@2 [ab3,f4,ab4,c5]@3", N: "[c3,g4,c5,db5,e5] ~@15",
  O: "[f2,f3,f4,ab4,c5,f5]@15 ~", // Fm
  P: "[f2,f4]@3 [f2,f4]@2 [f2,f4] [f2,f4]@2 [f2,gb2] [g2,ab2,a2] [bb2,b2,c3] [db3,d3,eb3] [e3,f3,gb3] [g3,ab3,a3] [bb3,b3,c4] [db4,d4,eb4], ~ f4", // F Gbmaj7
  Q: "[f4,a4,d5,f5] [f4,a4,bb4,d5] [a4,c5,g5] [bb4,d5,gb5], e4 ~@15", R: "[bb3,f4,a4,d5] [db4,f4,ab4,c5]",
  S: "[bb4,db5,f5] [bb4,c5,d5,f5] [g4,bb4,d5,eb5] [eb4,g4,bb4,db5]", // Bbm Bb Ebmaj7 Eb7
  T: "[eb3,eb4,f4,ab4]@8 [eb3,eb4,f4,ab4]@2 ~ [eb3,eb4,f4,ab4]@2 ~@3", // Fm7
  U: "[eb3,db4,f4,ab4]@8 [eb3,db4,f4,ab4]@2 ~ [eb3,db4,f4,ab4]@2 ~@3", // Db
  V: "[eb3,db4,f4,ab4,c5]@2 ~ [eb3,db4,f4,ab4,c5]@2 ~@3 [eb3,bb3,eb4,g4,bb4]@2 ~ [eb3,bb3,eb4,g4,bb4]@2 ~@3", // Dbmaj7 Eb
  W: "[eb3,c4,eb4,g4,db5] [bb3,c4,eb4,g4,bb4]", X: "[g3,g4,c5,e5]@2 ~@4 [g3,g4,c5,e5] ~@7 [g4,c5,f5]@2",
  Y: "~@3 [c3,c4]@2 ~ [c3,c4]@2 [db3,db4]@3 [db3,db4]@2 [db3,db4]@3", // C Db
  Z: "[c3,c4]@2 [c3,c4] ~ [bb2,db4] ~ [ab2,d4] ~ [g2,eb4] [f2,f4] [e2,gb4] [eb2,g4] [db2,ab4]@4", // C Bbm Abdim Cm F Esus2 Eb Db5
  AA: "[c2,g4] ~@2 [c2,g4]@4 ~", AB: "[g2,g4]@15 ~",
})).s("gm_piano").gain(0.3)

// bass · electric bass finger · "Acoustic Bass"
const bass = note(`<
  ~@12 A B A B A B A B A B A B A B A B C D E@2 F ~ A B A B A G H I A B A B J K L M N O P Q R S T U A B A@2 V W X Y Z F
>`.pickRestart({
  A: "c2@3 g1@3 c2@2 db2@3 ab1@3 db2@2", B: "c2@3 g1@3 c2@2 bb1@3 f1@3 bb1@2", C: "c3 bb2", D: "ab2 gb2",
  E: "[f2@6 e2@6 eb2@6 d2@6 db2@4 ab1 a1 bb1 b1]/2", F: "c2 ~@3", G: "c2 ~@2 c3 b2 bb2@2 a2@2 ab2@3 g2@2 e2 f2",
  H: "f2@3 c2@3 eb2@2 f2@3 c2@3 db2@2", I: "f2@3 c2@3 eb2@2 ~@2 db2@2 ~@2 db2@2", J: "c2@2 ~@6 db2@3 db2@2 db2@3",
  K: "c2 ~@7", L: "f1@2 ~ f1 f1@3 f1", M: "f1@3 f1@2 f1 f1@2 f1@2 ~@6", N: "f1 gb1 g1 f1 a1 bb1 c2 b1",
  O: "c2 d2 eb2 e2 f2 eb2 d2 c2", P: "bb1 c2 d2 eb2 f2 g2 ab2 a2", Q: "bb2 ab2 g2 ab2 g2 ab2 g2 f2",
  R: "eb2 g2 bb2 g2 db2 g2 bb2 g2", S: "eb2 d2 db2 bb1 bb2 ab2 g2 f2", T: "eb2 db2 g2 c3 bb2 ab2 g2 bb2",
  U: "g2@2 ~@4 g2 ~@5 db3 ab2 f2 db2", V: "~@3 c2@2 ~ c2@2 db2@3 db2@2 db2@3",
  W: "c2@2 c3 ~ bb2 ~ ab2 ~ g2 f2 e2 eb2 db2@4", X: "c2 ~@2 c2@4 ~", Y: "g2", Z: "db2@7 g1",
})).s("gm_electric_bass_finger").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A@10 B C A@16 D E F G D H A@5 ~ A I A@5 ~ A ~ J ~ K L J ~ M N A@5 O P Q R J
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~", B: "x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2", C: "~@2 x ~@2 x ~ x!2 ~@7", D: "x!2",
  E: "x ~@7 x ~@2 x ~ x ~@2", F: "x ~@2 x ~@2 x ~", G: "~ x ~@2 x ~@3", H: "x ~ x ~ x!4", I: "x!2 ~ x ~@4", J: "x",
  K: "x!2 ~@2", L: "~@11 x ~ x ~@2", M: "~@8 x ~@2 x ~ x ~@2", N: "x ~@2 x!2 ~ x ~", O: "~ x!3 ~@2 x ~", P: "~@3 x ~@4",
  Q: "x ~@2 x ~@4", R: "x!4",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct(`<
  A@2 B C B D B E F A G H I J K L I J K L I J K L I J K L ~@2 M N O P I J K L@2 Q I R I L I L I S I T ~@7 U I J K L ~ V
  W X Y Q
>`.pickRestart({
  A: "~@7 x ~@4 x ~@2 x", B: "~@7 x ~@4 x ~@3", C: "~ x ~@5 x ~@4 x ~@2 x", D: "~@7 x ~ x ~@2 x ~@2 x",
  E: "~ x ~@9 x!2 ~@3", F: "~@8 x!4 ~ x ~ x", G: "~ x ~@5 x ~@5 x ~@2", H: "~@3 x!2 ~ x ~ x ~@7", I: "~@7 x ~@8",
  J: "~@12 x ~@2 x", K: "~@3 x", L: "~@15 x", M: "~@4 x!2 ~@4 x!2 ~@4", N: "~@6 x!2 ~@4 x!4",
  O: "x ~@2 x!2 ~ x ~ x!2 ~ x!2 ~ x ~", P: "~@4 x!5 ~@2 x!2 ~ x!2", Q: "x", R: "~@3 x!3 ~@2", S: "x ~@7 x!2 ~@6",
  T: "x ~@2 x ~ x!2 ~@9", U: "x ~@2 x!2 ~ x ~ x!2 ~ x!2 ~@3", V: "x ~@7 x!4 ~@4", W: "x ~@2 x!2 ~@4 x ~ x!5",
  X: "x ~@9 x!6", Y: "~ x ~ x ~ x ~ x",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@11
  [~ x]
  ~@38
  [~ x ~ x ~ x ~ x]!3
  [~ x ~ x ~@4]
  [~ x ~ x ~ x ~ x]!2
  [~ x ~ x ~@4]
  ~@11
>`).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 A ~@25 B ~@5 C ~ D ~@5 E ~@9 D ~@4 D ~@2 F ~@2>".pickRestart({
  A: "~@8 x!2 ~@4 x!2", B: "~ x ~@6", C: "~@8 x!2 ~ x!2 ~ x ~", D: "~@14 x!2", E: "~@6 x!2", F: "~ x ~@2",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@28 [~@13 x ~@2] [~@5 x ~@5 x ~@4] ~@38>").gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  A ~@7 A ~@3 A ~@7 A ~@3 A ~@3 B C D E ~@2 A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ F ~ A ~@3 A ~@4 G H I J A
>`.pickRestart({
  A: "x", B: "x ~@2 x ~ x ~@2 x ~@2 x ~@4", C: "x ~@2 x ~@4 x ~@4 x ~@2", D: "x ~@2 x ~@2 x ~", E: "~ x ~@2 x ~@3",
  F: "~ x ~@2", G: "~ x!3 ~@2 x ~", H: "~@3 x ~@4", I: "x ~@2 x ~@4", J: "~ x ~ x ~ x ~ x",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@2 A ~ A B C D ~@25 E ~@13 F ~ G ~@12 H ~@2 I ~@2>".pickRestart({
  A: "~ x!2 ~@13", B: "~ x!4 ~ x ~@9", C: "~ x!4 ~@11", D: "~@5 x!2 ~@9", E: "x!2 ~@14", F: "~@11 x ~@4",
  G: "~@8 x!2 ~ x!2 ~@3", H: "~@12 x!2 ~@2", I: "~@3 x ~@12",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct(`<
  A@5 B@2 C D A E F A@16 ~@6 G A@4 ~ G H G A G A G ~ G ~ I@2 J I K I@2 ~ G A@3 L ~@5
>`.pickRestart({
  A: "x!4", B: "x ~ x!2", C: "x ~@2 x ~@12", D: "x ~ x!2 ~@2 x ~", E: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  F: "~@2 x ~@4 x ~@4 x ~@3", G: "~ x!3", H: "x!2 ~@2", I: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
  J: "x ~ x!2 ~@2 x!3 ~ x!3 ~ x!2", K: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", L: "x!3 ~",
})).gain(0.3)

stack(trumpet, trombone, piano, bass, kick, snare, hihat, mid_tom, open_hat, crash, high_tom, ride)

More by Tomaso Albinoni