Strudelify

Hungry Eyes

Eric Carmen

KeyF majorTempo120 bpm
0:00/0:00
// Hungry Eyes — Eric Carmen
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 104 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 · piano · "FILE#1"
const piano = note("<~@70 A@2 B@2 C@2 D ~@25 E@2>".pickRestart({
  A: "[~@2 a4@2 f5 ~ g4 ~ d5@2 c5@2 g4@2 f4@17 ~]/2", B: "[~ a4 f5 g4 d5 c5 g4 f4@9]/2",
  C: "[~@2 a4@2 f5@2 g4@2 d5@2 c5@2 g4@2 f4@17 ~]/2", D: "~ a4 f5 g4 d5 c5 g4 f4", E: "[~@12 f4@7 ~@13]/2",
})).s("gm_piano").gain(0.31)

// chords · brass section
const brass_section = note("<~@16 A@4 B@2 C D@3 C E@2 F ~@10 G@6 H I@3 H J@3 ~@50>".pickRestart({
  A: "[[a4,c5] [g4,b4] [a4,c5] [g4,b4], e5]/4", B: "[c5 [g4,b4], e5, a4@7 ~@9]/2", C: "[d5,f5], a4@7 ~",
  D: "[[c5,e5]@16 d5@23 ~ d5@4 e5@4, g4@47 ~, ~ b4@2]/3", E: "[e5@16 [b4,d5]@15 ~, g4, c5@15 ~@17]/2",
  F: "[bb4,d5,f5] [c5,e5,g5]", G: "[[a4,c5] [g4,b4] [a4,c5] [g4,b4] [a4,c5] [g4,b4], e5]/6", H: "[a4,d5,f5]",
  I: "[[c5,e5]@16 [b4,d5]@23 ~ d5@4 e5@4, g4@39 ~ [g4,b4]@8]/3", // C Bm G
  J: "[e5@16 [b4,d5]@15 ~ [bb4,d5,f5]@7 ~ [c5,e5,g5]@8, g4@11 ~@5, c5@5 ~@11]/3", // Bm Bb C
})).s("gm_brass_section").gain(0.2)

// other · alto sax
const alto_sax = note(`<
  ~@4 A B C D E F G H ~@10 I J D ~ K L M ~ C N ~@2 G O ~@10 P@2 H ~ Q@2 H ~ R M ~@2 C S ~@2 C T ~@2 C D ~@10 C T C S E U
  G T V W ~@2 C T ~@2 A B X@2 Y@2 G Z ~@2
>`.pickRestart({
  A: "~@2 f4@3 g4@3", B: "c4@3 ~", C: "~@2 f4@3 c4@3", D: "d4@11 ~@5", E: "~@4 f4@5 ~ g4@6", F: "c4@11 ~@5",
  G: "~@4 f4@5 ~ c4@6", H: "d4@3 ~", I: "~@4 g4@6 f4@5 ~", J: "~@4 e4@4 ~@2 c4@5 ~", K: "~@4 f4@3 ~@3 e4@3 ~@3",
  L: "~@4 e4@3 ~@3 c4@4 ~@2", M: "d4@13 ~@3", N: "d4@5 ~@3", O: "d4 ~@3", P: "[~@4 g4@6 f4@8 ~@2 e4@4 ~@2 c4@5 ~]/2",
  Q: "[~@4 f4@5 ~ e4@8 ~@2 e4@4 ~@2 c4@4 ~@2]/2", R: "~@4 f4@6 c4@3 ~@3", S: "d4 ~", T: "d4@7 ~@9", U: "c4@7 ~@9",
  V: "~@4 f4@3 ~@3 c4@3 ~@3", W: "d4@3 ~@13", X: "[~@4 f4@6 ~@6 d4@11 ~@5, ~@5 c4@4 ~@7]/2",
  Y: "[~@2 f4@3 ~@3 c4@5 ~@3, ~@10 g4@9 ~@13]/2", Z: "d4@3 ~@5",
})).s("gm_alto_sax").gain(0.31)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A@2 B@2 C@4 ~@18 D@4 E@2 A@2 ~@2 F@6 G@2 H@3 I@2 J D@4 E@2 A@2 D@4 E@2 K@3 L M L M L M N A@2 O@4 A@2 P@6 A@2 D@4
  E@2 A@2 Q@2
>`.pickRestart({
  A: "[f5,f6]/2", B: "[[f5,f6]@23 ~ f6@2 [g5,g6]@6, ~@24 f5 ~@7]/2", C: "[[f5,f6]@55 f5 f6@2 [g5,g6]@6]/4",
  D: "[[f5,f6]@63 ~]/4", E: "[[f5,f6]@13 [g5,g6]@3]/2", F: "[a4@63 a4@32 ~]/6", G: "[d5@15 c5@17]/2", H: "[g4@2 d5]/3",
  I: "[~@15 g4@17, c5@17 ~@15]/2", J: "bb4 c5", K: "[[f5,f6]@31 ~ f6@16, ~@31 [a5,d6]@16 ~]/3", L: "[g5,c6,e6]",
  M: "[a5,d6,f6]", N: "[bb5,d6] [g5,c6,e6], f5@7 ~@9", O: "[[f5,f6]@31 ~ f5@25 ~ [g5,g6]@6, ~@31 f6@26 ~@7]/4",
  P: "[[f5,f6]@63 ~ f5@25 ~ [g5,g6]@6, ~@63 f6@26 ~@7]/6", Q: "[[f4,c5,f5]@3 ~]/2",
})).s("gm_string_ensemble_1").gain(0.2)

// chords · epiano1
const epiano1 = note(`<
  ~@15 A B C D@2 E F G H I@2 J H F K L M L N L O L N ~ P E F E Q E F J H R@2 J S F K T N L N L N L N T N L N L M L N U@2
  V@2 W@2 X ~ T N L N L M L N T Y L N L M L N T Y L N L M L N Z@2
>`.pickRestart({
  A: "~@4 [c4,f4,a4] ~ [b3,e4,g4] ~", B: "[a3,c4,e4]", C: "[g4,b4,d5]",
  D: "[[a4,c5,e5]@21 ~@3 [c5,a5] ~@3 [d5,g5] ~@3, ~@12 e5 ~ b4 ~]/2", E: "[a4,c5,e5]@15 ~", F: "[g4,b4,d5]@15 ~",
  G: "[a4,d5,f5]@15 ~, e5 ~@15", H: "[g4,c5,e5]@15 ~", I: "[[g4,b4,d5]@23 ~ [g4,b4,d5]@2 ~@2 [g4,b4,e5]@2 ~@2]/2",
  J: "[a4,d5,f5]@15 ~", K: "[bb4,d5,f5]@7 ~ [c5,e5,g5]@8", L: "[a3,c4,f4]@15 ~", M: "[bb3,d4,f4]@7 ~ [g3,c4,e4]@8",
  N: "[bb3,d4,f4]@7 ~ [g3,c4,e4]@7 ~", O: "[bb3,d4,f4] [g3,c4,e4]", P: "~@4 [c5,e5,a5] ~ [b4,d5,g5] ~",
  Q: "[g4,b4,d5]@7 ~ [c5,e5,a5]@2 ~@2 [b4,d5,g5]@2 ~@2", R: "[[g4,b4,d5]@23 ~ [g4,b4,d5]@2 ~@2 [g4,b4,e5]@3 ~]/2",
  S: "[g4,c5,e5]@7 ~", T: "[a3,c4,f4]", U: "[~@2 a4 ~ f5 ~ g4@2 ~ c5@2 ~ g4@2 f4@17 ~, ~@4 d5 ~@11]/2",
  V: "[~@2 a4@2 f5 ~ g4@2 d5@2 c5@2 g4@2 f4@18]/2", W: "[~@2 a4@2 f5@2 g4@2 d5@2 c5@2 g4@2 f4@17 ~]/2",
  X: "~ a4 f5 g4 d5 c5 g4 f4", Y: "[bb3,d4,f4]@8 [g3,c4,e4]@7 ~",
  Z: "[~@3 f3@3 ~@2 bb3@2 ~@2 [c4,f4]@12 ~@8, f4@2 ~ f4@2 ~@11, ~ c4@6 ~@3 f3@15 ~@7]/2", // F5
})).s("gm_epiano1").gain(0.36)

// bass · electric bass finger
const bass = note(`<
  ~@2 A@3 B C B A D A D A@4 E@6 F@2 G H F I G J K B A L A B A D A M E@6 N O P H Q F G R A D A L A L A D A D A L A B A L
  S F@2 T F U V D A D A B A B A L A B A B A L A L A L A B A B A B W@2
>`.pickRestart({
  A: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", B: "bb1 ~ bb1@2 bb1 ~ bb1 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  C: "f1 ~ f1 ~ f1 ~ f1 ~ f1@2 f1 ~ f1 ~ f1 ~", D: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  E: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", F: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  G: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", H: "g1 ~ g1 ~ g1 ~ g1 ~ g1@3 ~ b1@3 ~",
  I: "d2 ~ d2 ~ d2 ~ d2 ~ d2@2 d2 ~ d2 ~ d2 ~", J: "bb1@4 bb1 ~ bb1 ~ c2@3 ~ c2 ~ c2@2",
  K: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1!2 ~@2", L: "bb1@2 bb1 ~ bb1 ~ bb1 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  M: "f1 ~ f1 ~ f1 ~ f1 ~ f1@3 ~ f1@3 ~", N: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2!2",
  O: "~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 g1", P: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  Q: "d2 ~ d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", R: "bb1@4 bb1 ~ bb1 ~ c2@3 ~ c2@2 c2 ~",
  S: "d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", T: "d2 ~ d2 ~ d2 ~ d2 ~ d2@2 e2@2 g2@2 e2@2",
  U: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2 d2 ~", V: "d2@2 d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  W: "[f1@2 ~ f1@2 ~ f1@5 ~ f1 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.46)

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

// drums · snare
const snare = s("sd").struct("<~@2 A@11 B A@23 B A C A@13 ~ A@7 B A@7 B A@7 B A@7 D A@7 B A@7 B E ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3", C: "~ x ~@2", D: "~@2 x ~@3 x!2", E: "~ x!2 ~ x!2 ~@2",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~ A ~@51 B ~@15 C ~@7 C ~@7 B ~@7 C ~@7 C ~@2>".pickRestart({
  A: "~@7 x", B: "~@6 x!2", C: "~@5 x!3",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B A@3 C A@5 D A@2 C A@5 C D@2 A@4 D A@5 C A@3 E A F A@2 D A C A@9 B D C A@24 D A@10 B A@3 G A@4 ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x!3 ~ x ~ x ~", D: "x ~ x ~ x!3 ~", E: "x!2 ~@2", F: "x!2 ~@2 x ~@3 x ~@3 x ~@3",
  G: "x!3 ~ x ~ x!2",
})).gain(0.51)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@2 A B A@3 C A@5 D A@2 C A@5 C D@2 A@4 D A@5 C A@3 E A C A@2 D A C A@9 B D C A@3 F A@20 D A@10 B A@3 G A@3 B ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~@3 x ~ x ~ x", D: "~ x ~ x ~@3 x", E: "~ x ~ x ~@4",
  F: "~ x ~@4 x ~@3 x ~@3 x ~", G: "~@3 x ~ x ~@2",
})).gain(0.31)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A ~@51 B ~@15 C ~@7 D ~@7 E ~@7 D ~@7 D ~@2>".pickRestart({
  A: "~@3 x", B: "~@5 x ~@2", C: "~ x ~@2 x ~ x ~ x ~@7", D: "~ x!4 ~@3", E: "~@2 x!3 ~ x!3 ~ x ~@5",
})).gain(0.51)

// drums · high tom
const high_tom = s("ht").struct("<~ [~@5 x ~@2] ~@51 [x!3 ~ x ~ x ~ x ~@7] ~@31 x ~@18>").gain(0.51)

// drums · crash
const crash = s("cr").struct(`<
  ~@7 A B ~@5 B ~@11 B ~@3 B ~@2 A B ~@19 B ~@2 A B ~@3 B ~@2 A B ~@11 B ~@7 B ~@2 A B ~@3 B ~@2 A B ~@3 C ~
>`.pickRestart({
  A: "~@7 x", B: "x", C: "x ~@2 x ~@2 x ~",
})).gain(0.51)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[x!2] [x ~ x ~ x!2 ~@2 x ~@2 x ~@4] ~@102>").gain(1.82)

stack(
  piano, brass_section, alto_sax, string_ensemble_1, epiano1, bass, kick, snare, low_tom, hihat, hihat_soft, mid_tom,
  high_tom, crash, cabasa
)

More by Eric Carmen