Strudelify

Duo pour Deux Violoncelles Op. 49

Jacques Offenbach OP. 49

KeyG majorTempo144 bpm
0:00/0:00
// Duo pour Deux Violoncelles Op. 49 — Jacques Offenbach OP. 49
// 144 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6411369; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(144/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · cello · "Violoncello 1"
const cello = note(`<
  A B C D E F G H I J K L M N O P Q R S T S U V W X Y Z AA Z AB AC AD AE AF AG AH AI AJ AG AH AI AK AL AM AN A B C D E F
  G H I J K L M N O P Q R S T S U V W X Y Z AA Z AB AC AD AE AF AG AH AI AJ AG AH AI AK AL AM AN AO AP AQ AR AS AT AU AV
  AW AX AY AZ BA BB BA BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV@4 BW@4 BX BY BZ CA@4 CB@2 CC
>`.pickRestart({
  A: "g3@5 a3@3 c4@5 b3@3", B: "b3@3 a3@2 g#3@3 a3@8", C: "a3@5 b3@3 d4@5 c4@3", D: "c4@3 b3@2 a3@3 b3@8",
  E: "b3@5 a#3@3 a3@3 d4@2 b3 ~@2", F: "a3@5 g3 ~ e3 d3@3 c3@2 a2 ~@2", G: "g2@5 ~@3 f#3@5 g3@3",
  H: "d3@8 d3@3 a2@2 f#2@3", I: "d2@5 ~@3 f#3@8", J: "f#3@8 g3@3 g3@2 f#3@3", K: "e3@3 b2@2 g2@3 e2@8",
  L: "b2@11 b2@2 a2@3", M: "g2 e2", N: "b2 f#3", O: "e3@5 f#3@3 g3@5 a3@3", P: "b3@5 a#3@3 b3@5 a#3@3",
  Q: "a3@3 d4@5 b3@3 g3@2 e3@3", R: "f#3 e3", S: "d3@11 f#3@2 d3@3", T: "c#3@5 b2@3 a2@8", U: "c#3@5 b2@3 a2@5 e3@3",
  V: "f#3 g#3", W: "a3 b3", X: "c#4@3 d4@2 b3@3 a3@5 g#3@3", Y: "a3", Z: "a#2@5 a2@3 g2@8",
  AA: "c#2 ~@2 c#2@2 d2@3 e2 ~@2 g2@2 a2@3", AB: "c#2 ~@2 c#2@2 d2@3 e2 ~@2 a2@2 g2@3", AC: "f#2@5 ~@11",
  AD: "g2@5 b2@3 d3@5 ~@3", AE: "d3@11 d4@2 c#4@3", AF: "c#4@5 b3@3 a3@8", AG: "g3@11 a3@2 b3@3",
  AH: "f#3@11 g3@2 a3@3", AI: "e3 a3", AJ: "g3 f#3", AK: "d3@5 ~@3 a2@5 ~@3", AL: "d3@5 f#3@3 a3@3 g3@2 e3@3",
  AM: "d3!2", AN: "d3@5 ~@11", AO: "b2@3 d3@2 d3 ~@2 d3@3 ~@5", AP: "a#2@3 f#3@2 f#3 ~@2 f#3@3 ~@5",
  AQ: "a#2@3 e3@2 e3@3 e3@5 ~@3", AR: "b2@3 f#3@2 d3@3 b2@8", AS: "b3@8 a3@5 g3@3", AT: "g3@8 f#3@5 e3@3",
  AU: "d3@5 e3@3 d3@5 c#3@3", AV: "c#3 b2", AW: "f#3 b3", AX: "b3@5 a#3@3 c#4@8", AY: "f#3 c#4", AZ: "c#4@5 b3@3 d4@8",
  BA: "d4@8 d4@3 c#4@2 b3@3", BB: "a3@8 a3@3 b3@2 c#4@3", BC: "a3@5 ~@3 e2@5 g#2@3", BD: "a2@5 ~@3 c#2@8",
  BE: "d2@5 ~@3 d3@8", BF: "e3!2", BG: "a2@5 ~@3 c#4@5 b3@3", BH: "a3@5 ~@3 a3@5 g#3@3", BI: "f#3@5 ~@3 d4@5 b3@3",
  BJ: "f#3@8 c#4@5 b3@3", BK: "a3@5 ~@11", BL: "d3@11 f#3@2 e3@3", BM: "d3@5 c#3@3 d3@8", BN: "f#3@11 a3@2 g3@3",
  BO: "f#3@5 f3@3 f#3@5 ~@3", BP: "f#3@5 g3@3 b3@5 a3@3", BQ: "a3@5 b3@3 d4@5 c#4@3", BR: "c4",
  BS: "~@4 g3@5 a3@3 c4@4", BT: "~ b3@3 b3@3 a3@2 g#3@3 a3@4", BU: "~@4 a3@5 b3@3 d4@4",
  BV: "[~ c4@3 c4@3 b3@2 a3@3 b3@8 b3@5 a#3@3 a3@3 d4@2 b3 ~@2 a3@5 g3 ~ e3 d3@3 c3@2 a2@3 g2@5 ~@3 f#3@4]/4",
  BW: "[~ g3@3 d3@8 d3@3 a2@2 f#2@3 d2@5 ~@3 f#3@8 f#3@8 g3@3 d3@2 b2@3 a2@3 e3@2 c3@3 a2@4]/4",
  BX: "~@4 d2@3 b2@2 g2@3 d2@4", BY: "~@4 d2@3 c3@2 a2@3 d2@4", BZ: "~ [g2,d3]@3",
  CA: "[~@4 a3@8 a3@3 b3@2 c4@3 g3@8 g3@3 a3@2 b3@3 f#3@8 f#3@3 e3@2 f#3@3 g3@5 ~@3 [d2,c3]@4]/4", // D7
  CB: "[~@4 [d2,b2]@3 ~@2 b3@3 d4@3 c4@2 a3@3 g3@5 ~@3 [d3,b3]@4]/2", CC: "~@4 [d3,b3]@5 ~@7",
})).s("gm_cello").gain(0.2).pan(0.6)

stack(cello)