Strudelify

Conchiglia di diamante

Tozzi

KeyC majorTempo110 bpm
0:00/0:00
// Conchiglia di diamante — Tozzi
// 110 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 114 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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.

// other · sitar
const sitar = note(`<
  ~@23 A@2 B ~@2 C D E@4 ~@22 A@2 B ~@2 C F ~ A@2 B ~@2 C G ~@6 A@2 B ~@2 C H ~ A@2 B ~@2 C B ~@2 C B ~@2 C B ~@2 C B
  ~@2 I@2 ~@6
>`.pickRestart({
  A: "[~@32 e4@11 ~ e4@3 ~ d4@5 ~ c4@4 ~ d4@5, ~@31 b3@13 ~@20]/2", B: "e4@25 ~@7",
  C: "~@11 e4@3 ~@2 d4@5 ~ c4@4 ~@2 d4@4", D: "c4@7 ~",
  E: "[~@19 [b3,c4]@3 ~@2 [a3,c4]@3 ~ [g3,c4]@53 ~@2 [b3,c4]@3 ~ [a3,c4]@3 ~@2 [g3,c4]@34 ~@2]/4", F: "e4@5 ~@3",
  G: "a3@5 ~@11", H: "e4@11 ~@5", I: "[~@11 e4@3 ~@2 d4@5 ~ c4@4 ~@2 d4@18 ~@2 b3@10 ~@6]/2",
})).s("gm_sitar").gain(0.27).pan(0.6)

// bass · electric bass finger
const bass = note(`<
  A@6 B@2 C B@2 D@2 E F D@2 B E D F E G H I B E D F B J@4 B@2 C B@2 D@2 E F D@2 B E D F E D B F@2 E G H I B E D F E G H
  I B E D F E D B F@2 E G H I B E D F E G H I B E D F B E D K L D H F B E D F E D H F@2 B J@2 M@3
>`.pickRestart({
  A: "[~@20 c2@3 ~ c2@3 ~ c2@46 ~@2 d2@4 a#2@7 ~ c2@3 ~ c2@54 ~@2 c2@3 ~ c2@3 ~ c2@11 ~ c2@3 ~ c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2]/6",
  B: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", C: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ g1@2",
  D: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", E: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  F: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", G: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  H: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", I: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  J: "[c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@7 ~ c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2]/2",
  K: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@2 ~@2 g1@2 ~@2",
  L: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@3 ~ a1@2 ~@2",
  M: "[c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@30 ~@4]/3",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@2 B@2 C@4 D@8 E@2 F G@5 H@8 C@4 I@8 J@3 K@6 L@4 M@8 N@5 O P Q@2 L@4 M@8 R@8 S@4 T@4 U@5 V@7
>`.pickRestart({
  A: "[~@19 [g3,c4,e4]@45]/2", B: "[~@23 [g3,c4,e4]@41]/2", C: "[~@27 [g3,c4,d4]@101]/4",
  D: "[~@31 [g3,c4,d4]@63 ~@33 g4@31 ~ [a3,c4,e4]@32 [g3,c4,d4]@31 ~ [a3,c4,g4]@33, ~@95 [g3,a3,c4]@63 ~@98]/8", // Gsus4 Am Gsus4 Am7
  E: "[~@31 d4@15 ~ e4@15 ~ [a2,d4], ~@31 [c3,g3,c4]@33]/2", F: "~@15 e4@15 ~ [f2,a3,f4]",
  G: "[~@31 [g2,c4,d4,g4]@31 ~ b3@15 ~ a3@15 ~ b3@16 ~@16 d2@30 ~@2 [e2,a3,b3,e4], ~@63 [c#4,e4]@94 ~@3, ~@63 a2@31 ~ f#2@31 ~@34, ~@111 a3@46 ~@3]/5", // Gsus4 Esus4 C#m
  H: "[~@15 g#3@14 ~@2 d4@16 e4@15 ~ d4@15 ~@33 f4@16 ~@16 b3@15 ~ [g3,d4,e4]@97, ~@31 c4@112 ~@113, ~@31 g3@63 ~@162, ~@31 c3@32 a2@31 ~ [f2,a3]@31 ~ [g2,g3,d4]@32 ~@97, ~@79 e4@32 ~@145]/8", // Em7 F G5
  I: "[~@31 [g3,c4,d4]@63 ~@33 g4@31 ~ [a3,c4,e4]@32 [g3,c4,d4]@30 ~@2 [a3,c4,g4]@33, ~@95 [g3,a3,c4]@63 ~@98]/8", // Gsus4 Am Gsus4 Am7
  J: "[~@31 d4@15 ~ e4@15 ~ d4@16 e4@15 ~ [f2,a3,f4], ~@31 c4@65, ~@31 g3@62 ~@3, ~@31 c3@31 ~ a2@32 ~]/3", // F
  K: "[~@31 [g2,c4,d4,g4]@31 ~ [a2,g3]@31 ~ [f2,a3]@31 ~ c3@31 ~ [g2,b3,d4]@33, ~@63 [c4,e4]@95 ~@34, ~@127 g3@65]/6", // Gsus4 A7 F G C
  L: "[~@31 b3@15 ~ a3@15 ~ b3@16 ~@16 d2@30 ~@2 [e2,a3,b3,e4], ~@31 [c#4,e4]@94 ~@3, ~@31 a2@31 ~ f#2@31 ~@34, ~@79 a3@46 ~@3]/4", // Esus4 C#m
  M: "[~@15 g#3@14 ~@2 d4@16 e4@15 ~ d4@15 ~@33 f4@16 ~@16 b3@15 ~ b3@15 ~ a3@15 ~ b3@16 ~@16 d2@30 ~@2 [e2,a3,b3,e4], ~@31 c4@112 ~@16 [c#4,e4]@94 ~@3, ~@31 g3@63 ~@113 a3@46 ~@3, ~@31 c3@32 a2@31 ~ [f2,a3]@31 ~ [g2,g3,d4]@32 a2@31 ~ f#2@31 ~@34, ~@79 e4@32 ~@145]/8", // Esus4 C#m F G5
  N: "[~@15 g#3@14 ~@2 d4@16 e4@15 ~ d4@15 ~@33 f4@16 ~@16 b3@15 ~@2, ~@31 c4@112 ~@17, ~@31 g3@63 ~@66, ~@31 c3@32 a2@31 ~ [f2,a3]@31 ~ [g2,g3,d4]@32 ~, ~@79 e4@32 ~@49]/5", // F G5
  O: "[a2,g3]@31 ~", P: "[f2,a3]@31 ~", Q: "[c3@31 ~ g2@32, g3]/2",
  R: "[~@15 g#3@14 ~@2 d4@16 e4@15 ~ d4@15 ~@33 f4@16 ~@16 b3@15 ~ d4@16 e4@15 ~ d4@15 ~@33 f4@16 [g2,g3,d4], ~@31 c4@112 ~@16 c4@97, ~@31 g3@63 ~@65 g3@63 ~@34, ~@31 c3@32 a2@31 ~ [f2,a3]@31 ~ [g2,g3,d4]@32 c3@32 a2@31 ~ [f2,a3]@31 ~@2, ~@79 e4@32 ~@96 e4@32 ~@17]/8", // G5 F G5 F
  S: "[~@15 b3@15 ~ [a2,g3]@31 ~ f2@31 ~ f4@16 f3@13 ~@3 [g2,g3,d4], ~@31 c4@97, ~@31 e4@63 ~ d2@32 ~, ~@63 a3@63 ~@2]/4", // A7 G5
  T: "[~@15 b3@15 ~ d4@16 e4@15 ~ d4@15 ~@33 f4@16 [g2,g3,d4], ~@31 c4@97, ~@31 g3@63 ~@34, ~@31 c3@32 a2@31 ~ [f2,a3]@31 ~@2, ~@79 e4@32 ~@17]/4", // G5 F
  U: "[~@15 b3@15 ~ [a2,g3]@31 ~ f2@31 ~ f4@16 f3@13 ~@19 b3@17, ~@31 c4@111 ~@18, ~@31 e4@63 ~ d2@32 [g2,g3,d4]@33, ~@63 a3@63 ~@34]/5", // A7 G5
  V: "[~@31 [g3,d4,e4]@122 ~@2 [g3,d4,e4]@60 ~@9]/7", // Em7
})).s("gm_synth_strings_1").gain(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@49 A B C D@2 E@4 F G@2 H E@4 F G@2 H A B C D@2 E@4 F G@2 H E@4 F G@2 H F G@2 I J@2 K L F G@2 I J@2 K M@2 N@6
>`.pickRestart({
  A: "a3 ~ e4 ~ a4 ~ a4 ~ b4 ~ a4 ~ g4 ~ a4 ~", B: "f3 ~ c4 ~ f4 ~ a4 ~ g4 ~ f4 ~ e4 ~ d4 ~",
  C: "c4 ~ g4 ~ c5 ~ c5 ~ f5 ~ e5 ~ d5 ~ c5 ~", D: "g3 ~ d4 ~ g4 ~ d5 ~ c5 ~ b4 ~ a4 ~ g4 ~",
  E: "[a4@31 ~ [b4,b5]@16 [c#5,c#6]@32 [d5,d6]@16 [e5,e6]@16 [b4,b5]@16, a5]/4", F: "[c5,c6]",
  G: "[[d5,d6] [e5,e6]@2 [f5,f6]]/2", H: "[d5,d6]@29 ~@3", I: "[d5,d6]", J: "[e5,e6]/2", K: "[g5,g6]@2 [f5,f6] [e5,e6]",
  L: "[d5,d6] [g5,g6]", M: "[[d5,d6] [g5,g6]@3]/2", N: "[[c5,c6]@23 ~]/6",
})).s("gm_string_ensemble_1").gain(0.23).pan(0.4)

// other · guitar harmonics
const guitar_harmonics = note(`<
  A@2 B@2 C@3 D@4 E F@2 ~ E F@2 ~@3 G H I J K L M N O B@2 C@3 D@4 E F@2 ~ E F@2 ~@45 O P@2 ~ O P@2 ~ O P@2 ~ O P@2 ~@2 O
  B@2 Q@3
>`.pickRestart({
  A: "[~@20 c4@3 ~ c4@2 ~@2 c4@11 ~ c4@3 ~ c4@3 ~ c4@4 b3@4 b3@4 b3@4]/2",
  B: "[b3@3 c4@4 ~ c4@4 c4@6 a3@2 b3@3 a3@4 ~@13 c4@2 ~ c4@3 ~@2 c4@3 b3@3 ~@2 b3@3 b3@3 ~@2, ~@27 c4@11 ~@26, ~@7 g3@9]/2",
  C: "[b3@4 c4@3 ~ c4@2 ~ c4@7 a3@2 b3@3 a3@4 ~ [g3,c4]@68]/3", // C5
  D: "[~@8 c4@3 c4@3 ~ c4@4 b3@4 ~ b3@3 b3@4 b3@3 ~ c4@4 c4@4 c4@6 ~@2 b3@4 a3@4 ~ [g3,c4]@68, ~@25 a3 ~@38]/4", // C5
  E: "~@2 c4!3 b3!3", F: "[b3 c4!4 b3!2 c4@9]/2", G: "[a3,e4]", H: "[f#3,c#4]@31 ~", I: "[a3,d4]@31 ~",
  J: "[b3,e4]@31 ~", K: "[g3,c4]@31 ~", L: "[e3,a3]@31 ~", M: "[f3,c4]@31 ~", N: "[g3,d4]@31 ~",
  O: "~@8 c4@3 ~ c4@3 ~ c4@4 b3@4 b3@4 b3@4", P: "[b3@3 c4@4 ~ c4@4 c4@6 a3@2 b3@3 a3@4 ~ g3@36]/2",
  Q: "[b3@4 c4@3 ~ c4@2 ~ c4@7 a3@2 b3@3 a3@4 ~ [g3,c4]@60 ~@8]/3", // C5
})).s("gm_guitar_harmonics").gain(0.27).pan(0.7)

// chords · distortion guitar
const distortion_guitar = note(`<
  A@4 B@5 ~@12 C@2 D E F G H I J@8 ~@12 K L M N@2 C@2 D E F G H I C@2 D E F G H I K L M N@2 C@2 D E F G H I C@2 D E F G
  H I F G H I G H D I F G H I G H D O@2 P@6
>`.pickRestart({
  A: "[~@5 [c3,g3]!2 [c3,g3]@15 [c3,g3] [c3,g3]@9]/4", B: "[~@5 [c3,g3]!2 [c3,g3]@33]/5",
  C: "[a2@31 ~ [f#2,c#3]@31 ~, e3@63 ~]/2", D: "[d3,a3]@31 ~", E: "[e3,b3]@31 ~", F: "[c3,g3]@31 ~", G: "[a2,e3]@31 ~",
  H: "[f2,c3]@31 ~", I: "[g2,d3]@31 ~",
  J: "[[c3,g3]@51 ~ [c3,g3]@4 [c3,g3]@4 [c3,g3]@56 [c3,g3]@4 [c3,g3]@4 [c3,g3]@131 ~]/8", // C5
  K: "~@3 [a3,e4]@5, a2, ~@8 e3@23 ~", L: "~@3 [f3,c4]@5, f2, ~@8 c3@23 ~", M: "~@8 g3@3 ~ [g3,c4]@20, c3",
  N: "~@3 [g3,d4]@5, g2, ~@8 d3@23 ~", O: "[[g2,d3]@31 ~]/2",
  P: "[[c3,g3]@51 ~ [c3,g3]@4 [c3,g3]@4 [c3,g3]@56 [c3,g3]@4 [c3,g3]@4 [c3,g3]@60 ~@8]/6", // C5
})).s("gm_distortion_guitar").gain(0.34)

// drums · kick
const kick = s("bd").struct(`<
  A ~ B ~ A C D@2 E D@3 E D@7 F D@7 E D G H I C D@2 E D@3 E D@3 J D@3 K D@3 E L D@11 J D@3 E D@3 E M D@3 K D@3 N D@3 F
  D@3 O D@15 F D@2 P H I ~@2
>`.pickRestart({
  A: "~@5 x!3", B: "~@6 x!2", C: "~@3 x!2 ~@2 x", D: "x ~@2 x!2 ~@3", E: "x ~@2 x ~@2 x ~ x ~@7",
  F: "x ~@5 x ~ x ~@2 x ~@4", G: "x ~@2 x!5", H: "~@3 x!2 ~@3", I: "x ~ x ~@3 x!2 ~@2 x ~ x ~ x ~",
  J: "x ~@2 x!2 ~@2 x", K: "x ~@5 x ~ x ~@2 x ~@2 x ~", L: "x ~@2 x ~@2 x ~ x ~@5 x ~", M: "x ~@5 x ~@3 x ~@2 x ~@2",
  N: "x ~@2 x ~@2 x ~ x ~@2 x ~@4", O: "x ~@6 x", P: "x ~@5 x!2 ~@2 x ~ x ~ x ~",
})).gain(0.72)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@44 A ~@3 B ~@8 A ~@11 C ~@12 A ~@15 A ~@7 A ~@7>".pickRestart({
  A: "~@7 x", B: "~@14 x!2", C: "~@15 x",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 A ~@19 B ~@12 C ~@7 D ~@37 C ~@6>".pickRestart({
  A: "~@5 x ~ x", B: "~@12 x!2 ~@2", C: "~@14 x!2", D: "~@13 x!2 ~",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A ~@15 A ~@11 A ~@3 A ~@3 A ~@12 A ~@15 A ~@8 A ~@15 A ~@15>".pickRestart({
  A: "~@7 x",
})).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@48 [~@5 x ~@2] ~@58 [~@11 x ~@4] ~@6>").gain(0.72)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@9 A ~@25 A ~ A ~@16 B C@2 D B C@2 E B C@2 D F C@2 G ~@5 B C@2 D B C@2 D B C@2 D B C@2 A B C@3 F C@2 E B C@3 F C@2 E
  H ~@6
>`.pickRestart({
  A: "x", B: "~ x ~ x!5", C: "x!8", D: "x!7 ~", E: "x!6 ~@2", F: "~ x!7", G: "x!5 ~@3", H: "~ x!4 ~@3",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@54 [x!4]!16 ~@5 [x!4]!33 ~@6>").gain(0.72)

stack(
  sitar, bass, synth_strings_1, string_ensemble_1, guitar_harmonics, distortion_guitar, kick, snare, hihat, low_tom,
  mid_tom, open_hat, high_tom, crash, ride, tambourine
)

More by Tozzi