Strudelify

Dio non c'e

Masini

KeyB minorTempo45 bpm
0:00/0:00
// Dio non c'e — Masini
// 45 bpm, 2/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 2/4 at bar 1) are rendered on a constant 2/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(45/2)

// 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 · percussive organ · "hammond"
const percussive_organ = note(`<
  ~@44 A B A B C@2 D E F G F G H@2 I J K L M K N O P N Q R S R S T U V W X Y X Y Z AA AB AC AD AE AD AE AF@2 AG AH AI AJ
  AI AJ AK
>`.pickRestart({
  A: "[b4,e5,g5] [c#5,e5,a5]", B: "e5 d5, [a4,f#5]", C: "[[d5,f#5] g#5 ~ [a4,f#5], b4@3 ~, ~ e5@2 ~, ~ c#5]/2",
  D: "[d5,f#5] [e5,g#5], b4", E: "[c#5,e5,a5]", F: "[c#5,f#5,a5] [d#5,f#5,b5]", G: "f#5 e5, [b4,g#5]",
  H: "[[e5,g#5] a#5 ~ [b4,g#5], c#5@3 ~, ~ f#5@2 ~, ~ d#5]/2", I: "[e5,g#5] [f#5,a#5], c#5", J: "e5 d#5, [f#5,b5]",
  K: "[b4,g#5]", L: "[b4,g5]", M: "[b4,f#5]", N: "[d#5,a#5]", O: "[d5,b5]", P: "[f#5,c#6]", Q: "[f5,a#5]",
  R: "[f5,c6] [f5,d6]", S: "[g5,a#5]", T: "[d#5,g5] [f5,a5], c6", U: "[d5,c6] [d5,a#5]", V: "[d#5,c6] [f5,a5]",
  W: "d#5 d5, a#5", X: "[g5,d6] [g5,e6]", Y: "[a5,c6]", Z: "[f5,a5] [g5,b5], d6", AA: "[e5,d6] [e5,c6]",
  AB: "[f5,d6] [g5,b5]", AC: "f5 e5, c6", AD: "[a5,e6] [a5,f#6]", AE: "[b5,d6]",
  AF: "[[g5,b5] [a5,c#6] [f#5,e6] [f#5,d6], e5@3 ~]/2", AG: "[g5,e6] [a5,c#6]", AH: "g5 f#5, d6",
  AI: "[b5,f#6] [b5,g#6]", AJ: "[c#6,e6]", AK: "[a5,c#6,f#6]@2 [b5,d#6] ~",
})).s("gm_percussive_organ").gain(0.06).pan(0.7)

// bass · fretless bass · "bass"
const bass = note(`<
  ~@44 A B C D E F G H I@2 J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AG AI AJ AK AJ AL AM AN AM AO A AP
  A AQ AR AS AR AT AU
>`.pickRestart({
  A: "e1 a1", B: "d1@12 ~@6 d2 ~ d1@4", C: "e1@11 ~ a1@11 ~", D: "d2@11 ~ c2@11 ~", E: "b1@5 ~ e1@5 ~",
  F: "a1@11 ~ f#1@9 ~@3", G: "b0@5 ~ e1@4 ~@2", H: "a1@3 e1@2 a1 g1@5 ~",
  I: "[f#1@10 ~@2 b1@9 ~@2 e1@12 ~@7 e2 ~ e1@4]/2", J: "f#1@11 ~ b1@11 ~", K: "e1@6 b1@2 e2@2 d#2@2 d2@6 d1@5 ~",
  L: "c#1@5 ~ f#1@5 ~", M: "b0@11 ~ g#1@12", N: "c#1@5 ~ f#1@4 ~@2", O: "b1 a1", P: "g#1", Q: "g1@19 ~ g1@4", R: "f#1",
  S: "f1", T: "d#2 d#1", U: "d1@6 d2@3 g#1 a1@2", V: "c#2 c#1", W: "c1@3 c2!2 c2@5 c1@2", X: "d1@6 d2@2 d1!3 d#1",
  Y: "f1@6 a#1@4 ~ a#1", Z: "d#1@12 ~@6 d#1 ~ f1@3 ~", AA: "f1 a#1", AB: "d#2@6 a#1@2 d#2 ~ d2@2 c#2@6 c#1@5 ~",
  AC: "c2 f1", AD: "a#1 g1", AE: "c1 f1", AF: "a#1 g#1", AG: "g1 c1", AH: "f1@12 ~@6 d1 ~ f1@2 a1@2",
  AI: "f1@7 ~ a1@2 f2@2 d#2@7 ~ d#1@3 ~", AJ: "d1 g1", AK: "c1 a1", AL: "c2@8 g1@2 c2@2 a#1@11 ~", AM: "a1 d1",
  AN: "g1@17 ~ e1 ~ g1@2 b1@2", AO: "g1@7 ~ b1@2 g2@2 f2@7 ~ f1@3 ~", AP: "d1 b1", AQ: "d2@8 a1@2 d2@2 c2@11 ~",
  AR: "b1 e1", AS: "a1@17 ~ f#1 ~ a1@2 c#2@2", AT: "a1@7 ~ c#2@2 a2@2 g2@7 ~ g1@3 ~", AU: "f#1@12 b1@11 ~",
})).s("gm_fretless_bass").gain(0.35)

// chords · synth brass 2 · "tappeto"
const synth_brass_2 = note(`<
  A@7 B C B D E F E G H I J K L M L N O P Q R S T U V W X Y Z AA AB AC AB AD AE AF AG AH ~@54
>`.pickRestart({
  A: "[[b2,a3,d4]@7 [e3,g#3] [a2,b3,c#4]@2 [b2,a3,d4] [e3,g#3,b3] [a2,b3,c#4] [g2,a3,c#4], e4]/7", // Bm7 E A Bm7 E A A7
  B: "[f#2,c#4] [b2,d#4], [a3,f#4]", C: "f#4 e4, [e2,g#3,b3]", D: "[e2,e3,a3] [d3,g#3,e4], b3",
  E: "[c#3,g#3,b3,e4] [f#2,a#3,c#4,f#4]", F: "[b2,c#4,d#4,f#4]", G: "[b2,c#4,d#4,f#4] [a2,b3,d#4,f#4]",
  H: "[g#2,b3,d#4,g#4] [c#2,g#3,c#4,f4]", I: "g#4 f#4, [f#2,a#3,c#4]", J: "[g#2,g#3,b3,d#4] [c#3,g#3,c#4,f4]",
  K: "[f#2,b3] [e2,a#3], [c#4,f#4]", L: "[d#2,a#3,d#4,f#4] [g#2,c4,d#4,g#4]", M: "[c#2,g#3,c#4,f4]",
  N: "c#2 b1, [g#3,c#4,f4]", O: "[a#1,f4] [g1,d#4], [c#4,a#4]", P: "[g#1,d#4] [f1,f4], [g#3,c4]",
  Q: "[a#1,a#3,c#4,f4] [d#1,a#3,d#4,g4]", R: "[g#1,c#4] [f#1,c4], [g#3,d#4]", S: "[f1,c4,f4,g#4]", T: "[e1,b3,e4,g#4]",
  U: "[d#2,c4,d#4,g#4]", V: "[d2,g#3,c4,f4]", W: "[c2,g3,c4,d#4]", X: "[b1,b3,d#4]", Y: "[a#1,g3,a#3,d#4]",
  Z: "[a1,g3,c4,d#4]", AA: "[b1,g3,g4]", AB: "[d2,a3,d4,f4] [g1,b3,d4,g4]", AC: "[c2,g3,c4,e4] [a1,a3,c4,e4]",
  AD: "[c2,g3,c4,e4] [a#1,g3,c4,e4]", AE: "[a1,a3,c4,e4] [d2,a3,d4,f#4]", AF: "[g1,a4] [e1,g4], [b3,d4]",
  AG: "[a1,c4,e4,g4] [d2,a3,d4,f#4]", AH: "[g1,g3,c4,d4] [f1,g3,b3,d4]",
})).s("gm_synth_brass_2").gain(0.24)

// other · electric guitar clean · "guit 1"
const electric_guitar_clean = note("<~@20 A ~@3 B ~@12 C ~@3 D ~@56>".pickRestart({
  A: "c#3@2 g#3@2 g#3@2 g#4@5 ~", B: "~@8 c4@5 d#4@9 ~@2, ~@2 d#3@5 ~@5", C: "~@2 g3@2 c4@2 g4@5 ~",
  D: "~@3 d3@5 g3@4 d4@9 ~@3",
})).s("gm_electric_guitar_clean").gain(0.08).pan(0.2)

// other · string ensemble 2 · "archi 2"
const string_ensemble_2 = note(`<
  ~@11 A@2 B@3 C D@2 E C E C F G F H I J@8 K@3 L M@2 N O P Q R S T U V@2 ~@8 W X Y@2 Z AA AB AC AD ~ AE AF AG AH AI AJ
  AK AL AM AN AO AP AQ AP AR M@2 AS AT AU AV AU AW T AX AY AZ BA
>`.pickRestart({
  A: "[c#4@3 d#4]/2", B: "[c#4@3 d#4@2 f4]/3", C: "c#4", D: "[b3 c#4@3]/2", E: "a#3 c4", F: "c#4 d#4", G: "c4",
  H: "c#4 c4", I: "g#3@15 a#3@4 c4@4 ~",
  J: "[b3@22 ~@49 [g3,g5]@24 ~ g#3@23 ~ g5@12 a#5@11 c6@24 d6@23 ~@2, g#3@72 ~@23 g#5@25 a#3@23 ~@49, ~@22 c4@74 ~@23 a#5@13 ~@60]/8", // G
  K: "[f4 d5@2 c5@2 b4]/3", L: "d5 g4", M: "[a4@9 g4 a4 b4]/2", N: "c5@12 d5@11 ~", O: "g4!2 a4 b4 d5 g5", P: "g5 a4",
  Q: "f#4@4 e4 f#4", R: "g4@3 a4@2 b4", S: "f#4@4 e4 d4", T: "d5 e5", U: "c#5@4 b4 c#5", V: "[d5 e5@3]/2",
  W: "b4@15 ~ c#5@4 d#5@4", X: "b4@19 ~ c#5@4", Y: "[d#4@43 ~ f4@4]/2", Z: "f#4@15 ~ g#4@4 a#4@4", AA: "b4@19 ~ b4@4",
  AB: "c#5", AC: "d#5", AD: "f5", AE: "~@4 f4 g4", AF: "g#4@3 a#4@2 c5", AG: "g4@15 ~ f4@4 d#4@4", AH: "g3 a3",
  AI: "c4@3 a#3 c4 d4", AJ: "d#4 f4", AK: "a#4@19 ~@5", AL: "a#4 c5", AM: "a4@4 g4 a4", AN: "a#4@3 c5@2 d5",
  AO: "a4@4 g4 f4", AP: "f5 g5", AQ: "e5@4 d5 e5", AR: "c6@5 ~", AS: "c5@3 d5@2 e5", AT: "b4@15 ~ a4@4 g4@4",
  AU: "g4 a4", AV: "f#4@15 ~ e4@4 f#4@4", AW: "d5@19 ~@5", AX: "c#5@15 ~ b4@4 c#5@4", AY: "d5@3 e5@2 f#5",
  AZ: "c#5@4 b4 a4", BA: "a4 ~ b4 ~",
})).s("gm_string_ensemble_2").gain(0.12).pan(0.3)

// other · string ensemble 2 · "archi 1"
const string_ensemble_2_2 = note(`<
  ~@10 A@3 B@2 C@2 D E@3 F@2 G H@2 I J@2 K L M@5 N@3 O P@2 Q@2 R S T U V W X@2 ~@7 Y Z AA AB@2 AC AD AE AF AG ~ AH AI AJ
  AK AL AM AN AO AP AQ AR AS AT AS AU P@2 AV AW AX AY AX AZ V BA BB BC BD
>`.pickRestart({
  A: "[e4 f#4]/3", B: "[e4 f#4@3]/2", C: "[g#4@3 f#4]/2", D: "d#4 f4", E: "[f#4 g#4]/3", F: "[f#4 g#4@3]/2",
  G: "a#4 g4", H: "[g#4@7 a#4@2 g4@3]/2", I: "g#4", J: "[g#4@47 ~]/2", K: "d#4", L: "f4",
  M: "[g4@24 g#4@24 g4@12 a#4@12 c5@23 ~ d5@23 ~, d#4@95 g4@24 ~]/5", N: "[f5 d6@2 c6@2 b5]/3", O: "d6 g5",
  P: "[a5@9 g5 a5 b5]/2", Q: "[c6@12 d6@11 g5@4 g5@4 a5@4 b5@4 d6@4 g6@4 ~]/2", R: "g6 a5", S: "f#5@4 e5 f#5",
  T: "g5@3 a5@2 b5", U: "f#5@4 e5 d5", V: "d6 e6", W: "c#6@4 b5 c#6", X: "[d6 e6@3]/2", Y: "~@19 d#5 e5 f#5 g#5 a#5",
  Z: "b5@15 ~ c#6@4 d#6@4", AA: "b5@19 ~ c#6@4", AB: "[d#5@43 ~ f5@4]/2", AC: "f#5@15 ~ g#5@4 a#5@4",
  AD: "b5@19 ~ b5@4", AE: "c#6", AF: "d#6", AG: "f6", AH: "~@4 f5 g5", AI: "g#5@3 a#5@2 c6", AJ: "g5@15 ~ f5@4 d#5@4",
  AK: "g4 a4", AL: "c5@3 a#4 c5 d5", AM: "d#5 f5", AN: "a#5@19 ~ d5 [d#5,f5] g5 a5", AO: "a#5 c6", AP: "a5@4 g5 a5",
  AQ: "a#5@3 c6@2 d6", AR: "a5@4 g5 f5", AS: "f6 g6", AT: "e6@4 d6 e6", AU: "g6@19 ~ c5 [d5,e5] f5 g5",
  AV: "c6@3 d6@2 e6", AW: "b5@15 ~ a5@4 g5@4", AX: "g5 a5", AY: "f#5@15 ~ e5@4 f#5@4", AZ: "d6@19 ~ f#5 [g5,a5] b5 c#6",
  BA: "c#6@15 ~ b5@4 c#6@4", BB: "d6@3 e6@2 f#6", BC: "c#6@4 b5 a5", BD: "a5@2 b5 ~",
})).s("gm_string_ensemble_2").gain(0.13).pan(0.7)

// other · acoustic guitar steel · "guit 1"
const acoustic_guitar_steel = note("<~@20 A ~@3 B ~@12 C ~@3 D ~@56>".pickRestart({
  A: "c#3@4 d#4@4 c#4@4 d#4@11 ~", B: "~@4 g#3@4 a#3@5 d#4@10 ~", C: "~@2 g3@2 ~@2 g4@5 ~, ~ c4@2",
  D: "~@4 d3@3 g3@5 d4@10 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.8)

// chords · synth strings 1 · "interventi"
const synth_strings_1 = note(`<
  ~@52 A@2 B C D E D F G H I J K L M N O P Q P R S T S U V W V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK ~@3
>`.pickRestart({
  A: "[[a3,c#4] [b3,d#4] [g#3,b3]@2, f#4@3 ~]/2", B: "[a3,c#4,f#4] [f#3,b3,d#4]", C: "f#4 e4, [g#3,b3]",
  D: "[g#3,c#4,e4] [a#3,c#4,f#4]", E: "[f#3,c#4] [g#3,b3], d#4", F: "e4 d#4, [f#3,b3]", G: "[g#3,b3,d#4]",
  H: "[g3,b3,d4]", I: "[f#3,b3,d#4]", J: "[f3,g#3,b3]", K: "[d#3,f#3,a#3]", L: "[d3,f#3,b3]", M: "[f#3,a#3,c#4]",
  N: "[f#3,a#3,c4]", O: "[a#3,d4,f4]", P: "[f3,g#3,c4] [f3,a#3,d4]", Q: "f4 d#4, [g3,a#3]",
  R: "[g3,a#3,f4] [g3,a#3,d#4]", S: "[g3,c4,d#4] [a3,c4,f4]", T: "[f3,a#3,d4] [g3,a#3,d4]",
  U: "[f3,a#3,d#4] [f3,a#3,d4]", V: "[g3,a#3,d4] [g3,c4,e4]", W: "[f3,a3,c4]", X: "[f3,a3,d4] [g3,b3,d4]",
  Y: "[g3,d4,e4] [a3,c4,e4]", Z: "[a3,d4,f4] [b3,d4,g4]", AA: "[g3,c4,f4] [g3,c4,e4]", AB: "[a3,c4,e4] [a3,d4,f#4]",
  AC: "[b3,d4,a4] [b3,d4,g4]", AD: "[c4,e4,g4] [a3,d4,f#4]", AE: "[g3,b3,d4] [b3,d4,g4]", AF: "[b3,e4,g4] [a3,c#4,e4]",
  AG: "[f#3,a3,e4] [f#3,b3,d4]", AH: "[g3,b3,e4] [a3,c#4,e4]", AI: "[a3,d4,g4] [a3,d4,f#4]",
  AJ: "[b3,d4,f#4] [b3,e4,g#4]", AK: "[c#4,e4,b4] [c#4,e4,a4]",
})).s("gm_synth_strings_1").gain(0.09).pan(0.4)

// chords · synth strings 1 · "interventi" · soft notes · D E A F#m B
const synth_strings_1_soft = note(`<
  ~@95
  [[d4,f#4,a4] [b3,e4,g#4]]
  [[a3,c#4,e4] [c#4,e4,a4]]
  [[c#4,f#4,a4]@12 [b3,d#4,f#4]@11 ~]
>`).s("gm_synth_strings_1").gain(0.04).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@44 A@7 B C D A@4 C B C E A@4 C B F A@6 C@2 A@3 D C A@2 G A@7 H A@5>".pickRestart({
  A: "x", B: "x ~@4 x ~@6", C: "x ~@10 x", D: "x ~@4 x", E: "x ~@2 x", F: "x ~@4 x ~@5 x", G: "x!2 ~@2",
  H: "x ~@4 x ~@3 x ~@2",
})).gain(0.31)

// drums · clap
const clap = s("cp").struct("<~@44 [~ x]!7 ~@47>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@51 A B@16 C B@7 D B@15 C B@5>".pickRestart({
  A: "~@6 x ~ x!2 ~@2", B: "~ x", C: "~@3 x ~ x", D: "~@3 x ~@2 x!2 ~@2 x ~",
})).gain(0.36)

// drums · low tom
const low_tom = s("lt").struct("<~@36 A ~@22 B ~@8 C ~@15 B ~@13>".pickRestart({
  A: "x", B: "~@11 x", C: "~@8 x!2 ~@2",
})).gain(0.31)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@44 A B C B C B C D A B C B A B C E A B A F C B A F G ~@29>".pickRestart({
  A: "~ x ~ x!3", B: "x!6", C: "x!2 ~ x!3", D: "x!3 ~@3", E: "~ x!2 ~@3", F: "x!3 ~ x!2", G: "x!2 ~@4",
})).gain(0.22)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct("<~@52 A ~@5 B ~@3 C ~@3 A ~@31>".pickRestart({
  A: "~@3 x", B: "~@7 x ~ x ~ x", C: "~@9 x ~ x",
})).gain(0.13)

// drums · mid tom
const mid_tom = s("mt").struct("<~@43 A ~@7 B ~@7 C ~@16 D ~@7 E ~@13>".pickRestart({
  A: "~@7 x!4 ~", B: "~@3 x ~@6 x ~", C: "~@9 x!2 ~", D: "~@8 x!2 ~@2", E: "~@8 x!3 ~",
})).gain(0.27)

// drums · high tom
const high_tom = s("ht").struct("<~@59 [~@2 x] ~@38>").gain(0.31)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@44 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@29>".pickRestart({
  A: "~ x ~",
})).gain(0.27)

// drums · ride
const ride = s("rd").struct("<~@36 A ~@32 B C@5 D E F C@2 G F C@2 G H C@7 H C I J A>".pickRestart({
  A: "x", B: "x!3 ~ x!2", C: "x!6", D: "~@2 x ~ x ~ x!6", E: "~ x!3 ~@2", F: "~ x!5", G: "x!5 ~", H: "~@2 x!4",
  I: "x!2 ~ x ~@2", J: "x!2",
})).gain(0.18)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@75 [~ x ~@2] ~@19 [~@2 x ~ x!2] [~ x!2 ~ x!2] [~ x!5]>").gain(0.09)

stack(
  percussive_organ, bass, synth_brass_2, electric_guitar_clean, string_ensemble_2, string_ensemble_2_2,
  acoustic_guitar_steel, synth_strings_1, synth_strings_1_soft, kick, clap, snare, low_tom, pedal_hat, pedal_hat_soft,
  mid_tom, high_tom, crash, tambourine, ride, ride_soft
)

More by Masini