Strudelify
The Wrong Band cover art

Under the Pink

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

stack(piano)

More by Tori Amos