Strudelify

Dimmi perche (remix)

883

KeyF majorTempo114 bpm
0:00/0:00
// Dimmi perche (remix) — 883
// 114 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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(`<
  ~@16 A B A B A B A B C B C B A B A B A B A B A B A B C B C B C B C B D E D E A B A B A B A B A B A B C B C B C B C B F
  G F G F G F G A B A B C B C B C B C B C B C B C B C B C B C H
>`.pickRestart({
  A: "f1@3 ~ f1@3 ~ f1@2 ~@6", B: "c2@2 c2 ~ c2@3 c2 bb1 ~ bb1@2 bb1@2 bb1 c2", C: "f1@3 ~ f1@3 ~ f1@2 a1@2 c2@2 ~@2",
  D: "f1@2 ~ f1@2 f1 f1@2 f1@2 g1@2 a1@2 bb1@2", E: "c2@2 c2 c2@2 ~ c2@2 bb1@2 bb1@2 bb1@2 bb1@2",
  F: "f1 ~@3 f1 g1 a1 bb1", G: "~@3 c2 bb1!3 ~", H: "c1!2 c2 ~ c2 c1@2 c1 bb1@2 bb1 ~ bb1 c2 eb2 f2",
})).s("gm_electric_bass_finger").gain(0.72)

// bass · electric bass finger · soft notes
const bass_soft = note(`<
  ~@16 A ~ A ~ A ~ A ~ B ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ B ~ B ~ B ~@2 C ~ C A ~ A ~ A ~ A ~ A ~ A ~ B ~ B ~ B ~ B ~ D
  E D E D E D E A ~ A ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~
>`.pickRestart({
  A: "~@14 f1 g1", B: "~@7 a1", C: "~@5 c2 ~@10", D: "~@3 f1@2 f1 f1@2 ~@8", E: "c2@2 c2 c2@2 c2 ~@8 bb1@2",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "[c4,f4,a4]@3 [c4,f4,a4] ~@4 [c4,f4,a4]!2 ~@2 [c4,f4,a4] ~@3", // F
  B: "[e4,g4,c5]@3 [e4,g4,c5] ~@4 [d4,f4,bb4]!2 ~@2 [d4,f4,bb4] ~@3", // C Bb
})).s("gm_electric_guitar_clean").gain(0.14).pan(0.2)

// chords · brass section
const brass_section = note(`<
  ~@24 A B A B C D C D C D C D E F E F A B A B A B A G H I J@2 C D C D C D C D E F E F A B A B A B A K ~@6 L M E F E F A
  B A B A B A K H I J@2 H I J@2 H I J@2
>`.pickRestart({
  A: "f4@5 ~ f5@2, [f3,c4], ~@5 a4 ~@2, ~@11 c5@3 ~@2", B: "c5@3 ~ c5 bb4 a4 ~ bb4 a4 f4 ~ f4 ~ f4 ~, c4 bb3, g4@3 ~@5",
  C: "~@8 [f3,c4]@5 ~@3", D: "[g3,c4,e4]@5 ~@3 [f3,bb3,d4]@5 ~@3", E: "[f4,a4,c5]", F: "[g3,c4] [f3,bb3]",
  G: "[c4,g4,c5]@8 [f4,bb4]!8, ~ bb3", H: "[c4,f4] ~@3 c4 ~@3 [a3,a4]@3 [f3,f4] ~@4",
  I: "[eb4,eb5]@2 ~@2 [d4,d5]@2 ~@2 [c4,c5]@2 ~@2 [a3,a4] [bb3,bb4] [c4,c5] [f3,f4]", // Eb D C A Bb C F
  J: "[~@4 [f3,c4] ~@3 [a3,a4]@3 [f3,f4] ~@3 [f3,f4]@2 [gb3,gb4] [g3,g4] ~ [c3,c4] ~ [g3,g4] ~ [bb3,bb4] ~@3 [bb3,bb4] [c4,c5] [eb4,eb5] [f4,f5]]/2", // F5 A F Gb G C G Bb …
  K: "[c4,g4,c5]@5 ~ [c4,c5] [bb3,bb4] [eb4,eb5] [c4,c5] [bb3,bb4] [ab3,ab4] [bb3,bb4] [c4,c5] [eb4,eb5] [f4,f5]", // C5 C Bb Eb C Bb Ab Bb …
  L: "[c4,f4] ~@15", M: "~@8 [c4,c5]@2 ~@2 [bb3,bb4] [c4,c5] [eb4,eb5] [f4,f5]",
})).s("gm_brass_section").gain(0.56)

// other · string ensemble 1
const string_ensemble_1 = note("<~@36 A B A B ~@20 A B A B ~@8 C D E F G H G H A B A B ~@20>".pickRestart({
  A: "~@2 d5 a4, f1", B: "[c2,c5] [bb1,bb4]", C: "~ f5@3, [c4,f4]@7 ~",
  D: "[c4,c5]@8 [bb3,bb4]@3 ~ [bb3,bb4] [ab3,ab4] [f3,f4] [eb3,eb4]", E: "[f3,f4] ~@3 [f4,f5]@12",
  F: "[c4,c5]@8 [eb4,eb5] [c4,c5] [bb3,bb4] ~ [bb3,bb4] [c4,c5] [eb4,eb5] [f4,f5]", G: "~ [f4,f5]@3",
  H: "[c4,c5] [bb3,bb4]", // C Bb
})).s("gm_string_ensemble_1").gain(0.32)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@4 A B A B A B A B A
  B A B A B A B A B A B C D C D C D C D A B A B A B A B A B A B A B A B A B A B A B A E
>`.pickRestart({
  A: "[c4,f4] [c4,f4]@2 [c4,f4] ~ f4 c4@2 f4!2 ~@2 f4 ~ c4 ~", // F5
  B: "[c4,g4] [c4,g4]@2 [c4,g4] ~ f4 c4@2 f4!2 d4@2 f4 ~ d4 ~", C: "[c4,f4] ~@2 [c4,f4] ~ f4 ~@2 f4 ~@3 f4 ~ c4 ~",
  D: "[c4,g4] ~@2 [c4,g4] ~ f4 ~@2 f4 ~@3 f4 ~ d4 ~", E: "[c4,g4] [c4,g4]@2 [c4,g4] ~ f4 c4@2 f4!2 d4@2 bb3 c4 eb4 f4",
})).s("gm_electric_guitar_muted").gain(0.48)

// chords · electric guitar muted · soft notes
const electric_guitar_muted_2 = note(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ B C B C B C B C A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@5 c4 ~@2", B: "~ [c4,f4]@2 ~@3 c4@2 ~ f4 c4@2 ~@4", C: "~ [c4,g4]@2 ~@3 c4@2 ~ f4 d4@2 ~@4",
})).s("gm_electric_guitar_muted").gain(0.32)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B A B A B A B A B A B A B A B ~@8 A B A B ~@12 A B A B A B A B A B A B ~@12 A B A B A B A B ~@12 A B A B A B A B A B
  A B A B A B A B A B
>`.pickRestart({
  A: "[f4,a4,c5]!2 ~ [f4,a4,c5] ~ [f4,a4,c5]!2 ~@9", // F
  B: "[e4,g4,c5]!2 ~ [e4,g4,c5] ~ [e4,g4,c5]!2 ~ [d4,f4,bb4]@3 ~ [d4,f4,bb4]@3 ~", // C Bb
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.8)

// other · rock organ
const rock_organ = note(`<
  ~@8 A B A B A B A B ~@8 A B A B ~ C ~@3 C ~@6 A B A B A B A B ~@5 C ~@3 C ~@6 A B A B A B A B ~@12 A B A B A B A B A B
  A B A B A B A B A B
>`.pickRestart({
  A: "f4 c5 f5 f4 c5 f5 f4 c5 f5 f4 c5 f5!2 ~ c5 ~", B: "c4 g4 c5 c4 g4 c5 bb4 f4 bb4!2 f4 bb4!2 f4 bb4!2",
  C: "~@2 [c6,e6]@2 ~ f6 d6 bb5", // C
})).s("gm_rock_organ").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B C B C B C B C B D E D E D E D E C B C B D E D E D E D E D E D E C B C B C B C B A B A B D E D E D E D
  E D E D E C B C B C B C B ~@2 A B A B A B D E D E C B C B C B C B C B C B C B C B C B C F
>`.pickRestart({
  A: "x!2", B: "x!2 ~@2 x!2 ~@2", C: "x ~@3 x ~@2 x", D: "x ~ x ~ x ~@2 x", E: "x!2 ~@2 x!2 ~ x",
  F: "x!2 ~@3 x ~ x ~@3 x ~@4",
})).gain(0.8)

// drums · clap
const clap = s("cp").struct("<~@8 A@39 B A@23 B ~@2 A@5 C A@11 B A@11 ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@5 x!6", C: "~@2 x ~@2 x ~@2",
})).gain(0.64)

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

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

// drums · low tom
const low_tom = s("lt").struct("<A B A B A B A B ~@95 C>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x", C: "x",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 A ~@23 A ~@19 A ~@18 B C>".pickRestart({
  A: "~@3 x!2 ~@4 x!4 ~@3", B: "~@15 x", C: "x",
})).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A@2
>`.pickRestart({
  A: "~ x ~@3 x ~@2", B: "~ x ~@3 x ~ x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@39 A ~@7 B ~@15 A ~@7 B ~@11 A ~@20>".pickRestart({
  A: "x!3 ~@3 x!2 ~@8", B: "~@2 x!3 ~ x!3 ~@7",
})).gain(0.56)

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

// drums · bongos
const bongos = s("bongo:4").struct("<~@74 [~ x!2 ~@2 x!2 ~]!6 ~@24>").gain(1.47)

// drums · congas
const congas = s("conga:13").struct("<~@48 [~ x ~@3 x ~@2]!4 ~@20 [~ x ~@3 x ~@2]!8 ~@24>").gain(1.28)

// drums · congas
const congas_2 = s("conga:33").struct("<~@48 [~@6 x!2 ~@6 x!2]!4 ~@20 [~@6 x!2 ~@6 x!2]!8 ~@24>").gain(1.28)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~@72 [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!2 ~@30>").gain(1.53)

// drums · agogo bells
const agogo_bells_2 = s("agogo:4").struct("<~@72 [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!2 ~@30>").gain(1.53)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@48
  [x ~ x!2 ~@2 x!3 ~ x!2 ~@2 x!2]!4
  ~@20
  [x ~@6 x!2 ~@7]
  [x ~@6 x!2 ~@6 x]
  [x ~ x!2 ~@2 x!3 ~ x!2 ~@2 x!2]!6
  ~@24
>`).gain(0.56)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~@48 A B A B ~@20 A B A B A B A B ~@24>".pickRestart({
  A: "~@6 x ~@7 x!2", B: "~@3 x ~@3 x",
})).gain(0.32)

stack(
  bass, bass_soft, electric_guitar_clean, brass_section, string_ensemble_1, electric_guitar_muted,
  electric_guitar_muted_2, acoustic_guitar_steel, rock_organ, kick, clap, snare, hihat, low_tom, mid_tom, open_hat,
  high_tom, crash, bongos, congas, congas_2, agogo_bells, agogo_bells_2, shaker, shaker_soft
)

More by 883