Strudelify

my type

Guido Lombardo

KeyG majorTempo120 bpm
0:00/0:00
// my type — Guido Lombardo
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Transcription provider: pdmx. https://musescore.com/score/1834971; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// other · alto sax · "Sassofono contralto"
const alto_sax = note(`<
  ~@21 A@2 B@2 C@2 D@2 ~@24 E F E G E F E H I ~@12 J K L M J K L N ~ H I ~@12 J K L M J K L N ~ H I O P Q R S P Q R S R
  T ~@8 H I J K L M J K L M J U V I
>`.pickRestart({
  A: "c4/2", B: "d#4/2", C: "g4/2", D: "a#4/2", E: "c4 ~ d#4 g4@2 f4 d#4@2 f4@3 ~ c4@3 ~",
  F: "c4 ~ d#4 g4@2 f4 d#4@2 f4 ~ d#4 ~ c4@4", G: "c4 ~ d#4 g4 ~ f4 d#4@2 f4 ~ d#4 ~ c4 ~ d#4@2",
  H: "g4@6 g#4 g4 f4@4 d4@4", I: "c4", J: "g4@2 g4 f4", K: "g4 ~@3", L: "g4!5 f4 d#4 f4", M: "d#4@3 c4@8 ~@5",
  N: "d#5@3 c5@8 ~@5", O: "~@7 c4", P: "c5 a#4 a4 g4 a#4 a4 g4 f4", Q: "g4@6 ~ c4", R: "g4 f4 d#4 f4@2 d#4 d4 d#4",
  S: "d4 c4@6 c4", T: "d4 c4@7", U: "g4@6 g#4 g4", V: "f4 d4",
})).s("gm_alto_sax").gain(0.45)

// other · alto sax · "Sassofono contralto"
const alto_sax_2 = note(`<
  ~@21 A@2 B@2 C@2 D@2 ~@16 E F E G E F E G E F E G E F E H I J K L M J K L M N O P E F E G Q F E G Q F H I J K L M J K
  L M N O P E F E G Q F E G Q F H I ~@12 E F E G E F E G E F E G E F E G ~ R S T I
>`.pickRestart({
  A: "c4/2", B: "d#4/2", C: "g4/2", D: "a#4/2", E: "c4 ~ d#4 g4@2 f4 d#4@2 f4@3 ~ c4@3 ~",
  F: "c4 ~ d#4 g4@2 f4 d#4@2 f4 ~ d#4 ~ c4@4", G: "c4 ~ d#4 g4 ~ f4 d#4@2 f4 ~ d#4 ~ c4 ~ d#4@2",
  H: "g4@6 g#4 g4 f4@4 d4@4", I: "c4", J: "~@2 a4@2 d#5@2 d#5@2 d#5@2 d5@2 c5@2 a#4 c5", K: "c5 ~",
  L: "~ g4@2 g4@2 f4 d#4 f4", M: "f4 c4@3 ~@4", N: "~ g4!2 g4@2 f4 d#4@2", O: "f4@4 f4 g4 f4@2", P: "d#4 d4",
  Q: "c4@2 d#4 g4@2 f4 d#4@2 f4@4 c4@4", R: "g4@2 g4 f4", S: "g4@6 g#4 g4", T: "f4 d4",
})).s("gm_alto_sax").gain(0.36)

// other · trumpet · "Tromba in Si♭"
const trumpet = note(`<
  ~@21 A@2 B@2 C@2 D@2 ~@24 E F E G E F E H I ~@10 J ~ F E G E F E G K F H I ~@10 J ~ F E G E F E G K F H I L M N O P M
  N O P O Q ~ E F E G E F E G E F E G E F E G ~ R S T U
>`.pickRestart({
  A: "c4/2", B: "d#4/2", C: "g4/2", D: "a#4/2", E: "c4 ~ d#4 g4@2 f4 d#4@2 f4@3 ~ c4@3 ~",
  F: "c4 ~ d#4 g4@2 f4 d#4@2 f4 ~ d#4 ~ c4@4", G: "c4 ~ d#4 g4 ~ f4 d#4@2 f4 ~ d#4 ~ c4 ~ d#4@2",
  H: "g4@6 g#4 g4 f4@4 d4@4", I: "c4", J: "~@4 d4 ~@3", K: "c4@2 d#4 g4@2 f4 d#4@2 f4@4 c4@4", L: "~@7 c4",
  M: "c5 a#4 a4 g4 a#4 a4 g4 f4", N: "g4@6 ~ c4", O: "g4 f4 d#4 f4@2 d#4 d4 d#4", P: "d4 c4@6 c4", Q: "d4 c4@7",
  R: "g4@2 g4 f4", S: "g5@6 g#5 g5", T: "f5 d5", U: "c5",
})).s("gm_trumpet").gain(0.45)

// other · trumpet · "Tromba in Si♭" · soft notes
const trumpet_soft = note("<~@63 A B A B A B C D E F ~@13 A B A B A B C D E F ~@45>".pickRestart({
  A: "c4 ~ d#4 g4 ~ f4 d#4 ~ f4@2 ~@6", B: "c4 ~ d#4 g4 ~ f4 d#4 ~ f4 ~ d#4 ~ c4 ~ d#4 ~",
  C: "d4!2 ~ d4 ~ d4 ~ d4 c4@2 ~@2 a#3@2 ~@2", D: "d4!2 ~ d4 ~ d4 ~ d4 d#4@2 ~@2 f4@2 ~@2",
  E: "d#4!2 ~ d#4 ~ d#4 ~ d#4 d4@2 ~@2 c4@2 ~@2", F: "d#4!2 ~ d#4 ~ d#4 ~ d#4 ~@8",
})).s("gm_trumpet").gain(0.25)

// other · overdriven guitar · "Chitarra elettrica"
const overdriven_guitar = note(`<
  ~@32 A B C D@3 E F G ~@11 H I@7 ~@3 J K J K J K L M N O H I@9 ~@3 J K J K J K L M N O H I@9 ~@13 H I@7 H I@7 H I ~@4
>`.pickRestart({
  A: "g5@6 g5!2", B: "f5@4 ~@3 f5", C: "g5 f5 d#5 f5@2 d#5 d5 d#5", D: "[d5 c5@6 f5@2 ~@3 g5@2 ~ f5@2 ~@7]/3",
  E: "~@4 f5@6 d#5@2 ~ d#5 d5 c5", F: "d#5@12 ~@2 f5 d#5", G: "d5", H: "~@8 c5@2 ~@2 c5@2 c6 ~",
  I: "c6 ~ c6!2 ~ c6!2 ~@2 c6 ~ c6 c6@2 ~@2", J: "c5 ~ d#5 g5 ~ f5 d#5 ~ f5@2 ~@6",
  K: "c5 ~ d#5 g5 ~ f5 d#5 ~ f5 ~ d#5 ~ c5 ~ d#5 ~", L: "d5!2 ~ d5 ~ d5 ~ d5 c5@2 ~@2 a#4@2 ~@2",
  M: "d5!2 ~ d5 ~ d5 ~ d5 d#5@2 ~@2 f5@2 ~@2", N: "d#5!2 ~ d#5 ~ d#5 ~ d#5 d5@2 ~@2 c5@2 ~@2",
  O: "d#5!2 ~ d#5 ~ d#5 ~ d#5 d5@2 ~@6",
})).s("gm_overdriven_guitar").gain(0.64)

// other · violin · "Violino"
const violin = note(`<
  ~@21 A@2 B@2 C@2 D@2 ~@20 E@2 B@2 E@2 B@2 E@2 B F E@2 A@2 E@2 B@2 F@2 E@2 G@2 H@2 G@2 H I J K L A E A@2 E@2 B@2 F@2
  E@2 G@2 H@2 G@2 H I J K L A M N O P Q N O P Q P R S G@2 H@2 G@2 B T E K B@2 C K B@2 E K F U E
>`.pickRestart({
  A: "c4", B: "d#4", C: "g4", D: "a#4", E: "f4", F: "a#3", G: "f5", H: "d#5", I: "d#5@3 d5", J: "d#5 c5@2 ~",
  K: "f4@3 a#4", L: "g4@6 g#4 g4 f4@4 d4@4", M: "~@7 c4", N: "c5 a#4 a4 g4 a#4 a4 g4 f4", O: "g4@6 ~ c4",
  P: "g4 f4 d#4 f4@2 d#4 d4 d#4", Q: "d4 c4@6 c4", R: "d4 c4@7", S: "d#4 f4 g4 a4 a#4 c5 d5 d#5", T: "f4@3 g4",
  U: "f4@3 a#3",
})).s("gm_violin").gain(0.25)

// chords · piano
const piano = note(`<
  ~@13 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 ~@20 I@2 J@2 I@2 J@2 I@2 K L M@2 N@2 M@2 N@2 O P M Q I@2 J@2 I@2 J@2 I@2 K R M
  N@2 M@2 N@2 O P M Q I@2 J@2 I@2 J@2 I@2 K R S T U V W T U V W V X Y I@2 J@2 I@2 K R I@2 J@2 I@2 J@2 I@2 Z AA AB
>`.pickRestart({
  A: "[[c2,c3]@15 ~]/2", B: "[[d#2,d#3]@15 ~]/2", C: "[[g2,g3]@15 ~]/2", D: "[[a#2,a#3]@15 ~]/2", E: "[[c3,c4]@15 ~]/2",
  F: "[[d#3,d#4]@15 ~]/2", G: "[[g3,g4]@15 ~]/2", H: "[[a#3,a#4]@15 ~]/2",
  I: "[[f1,f2]@27 ~ [a#1,a#2]@4, [f4,a4,c5]@15 ~]/2", J: "[[c2,c3]@27 ~ [a#1,a#2]@4, [c4,d#4,g4]@15 ~]/2",
  K: "[d#1,d#2,d#4,g4,a#4]@15 ~", L: "[a#1,a#2]@11 ~ [a#1,a#2]@4, [a#3,d4,f4]@15 ~",
  M: "[f4,a4,c5] [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5] [f4,a4,c5]@8, [f1,f2]@15 ~", // F
  N: "[c4,d#4,g4] [c4,d#4,g4]@2 [c4,d#4,g4]@2 [c4,d#4,g4]@2 [c4,d#4,g4] [c4,d#4,g4]@8, [c2,c3]@15 ~", // Cm C
  O: "[a#3,d4,f4] [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4] [a#3,c4,f4]@4 [a#3,f4]@4, [a#1,a#2]@15 ~", // A# A#sus2 A#5 A#
  P: "[a#3,d4,f4] [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4] [a#3,d#4,f4]@4 [a#3,f4]@4, [a#1,a#2]@15 ~", // A# A#sus4 A#5 A#
  Q: "[c4,d#4,g4] [c4,d#4,g4]@2 [c4,d#4,g4]@2 [c4,d#4,g4]@2 [c4,d#4,g4] [d4,g4]@4 d5@4, [c2,c3]@11 ~@5", // Cm G5 C
  R: "[f1,f2]@11 ~ [a#1,a#2]@4", S: "[a#1,a#2]@7 c4", T: "c5 a#4 a4 g4 a#4 a4 g4 f4, [f1,f2]@15 ~",
  U: "[c2,c3]@7 c4, g4@11 ~@5", V: "g4 f4 d#4 f4@2 d#4 d4 d#4, [f1,f2]@15 ~", W: "d4@2 c4@11 ~ c4@2, [c2,c3]@15 ~",
  X: "d4@2 c4@13 ~, [c2,c3]@15 ~", Y: "d#3 f3 g3 a3 a#3 c4 d4 d#4 f4 g4 a4 a#4 c5 d5 d#5 f5", Z: "[a#1,a#2]@15 ~",
  AA: "[f2,f3]@11 ~ [a#1,a#2]@4", AB: "~ [d#5,f5]@5 ~@2, [f2,f3]@15 ~, f4@3 ~, ~ [a4,c5]@11 ~@4",
})).s("gm_piano").gain(0.4)

// bass · electric bass pick · "Basso elettrico"
const bass = note(`<
  ~@28 A B C D E B C D E F G H I ~@8 J@2 K@2 B C D E F G H I L M N O P Q N R S T L U F C V E F C V E F C H I M N O P Q N
  R S T L U F C V E F C V E F C H I W P N P N P N P N P N ~ F C V E F C H I F C V E F C V E F C H I@2
>`.pickRestart({
  A: "~@6 g1 a#1", B: "f2@2 ~@2 f2 ~ a#2 c3 f2 ~@3 f2@2 ~@2", C: "f2@2 ~@2 f2 ~ a#2 c3 f2 ~ f2 ~ d#2@2 d2@2",
  D: "c2@2 ~@2 c2 ~ f2 g2 c2 ~ c2 ~ c2 ~@3", E: "c2@2 ~@2 c2 ~ f2 g2 c2 ~ c2@2 d#2@2 e2 ~",
  F: "f2@2 ~@2 f2 ~ a#2 c3 f2 ~ f2 ~ e3@2 f3@2", G: "f2@3 ~@3 a#2 c3 f2@2 f2 ~ d#2@2 d2@2", H: "d#2", I: "a#2",
  J: "f2/2", K: "c2/2", L: "f2", M: "f2@6 f2@2 g#2 ~ g#2 ~ d#2 ~ d#2 ~", N: "c2", O: "c2@6 g#1 f#1", P: "f1",
  Q: "~@6 f2@2 g#2 ~ g#2 ~ d#2 ~ d#2 ~", R: "c3", S: "a#1@12 ~@2 f2 ~", T: "a#2@6 g#2 g2",
  U: "d#2@2 d#2!2 ~ d#2@2 d2!2 ~@7", V: "c2@2 ~@2 c2 ~ f2 g2 c2 ~ c2 ~ a#2@2 b2 ~", W: "a#1",
})).s("gm_electric_bass_pick").gain(0.48)

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

// drums · snare
const snare = s("sd").struct(`<
  A B C B@3 C B D B C B@3 C B@3 C B E B C B@3 C B E B@3 E B@7 E ~@7 E B@12 ~@12 B@3 F B@3 F B@4 ~@11 B@3 F B@3 F B@4
  ~@11 G B@18 H ~@2
>`.pickRestart({
  A: "~@4 x!2 ~@6 x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~ x ~@2 x!3 ~@2 x ~@2 x!2 ~@2",
  E: "~@4 x ~@3 x ~ x!2 ~ x!2 ~", F: "~@4 x ~@4 x ~@2 x!2 ~@2", G: "~@3 x", H: "x ~@11 x!4",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~@41 [~ x ~ x]!20 ~@80>").gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@51 B ~@10 C D ~@3 E ~@3 E ~@3 B ~@9 C D ~@3 E ~@3 E ~@3 B ~@33>".pickRestart({
  A: "~@3 x ~@3 x", B: "~@10 x ~@4 x", C: "~ x ~ x", D: "x ~@2 x ~@4 x ~@7", E: "~@7 x",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B A@3 B A C D B A@2 D B A@3 B A E F G H@3 G H I ~@31 J ~ K L M L M L M L M@2 ~ N@3 O N@3 O N@3 P K L M L M L M L
  M@2 ~ N@3 O N@3 O N@3 P ~@12 N@18 ~@3
>`.pickRestart({
  A: "x!4", B: "x!3 ~", C: "x ~@3 x ~@2 x!2 ~@3 x ~@3", D: "~ x!3", E: "x!2 ~@2", F: "~@2 x!5 ~", G: "x!6 ~@2",
  H: "x!7 ~", I: "x!4 ~@4", J: "~@5 x ~@2", K: "x!16", L: "x!8 ~@8", M: "~@2 x!2 ~@2 x!3 ~ x!2 ~@2 x!2",
  N: "~ x ~ x ~ x ~ x", O: "~ x ~ x ~@4", P: "~ x ~ x ~ x ~@2",
})).gain(0.4)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  A@2 ~ A@3 ~ A B A ~ A@3 ~ A@3 ~ A ~ A ~ A@3 ~ A ~ C@3 D C@7 D ~@8 C@11 D ~@2 E ~ E ~ E ~ E ~@16 E ~ E ~ E ~ E ~@48
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@3 x", C: "~ x ~ x ~ x ~ x", D: "~ x ~ x ~@4", E: "~ x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@20 A ~@7 A ~@3 A ~@7 A ~@7 A ~@23 B ~@22 B ~@12 C@8 D@2 ~@23>".pickRestart({
  A: "~ x", B: "x", C: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", D: "~ x ~@6",
})).gain(0.45)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@3 A ~@7 A ~@7 A ~@31 A ~ B ~ B ~ B ~ B ~@16 B ~ B ~ B ~ B ~@45 C D A
>`.pickRestart({
  A: "x", B: "~@3 x", C: "x ~@12 x ~ x", D: "x!2",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@60 A ~@11 B C@3 D C@3 D C@3 E ~@10 B C@3 D C@3 D C@3 E ~@32 F>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x", C: "~ x ~ x ~ x ~ x", D: "~ x ~ x ~@4", E: "~ x ~ x ~ x ~@2", F: "~@12 x!3 ~",
})).gain(0.45)

stack(
  alto_sax, alto_sax_2, trumpet, trumpet_soft, overdriven_guitar, violin, piano, bass, kick, snare, clap, low_tom,
  hihat, mid_tom, open_hat, high_tom, crash, ride
)

More by Guido Lombardo