Strudelify

Sposati! Subito!!

Grandi

KeyB minorTempo120 bpm
0:00/0:00
// Sposati! Subito!! — Grandi
// 120 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// bass · fretless bass
const bass = note(`<
  ~ A@5 B C D E@2 F@2 E@2 F@2 E@2 F@2 G H I J E@2 F@2 E@2 F@2 G H I K L H M@3 N O N P N Q R S N O N P N Q R S A@5 B C D
  E@2 F@2 E@2 F@2 E@2 F@2 G H I K L H M@3 N O N P N Q R S N O N P N Q R T U V W X Y Z AA AB U V W AC Y Z AA AD
>`.pickRestart({
  A: "[d1@13 ~ c#1@15 ~ c1@15 ~ b0@7 ~ b0!3 ~ c1@2 c#1@2 d1@4 ~@2 d1@2 ~@2 d1@2 d2@2 d1@2 c#2@2]/5",
  B: "c#1 ~ c#1 ~ c#1 c#2 c#1 c2", C: "c1@2 ~@2 c1@2 ~@2 c1@2 c2@2 c1@3 ~", D: "f#2@2 ~@2 f#2@11 ~",
  E: "[b1@2 f#1@2 a1@2 b1@3 ~ f#1@2 f1@2 e1@4 d1@2 e1@2 ~@4 e1@2 f#1@2 a1@2]/2",
  F: "[b1@2 f#1@2 a1@2 b1@3 ~ f#2@2 f2@2 e2@4 d2@2 e2@2 ~@4 e2@2 d2@4]/2", G: "b0@2 ~@2 b0@2 ~ b0 b0@2 c#1@2 d1@2 e1@2",
  H: "~@2 e1@2 f#1 ~ f#1@2 g1 ~ g1@2 a1 ~ a1@2", I: "b1 a1 b1@2 ~ f#2 f2 e2", J: "~@2 e2@2 d2 ~ d2@2 c#2@5 ~@3",
  K: "~@2 e2@2 d2 ~ d2@2 c#2 ~ c#2@2 b1@2 a1@2", L: "b1 a1 b1@2 ~ f#1 ~ e1",
  M: "[a1@2 ~@2 a1@2 ~@2 a1@2 e1@2 d1@2 c#1@4 c#2@2 c#1@2 c#2@2 c#1@2 c#2@2 c#1@2 f#1@4 f#2@2 f#1@2 f#2 ~ f#2@8]/3",
  N: "d1 ~ d1 ~ e1 ~ e1 ~", O: "a1 ~ a1@2 ~@2 b1@4 d2 d#2 b1@4", P: "a1 ~ a1@2 ~@2 b1@4 b2 a2 f#2 e2 d#2@2",
  Q: "a1 ~ a1@2 ~@2 b1@4 ~ a1 b1 a1 f#1@2", R: "e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~ e1",
  S: "f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~ f#1 f#2@4", T: "f#1@2 ~@2 f#1@2 ~@2 f#1@2 a1 b1 d2 b1 d2 e2",
  U: "d2@2 d3 ~ d2@2 d3 ~ d2@2 d3 ~ d2@2 d3 ~", V: "c#2@2 c#3 ~ c#2@2 c#3 ~ c#2@2 c#3 ~ c#2@2 c#3 ~",
  W: "c2@2 c3 ~ c2@2 c3 ~ c2@2 c3 ~ c2@2 c3 ~", X: "b2 ~ a2@2 f#2@2 a2 e2 d2 b1 e2 d2 b1 a1 f#1 e1",
  Y: "d1@2 d2 ~ d1@2 d2 ~ d1@2 d2 ~ d1@2 d2 ~", Z: "c#1@2 c#2 ~ c#1@2 c#2 ~ c#1@2 c#2 ~ c#1@2 c#2 ~",
  AA: "c1@2 c2 ~ c1@2 c2 ~ c1@2 c2 ~ c1@2 c2 ~", AB: "b1 ~ a1 ~ b1 ~ a1 a#1 b1!2 a1 ~ b1 ~ c#2 ~",
  AC: "b1@2 b2 ~ b1@2 b2 ~ b1!2 a1@2 f#1@2 e1@2", AD: "b0@2 b1 ~ b0@2 b1 ~ b0@2 b1@2 c2@2 ~@2",
})).s("gm_fretless_bass").gain(0.5)

// chords · piano
const piano = note(`<
  ~ A@7 B C@2 D@2 C@2 D@2 C@2 D@2 C@2 E@2 C@2 D@2 C@2 D@2 C@2 D@2 F@5 G H I J G H K L G H I J G H K L A@7 B C@2 D@2 C@2
  D@2 C@2 D@2 C@2 D@2 F@5 G H I J G H K L G H I J G H K L M N O P M N O P M N O P M N O P
>`.pickRestart({
  A: "[[d3,f#3,b3]@13 ~ [c#3,f3,b3]@15 ~ [c3,e3,b3]@15 ~ [b2,d#3,b3]@11 ~ [c3,e3,b3]@2 [c#3,f3,b3]@2 [d3,f#3,b3]@15 ~ [c#3,f3,b3]@15 ~ [c3,e3,b3]@17 ~]/7", // Bm C#7 Cmaj7 B Cmaj7 C#7 Bm C#7 …
  B: "[c#3,f#3,b3] [a#3,c#4,e4,a4]@3", C: "[[b3,d4,f#4]@8 ~@2 [a3,c#4,e4] ~@3 [g3,b3,d4]@13 ~ [a3,c#4,e4] ~@3]/2",
  D: "[[b3,d4,f#4]@8 ~@2 [a3,c#4,e4] ~@3 [g3,b3,d4]@8 ~@2 [g3,b3,d4] ~@3 [a3,c#4,e4] ~@3]/2", // Bm A G A
  E: "[[b3,d4,f#4]@8 ~@2 [a3,c#4,e4] ~@3 [g3,b3,d4]@8 ~@10]/2", // Bm A G
  F: "[[b3,d4,f#4]@8 ~@2 [a3,c#4,e4] ~@3 [g3,b3,d4]@15 ~ [g3,b3,d4]@11 ~ [g3,b3,d4]@3 ~ [g3,b3,c#4,e4]@11 ~ [g3,b3,c#4,e4]@3 ~ [f#3,a#3,c#4,f#4]@4 [c#4,f#4] ~ [f#3,a#3,c#4,f#4] ~ [f#3,a#3,c#4,f#4] ~ [f#3,a#3,c#4,f#4] ~ [f#3,a#3,c#4,f#4] ~ [f#3,a#3,c#4,f#4] ~@3, ~@33 a#3 ~@6]/5", // Bm A G C#m7b5 F# F#5 F#
  G: "[f#3,a3,d4] ~ [f#3,a3,d4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~", H: "[g3,b3,d4] ~ [g3,b3,d4]@3 ~ [d#3,f#3,b3]@8 ~@2",
  I: "[f#3,a3,d4,f#4]@2 b4@2 [f#3,a3,d4,f#4]@3 e4 [e4,g#4,b4] ~ [e4,g#4,b4] ~ e4 [e4,g#4,b4] ~@2, ~@8 [g#3,b3]@2 ~@2 [g#3,b3]@3 ~", // D E G#m
  J: "[g3,b3,d4] ~ [g3,b3,d4]@2 ~@2 [f#3,b3,d#4]@9 ~", // G B
  K: "[g3,b3,d4,e4] ~@3 [g3,b3,d4,e4] ~@3 [g3,b3,d4,e4] ~@3 [g3,b3,d4,e4]@2 ~@2", // Em7
  L: "[f#3,a#3,c#4,f#4] ~@3 [f#3,a#3,c#4]@2 ~@2 [f#3,a#3,c#4,f#4] ~ [f#3,a#3,c#4,f#4]@4 ~@2, ~@4 f#4 ~@11", // F#
  M: "~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~", // Bm
  N: "~@2 [b3,c#4,f4] ~@2 [b3,c#4,f4] ~@2 [b3,c#4,f4] ~@2 [b3,c#4,f4] ~@2 [b3,c#4,f4] ~", // C#7
  O: "~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~@2 [b3,c4,e4] ~", // Cmaj7
  P: "~@2 [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~@2", // B
})).s("gm_piano").gain(0.36).pan(0.3)

// chords · brass section
const brass_section = note(`<
  ~@20 A B C D@2 ~@7 A B C E@2 B ~@2 F@2 G ~@3 G ~ H I G ~@3 G ~ H I ~@19 A B C E@2 B ~@4 G ~@3 G ~ H I G ~@3 G ~ H I J
  K L M J K L M J K L M J K L M
>`.pickRestart({
  A: "~@6 [b4,d5,b5] ~", B: "[b4,d5,b5]@2 [f#4,b4,f#5]@2 [a4,c#5,a5] [b4,d5,b5]@7 ~@4",
  C: "~@2 c#5@2 d5@2 e5@2 f#5@2 e5 ~ e5@2 d5 ~", D: "[d5 ~ c#5 d5 ~ c#5 ~ d5@5 ~@4]/2",
  E: "[d5 ~ c#5 d5 ~ c#5 ~ d5@5 ~@2 [b4,d5,b5] ~]/2", // Bm
  F: "[~@8 [f#4,c#5,f#5]@2 [e4,b4,e5]@2 [d4,f#4,d5] ~ [f#4,c#5,f#5]@4 [g4,d5,g5]@2 [f#4,c#5,f#5]@2 [g4,d5,g5]@2 [f#4,c#5,f#5]@7 ~]/2", // F#5 E5 D F#5 G5 F#5 G5 F#5
  G: "[b4,d5,b5]@2 [f#4,c#5,f#5]@2 [b4,d5,b5]@3 ~ [b4,d5,b5]@2 [f#4,c#5,f#5]@2 [b4,d5,b5]@3 ~", H: "[f#4,g4,b4]",
  I: "[f#4,a#4,c#5]", J: "[f#4,b4,f#5] ~ [f#4,b4,f#5] ~@3 [f#4,b4,f#5] ~@3 [f#4,b4,f#5]@5 ~",
  K: "[f4,b4,f5] ~ [f4,b4,f5] ~@13", L: "[e4,b4,e5] ~ [e4,b4,e5] ~@3 [e4,b4,e5] ~@3 [e4,b4,e5]@5 ~",
  M: "[d#4,b4,d#5]@7 ~", // G#m
})).s("gm_brass_section").gain(0.52).pan(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@5 A B C D ~ E F G ~@29 H I ~ J H K L M H I ~ J H K L M A B N O P B C D ~ E F G ~@17 H I ~ J H K L M H I ~ J H K L M
  Q R S T Q R S T Q R S T Q R S T
>`.pickRestart({
  A: "[f#5,b5] ~@3 [f#5,b5] ~@3 [f#5,b5] ~@3 [b4,f#5,b5]@2 f5 ~", B: "~@4 [f5,b5] ~@3 [f5,b5] ~@3 [b4,f5,b5]@2 e5 ~",
  C: "~@4 [e5,b5] ~@3 [e5,b5] ~@3 [e5,b5] ~@3", D: "~ [a#4,c#5,e5,a5]@3", E: "~@2 [f#4,f#5] ~ [a4,a5]@2 [b4,b5] ~@9",
  F: "~@10 [f#4,f#5] ~ [e4,e5] [d4,d5] [b3,b4] ~", G: "~@8 [b4,b5] ~@3 [b4,b5] ~@3", H: "b5 ~@3 b5 ~@3 b5 a5 b5 ~@5",
  I: "b5 ~ f#5 ~ a5 ~ b5@2 ~@8", J: "~@4 b5 ~ b5 ~ b5 ~ b5 ~ b5 a5 b5 ~", K: "b5 ~ f#5 ~ a5 ~ b5 ~@9",
  L: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~", M: "c#6 ~ c#6 ~ c#6 ~ c#6 d6 c#6 ~ c#6 d6 c#6 d6 c#6 ~",
  N: "~@4 [e5,b5] ~@3 [e5,b5] ~@3 [b4,e5,b5]@2 d#5 ~", // E5
  O: "~@4 [d#5,b5] ~@3 d#5@2 e5@2 f5@2 [f#5,b5]@2, ~@8 [b4,b5]@5 ~@3", // G#m B5 B
  P: "~@4 [f#5,b5] ~@3 [f#5,b5] ~@3 [b4,f#5,b5]@2 f5 ~", Q: "~@2 [f#5,b5] ~@3 [f#5,b5] ~@3 [f#5,b5] ~@3 [f#5,b5] ~",
  R: "~@2 [f5,b5] ~@3 [f5,b5] ~@3 [f5,b5] ~@3 [f5,b5] ~", S: "~@2 [e5,b5] ~@3 [e5,b5] ~@3 [e5,b5] ~@3 [e5,b5] ~",
  T: "~@2 [d#5,b5] ~@3 [d#5,b5] ~@3 [d#5,b5] ~@3 [d#5,b5] ~", // G#m
})).s("gm_string_ensemble_1").gain(0.44).pan(0.6)

// chords · distortion guitar
const distortion_guitar = note("<~@58 A@7 B ~@37 C D E F C D E F C D E F C D E F>".pickRestart({
  A: "[f#4@11 ~ f#4@2 f4@13 ~ f4@2 e4@13 ~ e4@2 d#4@9 ~ d#4@2 e4 ~ f4 ~ f#4@13 ~ f#4@2 f4@13 ~ f4@2 e4@18]/7",
  B: "~ e4@3", C: "[b3,d4,f#4] ~@2 [b3,d4,f#4] ~@4", D: "[b3,c#4,f4] ~@2 [b3,c#4,f4] ~@4",
  E: "[b3,c4,e4] ~@2 [b3,c4,e4] ~@4", F: "[f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~@4",
})).s("gm_distortion_guitar").gain(0.28).pan(0.1)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  A B@7 ~ C D C E C D C E C D C E C D C F C D C E C D C E C D C F C D ~@4 G ~ G ~ G H I ~ G ~ G ~ G H I B@7 ~ C D C E C
  D C E C D C E C D C F C D ~@4 G ~ G ~ G H I ~ G ~ G ~ G H I ~@16
>`.pickRestart({
  A: "~@10 [b3,f#4]!2 [f#4,b4]!2 [b3,f#4]!2", // B5
  B: "[f#4,b4] ~@3 [f#4,b4] ~@3 [f#4,b4]!2 [b3,f#4]!2 [f#4,b4]!2 [b3,f#4]!2", // B5
  C: "~@4 a#4 b4@2 [f#4,b4] ~@8, ~@4 f#4@3 ~@9", D: "~@8 [c#4,f4] [d4,f#4]@2 [d4,f#4] ~@4",
  E: "~@4 [c#4,f4] [d4,f#4]@2 [d4,f#4] ~@8", F: "[c#4,f4] [d4,f#4]@3 [c#4,f4] [d4,f#4]@3 [d4,f#4] ~@7",
  G: "~@8 [d#4,f#4,a4] [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,a4] [d#4,f#4,b4] ~", // D#dim B D#dim B
  H: "~ b4 ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~@3 b4 ~@2, [e4,g4,a#4] ~@5 [e4,g4,a#4] ~", // Em Edim
  I: "[f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~", // F#
})).s("gm_electric_guitar_muted").gain(0.15).pan(0.8)

// other · electric guitar muted
const electric_guitar_muted_2 = note(`<
  ~@25 A ~ A ~ A ~ A ~ A ~ A B A ~ C ~@3 D ~ D ~ D ~@3 D ~ D ~ D ~@14 A ~ A ~ A ~ A ~ A ~ A ~ A B C ~@3 D ~ D ~ D ~@3 D
  ~ D ~ D ~@2 E F G H E F G H E F G H E F G H
>`.pickRestart({
  A: "~@10 a3!2 ~ b3 ~@2", B: "~@4 d4 b3 d4 ~ d4 b3 a3 ~ a3 b3 ~@2", C: "~@6 b3!2 ~ b3 ~@6", D: "~@9 b3 d#4@2 b3 ~@3",
  E: "b3 ~ b3 ~@2 b3 ~@2 b3!2 ~ b3 ~ b3 ~ b3", F: "~@2 b3 ~@2 b3 ~@2 b3 ~ b3!2 ~ b3 ~ b3",
  G: "~@2 b3 ~@2 b3 ~@2 b3 ~@2 b3 ~ b3 ~ b3", H: "~@2 b3!2 ~ b3 ~@2 b3!2 ~ b3!2 a3 b3 d4",
})).s("gm_electric_guitar_muted").gain(0.44).pan(0.3)

// other · electric guitar muted · soft notes
const electric_guitar_muted_3 = note("<~@103 A B C D A B C D A B C D A B C D>".pickRestart({
  A: "~@7 b3 ~@8", B: "b3!2 ~ b3 ~@2 b3!2 ~ b3 ~@2 b3 ~@3", C: "~ b3 ~@2 b3 ~@2 b3 ~ b3!2 ~ b3 ~@3",
  D: "~ b3 ~@2 b3 ~ b3!2 ~@2 b3 ~@5",
})).s("gm_electric_guitar_muted").gain(0.22).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@5 A@3 B C@32 D C@16 A@4 C@3 D C@20 D C@32>".pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "x!2", D: "x",
})).gain(0.54)

// drums · clap
const clap = s("cp").struct("<~@9 [~ x ~ x]!15 [~ x ~@2] [~ x ~ x]!33 ~@4 [~ x ~ x]!3 ~ [~ x ~ x]!53>").gain(0.42)

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A@3 B A@3 B A@3 C A@3 D A@3 B A@3 C A@3 B A@4 E A@3 B A@3 B A@3 F A@3 B E@3 G A@3 D A@3 B A@3 B A@3 C A@3 B A@4 E
  A@3 B A@3 B A@3 F A@3 B A@3 B A@3 B A@3 B A@4
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@9 x!2", D: "~ x ~@2", E: "~@3 x", F: "~@4 x ~@5 x!3 ~@3",
  G: "~@14 x!2",
})).gain(0.54)

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

// drums · low tom
const low_tom = s("lt").struct("<~@41 A ~@11 B ~@32 A ~@11 B ~@4 C@16>".pickRestart({
  A: "~@5 x ~@2", B: "~@14 x!2", C: "~@3 x",
})).gain(0.42)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A@3 ~ A@15 B A@17 ~@16 C@3 ~@5 A@21 ~@32>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "~@3 x",
})).gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~@15 A ~@11 A ~@8 B ~@11 C ~@7 A ~@15 A ~@8 B ~@11 C ~@4 A@16>".pickRestart({
  A: "~@3 x", B: "~@4 x ~@3 x!2 ~@6", C: "~@13 x ~@2",
})).gain(0.42)

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

// drums · high tom
const high_tom = s("ht").struct("<~@4 A ~@15 B ~@11 B ~@8 C ~@19 A ~@15 B ~@8 C ~@32>".pickRestart({
  A: "~@11 x ~@4", B: "~@5 x ~@2", C: "~ x ~@6",
})).gain(0.54)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@42
  [~ x!3 ~ x!3 ~ x!3 ~ x!3]!23
  ~@22
  [~ x!3 ~ x!3 ~ x!3 ~ x!3]!31
  [~ x!3 ~ x!3 ~ x!3 ~ x ~@2]
>`).gain(0.24)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@42 [x!4]!23 ~@22 [x!4]!32>").gain(0.12)

// drums · congas
const congas = s("conga:13").struct(`<
  [~ x ~@3 x ~@2]!8
  ~
  [~ x ~@3 x ~@2]!15
  [~ x ~@6]
  [~ x ~@3 x ~@2]!40
  ~
  [~ x ~@3 x ~@2]!53
>`).gain(1.34)

// drums · congas
const congas_2 = s("conga:18").struct("<A B@6 A ~ B@15 C B@16 A B@22 A ~ B@20 A B@31 C>".pickRestart({
  A: "x ~@5 x!2 ~@6 x!2", B: "~@6 x!2 ~@6 x!2", C: "~@6 x!2 ~@8",
})).gain(1.34)

// … 28 more lines

More by Grandi