Strudelify

Ogni volta

Rossi Vasco

KeyA majorTempo73 bpm
0:00/0:00
// Ogni volta — Rossi Vasco
// 73 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 11 electric guitar clean (copy of ch 3 electric guitar clean, 0.5 beats late)
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(73/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 · fretless bass
const bass = note(`<
  A B C D E F G H I J K L@2 I M N I J K L@2 O P Q R S T U@2 V W X R S T U@2 V W Y R S T U@2 V W Z I J K L@2 I M AA AB AC
  AD AE AF AG AH AI AB AC AD AE AF AG AH Z AJ@2 F
>`.pickRestart({
  A: "a1", B: "c#2", C: "f#1@14 ~ c#2", D: "d2@13 ~ a1 c#2", E: "d2@13 e2@3", F: "a1@15 ~",
  G: "e2@12 e2 [d2,d#2] [a1,b1,c#2] [f#1,g#1]", H: "e1@15 ~", I: "a1@4 ~@2 a1 ~ a1@4 ~@4",
  J: "c#2@4 ~@2 c#2 ~ c#2@4 ~@4", K: "f#1@4 ~@2 f#1 ~ f#1@4 ~@4", L: "d2@4 ~@2 d2 ~ d2@4 ~@4",
  M: "e2@4 ~@2 e2 ~ e2@4 ~@4", N: "a1@4 ~@2 a1 ~ a1@2 ~@2 e1@3 ~", O: "a1@4 ~@2 a1 ~ a1@4 a1@3 ~",
  P: "e2@4 ~@2 e1 ~ e1@7 ~", Q: "e2@13 ~@3", R: "a1@5 ~ a1@2 a1@8", S: "c#2@3 c#2 c#2@4", T: "f#1@3 f#1 f#1@4",
  U: "d2@3 d2 d2@4", V: "a1@3 a1 a1@2 a1@2", W: "e2@3 e1 e1@4", X: "e2@5 e2!3", Y: "a1@5 a1!3", Z: "e1",
  AA: "e2@4 ~@2 e1!10", AB: "a1@5 ~ a1@9 ~", AC: "c#2@5 ~ c#2@6 c#2 c2 b1 [g#1,a#1]", AD: "f#1@5 ~ f#1 ~ f#1@7 ~",
  AE: "d2@5 ~ d2 ~ d2@6 a1 c#2", AF: "d2@5 ~ d2 ~ d2@4 f2 e2@2 ~", AG: "a1@5 ~ a1 ~ a1@4 a1@4",
  AH: "e2@5 ~ e2 ~ e2@4 e2 ~@3", AI: "a1@4 ~@2 a1 ~ a1@2 a1!2 e1!2 f#1 g#1", AJ: "a1@2 ~ a1 a1@2 ~@2",
})).s("gm_fretless_bass").gain(0.26)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@6 B C A@6 D E A@6 B C A@6 B C A@6 B F A@6 B ~ G@2 H I@3 B C A@6 D E A@6 B C J@2 K
>`.pickRestart({
  A: "[~@84 c#4@2 c#4@2 c#4@5 ~@3, ~@2 a3@15 ~ g#3@14 f#3@16 d3@16 d3@17 ~@15, ~@4 c#4@15 ~ c#4@14 a#3@14 ~@2 a3@14 ~@2 a3@14 ~@16, ~@6 e4@16 e4@16 e4@15 ~ e4@15 ~ e4@16 ~@10, ~@18 c#4@6 ~@2 d4@7 ~ d4@6 ~@8]/6",
  B: "~@3 e4@5, ~ g#3@7, ~ b3@3", C: "g#4!2 g#4@6", D: "~@6 e4@9 ~, ~ g#3@7, ~ b3@3",
  E: "a4@10 a4@3 g#4@3, e4, [a3,c#4]@13 ~@3", F: "a4!2 a4@6",
  G: "[~@10 [e4,b4,c#5] a4 b4@2 b4@6 ~@8 b4 c#5 b4 c#5, ~@7 e4]/2", H: "[f#4,a#4]@9 ~@7",
  I: "[~@36 c#4@2 c#4@2 c#4@5 ~@3, d3@16 f3@17 ~@15, ~@2 a3@15 ~ a3@14 ~@16, ~@2 d4@7 ~ d4@6 ~@8, ~@6 e4@15 ~ e4@16 ~@10]/3",
  J: "[~@16 g#4 a4 a4@10 ~@2 [b4,c#5] a4, ~@5 a4 a3 e4@7 ~@2, ~@11 e4@2 g#4@2 a3@13 ~@4]/2", K: "b4 c#5!2 ~@13",
})).s("gm_electric_guitar_clean").gain(0.12).pan(0)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@3 B@5 ~@16 C@3 D@3 E@2 C@3 D@3 F@2 C@3 D@3 E@2 ~@8 C@3 D@3 F@2 C@3 D@3 E@2 G@3
>`.pickRestart({
  A: "[a4@2 g#4@2 ~ f#5, c#5@5 ~, ~@2 f#4]/3", B: "[f#5@15 f5@16 c#5@17 b4@31 ~, d5@31 e5@48 ~]/5",
  C: "[a4@15 ~ g#4@16 [f#4,a#4]@16, c#5, e4@2 ~]/3", D: "[f#5 f5 [c#5,e5], a4, d5@2 ~]/3", E: "[g#4,b4,e5]/2",
  F: "[[g#4,b4] [a4,c#5], e5]/2", G: "[e4,a4,c#5]/3",
})).s("gm_string_ensemble_2").gain(0.11).pan(0.4)

// chords · violin
const violin = note("<~@31 A B C D E F@2 G H@2 I J K L@2 ~@29>".pickRestart({
  A: "~@4 [b4,e5] ~ [a4,e5] ~", B: "[a4,e5]@15 ~", C: "b4 a4!2 b4!2 a4 [c#5,e5]@3 ~@7, e5!3 ~@5",
  D: "[a#4,c#5]@6 [a#4,e5]@9 ~", E: "[f#4,d5]@7 [f#4,c#5] f#4@3 b4 [d4,f#4]@3 [e4,a4], ~@8 c#5 ~@7",
  F: "[e4 d4!2 e4!2 f4 [f4,a4]@3 ~@3 f5 e5 d5 [a4,e5]@3 ~ c#5 c#5@3 a4!2 b4 b4@4 ~ b4, a4@2 a4@2 a4@2 ~@6 a4@3 ~@4 a4@4 ~@9]/2", // F A5
  G: "~@6 b4 c#5, ~@12 e5 ~ e5 ~",
  H: "[[a4,e5]@6 [a4,f#5]@2 ~@4 [a4,e5] a4 [a4,d5,f#5] ~ e5@2 a5 e5@2 f#5 e5@2 [c#5,e5] ~ [b4,e5] a4 b4 c#5 a4@2, ~@15 a4@3 a4@3 a4@3 ~@4 e5@4]/2", // A5 D A5 D C#m E5
  I: "a4@2 f#5 e5@2 a5 e5@2 f#5 e5@2 a4 c#5 b4 a4 ~, e5 ~ a4@3 a4@3 a4@2 ~@2 e5@3 ~", J: "~@3 [a#4,e5]@5",
  K: "[f#4,d5]@7 [f#4,c#5] c#5 b4 ~ b4 f#4@3 [e4,a4], ~@8 f#4@4 b4 ~@3", // D F#5 A5
  L: "[e4 d4!2 e4!2 f4 [f4,a4]@3 ~@3 e5 f5 ~ e5@4 ~ c#5@3 a4!2 b4 a4@4 ~ b4, a4@2 a4@2 a4@2 ~@6 a4@3 a4@3 ~ a4@4 ~@9]/2", // F
})).s("gm_violin").gain(0.21)

// chords · piano
const piano = note(`<
  A B C D E F G@2 H I J K L M N O P@2 Q R S T U@2 V W X Y Z AA AB AC V W X Y Z AA AB AD V W X Y Z AA AB AE AF AG Q AH AI
  AJ AK AL H I J K L M N O P@2 Q R S T U@2 AM@3
>`.pickRestart({
  A: "b4@3 a4@3 g#4@2 b4@3 a4@3 g#4@2, [a3,e4]", B: "b4@3 a4@3 g#4@2 b4@3 a4@3 g#4@2, [c#4,e4]",
  C: "b4@3 a#4@3 f#4@2 b4@3 a#4@3 f#4@2, [f#3,e4]", D: "b4@3 a4@3 f#4@2 b4@3 a4@3 f#4@2, d4@15 ~",
  E: "b4@3 a4@3 f4@2 b4@3 a4@3 f4@2", F: "b4@3 a4@3 g#4@2 b4@3 a4@3 g#4@2, e4@15 ~",
  G: "[b4@3 a4@3 g#4@2 b4@3 a4@3 ~@2 b4@13 ~@3, [e3,e4]@29 ~@3]/2", H: "[a3,c#4,e4,a4]@5 ~ [b3,e4]@2, a2",
  I: "g#4@4 ~@9 c#6@3, ~@3 [g#4,c#5]@5, ~@5 e5@3", J: "[f#3,a#3]@4 ~@2 [f#3,a#3]@2 b3@3 ~ [a#3,c#4]@4, ~ f#3",
  K: "[d4,f#4]@10 e4 f#4@5, ~@5 a3@3", L: "~@7 d4, [d4,f4]@13 f4@3, ~@3 d5@5, ~@3 a4",
  M: "~ a4@9 [d4,f#4]@2 ~@2 a4@2, [a3,c#4]@5 a3@3, ~@3 [c#4,e4]", N: "[g#3,b3,e4]@13 ~ [g#3,b3,e4]@2",
  O: "[a3,c#4,e4]@10 ~@3 a4@3, a2@3 a2, ~@5 [a3,c#4,e4]@3", // A
  P: "[[a3,c#4,e4,a4]@5 ~@2 a3 g#3@3 [g#3,c#4,e4]@3 [g#3,c#4,e4]@2, a2 ~, ~@14 e3@7 ~@11]/2", // A C#m
  Q: "[f#3,a#3]@4 ~@2 [f#3,a#3]@2 b3@3 ~ [a#3,c#4,f#4]@4, f#2, ~@3 f#4@3 ~@2, ~ f#3", // F#
  R: "[d4,f#4]@10 e4 f#4 ~ e4 d4 ~, d3@13 ~@3, ~@5 a3@2 ~", S: "[d4,f4]@3 [d4,f4,a4]@2 [d4,f4,a4]@3, a3, ~@3 d5@5",
  T: "[a3,c#4,e4,a4]@10 ~@2 b3 ~ a3@2, ~@5 a1@3, ~@3 e4, ~@13 c#4@3", // A
  U: "[~ e4@5 ~ [a3,c#4] [b3,e4]@8, [e2,g#3,b3]@3 e2@5, ~@3 [g#3,b3] ~@4]/2", // A E5 E G#m
  V: "a3@2 a3!2 [c#4,e4]@2 a3!2, [a2,a4,c#5], e4 ~@3 a3 ~ [c#4,e4]@2", // C#m A C#m
  W: "g#3 ~ c#4 ~@2 g#3 [c#4,e4]@2, e4@3 [c#4,e4]@3 ~@2, [c#3,c#4] ~ c#3@2, ~ g#3@2 g#3@2 ~ g#3 ~", // C#m C#
  X: "f#3@2 ~ [f#4,a#4] [f#4,g#4,b4]@2 [c#4,f#4,a#4,c#5]@2, [f#4,a#4]@3 ~@5, c#4 ~ f#3@6", // F# G#m7 F#
  Y: "d4@4 ~@2 f#4@2 ~@5 a4@3, [a4,d5]@13 ~@3, d3!2, f#4@2 ~@2 d4@5 f#4@3 [f#4,d5]@4, ~@5 d4@3", // D5 D
  Z: "[a4,d5]@2 f4 ~@2 f4 [d3,f4,a4,d5]@2, d3@3 ~, f4 ~@3 [a4,d5]@8 ~@4, ~ d4", // D5 Dm D5
  AA: "e4 ~ e4@4 e4@4 e4@2 e4@2 [e4,a4,b4]@2, a4@7 ~, [a3,c#5]@3 [a3,c#5]", // Esus4 A
  AB: "e4 ~@9 e4@2 ~@2 a4@2, g#4@3 ~, e3!2, ~ b3@2 [b3,e4,g#4], ~@3 e4@2 ~@3", // E
  AC: "e4 ~@2 e4@2 ~ e3 ~, e3@3 ~, [g#4,b4]@3 [g#4,b4,e5]@4 ~, ~@2 b3@2 ~ e4@2 ~", // G#m E
  AD: "~@3 e5@4 ~, [a2,a4,c#5]@7 ~, e4 ~, ~@2 c#4@5 ~", AE: "[e2,b3,e4,g#4,b4]@15 ~", AF: "[a3,c#4,e4,a4]@5 ~@3, a2",
  AG: "~@3 [g#3,c#4,e4]", AH: "[a3,d4,f#4]@5 ~@3, d3@13 ~@3", AI: "~ [d4,f4,a4], a3, [d4,f4] ~, ~@3 d5@5",
  AJ: "[a3,c#4,e4,a4]@5 ~@3", AK: "[e2,g#3,b3,e4]@3 ~", AL: "[e2,e4,g#4,b4,e5]",
  AM: "[a3@4 a3@2 a3@2 [c#4,e4]@4 a3@2 a3@2 a3@4 a3@2 a3@2 [c#4,e4]@4 a3@2 a3@2 [a2,a3,e4,a4,c#5]@15 ~, [a2,a4,c#5] [a2,a4,c#5] ~, e4 ~@3 a3 ~ c#4@6 a3 ~ e4@2 ~@8, ~@12 e4@4 e4@2 ~@10 c#4@19 ~]/3", // C#m A
})).s("gm_piano").gain(0.21).pan(0.6)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@4 A B C ~@2 D E F B G ~@5 H ~ G ~@2 I J K L M N O P I J K L M N O Q I J K L M N O ~@6 G ~@3 D E F B G ~@5 H ~ G ~@2
  I@2 ~
>`.pickRestart({
  A: "d4@15 ~", B: "a3", C: "~@7 g#4", D: "c#5 ~@3, c#3 ~@15", E: "f#2", F: "d3, a3@5 ~@3", G: "a2", H: "a3@5 ~@3",
  I: "~ e4@3 ~ a3 ~@2", J: "~@2 c#3@2 ~@3 g#3", K: "~ c#4@3 ~@4", L: "~ f#4@2 ~@5", M: "~ f4 ~ f4@2 ~@3",
  N: "~ a2 a2@2", O: "~ e4@2 ~@5", P: "~ e4@2 ~ b3@3 ~", Q: "~@4 e4@3 ~",
})).s("gm_piano").gain(0.12).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@7 A B@6 C@2 B@7 ~@25 D@2 B@5 ~@20>".pickRestart({
  A: "~@5 x!2 ~", B: "~ x ~ x", C: "~ x ~@2", D: "~@3 x",
})).gain(0.45)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@55 [~@4 x!6 ~@6] ~@19>").gain(0.23)

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

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@15 [~@13 x ~@2] ~@39 [~@4 x!3 ~@9] ~@19>").gain(0.23)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@6 B C D A@5 E ~@25 F G A@4 E ~@20>".pickRestart({
  A: "x!8", B: "x!4 ~@2 x ~", C: "~ x!3 ~@4", D: "~ x!7", E: "x!7 ~", F: "~@3 x!5", G: "x!2 ~ x!5",
})).gain(0.38)

// drums · mid tom
const mid_tom = s("mt").struct("<~@14 A B ~@7 C ~@22 D ~@16 E ~@11>".pickRestart({
  A: "~@8 x!3 ~@5", B: "~@10 x!2 ~@4", C: "~@3 x ~@2 x ~@9", D: "~@14 x!2", E: "~@12 x!2 ~@2",
})).gain(0.38)

// drums · open hat
const open_hat = s("oh").struct("<~@7 A ~@7 B ~@6 C ~@31 C ~@20>".pickRestart({
  A: "~@3 x", B: "~ x", C: "~@7 x",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@15 [~ x] ~@7 x ~@51>").gain(0.45)

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

// drums · ride
const ride = s("rd").struct("<~@24 A B@6 ~ A B@6 C A B@6 ~@9 D@2 A B@4 C A B@6 ~ A B E>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!4 ~@4", D: "~ x!2 ~ x!4", E: "~@2 x!14",
})).gain(0.38)

stack(
  bass, electric_guitar_clean, string_ensemble_2, violin, piano, piano_soft, kick, rim, snare, snare_soft, low_tom,
  low_tom_soft, hihat, mid_tom, open_hat, high_tom, crash, ride
)

More by Rossi Vasco