Strudelify

Il Silenzio

Nini Rosso

KeyB♭ majorTempo68 bpm
0:00/0:00
// Il Silenzio — Nini Rosso
// 68 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 2 "BASS" named as a bass, played on electric bass finger (its electric guitar jazz patch is not one)
// note: Full arrangement: all 48 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(68/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 · "BASS"
const bass = note("<~@6 A@2 B C D E A@2 F G E H I J K H B@2 L E B@4 M D K B@2 N O P Q B R S L K T U ~@2>".pickRestart({
  A: "bb1@7 ~@3 f2@2 bb2@8 ~@2 f2@2", B: "bb1@7 ~@3 f2@2 bb2@7 ~@3 f2@2", C: "bb1@7 ~@3 bb1@2 eb2@8 ~@2 eb2@2",
  D: "f2@7 ~@3 f2@2 c2@7 ~@3 c2@2", E: "f2@8 ~@2 f2@2 c2@7 ~@3 f2@2", F: "bb1@8 ~@2 f2@2 bb2@7 ~@3 bb1@2",
  G: "f2@9 ~ f2@2 c2@8 ~@2 c2@2", H: "bb1@4 ~ f2 bb2@4 ~ f2", I: "bb1@4 ~ f2 bb2@4 ~ bb1",
  J: "f2@8 ~@2 f2@2 c2@7 ~@3 c2@2", K: "f2@7 ~@3 f2@2 c2@7 ~@3 f2@2", L: "bb1@7 ~@3 f2@2 bb2@7 ~@3 bb1@2",
  M: "bb1@8 ~@2 bb1@2 eb2@7 ~@3 eb2@2", N: "bb1@3 ~@2 f2 bb2@3 ~@2 bb1", O: "f2@7 ~@3 f2@2 c2@6 ~@4 c2@2",
  P: "f2@7 ~@3 f2@2 c2@6 ~@4 f2@2", Q: "bb1@3 ~@2 f2 bb2@4 ~ f2", R: "bb1@8 ~@2 f2@2 bb2@7 ~@3 f2@2",
  S: "bb1@6 ~@4 f2@2 bb2@7 ~@3 f2@2", T: "bb1@7 ~@3 f2@2 bb2@7 ~@3 f1@2", U: "bb1",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@5 A B@3 C@5 D@7 E@8 ~ F@5 G@8 H I@3 ~>".pickRestart({
  A: "~@6 [a4,eb5,f5]@2 ~@4 [a4,eb5,f5]@11 ~", B: "[f4,bb4,d5]/3",
  C: "[~@12 g4@11 ~ c5@48 [bb4,d5]@48, ~@12 eb5@59 ~@49, ~ f4@4, ~@12 a4@23 ~@25]/5", // Bb
  D: "[~@24 [a4,eb5]@48 [bb4,d5]@47 ~ eb5@47 ~, f5@167 ~, ~@23 c5@49 ~@47 [a4,c5]@46 ~@3]/7", // Adim Bb Am
  E: "[d5@96 ~ a4@21 ~@2 [bb4,d5]@72, f4, bb4@47 ~ [c5,eb5]@12 ~@36]/8", // Bb Cm
  F: "[~@12 [g4,bb4]@10 ~@2 c5@47 ~ d5@48, ~@12 eb5@59 ~@49, ~@24 f4@95 ~, ~@24 a4@46 ~ bb4@49]/5", // Gm
  G: "[~@23 [a4,c5]@47 ~@2 bb4@117 ~@3, f5@3 ~@5, ~@23 eb5@42 ~@6 [f4,d5]@121]/8", H: "~ a4@21 ~@2, [c5,eb5]",
  I: "[[bb4,d5]@3 ~]/3", // Bb
})).s("gm_string_ensemble_1").gain(0.22).pan(0.4)

// chords · tremolo strings · "TREMOLOSTR"
const tremolo_strings = note(`<
  ~@6 A B C@2 D@2 E F G H I J K L M N O@3 P Q ~@7 R S H T U ~ V W X Y Z@2 ~@2
>`.pickRestart({
  A: "~@6 [d4,f4]@5 ~ [d4,f4,bb4]@11 ~", B: "[d4,f4,bb4]@5 ~ [f4,bb4,d5]@6",
  C: "[~@6 [bb4,d5,f5]@5 ~ [f4,bb4,d5]@4 ~@2 [d4,f4]@18 [eb4,g4]@12, ~@9 bb4@14 ~]/2", // Bb Dm Eb
  D: "[[c4,f4]@6 c5@2 ~ eb5@3 ~@6 eb4@5 ~, a4@23 ~ a4@22 ~@2, ~@9 c5@14 ~]/2", E: "[d4,f4,bb4]@23 ~",
  F: "d5@9 [c5,eb5] [d5,f5] [c5,eb5] [bb4,d5]@9 [c5,eb5] [d5,f5] [c5,eb5], f4@11 ~@13, d4@5 ~@19, bb4 ~@23", // Cm Dm Cm Bb Cm Dm Cm
  G: "[bb4,d5,f5]@3 ~ [f4,bb4,d5]@2 ~@2 [d4,f4,bb4]@2 ~@2 [bb4,d5,f5]@2 ~@2 [f4,bb4]@2 ~@2 [d4,f4,bb4]@2 ~@2, ~@16 d5 ~@7", // Bb Bb5 Bb
  H: "[c4,eb4,f4]@7 ~", // F7
  I: "[a4,c5,eb5]@3 ~ [eb4,a4,c5]@3 ~ [c4,f4,a4]@3 ~ [a4,c5,eb5]@3 ~ [eb4,f4,a4]@3 ~ [c4,eb4,f4]@3 ~", // Adim F Adim F7
  J: "[d4,f4,bb4]@7 ~", K: "[bb4,d5,f5] ~ [f4,bb4,d5] ~ [d4,f4,bb4] ~ [bb4,d5,f5] ~ [f4,bb4,d5] ~ [d4,f4,bb4] ~",
  L: "~ e5 ~ g5 f5 g5 a5 g5 a5 c6 b5 c6, f5 ~ f5 ~@9, ~ [eb4,a4]@21 ~@2, ~@5 f4@16 ~@3", // Ebdim
  M: "[a4,c5,eb5]@3 ~ [f4,a4,c5]@3 ~ [c4,f4,a4]@3 ~ [a4,c5,eb5]@3 ~ [eb4,f4,a4]@3 ~ [c4,f4,a4]@3 ~", // Adim F Adim F7 F
  N: "[d4,f4,bb4]@17 ~@7", // Bb
  O: "[~@6 d4@6 ~@24 d5@14 ~@4 [bb4,d5]@5 ~ [f4,bb4]@6 [d4,f4]@5 ~, ~@6 f4@31 ~@35, ~@9 d4@8 ~@19, ~@15 bb4@10 ~@11]/3", // Bb Bb5 Dm
  P: "[f4,a4]@16 ~@2 [f4,a4]@5 ~", Q: "[d4,bb4]@3 ~, f4 ~@3",
  R: "[bb4,d5]@9 [c5,eb5] [d5,f5] [c5,eb5] [bb4,d5]@9 [c5,eb5] [d5,f5] [c5,eb5]", // Bb Cm Dm Cm Bb Cm Dm Cm
  S: "[bb4,d5,f5]@3 ~ [f4,bb4,d5]@2 ~@2 [d4,f4,bb4]@2 ~@2 [bb4,d5,f5]@2 ~@2 [f4,bb4,d5]@3 ~ [d4,f4,bb4]@3 ~", // Bb
  T: "[a4,c5,eb5]@3 ~ [eb4,a4,c5]@3 ~ [c4,f4,a4]@4 [a4,c5,eb5]@3 ~ [eb4,a4]@3 ~ [c4,f4,a4]@2 ~@2", // Adim F Adim Ebdim F
  U: "[d4,bb4], f4@11 ~@13", V: "~@6 [d4,f4]@17 ~", W: "[d4,f4] [f4,bb4] [bb4,d5]@2",
  X: "~@6 [bb4,d5]@5 ~ [f4,bb4]@5 ~ [d4,f4]@5 ~", Y: "[f4,a4]@17 ~ [f4,a4]@4 ~@2", Z: "[d4,bb4]/2",
})).s("gm_tremolo_strings").gain(0.35).pan(0.4)

// other · piano · "A.PIANO"
const piano = note("<A ~@5 B@3 C D E F B@2 G H I F H D B@4 D B I F@2 J E H B F B E G F K B F K D L@2 ~@2>".pickRestart({
  A: "db-1", B: "~ d4 f4 bb4 d5 f5 ~ d4 f4 bb4 d5 f5", C: "~ d4 f4 bb4 d5 f5 ~@2 g4 bb4 eb5 g5, ~@14 eb4@5 ~@5",
  D: "~ c4 f4 a4 c5 f5 ~ c4 f4 a4 c5 f5", E: "~@2 c4@2 f4@2 a4@2 c5@2 f5@2 ~@2 c4@2 f4@2 a4@2 c5@2 f5 ~",
  F: "~@2 d4@2 f4@2 bb4@2 d5@2 f5 ~@3 d4@2 f4@2 bb4@2 d5@2 f5 ~",
  G: "~@2 c4@2 f4@2 a4@2 c5@2 f5 ~@3 c4@2 f4@2 a4@2 c5@2 f5 ~",
  H: "~@2 c4@2 f4@2 a4@2 c5@2 f5 ~@3 c4@2 f4@2 a4@2 c5@2 f5@2",
  I: "~@2 d4@2 f4@2 bb4@2 d5@2 f5@2 ~@2 d4@2 f4@2 bb4@2 d5@2 f5 ~",
  J: "~ d4 f4 bb4 d5 f5 ~@2 g4 ~ eb5 g5, ~@7 eb4@2 bb4@2 ~",
  K: "~@2 d4@2 f4@2 bb4@2 d5@2 f5 ~@3 d4@2 f4@2 bb4@2 d5@2 f5@2",
  L: "[~@2 d4@2 f4@2 bb4@2 d5@2 f5 ~@3 d4@2 f4@2 bb4@2 d5@2 f5@6 ~@20]/2",
})).s("gm_piano").gain(0.38).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@6 [x ~@4 x!2 ~@5]!39 ~@3>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@6 [~ x ~ x]!39 ~@3>").gain(0.4)

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

stack(bass, string_ensemble_1, tremolo_strings, piano, kick, snare, hihat)