Strudelify

fluff

Tony Iommi

KeyD majorTempo120 bpm
0:00/0:00
// fluff — Tony Iommi
// 120 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4489631; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 175 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · piano
const piano = note(`<
  A B A B C D C D E B A F G D C D E B A F G D C H I J K L M N O P I J Q R S N O N E B A F G D C D E B A F G D C T I J K
  L M N O P I J Q R S N O N U V W X Y Z AA J U V W X Y Z AA J AB AC W AD AE AF AG AH AI AJ AK B AL AM AN AO AP AQ N@2 E
  B A F G D C D E B A F G D C H I J K L M N O P I J Q R S N O N E B A F G D C D E B A F G D C H I J K L M N O P I J Q R
  S N O N AR AS@2
>`.pickRestart({
  A: "d3@5 a3@5 ~ d4@5", B: "f#4@5 d4@5 ~ a3@5", C: "d3@5 g3@5 ~ b3@5", D: "f#4@5 b3@5 ~ g3@5",
  E: "f#5@3 g5@2 a3@5 ~ d4@5, d3@5 a5@10 ~", F: "f#4@5 ~@3 a5@3 [a3,b5]@5, ~@5 d4@5 ~@6",
  G: "d3@5 g3@5 ~ b3@5, e5@5 ~@3", H: "f#4@5 d4@5 ~ a5@2 g#5@3, ~@11 g4@5", I: "e3@5 g3@5 ~ b3@5, g5@5 ~@3",
  J: "g4@5 b3@5 ~ g3@5", K: "e3@5 g3@5 ~ b3@5, a5@5 ~@3", L: "g4@5 b3@5 ~ g3@5, b5@5 ~@3",
  M: "e3@5 a3@5 ~ c#4@5, a5@5 ~@3", N: "g4@5 c#4@5 ~ a3@5", O: "e3@5 a3@5 ~ c#4@5",
  P: "g4@5 c#4@5 ~ a5@2 g#5@3, ~@11 a3@5", Q: "e3@5 g3@5 ~ b3@5, f#5@5 ~@3", R: "g4@5 b3@5 ~ g3@5, d5@5 ~@3",
  S: "[e3,d5]@5 a3@5 ~ c#4@5, ~@5 e5@10 ~", T: "f#4@5 b3@5 ~ a5@2 g#5@3, ~@11 g3@5", U: "g3@5 b3@5 ~ d4@5",
  V: "[g4,g5]@5 [d4,a5]@5 ~ [b3,b5]@5", W: "f#3@5 b3@5 ~ d4@5, d6@5 ~@3", X: "f#4@5 [d4,e6]@5 ~ [b3,g6]@5",
  Y: "e6@3 ~@2 g3@5 ~ b3@5, e3@5 ~@11, ~@3 d6@10 ~@3", Z: "g4@5 b3@5 ~ [g3,b5]@5",
  AA: "b5@3 ~@2 b3@5 ~ e3@5, f#4@5 ~@11, ~@3 d6@10 ~@3", AB: "a2@5 e3@5 ~ a3@5", AC: "[c4,c6]@5 [a3,b5]@5 ~ [e3,c6]@5",
  AD: "f#4@5 d4@5 ~ b3@5", AE: "e3@5 g3@5 ~ [b3,b5]@5", AF: "[e4,b5]@5 [b3,a5]@5 ~ [g3,g5]@5",
  AG: "e3@5 g3@5 ~ b3@5, b5@5 ~@3", AH: "e4@5 b3@5 ~ g3@5", AI: "c3@5 e3@5 ~ c4@5, c6@5 ~@3",
  AJ: "c4@5 [g3,b5]@5 ~ [e3,c6]@5", AK: "d3@5 a3@5 ~ d4@5, d6@5 ~@3", AL: "f#3@5 b3@5 ~ [d4,c#6]@5",
  AM: "[f#4,c#6]@5 d4@5 ~ [b3,b5]@5", AN: "[f#3,b5]@5 [b3,a5]@5 ~ c#4@5",
  AO: "f#4@5 a5@3 b5@3 [b3,d6]@5, ~@5 c#4@5 ~@6", AP: "[b2,b5]@5 [e3,a5]@5 ~ a3@5", AQ: "c#4@5 a3@5 ~ e3@5",
  AR: "~@2 d4@9 ~@5, a2@11 ~@5, ~ [d3,a3]@10 ~@5", // D5
  AS: "[g5@3 f#5@2 ~@13 d4@9 ~@5, ~@5 d5@20 ~@7, ~@16 a2@11 ~@5, ~@17 [d3,a3]@10 ~@5]/2", // D5
})).s("gm_piano").gain(0.2)

// other · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  ~@24 A@4 B@4 A@4 B@4 ~ C D ~@6 C D ~@5 A@4 B@4 A@4 B@4 ~ E F G H I J ~@2 E F G H I J ~@2 K F ~ I L M ~ N O F ~ P Q R S
  R ~@4 C D ~@6 C D ~@5 A@4 B@4 A@4 B@4 ~ C D ~@6 C D ~@5 A@4 B@4 A@4 B@4 ~@3
>`.pickRestart({
  A: "g3@3 d4@2 b3@3 e4@3 b3@2 d4@3", B: "a2@3 a3@2 e4@3 b3@3 e4@2 b3@3", C: "~@8 a2@3 b3@2 [b3,e4]@3",
  D: "[a3,d4]@11 ~@5", E: "g4@5 a4@5 ~ b4@5", F: "d5@11 ~@5", G: "~@5 e5@5 ~ g5@5", H: "e5@3 d5@11 ~@2", I: "~@11 b4@5",
  J: "b4@3 d5@11 ~@2", K: "c5@5 b4@5 ~ c5@5", L: "b4@5 a4@5 ~ g4@5", M: "b4@11 ~@5", N: "c5@11 ~@5",
  O: "~@5 b4@5 ~ c5@5", P: "~@11 c#5@5", Q: "c#5@5 ~@6 b4@5", R: "b4@5 a4@5 ~@6", S: "~@5 a4@3 b4@3 d5@5",
})).s("gm_acoustic_guitar_steel").gain(0.3)

// other · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  ~@45 A B ~@2 C D ~@2 E B ~@6 F G ~@15 H I ~@6 H I ~@11 J K ~@3 L M N ~@6 A B ~@2 C D ~@2 O P ~@6 F G ~@14 Q P ~@2 R S
  ~@2 E B ~@20
>`.pickRestart({
  A: "e4@3 f#4@3 ~@2 a4@3 f#4@3 ~@2", B: "f#4@3 e4@11 ~@2", C: "b4@3 a4@5 ~@5 a4@3", D: "b4@3 a4@11 ~@2",
  E: "f#4@5 a4@5 ~ b4@5", F: "f#4@5 f#4@5 ~ f#4@5", G: "f#4@11 ~@5", H: "~@3 f#4@11 ~@2", I: "g4@11 ~@5",
  J: "~@5 e4@3 f#4@3 d4@5", K: "e4@11 ~@5", L: "~@11 a4@5", M: "a4@5 a4@11", N: "a4@3 b4@5 a4@3 g4@5",
  O: "b4@5 a4@5 ~ f#4@5", P: "[f#4,a4]@3 [e4,g4]@11 ~@2", Q: "[e4,g4]@3 [f#4,a4]@5 a4@3 f#4@5",
  R: "a4@3 b4@2 a4@5 ~ g4@5", S: "a4@3 b4@2 a4@5 ~@6",
})).s("gm_electric_guitar_clean").gain(0.3)

stack(piano, acoustic_guitar_steel, electric_guitar_clean)