Strudelify

The Wrong Band

Tori Amos

KeyB♭ minorTempo180 bpm
0:00/0:00
// The Wrong Band — Amos, Tori
// 180 bpm, 3/4, key Bb minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 177 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/3)

// 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 · "Bösendorfer"
const piano = note(`<
  A B C D E F G H A I J K E F G H A L M N O P Q R S T@2 U V W@2 X A Y C D E F G Z A I AA K E F G H A L M N O AB Q R S
  T@2 U V W@2 AC AD AE@3 AF AG AH AI@2 AJ AK@2 AL AM@2 AN AO AP AQ AR AO AP AQ AR AS AT@2 AU AV AW@2 AX AY AZ@2 BA A B C
  D E F G H A I J K E F G H A L M N O P Q R S T@2 U V W@3 AD AE@3 AF AG AH AI@2 AJ AK@2 AL AM@2 AN AO AP AQ AR AO AP AQ
  AR AS AT@2 AU BB BC BD BE BF BC BD BE BG BH BD BE BI BJ BI BK@2
>`.pickRestart({
  A: "[ab1,ab2]@5 [bb1,bb2]@3 ~@3 [c2,c3]@3 ~@2", B: "[db2,db3,f4]@5 f4@4 ~@2 f4@5",
  C: "[ab2,f4]@5 eb4@3 ~@3 ab2@5, ~@8 db4@5 ~@3", D: "[db2,db3]@5 [f3,db4]@5 ~@3 ab3@3, f4@11 ~@5",
  E: "[db2,db3,db4,f4]@3 ~@2 [ab2,c4,eb4]@3 ~@3 [db2,db3,bb3,db4]@3 ~@2", F: "[bb1,bb2,eb4]@5 bb3@5 ~ [bb1,bb2]@5",
  G: "f2@5 [ab3,c4]@3 ~@3 f2@5, f4@11 ~@5", H: "[bb1,bb2]@5 [f3,db4]@3 ~@3 [bb1,bb2]@5, bb3@11 ~@5",
  I: "[db2,db3,f4]@5 [f3,db4]@3 ~@3 ab4@5, ~@5 f4@5 ~@6", J: "[ab2,f4]@5 eb4@5 ~ [ab2,db4]@5",
  K: "[db2,db3]@5 [f3,db4]@3 ~@5 ab3@3, f4@11 ~@5", L: "[bb1,bb2,bb3]@4 ~ d4@6 f4@4 ~, ~@5 f4@4 ~@7",
  M: "[bb1,bb2,d4,f4]@4 ~ [c4,eb4]@4 ~@2 [bb1,bb2,bb3,d4]@4 ~", N: "[ab3,c4,f4]@7 ~@6 c4@2 ~, f2 ~@3",
  O: "[f2,c4,ab4,c5]@4 ~ bb4@4 ~@2 [f2,ab4]@4 ~", P: "[eb2,db4,g4,bb4]@4 ~ g3@4 ~@2 bb3@4 ~, ~@5 g4@2 ~@9",
  Q: "eb2@4 ~ g3@4 ~@2 bb3@4 ~", R: "[f2,eb4]@4 ~ [f3,eb4]@4 ~@2 [ab3,f4]@4 ~",
  S: "[db2,f4]@4 ~ [f3,eb4]@5 ~@3 db4@2 ~, ~@11 ab3@4 ~", T: "eb2@4 ~ g3@4 ~@2 bb3@4 ~, [bb3,eb4]@11 ~@5",
  U: "[eb2,eb4,bb4]@4 ~ [g3,c5]@4 ~@2 [bb3,ab4]@4 ~", V: "[eb2,eb4,bb4]@4 ~ g3@3 ~@3 bb3@4 ~, ~@5 ab4@2 ~ g4@5 ~@3",
  W: "[eb2,eb4]@4 ~ [g3,g4]@4 ~@2 [bb3,ab4]@4 ~, bb4@7 ~@9", X: "[eb2,eb4,g4,bb4]@11 ~@5",
  Y: "[db2,db3,f4]@5 f4@5 ~ f4@5", Z: "[bb1,bb2]@5 [f3,db4]@2 ~@4 [bb1,bb2]@4 ~, bb3@11 ~@5",
  AA: "[ab2,f4]@5 eb4@2 ~ db4@3 ab2@5", AB: "[eb2,db4,g4,bb4]@4 ~ [g3,g4]@4 ~@2 [bb3,f4]@4 ~",
  AC: "[eb2,eb4]@4 ~ [g3,g4]@4 ~@2 [bb3,ab4]@4 ~, bb4@11 ~@5", // Eb G Bb7
  AD: "[eb2,eb4]@4 ~ [eb3,g4]@4 ~@2 [f3,ab4]@4 ~, c5@11 ~@5", // Eb Fm
  AE: "[~@11 c4@4 ~ db4@4 ~ c4@4 ~@12 c4@4 ~@2 db4@4 ~, [gb3,gb4,bb4]@11 ~@5 [ab3,gb4,bb4]@11 db4@11 ~@10, ~@5 db5@14 ~@13 [gb4,bb4,db5]@14 ~@2, ~@32 bb3@11 ~@5]/3", // Gb Ebm Gb
  AF: "[gb4,bb4,db5]@4 ~ c5@5 ~@3 bb4@2 ~, [gb3,db4]@11 ~@5", AG: "[bb4,db5]@5 bb4@7 ~@4, [f3,db4,f4]@11 ~@5",
  AH: "~@5 bb4@2 ~ db5@5 ~@3, [f3,db4]@11 ~@5", // Db
  AI: "[gb3@11 ~@8 bb4@2 c5@7 ~@4, [db4,gb4,c5]@21 ~@11, bb4@19 ~@13, ~@16 f3@11 ~@5]/2", // Gb
  AJ: "[gb3,gb4,bb4]@11 c4@4 ~, db4@7 ~@9", // Gb
  AK: "[db4@4 ~ c4@4 ~@12 c4@4 ~@2 db4@4 ~, [ab3,gb4,bb4]@11 db4@7 ~@14, ~@16 [bb3,gb4,bb4]@11 ~@5]/2", // Ebm
  AL: "db5@4 ~ c5@5 ~@3 bb4@2 ~, [gb3,db4,gb4]@11 ~@5", AM: "[db5@4 ~ bb4@21 ~@6, [f3,db4,f4]@11 ~@21]/2",
  AN: "[gb3,gb4]@11 ~@5", AO: "[bb4,db5]@4 ~ [ab4,c5]@2 ~ [gb4,bb4]@5 ~@3", AP: "ab4@4 ~ f4@6 [ab3,db5]@4 ~, ab3@7 ~@9",
  AQ: "[eb4,c5]@4 ~ [f4,db5]@4 ~@2 [ab3,gb4,eb5]@4 eb5, ab3@7 ~@9", // Cm Db Ab7
  AR: "db5@4 ~ c5@4 ~@2 bb4@2 db4@2 ~, bb3@7 ~@4 bb3@4 ~", AS: "[bb4,db5]@4 ~ [ab4,c5]@2 ~ bb4@5 ~@3, gb3@11 ~@5",
  AT: "[f4@4 ~ eb4@4 ~@2 db4@4 ~ eb4@7 ~@4 db4@2 c4@2 ~, ab3@21 ~@11, ab4@11 ~@16 gb4@4 ~]/2",
  AU: "f3@4 ~ gb3@4 ~@2 f3@4 ~, [db4,f4]@11 ~@5", AV: "bb2@11 ~@5",
  AW: "bb3@4 ~ g3@4 ~@2 [eb2,bb2,ab3]@4 ~, [eb2,bb2,eb4]@7 ~@9", // Ebsus4 Eb5
  AX: "[eb4,bb4]@4 ~ c5@4 ~@2 [eb2,bb2,ab4]@4 ~, [eb2,bb2]@7 ~@9", // Eb5 Ebsus4 Eb5
  AY: "[eb4,bb4]@4 ~ ab4@2 ~@4 [eb2,bb2]@4 ~, [eb2,bb2]@7 ~ g4@5 ~@3", AZ: "[eb2,bb2,eb4,bb4]@7 ~@4 [eb2,bb2]@4 ~",
  BA: "[eb2,bb2,eb4,g4,bb4]@7 ~@9", BB: "[eb3,eb4]@4 ~ [bb2,f4]@4 ~@2 [c3,gb4]@4 ~, db4@11 ~@5",
  BC: "ab4@4 ~ db4@4 ~@2 [db3,f4,ab4]@4 ~, db3@7 ~@9", BD: "bb4@4 ~ gb4@2 ~ gb4@5 ~@3, [gb2,db4]@11 ~@5",
  BE: "~@5 bb3@4 ~@2 [bb2,db4]@4 ~, [bb2,f4]@7 ~@9", BF: "[gb2,gb4]@4 ~ [bb2,ab4]@2 ~ [c3,bb4]@5 ~@3, bb3@11 ~@5",
  BG: "gb4@4 ~ ab4@2 ~ bb4@5 ~@3, [gb2,bb3]@11 ~@5", BH: "~@5 db4@4 ~@2 [ab2,f4]@4 ~, [ab2,ab4]@7 ~@9",
  BI: "gb4@4 ~ gb4@2 ~ gb4@5 ~@3, gb2@11 ~@5", BJ: "f4@4 ~ db4@4 ~@7, [ab2,ab3]@11 ~@5",
  BK: "[f4@4 ~ db4@21 ~@6, [db2,f3]@21 ~@11]/2", // Db
})).s("gm_piano").gain(0.41)

stack(piano)

More by Tori Amos