Strudelify

Nobody Else

Rene Froger

KeyC majorTempo117 bpm
0:00/0:00
// Nobody Else — Rene Froger
// 117 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "NYLON GTR" acoustic guitar nylon (copy of ch 3 "MUTED GTR" electric guitar muted)
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(117/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.

// chords · piano · "A.PIANO 3"
const piano = note(`<
  ~@4 A B C D E D A F E G A G H I J I K L M N O P Q R S T U V W X T R Y Z AA V AB A B C D E D A F E G A G H I J I K L M
  N O P Q R S T U V W X T R Y Z AA V AB E D A F E G A G H I J I K L M N O P Q R S T U V W X T R S T U V W X T ~
>`.pickRestart({
  A: "c2 ~ c2 ~ c2 ~ c2 ~, [g3,c4,e4]", // C
  B: "c2@2 ~@2 c2@2 ~@3 c3 [a3,c4,g4]@2 ~ c3 [a3,c4,g4]@2, [a3,c4,f4]@4 c2 ~ c2 ~", // Am7 F
  C: "c2 ~ c2 ~ c2 ~ c2 c3, [g3,c4,e4]@5 [g3,c4,e4]@2 ~", D: "c2 ~ c2 ~ c2 ~ c2 ~, [a3,c4,f4]@15 ~",
  E: "c2 ~ c2 ~ c2 ~ c2 ~, [g3,c4,e4]@15 ~", // C
  F: "[c2,a3,c4,f4]@3 ~ [c2,c3]@2 ~@2 c2@2 ~@2 c3@4, ~@3 [a3,c4,f4]@3 [a3,c4,f4]@10, ~@6 c2 ~", // F C F
  G: "c2@2 ~@2 c2@2 ~@2 c2@2 [a3,c4,f4]@2 ~ [a3,c4,f4]@3, [a3,c4,f4]@5 ~ c2 ~", // F
  H: "g1 ~ g1 ~ g1 ~ g1 [b3,d4,g4], [b3,d4,g4]@7 ~", // G
  I: "[f1,a3,c4,f4]@3 ~ f1@2 ~@2 f1@2 ~@2 f1@2 ~@2, ~@3 [a3,c4,f4]@3 [a3,c4,f4]@9 ~", // F
  J: "g1 ~ g1 ~ g1 ~ g1 ~, [b3,d4,g4]", K: "g1@2 ~@2 g1@2 ~@2 g1@2 [g3,b3,d4]@2 ~ [g3,b3,d4]@3, [b3,d4,g4]@5 ~ g1 ~",
  L: "[f1,a3,c4,f4]@3 ~ f1@2 ~@2 [f1,a3,c4,f4]@3 ~ [a3,c4,f4]@4, ~@3 [a3,c4,f4]@5 ~@4 f1@2 ~@2", // F
  M: "[a3,c4,f4]@4 f1@2 f3@2 [f1,a3,c4,f4]@3 ~ [f1,a3,c4,f4]@3 ~, f1 ~ [a3,c4,f4]@2 ~@4", // F
  N: "[f1,a3,c4,f4]@3 ~ f1@2 ~@2 f1@2 ~@2 [f1,a3,c4,f4]@3 ~, ~@3 [a3,c4,f4]@3 [a3,c4,f4]@6 ~@4", // F
  O: "[d1,a3,d4,f4]@3 ~ d1@2 ~@2 d1@2 ~@2 [d1,a3,d4,f4]@3 ~, ~@3 [a3,d4,f4]@3 [a3,d4,f4]@6 ~@4", // Dm
  P: "[g1,b3,d4,g4]@3 ~ g1@2 ~@2 [g1,b3,d4,g4]@3 ~ [b3,d4,g4]@4, ~@3 [b3,d4,g4]@5 ~@4 g1@2 ~@2", Q: "[g1,b3,d4,g4] ~@7",
  R: "[a3,c4,f4]@3 [a3,c4,f4] f2@2 [a3,c4,f4]@2 f2@2 [a3,c4,f4]@2 ~ [a3,c4,f4]@2 ~, f2 ~@11 f2@2 ~@2", // F
  S: "[a3,c4,f4]@3 ~ f2@2 [a3,c4,f4]@2 f2@2 [a3,c4,f4]@2 ~ [a3,c4,f4]@3, f2 ~@2 [a3,c4,f4]@2 ~@7 f2@2 ~@2", // F
  T: "[c3,g3,c4,e4]@3 [g3,c4,e4] c3@2 [g3,c4,e4]@2 c3@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 ~, ~@6 c3 ~", // C
  U: "[c3,g3,c4,e4]@3 [g3,c4,e4] c3@2 [g3,c4,e4]@2 c3@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@3, ~@6 c3 ~", // C
  V: "[f2,a3,c4,f4]@3 [a3,c4,f4] f2@2 [a3,c4,f4]@2 f2@2 [a3,c4,f4]@2 ~ [a3,c4,f4]@2 ~, ~@6 f2 ~", // F
  W: "[a3,c4,f4]@3 [a3,c4,f4] f2@2 [a3,c4,f4]@2 f2@2 [c4,f4]@2 ~ [a3,f4] ~@2, f2 ~@9 a3 ~ f2@2 ~@2, ~@13 c4@2 ~", // F F5 Dm
  X: "[c3,g3,c4,e4]@3 [g3,c4,e4] c3@2 [g3,c4,e4]@2 c3@2 [g3,c4,e4]@2 ~ [g3,e4] ~@2, ~@6 c3 ~, ~@13 c4@2 ~", // C
  Y: "[a3,d4,f#4]@3 ~ f#2@2 [a3,d4,f#4]@2 f#2@2 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3, f#2 ~@2 [a3,d4,f#4]@2 ~@7 f#2@2 ~@2", // D
  Z: "[g2,g3,c4,e4]@3 [g3,c4,e4] g2@2 [g3,c4,e4]@2 g#2@2 [g#3,c4,e4]@2 ~ [g#3,c4,e4]@2 ~, ~@6 g#2 ~", // C G#aug
  AA: "[a2,a3,c4,e4]@3 [a3,c4,e4] a2@2 [a3,c4,e4]@2 c3@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@3, ~@6 c3 ~", // Am C
  AB: "[g2,b3,d4] ~@15, g4 ~@7", // G
})).s("gm_piano").gain(0.16)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@4 A@10 B C D E D E D F G@2 H D I F J K L F J K L M N O P Q I A@10 B C D E D E D F G@2 H D I F J K L F J K L M N O P
  Q I R A@5 B C D E D E D F G@2 H D I F J K L F J K L F J K L F J K L S
>`.pickRestart({
  A: "c2@2 c2!2 c2@2 c2!2 c2@2 c2!2 c2@2 c2!2", B: "c2@2 c2!2 c2@2 c2!2 c2@2 c2!2 c2@2 e1@2",
  C: "f1@2 f1!2 f1@2 f1!2 f1@2 f1!2 f1@2 f#1@2", D: "g1@2 g1!2 g1@2 g1!2 g1@2 g1!2 g1@2 g1!2",
  E: "f1@2 f1!2 f1@2 f1!2 f1@2 f1!2 f1@2 f1!2", F: "f1@2 f1!2 f1@2 f1!2 f1@2 f1!2 d1@2 e1@2",
  G: "f1@2 f1!2 f1@2 f1!2 f1@2 f1!2 f1@2 c1@2", H: "d1@2 d1!2 d1@2 d1!2 d1@2 d1!2 d#1@2 g1@2", I: "g1 ~@7",
  J: "f1@2 f1!2 f1@2 f1!2 f1@2 f1!2 f1@2 c2@2", K: "c2@2 c2!2 c2@2 c2!2 c2@2 c2!2 g1@2 a1@2",
  L: "c2@2 c2!2 c2@2 c2!2 c2@2 c2@2 a1@2 g1@2", M: "f1@2 f1!2 f1@2 f1!2 f1@2 f1!2 f1@2 d1@2",
  N: "f#1@2 f#1!2 f#1@2 f#1!2 f#1@2 f#1!2 f#1@2 f#1!2", O: "g1@2 g1!2 g1@2 g1!2 g#1@2 g#1!2 g#1@2 g#1!2",
  P: "a1@2 a1!2 a1@2 a1!2 c2@2 ~@2 e1@2 f1@2", Q: "f1@2 f1!2 f1@2 f1!2 f1@2 f1!2 f1@2 g1@2",
  R: "c2 ~ c2!2 c2@2 c2!2 c2@2 c2!2 c2@2 c2!2", S: "f1 ~@7",
})).s("gm_electric_bass_finger").gain(0.3)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@4 A@12 B C D E F E@3 G F H I@2 J@2 I@2 J@2 I K L M I H A@12 B C D E F E@3 G F H I@2 J@2 I@2 J@2 I K L M I H A@8 B C
  D E F E@3 G F H I@2 J@2 I@2 J@2 I@2 J@2 I@2 J@2 N
>`.pickRestart({
  A: "c4 ~ c4 ~ c4 g3 a3 c4 ~ c4 ~ c4 ~ g3 a3 g3", B: "g3 ~ g3 ~ g3 d3 e3 g3 ~ g3 ~ g3 ~ d3 a3!2",
  C: "a3 ~ a3 ~ a3 g3 a3!2 f3!8", D: "g3 ~ g3 ~ g3 d3 e3 g3 ~ g3 ~ g3 ~ d3 f3!2", E: "f3 ~ f3!3 ~ f3!10",
  F: "g3 ~ g3!3 ~ g3!10", G: "d3 ~ d3!3 ~ d3!10", H: "g3 ~@15", I: "f3 ~ f3 ~ f3!6 ~ f3 ~ f3!3",
  J: "g3 ~ g3 ~ g3!6 ~ g3 ~ g3!3", K: "f#3 ~ f#3 ~ f#3!6 ~ f#3 ~ f#3!3", L: "g3 ~ g3 ~ g3!4 g#3!2 ~ g#3 ~ g#3!3",
  M: "a3 ~ a3 ~ a3!4 g3!2 ~ g3 ~ g3!3", N: "f3 ~@15",
})).s("gm_electric_guitar_muted").gain(0.19).pan(0.2)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted_2 = note("<~@27 A@9 B C A D E ~@23 A@9 B C A D E ~@19 A@13 F ~@3>".pickRestart({
  A: "c4 ~ c4 ~ c4 g3 a3 c4 ~ c4 ~ c4 ~ g3 a3 g3", B: "d4 ~ d4 ~ d4 g3 a3 d4 ~ d4 ~ d4 ~ g3 a3 g3",
  C: "c4 ~ c4 ~ c4!4 ~ d4 ~ d4 ~ g3 a3 g3", D: "c4 ~ c4 ~ c4 g3 a3 d4 ~ d4 ~ d4 ~ g3 c4!2", E: "d4 ~@15",
  F: "c4 ~ c4 ~ c4 g3 a3 c4 ~ c4 ~ c4 ~ g3 a3 ~",
})).s("gm_electric_guitar_muted").gain(0.19).pan(0.7)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_3 = note("<~@110 [~@15 g3] [c4 ~ c4 ~ c4 g3 a3 c4 ~ c4 ~ c4 ~ g3 a3 g3]!2 [c4 ~@15]>")
  .s("gm_electric_guitar_muted").gain(0.06).pan(0.7)

// other · brass section · "BRASS 1"
const brass_section = note(`<
  ~@16 A B@2 C@2 ~ D@3 E F G H I J G H I J K L M N O F ~@12 A B@2 P@2 ~ Q@3 E F G H I J G H I J K L M N O F ~@8 A B@2
  P@2 ~ Q@3 E F G H I J G H I J G H I J G R ~@3
>`.pickRestart({
  A: "[g3,g4,b4,d5]@3 [g3,g4,b4,d5] ~@12", B: "[~@6 [a3,a4] ~ [c4,c5]@2 [d4,d5]@2 [e4,e5]@2 [d4,d5]@14 ~@4]/2",
  C: "[~@6 [a3,a4] ~ [d4,d5]@2 [a3,a4]@2 [e4,e5]@2 [d4,d5]@6 ~@12]/2", // A D A E D
  D: "[~@13 g4 a4 c5@3 a4 ~@10 g4 a4 c5@3 a4 ~@13]/3",
  E: "~@2 [g4,g5] ~ [g4,g5] [e4,e5] [d4,d5] [g4,g5] ~ [g4,g5] [e4,e5] [d4,d5] [g4,g5]!2 [e4,e5] [d4,d5]", // G E D G E D G E …
  F: "[g4,g5] ~@15", G: "~@4 [f4,c5,f5,a5]@2 [d#4,e4,g5,g#5] [c#4,d4,a4,d5,d#5,f5,f#5] [g#4,c#5] ~@5 [a3,a4] [c4,c5]",
  H: "~@4 [f4,f5]@6 [g4,g5]@2 [f4,f5]@2 [e4,e5] ~", I: "~@14 [g3,g4] ~",
  J: "[a3,a4]@2 [c4,c5]@2 [c4,c5]@2 [a3,a4] ~@2 [e4,c5] [d4,a4] [c4,g4] [d4,a4] [e4,c5] [g4,e5] ~", // A C A C D5 C5 D5 C
  K: "~@4 [a3,a4]@4 [c4,c5]@4 [a3,a4]@3 ~", L: "~@4 [a3,a4]@4 [c4,c5]@2 [a3,a4]@2 [c4,c5]@2 [d4,d5] ~",
  M: "~ [e4,e5] ~ [d4,d5]", N: "[d4,d5]@4 [c4,c5]@4 [g4,e5]@3 [g4,d5]@3 [g4,c5] ~",
  O: "[c4,f4,a4,c5]@8 ~@3 [d4,d5] [g4,g5]!2 [e4,e5] [d4,d5]", // F D G E D
  P: "[~@6 [e4,e5] ~ [d4,d5]@2 [a3,a4]@2 [e4,e5]@2 [d4,d5]@5 [d4,d5] ~@12]/2", // E D A E D
  Q: "[~@13 g4 a4 c5@3 a4 ~@9 d5 ~ a4 c5@3 a4 ~@13]/3", R: "~@4 [f4,f5]@6 ~@2 [f4,f5]@2 [e4,e5] ~",
})).s("gm_brass_section").gain(0.56)

// other · brass section · "BRASS 1" · soft notes
const brass_section_soft = note(`<
  ~@22 A@2 ~@3 B ~@3 B ~@27 A C ~@3 B ~@3 B ~@23 A C ~@3 B ~@3 B ~@3 B ~@3 B D E F ~
>`.pickRestart({
  A: "~@12 f4 ~@3", B: "~@6 [b4,e5] a#4 ~@8", C: "~@13 g4 ~@2", D: "~@5 [g4,g5] ~@2", E: "~@14 [g3,g4] ~",
  F: "[a3,a4]@2 [c4,c5]@2 [c4,c5]@2 [a3,a4] ~@2 [e4,c5] [d4,a4] [c4,g4] [d4,a4] [e4,c5] [g4,e5] ~", // A C A C D5 C5 D5 C
})).s("gm_brass_section").gain(0.24)

// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note("<A B A B A B A B ~@106>".pickRestart({
  A: "[g3,c4,e4]", B: "[a3,c4,f4]",
})).s("gm_synth_strings_2").gain(0.09)

// other · synth drum
const synth_drum = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B ~ A B C D A B C D A B C D A ~ A B C D A B C D A B C D A B C D A B
  C D A B ~ A B C D A B C D A B C D A ~ A B C D A B C D A B C D A B C D A B ~ A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "~ d6 e5!2 ~ e5 d6 ~@2 d6 e5!2 ~ e5!2 d6", B: "~@2 e5!2 ~ e5 d6 ~@3 e5!2 ~ e5 d6!2",
  C: "~ d6 e5!2 ~ e5 d6 ~@2 d6 e5!2 ~ e5 d6!2", D: "~@2 e5!2 ~ e5 d6 ~@2 d6 e5!2 ~ e5 d6!2",
})).s("gm_synth_drum").gain(0.12)

// other · muted trumpet · "MT TRUMPET"
const muted_trumpet = note(`<
  ~@8 A B C D E F G H I F J F K L M N O P Q R S R S R T R S U V W X Y Z AA ~@3 A B C D E F G H I F J F K L M N O P Q R S
  R S R T R S U V W X Y Z AA ~@13 M N O P Q R S R S R T R S AB T R S R T R S Y
>`.pickRestart({
  A: "~@2 g4@2 g4@2 g4@2 g4@3 g4@3 g4 ~", B: "~ c4 ~@2 c4@4 ~@8", C: "~@2 g4 ~ g4 e4 g4 ~@5 g4 ~ g4@2",
  D: "a4@3 c5@2 ~ c5@3 ~@7", E: "~@2 e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~", F: "d5@3 c5@3 c5 ~@9",
  G: "~@2 g4@2 g4@2 g4 ~@3 g4@2 g4@2 g4@2", H: "a4@3 c5@3 c5 ~@9", I: "~ d5!6 e5",
  J: "~@2 d5 ~ d5 ~ d5 ~ d5@3 d5@3 e5 ~", K: "~@2 d5@4 c5 ~ d5@2 c5 ~ d5@2 c5 ~", L: "e5 ~@2 d5 ~@2 c5@5 ~@5",
  M: "~@2 f5 ~ f5 ~ f5 ~ f5@2 e5@2 d5@2 c5 ~", N: "~@2 f5 ~ f5 ~ f5 f5@3 e5 ~ d5@2 c5 ~",
  O: "~@2 f5 ~ f5 ~ f5 f5@3 e5 d5@3 c5@2", P: "d5", Q: "~@8 d#5@2 ~ d5@3 c5@2", R: "c5 ~@5 a4@2 c5 ~@5 a4@2",
  S: "c5@3 c5@2 ~ d#5 ~@3 d#5@2 d5@2 c5@2", T: "c5@2 ~ c5@3 d#5 ~@3 d#5@2 d5@2 c5@2", U: "c5 ~@9 a4@2 c5@2 d5 ~",
  V: "d#5@2 d5@2 c5@2 c5 ~@3 a4@2 c5@2 d5@2", W: "e5@7 ~ e5@2 ~ e5@2 d5@2 ~", X: "c5@2 ~@6 d#5@3 d5@2 c5@2 ~",
  Y: "c5 ~@15", Z: "~@6 c4 ~ e4@2 ~ g4@2 a4@2 ~", AA: "c4 ~@15", AB: "c5 ~@5 a4@2 c5 ~@5 a4@2, ~@5 d#4@3",
})).s("gm_muted_trumpet").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@4 A@22 B A@13 B A@22 B A@13 B A@18 B A@16 ~>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.56)

// drums · rim
const rim = s("rim").struct("<A@26 B A@13 B A@22 B A@13 B A@18 B A@16 ~>".pickRestart({
  A: "x!2 ~ x!2 ~ x ~ x!2 ~ x!2 ~ x!2", B: "x",
})).gain(0.16)

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

// drums · high tom
const high_tom = s("ht").struct("<~@25 [~@9 x ~@6] ~@36 [~@5 x ~ x ~@8] ~@32 [~@5 x ~@10] ~@18>").gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@32 B@2 A ~@24 A ~@9 B@2 A ~ A ~@7 A ~@10 A ~@7 A ~@8>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@22 B A@13 B A@22 B A@13 B A@18 B A@13 C ~@3>".pickRestart({
  A: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", B: "x", C: "x ~ x!3 ~ x!3 ~@2 x!2 ~ x ~",
})).gain(0.48)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@4 A@22 ~ A@13 ~ A@3 B A@18 ~ A@13 ~ A@18 ~ A@13 C D@2 ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~@10 x ~@4 x", D: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
})).gain(0.16)

// drums · claves
const claves = s("clave:2").struct("<A@26 B A@13 B A@22 B A@13 B A@18 B A@16 ~>".pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~@2 x ~@2", B: "x",
})).gain(0.78)

stack(
  piano, bass, electric_guitar_muted, electric_guitar_muted_2, electric_guitar_muted_3, brass_section,
  brass_section_soft, synth_strings_2, synth_drum, muted_trumpet, kick, rim, snare, high_tom, crash, tambourine,
  tambourine_soft, claves
)

More by Rene Froger