Strudelify
Iris cover art

BIAGIO

Iris

Biagio Antonacci

KeyC♯ minorTempo100 bpm
0:00/0:00
// Iris — Biagio Antonacci
// 100 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
setcpm(100/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.

// bass · electric bass finger
const bass = note(`<
  A B A B A B A B A B A C A B A B A B A C A B A D@2 E F G H E F G I E F G H E F G J K L J E F G J A B A B A B A C A B A
  D@2 E F G H E F G I E F G H E F G M N O P A B A C A B A C A B A@2 B A B Q@3
>`.pickRestart({
  A: "c#2@3 c#2 b1@4", B: "a1@3 a1 b1@4", C: "a1@3 a1 b1 g#1 b1 g#1", D: "e1!8", E: "c#2@3 c#2 c#2@2 g#1@2",
  F: "f#1@3 f#1 f#1@2 c#2@2", G: "b1@3 b1 b1@2 f#1@2", H: "e1@3 e1 e2@2 d#2@2", I: "e1@3 e1 e1@2 d#2@2",
  J: "e1@3 e1 e1@4", K: "f#1@3 f#1 f#1@4", L: "b1@3 b1 b1@4", M: "c#2@3 c#2 c#2@2 c#2@2", N: "f#1@3 f#1 f#1@2 f#1@2",
  O: "g#1@3 g#1 g#1@2 g#1@2", P: "a1@3 a1 b1@2 b1@2", Q: "[~ c#1@40 ~@7]/3",
})).s("gm_electric_bass_finger").gain(0.72)

// other · vibraphone
const vibraphone = note(`<
  ~@4 A@3 ~ B C@2 D E F G H I J K@2 L@2 M@2 N@8 O@8 ~@7 D P Q R S P T U@2 V@2 W@2 N@8 X@8 ~@3 D Y Z G D I J AA@2 V@2
  AB@2 ~@6
>`.pickRestart({
  A: "[e4@2 d#4@2 e4@2 f#4@4 e4@2 d#4@2 e4@4 ~@4 c#4!2 f#4 ~ g#4 ~ a4 ~ g#4@4 f#4@2 e4 ~ f#4@4 g#4@2 f#4@2 e4 ~]/3",
  B: "c#4@2 d#4@2 e4@2 f#4@4 e4@2 d#4@2 e4 ~",
  C: "[~@6 e4@2 f#4@2 g#4@2 a4@2 g#4@4 c#5 ~@3 g#4@2 b4@2 a4@2 g#4@2 f#4@2]/2", D: "~@14 g#4 b4",
  E: "c#5@2 c#5 ~@3 g#4 b4 c#5@2 c#5 ~@2 g#4!2 b4", F: "c#5 ~ c#5 ~ b4@2 e5@4 d#5 ~@3 c#5 b4",
  G: "c#5@2 g#4 ~@2 g#4!3 b4@2 a4@2 g#4@2 f#4@2", H: "~@13 g#4!2 b4", I: "c#5@2 b4 ~ g#4 b4 c#5@2 b4@2 ~@4 g#4 b4",
  J: "c#5@2 b4 c#5@2 b4 e5@4 d#5 ~@3 c#5 b4", K: "[c#5@2 g#4 ~@2 g#4!3 b4@2 a4@2 g#4@2 f#4@5 ~@13]/2",
  L: "[c#4@2 d#4@2 e4@2 f#4@4 e4@2 d#4@2 e4@4 e4 ~@3 e4@2 f#4@2 g#4@2 a4@2 g#4@2]/2",
  M: "[~ f#4 e4 f#4@2 d#4@2 e4@3 ~@6]/2",
  N: "[~@10 c#5@2 d#5@2 e5@12 g#4@4 a4@5 ~@7 e5 ~ e5 ~ e5@4 d#5@3 ~ d#5@4 e5@4 e5@4 ~@8 c#5@2 d#5@2 e5@12 g#4@4 a4@5 ~@7 e5 ~ e5@2 e5@4 d#5 ~ d#5 ~ d#5@4 e5@4 e5@2]/8",
  O: "[~@10 e5@2 f#5@2 g#5@12 b5@4 c#6@6 ~@6 g#5 ~ g#5 ~ g#5@4 f#5@3 ~ f#5@4 e5@4 e5@4 ~@8 c#5@2 d#5@2 e5@12 g#4@4 a4@6 ~@4 e5 ~ e5 ~ e5 ~ e5@4 d#5@3 ~ d#5@4 e5@4 e5@2]/8",
  P: "c#5@2 b4 ~@3 g#4 b4 c#5@2 b4 ~@3 g#4 b4", Q: "c#5 ~ b4@2 c#5@2 b4 ~ e5@2 d#5@2 c#5 ~ b4 c#5",
  R: "c#5@2 g#4@2 ~@2 g#4!2 b4@2 a4@2 g#4@2 f#4@2", S: "~@2 f#4@3 ~@9 g#4 b4",
  T: "c#5@2 b4 c#5@2 b4 e5@4 d#5 ~ c#5@2 b4@2", U: "[c#5@2 c#5@2 ~@2 g#4!2 b4@2 a4@2 g#4@2 f#4@5 ~@13]/2",
  V: "[c#4@2 d#4@2 e4@2 f#4@4 e4@2 d#4@2 e4@4 e4 ~@3 e4!2 f#4@2 g#4@2 a4@2 g#4@2]/2",
  W: "[~@2 f#4@2 e4@2 f#4@4 g#4@2 f#4@2 e4@5 ~@13]/2",
  X: "[~@10 e5@2 f#5@2 g#5@12 b5@4 c#6@6 ~@6 g#5 ~ g#5 ~ g#5@4 f#5@3 ~ f#5@4 e5@4 e5@4 ~@8 c#5@2 d#5@2 e5@12 g#4@4 a4@6 ~@4 e5 ~ e5 ~ e5 ~ e5@4 d#5@3 ~ g#5@4 f#5@4 e5@2]/8",
  Y: "c#5@2 b4 ~@3 g#4 b4 c#5@2 b4 ~@2 g#4!2 b4", Z: "c#5 ~ c#5 ~ b4@2 e5@4 d#5 ~@4 b4, ~@7 c#5",
  AA: "[c#5@2 c#5 ~@2 g#4!3 b4@2 a4@2 g#4@2 f#4@5 ~@13]/2", AB: "[~ f#4 e4 f#4 ~ g#4 b4 c#5@4 ~@5]/2",
})).s("gm_vibraphone").gain(0.48)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@33 A B C D E F@2 E ~@18 G@2 ~@8 A B C D E F@2 E F H I J K L H M@2 N H O@3 P Q P Q R@3
>`.pickRestart({
  A: "b5", B: "c#6@3 b5", C: "a5 f#5", D: "g#5@3 f#5", E: "e5", F: "f#5", G: "[e4,e5]/2", H: "g#5", I: "a5 b5",
  J: "c#6@3 d#5", K: "e5 f#5", L: "c#5", M: "[~@3 c#5, c#5 g#5, ~ e5@2 ~]/2", N: "c#5 e5", O: "[~@5 g#5, c#5]/3",
  P: "[c#5,e5] [b4,d#5]", Q: "[a4,c#5] [b4,d#5]", R: "[~ [c#5,e5]@20 ~@3]/3",
})).s("gm_string_ensemble_1").gain(0.48)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@12 A B@2 C ~@2 D C ~@3 E@2 F G H I F G H I F G H I F G H J K@3 L M@3 ~@2 D C ~@2 D C ~@3 E@2 F G H I F G H I F G H I
  F G H F G N O ~@11 P Q P R S@3
>`.pickRestart({
  A: "~ [g#3,c#4] [c#4,e4] [g#3,c#4] [b3,d#4]@4", B: "[~ e3 c#4!2 b3@5 c#4 [e4,g#4]@2 [d#4,f#4]@4]/2",
  C: "[c#4,e4] [d#4,f#4]", D: "~ c#4 [e4,g#4]@2 [d#4,f#4]@4",
  E: "[g#3@2 g#3 a3@3 a3 g#3@3 g#3 a3@3 g#3@2, e3@3 e3@4 e3@4 e3@5]/2", F: "~ [g#3,c#4,e4]@2 [g#3,c#4,e4]@5",
  G: "~ [a3,c#4,e4]@2 [a3,c#4,e4]@5", H: "~@2 [f#3,a3,d#4]@3 ~ [f#3,a3,d#4]@8 ~@2",
  I: "~@2 [e3,g#3,b3]@3 ~ [e3,g#3]@6 ~@4, ~@3 b3@5", J: "~@2 [e3,g#3,b3]@3 ~ [e3,g#3,b3]@6 ~ f#3 ~ g#3, ~@6 e3 ~",
  K: "[a3@3 e4@9 [b3,g#4]@2 [c#4,a4]@6 [b3,g#4]@2 [c#4,a4]@4 [d#4,b4]@4 [b3,g#4]@11 ~@3 g#3@2 e4 f#4]/3", // E F#m E F#m G#m E
  L: "e4@11 ~@3 f#3 g#3",
  M: "[a3@3 e4@9 [g#3,d#4]@2 [a3,e4]@6 [g#3,d#4]@2 [a3,e4]@4 [d#4,b4]@4 g4 ~@7 e5@10, ~@10 e4@3 ~@3, ~@31 g#4@9 ~@8, ~@17 b4@7]/3", // G#5 A5 G#5 A5 G#m
  N: "~@2 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@8 ~@2", O: "[a3,e4] [b3,f#4]", P: "[g#3,c#4,e4]@3 ~ [f#3,b3,d#4]@3 ~",
  Q: "[e3,a3,c#4]@6 ~@2 [f#3,b3,d#4]@7 ~", R: "[e3,a3,c#4]@3 ~ [f#3,b3,d#4]@4", S: "[~@2 [g#3,c#4,e4]@39 ~@7]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.56)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B C B C B C B C B C B A B C B C B C B A B C D@2 E F G H E F G I E F G H E F G J K L M N O P Q A B C B C B C B A B C
  D@2 E F G H E F G I E F G H E F G R S T U C B C B C B C B C B C@2 B C V@4
>`.pickRestart({
  A: "g#3 ~@2 e4 f#3 ~ b3@2, e4@3 ~ d#4@3 ~, c#4!2 b3 ~, ~ g#3@3 ~ f#3@3",
  B: "e3 ~@2 c#4 f#3 ~@2 d#4, c#4@3 ~ d#4@3 ~, a3!2 b3!2, ~ e3@3 ~ f#3@3",
  C: "g#3 ~@2 e4 f#3 ~@2 d#4, e4@3 ~ d#4@3 ~, c#4!2 b3!2, ~ g#3@3 ~ f#3@3",
  D: "[~@7 g#3, e3, ~@2 b3@15 ~ b3@14, ~@4 e4@6 e4@8 ~@2 e4@5 ~ e4@6, ~@6 a3@7 ~ g#3@8 a3@6 ~@4]/2",
  E: "~@2 [d#4,f#4] g#4@3 g#4@2, [c#3,b3], [e4,g#4]@2 ~ e4@5, ~ g#3@7", F: "~@3 a4@3 a4@2, f#3, ~ a3@7, ~ [c#4,e4]@3",
  G: "d#4 ~ c#4 [b2,d#4,a4]@3 [b2,d#4,a4]@2, [b2,a4]@3 ~@5, ~ b3@7", // B7
  H: "e3 ~ f#3 ~@2 e3 [d#3,f#3,d#4,f#4]@2, [e4,g#4]@3 [g#3,e4,g#4]@3 ~@2, g#3 b3@3, ~ b2@5 ~@2", // D#m E C#m
  I: "e3 ~ f#3 ~@2 e3 [d#3,f#3,b3,d#4,f#4]@2, [e4,g#4]@3 [g#3,e4,g#4]@3 ~@2, g#3 b3@2 ~, ~ b2@5 ~@2", // B E C#m
  J: "e3 ~ f#3 ~@3 [b3,g#4]@2, [e4,g#4]@3 [g#3,e4]@5, g#3@2 b3@3 e3@3, ~ b2@5 ~@2, ~@3 g#4@3 ~@2", // E C#m
  K: "~@3 e4@5, [f#2,c#4], e4@3 ~@5, ~ f#3@7, ~ a3@3", L: "~@3 a3, b2, d#4@3 d#4@5, b3@2 a3@3 ~@3, ~ f#3@4 f#3@3",
  M: "~@3 b3, e3, e4@3 e4@5, b3@2 b3@3 g#3@3, ~ b2@7", N: "~@3 c#4, c#3, e4@3 e4@5, c#4 c#4@2 ~, ~ g#3@4 g#3@3",
  O: "~@3 a3, f#2, e4@3 e4@5, c#4 a3@2 ~, ~ f#3@4 f#3@3", P: "~@3 a3, b2, d#4@3 d#4@5, b3 a3@2 ~, ~ f#3@4 f#3@3",
  Q: "~@3 [g#3,e4]@5, e3, e4@3 ~@5, b3 b3@3, ~ b2@7", // C#m
  R: "~@2 c#4 ~@4 e4, c#3!2, e4@3 e4@4 ~, c#4@2 ~ c#4@3 c#4@2, ~ g#3@2 g#3@2 g#3@3",
  S: "~@2 c#4 ~@3 [c#4,e4]@2, [f#2,e4]@3 f#2@5, c#4@2 ~ [c#4,e4]@3 ~@2, ~ a3@4 a3@3", // C#m F#7 C#m
  T: "~@7 d#4, g#2!2, d#4@3 d#4@4 ~, b3 b3@2 b3, ~ g#3@4 g#3@3",
  U: "~@3 e4 ~@3 f#4, a2 b2, e4@3 ~ f#4@3 ~, c#4!2 d#4!2, ~ a3@3 ~ b3@3",
  V: "[e3@2 ~@4 c#4@2 f#3@2 ~@5 d#4@2 ~ [c#4,e4]@39 ~@7, c#4@6 ~@2 d#4@7 ~@49, a3@4 a3@4 b3@4 b3@5 ~@47, ~@2 e3@6 ~@2 f#3@7 g#3@40 ~@7]/4", // C#m
})).s("gm_electric_guitar_jazz").gain(0.28).pan(0.7)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@3]!79 [x ~@2 x!2 ~@2 x] [x ~@2 x!2 ~@3]!14 [x ~@2 x!3 ~@2] [~ x ~@14] ~@2>")
  .gain(0.8)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!25 ~@23 [~ x ~ x]!13 ~@37>").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@25 [~ x ~ x]!23 ~@13 [~ x ~ x]!34 ~@3>").gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@47 A ~@31 A ~@3 A ~@3 A ~@10>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@2 C B@8 A B@2 C B@4 A B@4 A B@7 A B@7 A B@5 D A B@2 C B@4 A B@2 A B A B@7 A B@6 A B@2 E A B@2 F A B@2 E A B@2 A@3
  G ~@3
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!7 ~", D: "x!5 ~@2 x", E: "x!5 ~ x ~", F: "x!5 ~ x!2", G: "~ x!5 ~@2",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A ~@11 A ~@35 A ~@27 A ~@7 A ~@6 B ~@3>".pickRestart({
  A: "~@7 x", B: "~@3 x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  A ~@11 A ~@7 A ~@4 A ~@7 A ~@7 A ~@6 A ~@7 A ~@2 A ~ A ~@7 A ~@6 A ~@3 A ~@3 A ~@3 A ~@2 A@4 B ~@2
>`.pickRestart({
  A: "x", B: "~ x ~@14",
})).gain(0.48)

// drums · bongos
const bongos = s("bongo:4").struct("<~@33 [~@3 x ~@12]!15 ~@21 [~@3 x ~@12]!11 ~@18>").gain(1.47)

// drums · congas
const congas = s("conga:13").struct("<~@33 [~@3 x ~ x ~@2]!15 ~@21 [~@3 x ~ x ~@2]!11 ~@18>").gain(2.05)

// drums · shaker
const shaker = s("sh").struct("<[x!8]!94 [x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x] ~@3>").gain(0.48)

stack(
  bass, vibraphone, string_ensemble_1, acoustic_guitar_nylon, electric_guitar_jazz, kick, rim, snare, low_tom, hihat,
  open_hat, crash, bongos, congas, shaker
)

More by Biagio Antonacci