Strudelify

Qualcosa qualcuno

Tozzi

KeyC majorTempo99 bpm
0:00/0:00
// Qualcosa qualcuno — Tozzi
// 99 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(99/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.

// chords · epiano2
const epiano2 = note(`<
  A@3 B A@3 B ~@26 C D E@2 F ~ G H C D E@2 I ~@25 C D E@2 F ~ G H C D E@2 I ~@3 A@3 B A@3 B A@3 B A@3 B A@3 B
>`.pickRestart({
  A: "[g3@3 ~ [g3,c4,e4] ~ [g3,b3,d4]@4 g3@6 g3@3 ~ [g3,c4,e4] ~ [g3,c4,d4]@4 g3@6 g3@3 ~ [g3,c4,e4] ~ [g3,b3,d4]@4 [g3,c4,e4]@6, ~@10 [c4,e4]@9 ~@7 [c4,e4]@8 ~@14]/3", // C G C Gsus4 C G C
  B: "g3@2 [g3,b3] ~ [g3,b3]@2 [g3,b3] ~ [g3,b3,e4]@4 [g3,b3,d4]@4", C: "[f2,a3,c4,e4]", D: "[c3,g3,c4,e4]",
  E: "[f3,a3,d4] [g3,b3,d4]", F: "[g3,b3,e4]", G: "~@3 [a3,c4,e4], [a3,c4,e4]@3 ~, ~@5 a2@3", H: "[g2,a3,c4,e4,g4]",
  I: "[e2,g3,b3,e4]", // Em
})).s("gm_epiano2").gain(0.35).pan(0.8)

// bass · fretless bass
const bass = note(`<
  A B C D A B C D E F G H I J G K L M N O L M N O L M N P A B C D Q R S T U V W X Y Z S T U V AA AB G AC L M N O L M N O
  L M N P A B C D A B C D Q R S T U V W X Y Z S T U V AA AB G AC A B C D A B C D A B C D A B C D A B C D
>`.pickRestart({
  A: "c2@11 ~ c2@2 d2@2", B: "e2@13 ~ e2 ~", C: "f2@13 ~ f2@2", D: "g2@10 g1 ~ g1@2 b1@2", E: "c2@5 ~ c2 ~ c2@6 d2@2",
  F: "e2@5 ~ e2 ~ e2@5 ~ e2@2", G: "f2@5 ~ f2 ~ f2@5 ~ f2@2", H: "g2@4 ~@2 g2 ~ g2 ~ g2@3 ~ g2@2",
  I: "c2@5 ~ c2 ~ c2@5 ~ c2@2", J: "e2@5 ~ e2 ~ e2@5 ~ e2 ~", K: "g2@5 ~ g2@2 g1 ~ g1@4 b1@2",
  L: "c2@5 ~ c2 ~ c2@5 ~@3", M: "e2@5 ~ e2 ~ e2@5 ~@3", N: "f2@5 ~ f2 ~ f2@5 ~@3", O: "g2@5 ~ g2 ~ g2@5 ~@3",
  P: "g2@5 ~ g2 ~ g2@4 g1@2 b1@2", Q: "c2@5 ~ c2 ~ c2@2 g1@2 c2@2 g1@2", R: "e2@4 ~@2 e2 ~ e2 ~ e2@2 c2@2 e2@2",
  S: "f2@4 ~@2 f2 ~ f2@2 c2@2 f2@4", T: "c2@5 ~ c2 ~ c2@2 g1@2 c2@2 c#2@2", U: "d2@5 ~ d2@2 g2 ~ g2@2 ~@2 g2@2",
  V: "d2@5 ~ d2@2 g2 ~ g2@2 ~ g2 d2 d#2", W: "e2@5 ~ e2 ~ e2@4 b1@4", X: "e1@5 ~ e1 ~ e1@5 ~ e1@2",
  Y: "a1@5 ~ a1 ~ a1@5 ~ a1@2", Z: "g1@4 ~@2 g1 ~ g1@5 ~ g1@2", AA: "e2@5 ~ e2 ~ e2@6 g2 g#2",
  AB: "a2@5 ~ a2 ~ a2@5 ~ a2@2", AC: "g2@2 ~ g1!4 a1",
})).s("gm_fretless_bass").gain(0.3)

// bass · fretless bass · soft notes
const bass_soft = note("<~@16 A B C D A B C D A B C ~@23 A B C D A B C D A B C ~@47>".pickRestart({
  A: "~@14 c2 ~", B: "~@14 e2 ~", C: "~@14 f2 ~", D: "~@14 g1 ~",
})).s("gm_fretless_bass").gain(0.2)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@3 B A@3 B ~@20 A@3 C D@3 ~@27 A@3 C A@3 C D@3 ~@15 A@3 B A@3 B A@3 B A@3 B A@3 B
>`.pickRestart({
  A: "[g3@9 ~ c4@2 b3@2 g3@11 ~ c4@2 b3@2 g3@12 c4@2 b3@2 g3@2]/3", B: "~@2 g3 ~ g3 ~ g3@2 c4@4 b3@4",
  C: "~@2 c4 ~ c4 ~ c4@2 b3@2 b3@2 c4@2 g3@2", D: "[g3@9 ~ c4@2 b3@2 g3@11 ~ c4@2 b3@2 a3@12 ~@6]/3",
})).s("gm_acoustic_guitar_steel").gain(0.48)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A@8 B C D E F E G E ~@12 H I J K H I L@2 ~@4 G M L@2 ~@4 G N ~@12 H I J K H I J K H I L@2 ~@4 G M L@2 ~@4 G N O B P@2
  O B P@2 O B P@2 O B P@2 O B P@2
>`.pickRestart({
  A: "[~@8 g5@3 e5 c5@2 g4@2, g6]/8", B: "e5", C: "d5", D: "c5", E: "b4", F: "g4", G: "a4", H: "e4", I: "d4", J: "c4",
  K: "b3", L: "c4/2", M: "b4@4 c5 d5 e5@2", N: "b4@10 c5@3 ~@3", O: "g5",
  P: "[c5@18 [g2,g4]@2 [a2,a4]@2 [g2,g4] ~@3 [g2,g4]@2 [a2,a4]@2 [g2,g4] ~]/2", // G A G A G
})).s("gm_string_ensemble_1").gain(0.25).pan(0.6)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@42 A B ~@5 C D ~@29 A B ~@5 C ~@20>".pickRestart({
  A: "a4", B: "g4", C: "~@3 d5", D: "c5 ~",
})).s("gm_string_ensemble_1").gain(0.15).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A B C D A B C D A B C D A B C D ~@12 A B C D A B C E F@2 G@2 H I C E F@2 J@3 K L ~@11 A B C D A B C D A B C E F@2 G@2
  H I C E F@2 J@3 K A B C D A B C D A B C D A B C D A B C D
>`.pickRestart({
  A: "[c3,c5]", B: "[e3,b4]", C: "[f3,a4]", D: "[g3,b4]", E: "[g3,c5]", F: "[a3 g3 a3 g3, d4]/2", G: "[e3,e4]/2",
  H: "[a2,a3]", I: "b3@4 c4 d4 e4@2, g2", J: "[e3 ~ a2, e4@2 ~, ~ a3@2]/3", K: "b3@5 c4 d4@2, g2", L: "c3, c4 ~",
})).s("gm_string_ensemble_2").gain(0.25).pan(0.2)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@16 B C D E B C D E B C D E F@4 G@4 H@2 ~@4 I@2 H@2 ~@4 B C D E B C D E B C D E F@8 G@4 H@2 ~@4 I@2 H@2 ~@4 A@16 F@4
>`.pickRestart({
  A: "[~ [g3,c4]@14 ~ [b3,e4]@12 ~@4 [c4,e4]@12 ~@4 [b3,d4]@12 ~@4 [g3,c4]@14 ~@2 [b3,e4]@12 ~@4 [c4,e4]@12 ~@4 [b3,d4]@12 ~@4, e3@14 ~ g3@12 ~@4 a3@12 ~@4 g3@12 ~@4 e3@14 ~@2 g3@12 ~@4 a3@12 ~@4 g3@12 ~@5]/8", // C5 E5 C Bm C5 E5 C Bm
  B: "~@4 [e4,g4,c5] ~@7 [e4,g4,c5] ~@3", C: "~@4 [e4,g4,b4] ~@7 [e4,g4,b4] ~@3",
  D: "~@4 [a4,c5,e5] ~@7 [a4,c5,e5] ~@3", E: "~@4 [g4,b4,d5] ~@7 [g4,b4,d5] ~@3",
  F: "[~ [g3,c4]@14 ~ [b3,e4]@12 ~@4 [c4,e4]@12 ~@4 [b3,d4]@12 ~@4, e3@14 ~ g3@12 ~@4 a3@12 ~@4 g3@12 ~@5]/4", // C5 E5 C Bm
  G: "[~ [g3,c4]@14 ~ [b3,e4]@12 ~@4 [c4,e4]@12 ~@4 [c4,e4]@12 ~@4, e3@14 ~ g3@12 ~@4 a3@12 ~@4 g3@12 ~@5]/4", // C5 E5 C
  H: "[~@6 g3 ~@7 g3 d4, ~ a3@3 g4@2 ~@5 f4@2 ~@3, ~@2 d4@3 d4@2 d4@3 d4@3 d4@2 ~, ~@3 f4@2 ~@4 a3@3 g4@2 ~@2]/2",
  I: "[e4@3 ~ [c4,e4]@3 ~, ~@15 g3@12 ~@5]/2", // C
})).s("gm_electric_guitar_clean").gain(0.1).pan(0.3)

// chords · piano
const piano = note(`<
  ~@8 A B C D E F G H I@3 J@3 K L M N O P Q R S@2 Q T ~@4 U@2 ~@6 V W X Y I@3 J@3 K L M N O P Q R S@2 Q R S@2 Q T ~@4
  U@2 ~@6 V W X Y ~@20
>`.pickRestart({
  A: "[e3,g3,c4]@5 ~ [e3,g3,c4] ~ [e3,g3,c4]@7 ~, c2@3 ~", B: "[e3,g3,b3]@5 ~ [e3,g3,b3] ~ [e3,g3,b3]@6 ~@2, e2",
  C: "[f3,a3,c4,e4]@5 ~ [f3,a3,c4,e4] ~ [f3,a3,c4,e4]@7 ~, f2@3 ~", // Fmaj7
  D: "[g3,b3,d4]@5 ~ [g3,b3,d4] ~ [g3,b3,d4]@7 ~, g2@3 ~", E: "[g3,c4,e4]@5 ~ [g3,c4,e4] ~ [g3,c4,e4]@7 ~, c2@3 ~",
  F: "[g3,b3,d4,e4]@5 ~ [g3,b3,d4,e4] ~ [g3,b3,d4,e4]@6 ~@2, e2@13 ~@3", // Em7
  G: "[f3,a3,c4,e4]@5 ~ [f3,a3,c4,e4] ~ [f3,a3,c4,e4]@7 ~, f2@7 ~", // Fmaj7
  H: "[g3,b3,d4]@5 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~@3 [g3,b3,d4]@2, g2", // G
  I: "[~@30 g3@2 ~@6 a3@3 ~ f3@2 c3@3 ~, c3@16 e2@14 ~@2 f2@13 ~@3, c2@7 g3@2 e3@7 ~ c3@2 ~@5, ~@10 e4@15 ~ e4@12 ~@10, ~@12 c4@13 ~@3 b3@4 ~@4 f3@5 ~ [a3,c4]@4 ~@2]/3", // Am
  J: "[~@4 [g3,b3,e4] ~ b3@2 d3@2 ~@2 d3@2 ~@8 g3@4 ~@2 c4@2 ~@14 c4@2 g3@2, g2@6 ~@2 c2@7 ~ e2@7 ~, ~@6 e4@17 ~@3 e4@15 ~ e4@6, ~@3 g3@3 ~ g3@3 c3@6 ~@2 e3@6, ~@10 d4@5 ~@3 g2@12 g3@7 ~@11]/3", // Em
  K: "a3@4 ~@2 a3@3 ~ [a3,c4]@2 ~@2 [g3,e4]@2, f2@3 ~, ~@4 f3@5 ~ f3 ~ c3@4", // Am C
  L: "~@2 [g3,e4] ~ [g3,e4] ~@3 d3@2 ~@2 d3@2 e4@2, g2@3 ~, ~@3 g3@5, ~@3 e4@2 d4@2 ~", // C
  M: "[g3,c4]@6 ~@6 e4@2 g4 ~, c2@7 ~, e4@9 ~ c4@5 ~, c3@2 ~ c3@5", // C5
  N: "[b3,d4,g4]@3 ~@3 b3 d4, e2@7 ~, ~@3 e3@5, ~@10 g3@5 ~", // G
  O: "f3@4 ~@2 f3@2 a3 ~ [f3,a3,c4]@2 c3@2 [g3,b3,d4]@2, f2@3 ~, [a3,c4]@7 ~@9, ~@2 c3@3 ~@3", // F G Am
  P: "~@2 [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,e4]@2 d3@2 [g3,b3,d4]@2 d3 ~, g2@15 ~, d3 ~", // G Em G
  Q: "[g3,c4,e4]@5 c3 [g3,c4,e4] c3, c2@7 ~, c3 ~", R: "[g3,b3,d4,e4]@5 e3 [g3,b3,d4,e4] e3, e2@7 ~",
  S: "[[f3,a3,c4,e4]@11 ~@7 c4 ~ g3@2 d3@2 g3@2 d3@2 ~@2 d3 ~, f2@6 [f3,a3,c4,e4]@2 g2@7 ~, ~@7 d3@3 c4@2 ~@2 [g3,b3]@2]/2", // Fmaj7 G
  T: "[g3,b3,d4,e4]@10 e3@2 [g3,b3,d4,e4]@3 ~, e2@7 ~", // Em7
  U: "[~@8 [g4,b4]@3 ~ [g4,b4]@3 ~ [g4,b4]@3 ~@13, ~@7 [d5,g5]@3 ~ [d5,g5]@3 ~ [d5,g5]@3 ~@14, ~ [e2,e3]@2 ~]/2", // G G5 E
  V: "~@8 [g4,b4]@3 ~ b4@3 ~, ~@7 [d5,g5]@3 ~ [d5,g5]@3 ~@2, ~ [e2,e3]", W: "[a2,a3,c4,e4]@7 ~", X: "[f2,a3,c4,e4]@7 ~",
  Y: "g3@6 ~@2 g3 ~ g3@2 d3@3 ~, g2@15 ~, [b3,d4]@9 ~ [b3,d4]@4 ~@2, d3@2 ~ d3@2 ~@3", // Bm
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@17 A B C ~ D E ~@2 F ~@5 G ~ H ~@5 I ~@6 J K ~@3 A B C ~ D E ~@2 F ~@5 G ~@3 G ~ H ~@5 I ~@6 J K ~@22
>`.pickRestart({
  A: "~@3 g3@3 ~@2", B: "~@8 c3@2 ~@4 g3 ~", C: "~@2 [b3,e4] ~@13", D: "~@3 g3@2 ~@3, ~@2 b2@13 ~", E: "~ c3@4 ~@3",
  F: "~@8 g3 ~@7", G: "~@2 g3 ~@13", H: "~@7 e3", I: "~@4 [g4,b4]@3 ~@9, ~@3 [d5,g5]@3 ~@10", J: "~@12 g4@3 ~",
  K: "~@14 c4 ~",
})).s("gm_piano").gain(0.2)

// drums · kick
const kick = s("bd").struct("<A@7 B A@7 C A@11 D A@21 E A@11 D A@23 F A E A@7 B A@7 B A@4>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@2 x", C: "x ~@2 x!3 ~ x", D: "x ~@3 x ~@2 x", E: "x!8",
  F: "x ~@5 x ~ x ~@4 x ~@2",
})).gain(0.64)

// drums · rim
const rim = s("rim").struct("<~@16 [~ x ~ x]!11 ~@81>").gain(0.72)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@27 A ~@21 B ~@11 A ~@25 B ~@20>".pickRestart({
  A: "x!6 ~@2", B: "x!5 ~@3",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@19 B ~@21 C ~@11 B ~@25 C ~@15 A ~@4>".pickRestart({
  A: "~@5 x!3", B: "x!8", C: "~@2 x!3 ~@2 x",
})).gain(0.24)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@49 [x!2 ~@6] ~@37 [x!2 ~@6] ~@20>").gain(0.16)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@3 A B@3 A B@3 A B C B@12 ~ A B@3 A B@5 A B@7 A@4 B@11 ~ A B@3 A B@3 A B@5 A B@7 A@5 B@11 A B@3 A B@3
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~ x ~ x ~ x!2",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A@3 B A@3 B A@3 B A@2 C D A@3 B A@3 B A@3 ~ A@3 B A@3 B A B A@3 B A B A B A@3 B A@3 B A@3 B A@3 ~ A@3 B A@3 B A@3 B A
  B A@3 B A B A B A B A B A@3 B A@3 B A@3 D A@3 B A@3 B
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~@2 x ~@3 x ~@3 x ~@4 x", D: "~ x ~ x ~@4",
})).gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 [~@7 x] ~@33 [~@5 x!2 ~] ~@37 [~@5 x!2 ~] ~@20>").gain(0.48)

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

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

stack(
  epiano2, bass, bass_soft, acoustic_guitar_steel, string_ensemble_1, string_ensemble_1_soft, string_ensemble_2,
  electric_guitar_clean, piano, piano_soft, kick, rim, snare, snare_soft, low_tom, low_tom_soft, hihat, hihat_soft,
  mid_tom, open_hat, crash
)

More by Tozzi