Strudelify

La dura legge del gol!

883

KeyA♭ majorTempo75 bpm
0:00/0:00
// La dura legge del gol! — 883
// 75 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(75/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 pick
const bass = note(`<
  A B C D E@2 F D E@2 F D G H I G H I J K L M N O L M P Q R E F D E@2 F D G H I G H I J K L M N O L M P Q R E F D E@2 F
  D G H I G H I J K L M N O L M P Q L M N O L M P Q L M P S@3
>`.pickRestart({
  A: "~@7 db2", B: "eb1@7 db2", C: "eb1@7 eb2", D: "db1@2 db1@12 db2 eb2", E: "eb1 eb1@6 db2", F: "eb1 eb1@6 eb2",
  G: "eb1@2 eb1@12 bb1 c2", H: "db2@2 db2@2 db2@4 ~ ab1!2 ~ ab1@2 bb1 c2",
  I: "db2@2 db2@2 db2@4 ~ ab1 ab1@2 ab1@2 bb1 c2", J: "gb1@3 ~ gb1@3 gb1 ~ f1!2 ~ f1 ~ f1 ~",
  K: "eb1@3 ~ eb1@2 ~ eb1 ~ db1 db1@2 db1 eb1@3", L: "ab1@2 ab1@2 ab1 ~ ab1!2 ~ db2!2 ~ db2!2 ~ db2",
  M: "ab1 ~ ab1@2 ab1 ~ ab1!2 ~ db2 db2@2 db2 db2@2 db2", N: "f2@2 f2@2 f2 ~ f2 eb2 ~ eb2!2 ~ eb2 db2@2 db2",
  O: "ab1@2 ab1@2 ab1 ~ ab1!2 ~ eb2 eb2@2 eb2 eb2@2 eb2", P: "f2@2 f2@2 f2 ~ f2 eb2 ~ eb2!2 ~ eb2 eb2@2 eb2",
  Q: "db2@2 db2@2 db2 ~ db2!2 ~ eb2 eb2@2 eb2 eb2@2 eb2", R: "ab1!2 ab1@6",
  S: "[db2@2 db2@2 db2 ~@2 db2!2 ~ eb2 eb2@2 ~ eb2 eb2@2 eb2 ~ ab1@17 ~@12]/3",
})).s("gm_electric_bass_pick").gain(0.56)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@2 B A@3 B A@3 B A C@2 A C@2 D E F@2 G H F@2 I J K A@2 B A@3 B A C@2 A C@2 D E F@2 G H F@2 I J K A@2 B A@3 B A C@2
  A C@2 D E F@2 G H F@2 I J F@2 G H F@2 I J F@2 I L@3
>`.pickRestart({
  A: "~@4 [bb3,d4]@3 [bb3,d4]@2 [bb3,eb4] [bb3,eb4]@5 ~", // Bb Eb5
  B: "~@4 [ab3,db4]@3 [ab3,db4]@2 ~@5 ab3@2, ~@9 eb4@2 eb4@2 eb4@3, ~@5 ab3!2 ~", // Db5
  C: "[db4,f4,ab4]@2 [db4,f4,ab4]@2 [db4,f4,ab4]@2 [db4,f4,ab4]@2 ~ [c4,eb4,ab4] [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2", // Db Ab
  D: "[bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 ~ [ab3,c4,f4] [ab3,c4,f4]@2 [ab3,c4,f4]@2 [ab3,c4,f4]@2", // Gb Fm
  E: "[g3,bb3,eb4]@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2 ~ [f3,ab3,db4] [f3,ab3,db4]@2 [f3,ab3,db4]@2 [g3,bb3,eb4]@2", // Eb Db Eb
  F: "[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 ~ [db4,f4,ab4] [db4,f4,ab4]@2 [db4,f4,ab4] [db4,f4,ab4]@2 [db4,f4,ab4]", // Ab Db
  G: "[c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 ~ [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4] [ab3,db4,f4]@2 [ab3,db4,f4]", // Fm Eb Db
  H: "[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 ~ [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4]", // Ab Eb
  I: "[c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 ~ [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4]", // Fm Eb
  J: "[ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]@2 ~ [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4]", // Db Eb
  K: "[c4,eb4,ab4]@3 ~", // Ab
  L: "[[ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]@2 ~ [db4,f4]@2 ~ [bb3,eb4,g4] [bb3,eb4,g4]@2 ~ [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4] ~ [c4,eb4,ab4]@17 ~@12, ~@3 ab3 ~@20]/3", // Db Eb Ab
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A@2 B A@3 B A@3 B A C@2 A C@2 D E F@8 G A H@2 A@2 H@2 A C@2 A C@2 D E F@8 G A H@2 A@2 H@2 A C@2 A C@2 D E F@19 I J@2
>`.pickRestart({
  A: "eb3@2 ~@2 [bb3,d4]@3 [bb3,d4]@2 bb3 [bb3,eb4]@5 ~, ~@2 eb3@13 ~", // Bb Eb5
  B: "db3@2 ~@2 [ab3,db4]@3 [ab3,db4]@2 ab3 ab3@2 ab3!4, ~@2 db3@13 ~, ~@10 eb4@5 ~", // Db5
  C: "db4@2 ab3@2 db4@2 ab3@3 eb4 [c4,eb4]@2 eb4!2 [c4,eb4]!2", // Cm
  D: "db4@2 bb3@2 db4@2 eb4@2 ~ f4 [c4,f4]@2 f4!2 [c4,f4]!2", // F5
  E: "db4@2 bb3@2 db4@2 bb3@3 f4 [db4,f4]@2 f4 ab3 [db4,f4] [eb4,g4]", F: "[ab4,eb5]!15 [bb4,f5]",
  G: "[ab4,eb5]!9 eb5 [ab4,eb5] eb5!4 ~", // Ab5
  H: "[eb3@2 ~@2 [bb3,d4]@3 [bb3,d4]@2 bb3 [bb3,eb4]@2 [bb3,eb4]!3 ~ db3@2 ~@2 [ab3,db4]@3 [ab3,db4]@2 ab3 ab3@2 ab3!4, ~@2 eb3@9 ~@4 [bb3,eb4]@2 ~ db3@13 ~, ~@26 eb4@5 ~]/2", // Bb Eb5 Db5 Eb5
  I: "[ab4,eb5]!6 ~ [ab4,eb5]!6 ~ [ab4,eb5]!2", J: "[[ab4,eb5] [bb4,f5] ~ [ab4,eb5]@17 ~@12]/2",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.3)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A@12 B C D B C@2 E F ~@7 G A@8 B C D B C@2 E F ~@7 G A@8 B C D B C@2 E F ~@21
>`.pickRestart({
  A: "~@9 eb4 ~@6", B: "~@9 [ab3,c4] ab3@2 [ab3,c4]!2 ab3 ~", C: "ab3@2 ~@7 [ab3,c4] ab3@2 [ab3,c4]!2 ab3 ~",
  D: "ab3@2 ~@7 eb4 ~@6", E: "ab3@2 ~@7 [ab3,db4] ab3@2 [ab3,db4] [db4,f4] ab3 ~", F: "bb3 ~@15",
  G: "~@9 ab4 ~ ab4!4 [ab4,eb5]", // Ab5
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.3)

// chords · pad warm
const pad_warm = note(`<
  ~@20 A@2 B C A@2 D E F G@2 H G@3 H G ~@7 A@2 B C A@2 D E F G@2 H G@3 H G ~@7 A@2 B C A@2 D E A@2 B C A@2 D E A@2 D I@3
>`.pickRestart({
  A: "[eb3,c4] [f3,db4], ab3", B: "[f3,ab3,c4]@7 [eb3,g3,bb3]@6 [db3,f3,ab3]@3", C: "[eb3,ab3,c4] [eb3,g3,bb3]",
  D: "[f3,ab3,c4]@7 [eb3,g3,bb3]@9", E: "[db3,f3,ab3] [eb3,g3,bb3]", F: "[eb3,ab3,c4]", G: "[bb2,eb3]", H: "[ab2,db3]",
  I: "[[db3,f3,ab3]@9 [eb3,g3,bb3]@10 [eb3,ab3,c4]@17 ~@12]/3", // Db Eb Ab
})).s("gm_pad_warm").gain(0.4)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@20 A@2 B A@3 B C D ~@15 A@2 B A@3 B C D ~@15 A@2 B A@3 B C A@2 B A@3 B C A@2 B E ~@2
>`.pickRestart({
  A: "~@7 [ab2,eb3]@3 ~@6", B: "~@7 [bb2,eb3]@3 ~@6", C: "~@7 [db3,ab3]@3 ~@6", D: "~ [ab2,eb3]@7",
  E: "~@8 [db3,ab3]@3 ~@5", // Db5
})).s("gm_distortion_guitar").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~ A@17 B C D@8 E A@13 B C D@8 F A@13 B C D@11 E D@2 G E D@2 G H I ~>".pickRestart({
  A: "x ~ x ~@7 x ~@2 x ~@2", B: "x ~@6 x!2 ~ x ~@3 x ~", C: "x ~@6 x!2 ~@7", D: "x ~ x ~@4 x!2 ~ x ~@2 x ~ x",
  E: "x ~ x ~@4 x!2 ~ x ~@5", F: "x ~ x ~@6 x!3 ~@3 x", G: "x ~ x ~@4 x!2 ~@2 x!2 ~ x ~", H: "x ~ x ~@5 x!2 ~ x ~@4",
  I: "~@3 x ~@12",
})).gain(0.56)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[~@3 x] [~@3 x ~@4]!19 ~@9 [~@3 x ~@4]!15 ~@9 [~@3 x ~@4]!15 ~@22>").gain(0.16)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B@17 ~@2 C D@7 ~ B@13 ~@2 C D@7 ~ B@13 ~@2 C D@7 E D F G E D H G E D H I ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~ x", C: "~ x!7", D: "x!8", E: "~ x ~ x!5", F: "x!7 ~", G: "~ x!5 ~@2", H: "x!5 ~ x!2",
  I: "~@2 x ~ x ~@2 x ~ x ~ x ~@4",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@23 A ~@23 A ~@11 A ~@3 A ~@4 B ~>".pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@79 [~@15 x] ~@3 [~@15 x] ~@4 [~ x ~@14] ~>").gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@13 A ~@2 A ~ A ~ A ~@7 A ~@8 A ~@2 A ~ A ~ A ~@16 A ~@2 A ~ A ~ A ~@7 B ~ C A B ~@2 A B ~@2 A D ~
>`.pickRestart({
  A: "x", B: "x!2 ~@2", C: "~@13 x ~@2", D: "~@3 x ~@12",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@20 A@9 ~@15 A@9 ~@15 A@19 B C ~>".pickRestart({
  A: "x!16", B: "x!6 ~ x!6 ~ x!2", C: "x!2 ~@14",
})).gain(0.32)

stack(
  bass, acoustic_guitar_steel, electric_guitar_clean, electric_guitar_clean_2, pad_warm, distortion_guitar, kick, snare,
  hihat, hihat_soft, open_hat, mid_tom, high_tom, crash, tambourine
)

More by 883