Strudelify

Man on the Corner

Genesis

KeyG♭ majorTempo111 bpm
0:00/0:00
// Man on the Corner — Genesis
// 111 bpm, 4/4, key Gb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "Keyboards 2" pad poly (copy of ch 1 "Keyboards 1" epiano1); ch 4 "Keyboards 2" pad poly (copy of ch 1 "Keyboards 1" epiano1); ch 3 "Keyboards 2" reed organ (copy of ch 4 "Keyboards 2" reed organ); ch 7 "Phil w/lyrics" brass section (copy of ch 6 "Phil" brass section)
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(111/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 · epiano1 · "Keyboards 1"
const epiano1 = note(`<
  ~@8 A B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 D@3 E@7 B@2 C@2 B@2 C@2 B@2 C@2 B@2 D@3 F@6 G@2 H@2 G@2 I@4 J@2 A
  B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 K@2
>`.pickRestart({
  A: "~ [db4,f4,ab4] [eb4,gb4,bb4]@2", // Db Ebm
  B: "[[ab4,eb5]@3 [db4,ab4,db5]@3 [db4,gb4,bb4]@4 [db4,f4,ab4]@2 [eb4,gb4,bb4]@4]/2", // Ab5 Db5 Gb Db Ebm
  C: "[[ab4,eb5]@3 [gb4,bb4,db5]@7 [db4,f4,ab4]@2 [eb4,gb4,bb4]@4]/2", // Ab5 Gb Db Ebm
  D: "[[ab4,eb5]@3 [gb4,bb4,db5]@20 [f4,ab4,db5]]/3", // Ab5 Gb Db
  E: "[~@2 [gb4,bb4,db5]@17 [ab3,b3]@12 [g3,bb3]@3 [ab3,b3]@16 [db4,f4,ab4]@2 [eb4,gb4,bb4]@4, ~@19 eb4@31 ~@6]/7", // Gb Abm Gm Abm Db Ebm
  F: "[~@2 [gb4,bb4,db5]@17 [ab3,b3]@12 [g3,bb3]@3 [ab3,b3]@14, ~@19 eb4@29]/6", // Gb Abm Gm Abm
  G: "[[b3,eb4,gb4]@5 [db4,f4,ab4]@2 [eb4,gb4,bb4]@9]/2", H: "[[bb3,db4,f4]@5 [ab3,c4,eb4]@2 [db4,f4,ab4]@9]/2",
  I: "[[bb3,db4,f4]@5 [ab3,c4,eb4]@2 [db4,f4,ab4]@25]/4", J: "[ab3,b3,eb4,gb4]/2",
  K: "[[ab4,eb5]@3 [gb4,bb4,db5]@7 ~@6]/2", // Ab5 Gb
})).s("gm_epiano1").gain(0.4)

// bass · synth bass 2 · "Bass Pedals"
const bass = note("<~@8 A B@22 C D@4 E@5 B@14 C D@4 F@4 G@2 H@2 G@2 H@2 G@2 I@2 A B@38 J@2>".pickRestart({
  A: "~ db2 eb2@2", B: "[f2@3 gb2@7 db2@2 eb2@4]/2", C: "f2@3 gb2@5", D: "[ab2@15 ab2@15 gb2 eb2]/4",
  E: "[db2@15 db2@19 db2@2 eb2@4]/5", F: "[db2@15 db2@17]/4", G: "~ b2, b1", H: "~ bb2, bb1",
  I: "[~@4 b2@3 ~@5 b2@4, b1@7 b1@9]/2", J: "[f2@3 gb2@7 ~@6]/2",
})).s("gm_synth_bass_2").gain(0.4)

// chords · reed organ · "Keyboards 2"
const reed_organ = note("<~@64 A@2 B@2 A@2 C@4 D@2 ~@41>".pickRestart({
  A: "[[b3,eb4,gb4]@5 [db4,f4,ab4]@2 [eb4,gb4,bb4]@9]/2", B: "[[bb3,db4,f4]@5 [ab3,c4,eb4]@2 [db4,f4,ab4]@9]/2",
  C: "[[bb3,db4,f4]@5 [ab3,c4,eb4]@2 [db4,f4,ab4]@25]/4", D: "[ab3,b3,eb4,gb4]/2",
})).s("gm_reed_organ").gain(0.42).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note("<~@56 A@4 B@4 ~@53>".pickRestart({
  A: "db6/4", B: "eb6/4",
})).s("gm_string_ensemble_1").gain(0.14)

// drums · kick
const kick = s("bd").struct(`<
  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 A B A B A
  B A B A B C B C B C B C B C B C B A D A D A D A D A D A E A D A D A D A E A D A D A D A E A D A D A D A E A D A D F
>`.pickRestart({
  A: "~@2 x ~ x!4", B: "~ x ~ x", C: "x ~ x ~ x!4", D: "~@2 x!2 ~@2 x ~", E: "~@2 x!2 ~@2 x!2", F: "~ x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@64 A@12 ~ B@6 C B@7 C ~ B@6 C ~ B@2 D ~ B@2 C ~ B@2 D ~ B@2 C ~>".pickRestart({
  A: "~ x", B: "x", C: "x ~@10 x!2 ~ x ~", D: "x ~@5 x!2",
})).gain(0.6)

// drums · clap
const clap = s("cp").struct("<~@41 x!24 ~@52>").gain(0.6)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@64 A ~ A ~ A ~ B C A ~ A ~ D E F G F E F H F E F G F E F H D E F G F E F H D E F H F E F H D E F H F E F H D
>`.pickRestart({
  A: "x ~@6 x", B: "x ~@5 x!2", C: "~@14 x!2", D: "~@3 x!2 ~@3", E: "~@3 x ~@2 x ~", F: "~ x", G: "~@3 x ~@3 x",
  H: "~@3 x ~@4",
})).gain(0.6)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  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 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 A B A B A B A B ~
>`.pickRestart({
  A: "~@2 x ~@3 x ~@3 x ~ x!3 ~", B: "x ~ x ~@3 x ~ x!5 ~ x ~",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@71 A ~@4 B ~@2 A ~@3 A ~@3 A ~@3 A C ~@2 A ~@3 A C ~@2 D ~@3 A C ~@2 D ~@3 A C
>`.pickRestart({
  A: "~@11 x!2 ~@3", B: "~@3 x!2 ~@11", C: "~ x!2 ~@5", D: "~@3 x",
})).gain(0.6)

// drums · crash
const crash = s("cr").struct("<~@64 A ~@3 A ~@3 A ~@3 B ~@40>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.6)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@76 A ~@2 B ~@3 C ~@3 B ~@3 C A ~@2 B ~@3 C A ~@2 C ~@3 C A ~@2 C ~@3 C A
>`.pickRestart({
  A: "x", B: "~ x", C: "~@7 x",
})).gain(0.6)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B ~
>`.pickRestart({
  A: "~@12 x!3 ~", B: "x", C: "~@10 x ~ x!3 ~",
})).gain(1.26)

// drums · congas
const congas = s("conga:18").struct(`<
  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 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 A B A B A B A B ~
>`.pickRestart({
  A: "~@4 x ~@5 x ~ x!3 ~", B: "x ~ x!4 ~@4 x ~@5",
})).gain(1.54)

// drums · congas
const congas_2 = s("conga:33").struct(`<
  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 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 A B A B A B A B ~
>`.pickRestart({
  A: "~ x ~ x ~@4", B: "~ x ~@4 x ~@5 x ~@3",
})).gain(1.54)

stack(
  epiano1, bass, reed_organ, string_ensemble_1, kick, snare, clap, low_tom, pedal_hat, mid_tom, crash, high_tom, bongos,
  congas, congas_2
)

More by Genesis