Strudelify

Voices

3racha

KeyG♭ majorTempo120 bpm
0:00/0:00
// Voices — 3racha
// 120 bpm, 4/4, key Gb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5847158; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · cello · "Viola"
const cello = note(`<
  A B A C D E F G H I J@2 K L M N O P Q R S T U V W X Y@2 Z@2 AA@2 AB AC AD AE AB AF AG AH AI AJ AK AL AM AN AO AP@2 AQ
  AR AS@2 AT AU AV AW AX AY AZ BA BB BC BD BE W X Y@2 Z@2 BF@2 BG AB AC AD AE AB AF AG AH AI AJ AK AL AM AN AO BH BI@8
  BB BC BD BJ BB BC BD BJ BK BL BK BL BM BN BM BN BO BP BM@2 BQ BO BP BK@2 BR
>`.pickRestart({
  A: "~@2 bb4@3 gb4@3, bb3", B: "~@2 bb4@3 db5@3, gb3", C: "f4@7 gb4, f3", D: "~@2 bb4@3 [gb3,gb4]@3, eb3@5 ~@3",
  E: "~@4 f3 [b2,db5]@3, gb3 ~, ~@2 bb4@3 ~@3", F: "~@4 gb3 [bb3,gb4]@3, db4 ~, ~@2 bb4@3 ~@3", G: "[f3,f4]",
  H: "eb3 gb3 ~ gb4@2 ab4 bb4 ~, ~ bb3@2 ~", I: "b2 eb3 ~ bb4!3 gb4!2, ~ gb3@2 ~",
  J: "[gb3 bb3 ~ gb4 gb4@2 ab4 ~ db3 [f3,f4] f4 db4 f4 gb4 db4@2, ~@2 db4@4 ~ f4@2 ~ ab3@4 ~@2]/2", // F
  K: "eb3 [gb3,gb4] [bb3,gb4] gb4 bb4 ab4 gb4!2, ~@3 eb4@4 ~", // Gb Ebm
  L: "b2 [eb3,gb4] [gb3,gb4] gb4 bb4 ab4 gb4!2, ~@3 b3@4 ~", M: "gb3 [bb3,gb4] [db4,gb4] ~ bb4@2 bb4!2, ~@3 gb4@4 ~",
  N: "db3 f3 ab3 ~@3 f4!2, ab4@3 ~, ~@3 db4@4 ~", O: "bb4@3 b4@2 ~@3 gb4@4 bb3@4, eb3@5 ab4@3 ~@8, ~@3 gb3@3 ~@2",
  P: "f4@4 eb4@2 ~ f4@5 [gb3,eb4]@4, b2@3 eb3@3 ~@2", Q: "db5@3 b4@2 ~@3 bb4@4 db4@4, db4@5 bb4@3 ~@8, ~@3 db4@3 ~@2",
  R: "f4@4 eb4@2 ~ f4@5 [ab3,eb4]@4, ab3@3 ab3@3 ~@2", // Ab5
  S: "bb4@3 bb4@2 ~@3 bb4@3 ~@2 bb4@3, gb3@5 bb4@3 ~@3 bb4@2 ~@3, ~@3 bb3@3 eb3@2",
  T: "b4@3 b4@2 ~@3 b4@3 ~@2 b4@3, b2@5 b4@3 ~@3 b4@2 ~@3, ~@3 b2@3 b2@2",
  U: "db5@3 db5@2 ~@3 db5@3 ~@2 db5@3, db4@5 db5@3 ~@3 db5@2 ~@3, ~@3 bb3@3 gb3@2",
  V: "f4@3 f4@2 ~@3 ab4@4 gb4@2 gb4@2, db3@5 f4@3 ~@8, ~@3 db3@3 db3@2",
  W: "[eb3,ab4] [gb3,bb4] [bb3,ab4] eb3 gb3 [bb3,gb4] [eb3,gb4] [gb3,gb4], ~@3 bb4@2 ~@3", // Ab5 Gb Bb7 Ebm Gb
  X: "[b2,ab4] [eb3,bb4] [gb3,ab4] b2 eb3 [gb3,gb4] [b2,gb4] [eb3,gb4], ~@3 bb4@2 ~@3", // E Eb5 Gbsus2 Gb B5 Ebm
  Y: "[gb3 bb3 [db4,db5] gb3 bb3 db4 gb3 bb3 db3 [f3,bb4] ab3 db3 f3 ab3 db3 f3, db5@2 ~ db5@2 bb4@2 ab4@2 ~@7]/2", // Db Bb5
  Z: "[eb3 gb3 bb3 eb3 [gb3,bb4] [bb3,b4] [eb3,db5] gb3 b2 eb3 gb3 b2 eb3 [gb3,ab4] b2 eb3, ~@2 bb4@2 ~@3 db5@2 gb4@2 gb4@2 ~ bb4@2]/2", // Gb Bmaj7 Eb7 Gbsus2
  AA: "[gb3 bb3 [db4,gb4] gb3 bb3 [db4,ab4] gb3 bb3 db3 f3 ab3 db3 [f3,bb4] [ab3,ab4] db3 f3, gb4@2 ~ gb4@2 ~ ab4@4 gb4@2 ~@2 gb4@2]/2", // Gb5 Db5 Bb5 Ab
  AB: "[gb3,ab4]@3 [bb3,bb4]@3 eb3@2", AC: "~@4 f4 gb4 f4 gb4, b2@3 b2@3 b2@2, ~ gb4 ~@2",
  AD: "db4!2 gb4!2 ~@3 f4, ~@3 bb3@3 gb3@2, ~@5 ab4@2 ~", AE: "f4 ~@3 gb4 db4 [db3,gb4]@2, db3@3 db3@3 ~@2, ~ gb4 ~@2",
  AF: "b2@3 ~ gb4@2 gb4 f4, ~@3 b2@3 b2@2", AG: "gb4@2 gb4 gb4@2 ~@2 ab4, db4@3 bb3@3 gb3@2, ~@5 ab4@2 ~",
  AH: "ab4!2 bb4 ab4 bb4 ab4 db3@2, db3@3 db3@3 bb4 ~", AI: "[gb3,db5]@3 [bb3,b4]@3 [eb3,bb4]@2",
  AJ: "bb4@2 db4!2 db4@2 [b2,db4]@2, b2@3 b2@3 ~@2", AK: "db5@3 ~ bb3@2 [db3,f4]@2, db4 ~, ~@3 b4@3 ~@2",
  AL: "f4 db4!3 db4@2 db4@2, ab3 gb3", AM: "db5@3 ~ gb3@2 [f3,bb4]@2, bb3 ~, ~@3 b4@3 ~@2",
  AN: "bb4 db4!5 gb4@2, gb3 eb3", AO: "~ db4 gb4 db4 gb4 db4 gb4 ab4, gb3 bb3",
  AP: "[f4!3 db4 f4@2 gb4@6 eb3@2 gb3@2, db3 f3 ~@2]/2", AQ: "gb4@2 ~ db4 [gb3,gb4] gb4!2 ab4, eb3@4 ~ eb4@3",
  AR: "gb4!4 [b2,gb4] db4!2 ~, eb3@4 ~ b3@3", // B5
  AS: "[~@3 db4 [db4,gb4] gb4!2 ~@2 f4@2 db4 [db3,f4] ab4 f4@2, gb3@4 ~@3 f4@2 ~@4 db4@3, ~@2 f3 ~]/2", // Gb5 Db
  AT: "~@3 db4 [bb3,gb4] gb4!2 db4, eb3@4 ~ eb4@3", AU: "gb4!4 [b2,gb4] gb4 gb4@2, eb3@4 ~ b3@3",
  AV: "gb4@2 gb4!2 [db4,gb4] gb4!3, gb3 ~", AW: "f4!4 [db3,f4] f4!3, f3@4 ~ db4@3",
  AX: "bb4@3 b4@2 ~@3 gb4@4 eb3@4, eb3@5 ab4@3 ~@8, ~@3 eb4@3 ~@2", AY: "f4@4 eb4@2 ~ f4@5 [b2,eb4]@4, b2@3 b3@3 ~@2",
  AZ: "db5@3 b4@2 ~@3 bb4@4 gb3@4, gb3@5 bb4@3 ~@8, ~@3 gb4@3 ~@2",
  BA: "f4@4 eb4@2 ~ f4@5 [db3,eb4]@4, db3@3 db4@3 ~@2", // Dbsus2
  BB: "bb4@3 bb4@2 ~@3 bb4@3 ~@2 bb4@3, eb3@5 bb4@3 ~@3 bb4@2 ~@3, ~@3 eb4@3 eb3@2",
  BC: "b4@3 b4@2 ~@3 b4@3 ~@2 b4@3, b2@5 b4@3 ~@3 b4@2 ~@3, ~@3 b3@3 b2@2",
  BD: "db5@3 db5@2 ~@3 db5@3 ~@2 db5@3, gb3@5 db5@3 ~@3 db5@2 ~@3, ~@3 gb4@3 gb3@2",
  BE: "f4@3 f4@2 ~@3 ab4@4 gb4@2 gb4@2, db3@5 f4@3 ~@8, ~@3 db4@3 db3@2",
  BF: "[gb3 bb3 [db4,gb4] gb3 bb3 [db4,ab4] gb3 bb3 db3 f3 ab3 db3 f3 ab3 db3 f3, gb4@2 ~ gb4@2 ~ ab4@10]/2", // Gb5 Db5
  BG: "~@2 gb4@2 bb4 ab4 gb4@2", BH: "f4!3 db4 f4@2 gb4@2, db3 f3",
  BI: "[eb3 gb3 bb3 ~ db5@2 bb4 ~ b2 eb3 gb3 ~ db5@2 bb4 ~ gb3 bb3 db4 ~ db5 db5@2 ~ db3 [f3,ab4] [ab3,ab4] gb4 ab4 gb4 b4 bb4, ~@3 eb4@4 bb4@5 ~@3 bb4@5 ~@3 eb5@2 ~@7, ~@11 b3@4 ~@4 gb4@4 ~@4 db4@4 ~]/4", // Fm Ab
  BJ: "f4@3 f4@2 ~@3 f4@3 ~@2 f4@3, db3@5 f4@3 ~@3 f4@2 ~@3, ~@3 db4@3 db3@2", BK: "gb4@2 bb4!6, ~ eb3!3",
  BL: "bb4!8, b2!4", BM: "gb4@2 bb4!6, ~ gb3!3", BN: "bb4!8, db3!4", BO: "ab4@3 bb4@5", BP: "b2!4",
  BQ: "ab4!2 [db3,gb4]@2 gb4 eb4 [db3,gb4]@2, db3 ~ db3 ~", BR: "f4!4 [db3,f4] [gb2,bb3] [b2,eb4]@2, db3!2 ~@2",
})).s("gm_cello").gain(0.35)

stack(cello)