Strudelify

Renato

Mina

Tempo158 bpm
0:00/0:00
// Renato — Mina
// 158 bpm, 4/4, key unknown. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 24.
setcpm(158/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  ~@2 A B C A@2 D B E F G H F@2 I G J F G H F@2 I G J K L M K@2 N L O K L M K@2 N L O P Q R P@2 S Q T P Q R P@2 S Q T U
  V W U@2 X V Y U V W U@2 X V Y Z AA AB Z@2 AC AA Z@2 AD
>`.pickRestart({
  A: "[g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~", // G
  B: "[d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~", // D7 D D7
  C: "[d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~", // D7
  D: "[d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~ [d5,f#5,a5,c6] ~", // D7 D D7
  E: "[g5,b5,d6] ~@15", // G
  F: "[g#5,c6,d#6] ~ [g#5,c6,d#6] ~ [g#5,c6,d#6] ~ [g#5,c6,d#6] ~ [g#5,c6,d#6] ~ [g#5,c6,d#6] ~ [g#5,c6,d#6] ~ [g#5,c6,d#6] ~", // G#
  G: "[d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~", // D#7 D# D#7
  H: "[d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~", // D#7
  I: "[d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~ [d#5,g5,a#5,c#6] ~", // D#7 D# D#7
  J: "[g#5,c6,d#6] ~@15", // G#
  K: "[a5,c#6,e6] ~ [a5,c#6,e6] ~ [a5,c#6,e6] ~ [a5,c#6,e6] ~ [a5,c#6,e6] ~ [a5,c#6,e6] ~ [a5,c#6,e6] ~ [a5,c#6,e6] ~", // A
  L: "[e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~", // E7 E E7
  M: "[e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~", // E7
  N: "[e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~ [e5,g#5,b5,d6] ~", // E7 E E7
  O: "[a5,c#6,e6] ~@15", // A
  P: "[a#5,d6,f6] ~ [a#5,d6,f6] ~ [a#5,d6,f6] ~ [a#5,d6,f6] ~ [a#5,d6,f6] ~ [a#5,d6,f6] ~ [a#5,d6,f6] ~ [a#5,d6,f6] ~", // A#
  Q: "[f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~", // F7 F F7
  R: "[f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~", // F7
  S: "[f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~ [f5,a5,c6,d#6] ~", // F7 F F7
  T: "[a#5,d6,f6] ~@15", // A#
  U: "[b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~", // B
  V: "[f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~", // F#7 F# F#7
  W: "[f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~", // F#7
  X: "[f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~ [f#5,a#5,c#6,e6] ~", // F#7 F# F#7
  Y: "[b5,d#6,f#6] ~@15", // B
  Z: "[c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~", // C
  AA: "[g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~", // G7 G G7
  AB: "[g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~", // G7
  AC: "[g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~ [g5,b5,d6,f6] ~", // G7 G G7
  AD: "[c2,c3,g5,c6,e6] ~@15", // C
})).s("gm_piano").gain(0.26).pan(0.4)

// bass · electric bass finger
const bass = note(`<
  ~@2 A B C D E F G H I J K L M N O P I J K L M N O P Q R S T U V W X Q R S T U S W X Y Z AA AB AC AD AE AF Y Z AA AB AC
  AD AE AF AG AH AI AJ AK AL AM AN AG AH AI AJ AK AL AM AN AO AP AQ AR AS AQ AT AR AS AU
>`.pickRestart({
  A: "g1@5 ~ b1@5 ~ d2@2 ~@2", B: "f#1@5 ~ a1@6 d2 ~@3", C: "f#1@6 a1@5 ~ d2@2 ~@2", D: "g1@5 ~ b1@6 d2@2 ~@2",
  E: "g1@6 b1@5 ~ d2@2 ~@2", F: "f#1@6 a1@5 ~ d2 ~@3", G: "f#1@5 ~ a1@6 d2@2 ~@2", H: "g1 ~@7",
  I: "g#1@5 ~ c2@5 ~ d#2@2 ~@2", J: "g1@5 ~ a#1@6 d#2 ~@3", K: "g1@6 a#1@5 ~ d#2@2 ~@2", L: "g#1@5 ~ c2@6 d#2@2 ~@2",
  M: "g#1@6 c2@5 ~ d#2@2 ~@2", N: "g1@6 a#1@5 ~ d#2 ~@3", O: "g1@5 ~ a#1@6 d#2@2 ~@2", P: "g#1 ~@7",
  Q: "a1@5 ~ c#2@5 ~ e2@2 ~@2", R: "g#1@5 ~ b1@6 e2 ~@3", S: "g#1@6 b1@5 ~ e2@2 ~@2", T: "a1@5 ~ c#2@6 e2@2 ~@2",
  U: "a1@6 c#2@5 ~ e2@2 ~@2", V: "g#1@6 b1@5 ~ e2 ~@3", W: "g#1@5 ~ b1@6 e2@2 ~@2", X: "a1 ~@7",
  Y: "a#1@5 ~ d2@5 ~ f2@2 ~@2", Z: "a1@5 ~ c2@6 f2 ~@3", AA: "a1@6 c2@5 ~ f2@2 ~@2", AB: "a#1@5 ~ d2@6 f2@2 ~@2",
  AC: "a#1@6 d2@5 ~ f2@2 ~@2", AD: "a1@6 c2@5 ~ f2 ~@3", AE: "a1@5 ~ c2@6 f2@2 ~@2", AF: "a#1 ~@7",
  AG: "b1@5 ~ d#2@5 ~ f#2@2 ~@2", AH: "a#1@5 ~ c#2@6 f#2 ~@3", AI: "a#1@6 c#2@5 ~ f#2@2 ~@2",
  AJ: "b1@5 ~ d#2@6 f#2@2 ~@2", AK: "b1@6 d#2@5 ~ f#2@2 ~@2", AL: "a#1@6 c#2@5 ~ f#2 ~@3",
  AM: "a#1@5 ~ c#2@6 f#2@2 ~@2", AN: "b1 ~@7", AO: "c2@5 ~ e2@5 ~ g2@2 ~@2", AP: "b1@5 ~ d2@6 g2 ~@3",
  AQ: "b1@6 d2@5 ~ g2@2 ~@2", AR: "c2@5 ~ e2@6 g2@2 ~@2", AS: "c2@6 e2@5 ~ g2@2 ~@2", AT: "b1@5 ~ d2@6 g2@2 ~@2",
  AU: "c2 ~@7",
})).s("gm_electric_bass_finger").gain(0.36)

// other · electric guitar jazz · C
const electric_guitar_jazz = note(`<
  [d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~]
  [d5 ~ d5@2 c5 ~ c5 ~ b4 ~ b4@2 a4 ~ a4 ~]
  ~@81
  [[c4,e4,g4] ~@15]
>`).s("gm_electric_guitar_jazz").gain(0.34).pan(0.6)

// other · violin
const violin = note("<~@65 A B C D E F G H I ~@7 J@2 ~>".pickRestart({
  A: "~@7 f#5", B: "b5 ~ b5@2 a#5@4 g#5 ~ g#5 ~ g5 ~ g5 ~", C: "f#5@2 a#5@2 ~@2 a#5@3 ~ a#5 ~ g#5 ~ f#5 ~",
  D: "e5 ~ a#5@2 ~@2 a#5@4 a#5@2 g#5 ~ f#5 ~", E: "d#5 ~ b5 ~@3 b5@8 f#5 ~",
  F: "b5 ~ b5 ~ a#5@2 a#5@2 g#5 ~ g#5@2 g5 ~ g5 ~", G: "f#5 ~ a#5@2 ~@2 a#5@3 ~ c#5 ~ d#5 ~ e5@2",
  H: "f#5@2 ~@2 f#5 ~ f#5@3 ~ g#5 ~ a#5@3 ~", I: "b5@7 ~@9", J: "c5 ~@5 e5 ~ a5 ~ a5 ~ g5 ~@3",
})).s("gm_violin").gain(0.48)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@2 A B@2 C@2 D E F G H@2 I@2 J K L G H@2 I@2 J K M N O@2 P@2 Q R S N O@2 P@2 Q R T U V@2 W@2 X Y Z U V@2 W@2 X Y AA
  AB AC@2 AD@2 AE AF AG AB AC@2 AD@2 AE AF AH AI AJ@2 AK@2 AL AM AK@2 ~
>`.pickRestart({
  A: "g3@2 ~@4 b3 ~ e4 ~ e4 ~ d4 ~@3", B: "f#3 ~@5 a3 ~ e4 ~ e4 ~ d4 ~@3", C: "g3 ~@5 b3 ~ e4 ~ e4 ~ d4 ~@3",
  D: "f#3 ~@7 e4 ~ e4 ~ d4 ~@3", E: "f#3@2 ~@6 e4 ~ e4 ~ d4 ~@3", F: "g3 ~@7", G: "g#3@2 ~@4 c4 ~ f4 ~ f4 ~ d#4 ~@3",
  H: "g3 ~@5 a#3 ~ f4 ~ f4 ~ d#4 ~@3", I: "g#3 ~@5 c4 ~ f4 ~ f4 ~ d#4 ~@3", J: "g3 ~@7 f4 ~ f4 ~ d#4 ~@3",
  K: "g3@2 ~@6 f4 ~ f4 ~ d#4 ~@3", L: "g#2@2 g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3 ~ g#3 ~", M: "g#3 ~@3",
  N: "a3@2 ~@4 c#4 ~ f#4 ~ f#4 ~ e4 ~@3", O: "g#3 ~@5 b3 ~ f#4 ~ f#4 ~ e4 ~@3", P: "a3 ~@5 c#4 ~ f#4 ~ f#4 ~ e4 ~@3",
  Q: "g#3 ~@7 f#4 ~ f#4 ~ e4 ~@3", R: "g#3@2 ~@6 f#4 ~ f#4 ~ e4 ~@3", S: "a2@2 a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~",
  T: "a3 ~@3", U: "a#3@2 ~@4 d4 ~ g4 ~ g4 ~ f4 ~@3", V: "a3 ~@5 c4 ~ g4 ~ g4 ~ f4 ~@3",
  W: "a#3 ~@5 d4 ~ g4 ~ g4 ~ f4 ~@3", X: "a3 ~@7 g4 ~ g4 ~ f4 ~@3", Y: "a3@2 ~@6 g4 ~ g4 ~ f4 ~@3",
  Z: "a#2@2 a#3 ~ a#3 ~ a#3 ~ a#3 ~ a#3 ~ a#3 ~ a#3 ~", AA: "a#3 ~@7", AB: "b3@2 ~@4 d#4 ~ g#4 ~ g#4 ~ f#4 ~@3",
  AC: "a#3 ~@5 c#4 ~ g#4 ~ g#4 ~ f#4 ~@3", AD: "b3 ~@5 d#4 ~ g#4 ~ g#4 ~ f#4 ~@3", AE: "a#3 ~@7 g#4 ~ g#4 ~ f#4 ~@3",
  AF: "a#3@2 ~@6 g#4 ~ g#4 ~ f#4 ~@3", AG: "b2@2 b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~", AH: "b3 ~@3",
  AI: "c4@2 ~@4 e4 ~ a4 ~ a4 ~ g4 ~@3", AJ: "b3 ~@5 d4 ~ a4 ~ a4 ~ g4 ~@3", AK: "c4 ~@5 e4 ~ a4 ~ a4 ~ g4 ~@3",
  AL: "b3 ~@7 a4 ~ a4 ~ g4 ~@3", AM: "b3@2 ~@6 a4 ~ a4 ~ g4 ~@3",
})).s("gm_electric_guitar_muted").gain(0.29)

// other · electric guitar muted · soft notes
const electric_guitar_muted_2 = note(`<
  ~@7 A@2 ~@6 B@2 ~@6 B@2 ~@6 C@2 ~@6 C@2 ~@6 D@2 ~@6 D@2 ~@6 E@2 ~@6 E@2 ~@6 F@2 ~@3
>`.pickRestart({
  A: "~@6 a3 ~@9", B: "~@6 a#3 ~@9", C: "~@6 b3 ~@9", D: "~@6 c4 ~@9", E: "~@6 c#4 ~@9", F: "~@6 d4 ~@9",
})).s("gm_electric_guitar_muted").gain(0.17)

// drums · kick
const kick = s("bd").struct("<~@2 x!82>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@2 A@7 B A@7 ~ A@7 B A@7 ~ A@7 B A@7 ~ A@7 B A@7 ~ A@7 B A@9 ~>".pickRestart({
  A: "~@3 x ~@2 x ~", B: "~@5 x!4 ~@2 x!4 ~",
})).gain(0.57)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@9 A ~@15 A ~@15 A ~@15 A ~@15 A ~@10>".pickRestart({
  A: "~@2 x ~@2 x ~@2",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<~@17 A ~@15 A ~@15 A ~@15 A ~@18>".pickRestart({
  A: "~ x ~@6",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@17 A ~@15 A ~@15 A ~@15 A ~@18>".pickRestart({
  A: "x",
})).gain(0.32)

// drums · ride
const ride = s("rd").struct("<~@2 A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@9 ~>".pickRestart({
  A: "x!8",
})).gain(0.25)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@2 A B C A B C A ~ A C A C@2 A B ~ C A C@2 A B C ~ B C A@3 C A ~ C A@3 C A B ~ A@3 C A B C ~ A B C A B C A ~ A C A B
  C A@2 ~ C@2 A C@2 A B ~ C A C@2 A B C@2 A ~
>`.pickRestart({
  A: "~ x ~@2 x!2 ~@2", B: "~@4 x!2 ~@2", C: "~ x ~@2 x ~@3",
})).gain(0.19)

// drums · crash
const crash = s("cr").struct("<~@83 x>").gain(0.32)

stack(
  piano, bass, electric_guitar_jazz, violin, electric_guitar_muted, electric_guitar_muted_2, kick, snare, snare_soft,
  hihat, open_hat, ride, ride_soft, crash
)

More by Mina