Strudelify

Non vergognarsi mai

Dalla

KeyC majorTempo98 bpm
0:00/0:00
// Non vergognarsi mai — Dalla
// 98 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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(`<
  ~@9 A B C D A B E F G H C I G H C I G H C J G H C I G H C I K L M N O P Q R S G H C I G H C T K L U N O P V W X Y V Z
  AA AB V W X Y V Z K L M N O P Q R S G H C I G H C I G H C I G H C I G H C I ~@4
>`.pickRestart({
  A: "c2@5 ~ g1@2 c2@2 d2@2 e2@4", B: "a1@4 ~@2 a1@2 g1 ~ g1@4 ~@2", C: "a1@5 ~ g1@2 a1 ~ a1@3 ~@3",
  D: "g1@5 ~ g1 ~ g1@2 g1@2 ~@4", E: "a1@5 ~ g1@2 a1@2 g1@3 ~@3", F: "f1@5 ~ f1@2 g1 ~ g1@2 ~@4",
  G: "c2@6 g1@2 c2@2 d2@2 e2@3 ~", H: "a1@5 ~ a1@2 g1 ~ g1@4 ~@2", I: "g1@5 ~ g1@2 g1 ~ g1@2 ~@4",
  J: "f1@5 ~ f1@2 g1 ~ g1@3 ~@3", K: "f2@5 ~ f2 ~ f2@8", L: "e2@5 ~ e2 ~ e2@8", M: "g2@5 ~ d#2 ~ d#2@8",
  N: "d2@5 ~ d2 ~ d2 ~ d2@6", O: "c#2@5 ~ c#2 ~ c#2 ~ c#2@6", P: "c2@5 ~ c2 ~ c2 ~ c2@6",
  Q: "f1@5 ~ f1 ~ g1 ~ g1 ~ g1@4", R: "a1@5 ~ g1@2 a1@2 g1@2 a1@4", S: "f1@5 ~ f1@2 g1 ~ g1@6",
  T: "g1@5 ~ g1 ~ g1 ~ g1@2 ~@4", U: "d#2@5 ~ d#2 ~ d#2@8", V: "g#1@5 ~ g#1 ~ g#1@7 ~",
  W: "a#1@4 ~@2 a#1 ~ a#1 ~ a#1@6", X: "d#1@5 ~ d#1 ~ d#1@8", Y: "c#1@5 ~ c#1 ~ c#1@8", Z: "a#1@5 ~ a#1 ~ a#1 ~ a#1@6",
  AA: "f1@5 ~ f1 ~ f1@7 ~", AB: "f1@5 ~ f1 ~ f1 ~ f1@6",
})).s("gm_electric_bass_finger").gain(0.57)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@37 A@9 ~@8 A@6 B C@2 ~ B D E@2 B F ~@2 G H A@9 ~@22 I ~>".pickRestart({
  A: "~@2 [c4,g4]!3 ~ [c4,g4] ~@3 [c4,g4]!3 ~ [c4,g4] ~", B: "[g#2,d#3,g#3,c4]",
  C: "[[a#2,d4]@3 [d4,f4]@5, [f3,a#3] ~]/2", D: "[f3,a#3], [a#2,d4]@11 ~@5", E: "[[c4,f4,a#4]@25 [f4,a#4]!7]/2",
  F: "[a#2,f3,a#3,d4]@12 [f3,a#3,d4] ~@3", G: "[g#2,d#3,g#3,c4]@15 ~", H: "[a#2,f3,a#3,d4]", I: "c3",
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.7)

// chords · pad warm
const pad_warm = note(`<
  A@8 ~ B@28 C@2 D@2 E F@2 B@10 G H I J E K L M N O L M P@2 Q R@2 O Q S T U V@2 E W@2 B@22 X@4
>`.pickRestart({
  A: "g2/8", B: "[e3@2 f3 [d3,b3], c4@3 ~]/2", C: "[f3 e3, c4]/2", D: "[d#3 d3, g3]/2", E: "[c#3,c4]",
  F: "[g3 [f3,a3], c4]/2", G: "[f3,a3]", H: "[e3,g3]", I: "[d#3,d#4]", J: "[d3,d4]", K: "[g3,e4]", L: "[d#3,c4]",
  M: "[f3,d4]", N: "[g3,d#4]", O: "[g#3,f4]", P: "[c3,a#3]/2", Q: "[g#3,d#4]", R: "[f4 d#4, a#3]/2", S: "[a#3,f4]",
  T: "[f3,f4]", U: "[e3,e4]", V: "[d#3 d3, [g3,c4]]/2", W: "[g3@2 [f3,a3] [g3,d4], e4@3 ~]/2",
  X: "[[g#2,g#3]@16 [c3,g3]@9 ~@7, c4@25 ~@7]/4", // G# C5
})).s("gm_pad_warm").gain(0.46).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@9 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@2 D@2 E F@2 B@2 A@2 B@2 A@2 B@2 C@2 D@2 E G E H@2 I E J
  K@2 L M N I L M O P D@2 E Q@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 R@4
>`.pickRestart({
  A: "[g3@2 a3 [g3,b3], c4@3 ~]/2", B: "[[a3,c4]@3 [g3,b3]]/2", C: "[[a3,f4] [g3,e4], c4]/2", D: "[d#4 d4, [g3,c4]]/2",
  E: "[g#3,c4]", F: "[~ a3, [c4,e4]]/2", G: "[c4,e4]", H: "[d4 d#4, a#3]/2", I: "[c4,f4]", J: "[a#3,d4]",
  K: "[f3,a#3]/2", L: "[c4,d#4]", M: "[d4,f4]", N: "[g3,d#4]", O: "a#3 a3, f4", P: "[g3,e4]",
  Q: "[~@2 a3 [b3,d4], [c4,e4]@3 ~]/2", R: "[[d#3,g#3]@16 [e3,g3]@9 ~@7, c4@25 ~@7]/4",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.6)

// chords · piano
const piano = note(`<
  ~ A B C D E B C F ~ G H G I@2 J@2 ~ G H G K G H G I@2 J@2 ~ L H L K ~ H M N@5 O P Q R ~@3 M K ~ H L N@6 S T U V S T
  W@2 S T U V S T N@5 X Y Z@2 K M H M ~@2 AA@2 K M AB@2 ~@2 AA@2 ~@2 AC ~ N@2 AD@2
>`.pickRestart({
  A: "~@15 e4, ~@3 f3, ~@13 a3@3, ~@7 c4", B: "d4@12 ~@3 c4, ~@3 c3, ~@13 f3@3, ~@7 a3",
  C: "[d3,b3]@11 ~@4 a3, ~@11 f2@2 c3@3, ~@3 a2, ~@7 f3", D: "[d3,g3]@3 f3",
  E: "d3@12 ~@3 e4, ~@3 [a2,f3], ~@13 a3@3, ~@7 c4", F: "[d3,g3]@3 ~", G: "[a3,c4] [g3,b3]", H: "[a3,c4]",
  I: "[[g3,c4]@3 ~ [f3,a3]@2 [g3,b3]@2, ~@12 e3@3 e4@9 ~@8, ~@13 g3@3 ~@16, ~@7 c4 ~@8]/2", // C5 F G
  J: "[[a3,c4]@11 ~@2 a3 b3 ~ f3@8 [b3,d4]@8, ~@11 a2@5 ~@16, ~@12 e3@3 c4@9 ~@8]/2", K: "[g3,c4]", L: "[a3,c4] ~",
  M: "[a3,c4] [b3,d4]", N: "c4 g4 c4 g4", O: "~@10 f2 c3 e3 ~@2 e4, ~@13 a3@3, ~@7 c4", P: "f3 ~, a3 ~@15",
  Q: "[a3,c4]@10 e2 a2 c3 ~@2 c4, ~@13 e3@3, ~@7 a3", R: "f3 [g3,b3]", S: "[d#3,g#3,c4]", T: "[f3,a#3,d4]",
  U: "[g3,a#3,d#4]", V: "[g#3,c4,f4]", W: "[c4,f4,a#4]/2", X: "c4@8 ~@2 f2 c3 e3 ~@2 e4, ~@13 a3@3, ~@7 c4",
  Y: "f3 b3, a3 ~@15", Z: "[~@2 f3 ~, ~@6 c3 a3 ~@8, ~@13 e3@2 c4@9 ~@8]/2",
  AA: "[~@16 f3@7 ~ [g3,b3]@8, ~@12 c3@3 c4@8 ~@9, ~@13 e3@3 ~@16, ~@7 a3 ~@8]/2", // G
  AB: "[[a3,c4]@12 ~@4 f3@14 ~ b3, ~@6 c3 a3 ~@8, ~@13 e3@2 c4@16 ~]/2", AC: "~@4 e6 g5 b5 c6 g6 e6 b6 c7 g7 ~@3",
  AD: "[c4@2 g4@2 c4@2 g4@2 c4 ~@7, [c2,c3]@9 ~@7]/2", // C
})).s("gm_piano").gain(0.48).pan(0.6)

// chords · electric guitar muted · C5
const electric_guitar_muted = note(`<
  ~@25
  [g4!2 c4!2 g4!2 c4!2 g4!2 c4!2 g4!2 c4!2]!4
  ~@17
  [[c4,g4]!3 ~@5 [c4,g4]!3 ~@5]!7
  [~@2 [c4,g4]!3 ~@3 [c4,g4]!3 ~@5]
  ~@53
>`).s("gm_electric_guitar_muted").gain(0.18).pan(0.6)

// other · synth strings 1
const synth_strings_1 = note("<~@5 A@4 ~@51 B C B C B C B C B C B C B C D E F@7 ~@20 G H I ~>".pickRestart({
  A: "[[d6,g6]@57 ~@7]/4", B: "g6 a#6 d#6 a#6 g6 a#6 d#6 a#6", C: "g6@2 a#6@2 d#6@2 a#6@2 g6@2 a#6@2 d#6@2 a#6 ~",
  D: "g6 a#6 d#6 a#6 g6 a#6 d#6 a#6, ~@4 g5 ~@7 g5 ~@3",
  E: "g6@2 a#6@2 d#6@2 a#6@2 g6@2 a#6@2 d#6@2 a#6 ~, ~@4 g5 ~@7 g5 ~@3", F: "~@4 g5 ~@7 g5 ~@3", G: "~ c6@2 d6",
  H: "e6 f6@3", I: "g6",
})).s("gm_synth_strings_1").gain(0.22).pan(0.2)

// other · pad warm
const pad_warm_2 = note("<~@60 A B@2 ~ A C D@2 A E ~@2 A F ~@33>".pickRestart({
  A: "c3@15 ~", B: "[d3@11 ~ f3@20]/2", C: "d3@11 ~@5", D: "[a#3@25 a#3!7]/2", E: "d3@12 d3 ~@3", F: "d3",
})).s("gm_pad_warm").gain(0.38).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@9 [x ~@2 x!2 ~@3]!94 ~@4>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@60 [~@3 x]!7 [~@5 x!3] [~@3 x]!6 ~@33>").gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<~@9 [x!2 ~@2 x!4]!94 ~@4>").gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@9 [~ x ~@2]!94 ~@4>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 [~@2 x!3 ~@7 x ~@3]!50 [~@2 x!3 ~@7 x ~ x ~] [~@2 x!3 ~@7 x ~@3]!43 ~@4>")
  .gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@9 [~@2 x!2 ~@4]!2 [~@3 x ~@4]!92 ~@4>").gain(0.4)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@11 [~ x ~@2]!92 ~@4>").gain(0.24)

// drums · crash
const crash = s("cr").struct("<~@59 [~@8 x!8] x ~@7 x ~@38>").gain(0.32)

// drums · triangle
const triangle = s("triangles:30").struct("<~@9 [~@10 x ~@2 x ~@2]!94 ~@4>").gain(2.79)

// drums · triangle
const triangle_2 = s("triangles:35").struct("<~@8 [~@3 x] [~@6 x!2]!94 ~@4>").gain(2.79)

stack(
  bass, electric_guitar_clean, pad_warm, string_ensemble_1, piano, electric_guitar_muted, synth_strings_1, pad_warm_2,
  kick, snare, hihat, low_tom, mid_tom, open_hat, open_hat_soft, crash, triangle, triangle_2
)

More by Dalla