Strudelify

Just The Way It Is, Baby

Rembrandts

KeyE♭ majorTempo113 bpm
0:00/0:00
// Just The Way It Is, Baby — Rembrandts
// 113 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(113/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D A B C D E F G H E F G H G F G F@2 E A B G E@2 B@2 E F G H E F G H G F G F@2 E A B G E A B G E F G H E F G H E
  F G H E F G H G F C I ~@9 A B C B A B C B A B C B A B C B A B C B A B C B E@2 B@2
>`.pickRestart({
  A: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", B: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  C: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~", D: "[bb1,b1] ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  E: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", F: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  G: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", H: "[g1,ab1] ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", I: "bb1@13 ~@3",
})).s("gm_electric_bass_finger").gain(0.45)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<A@8 ~@42 B C D E F G H I ~@29 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 ~@4>".pickRestart({
  A: "[eb4 f4 bb4 ~ f4 bb4@2 eb4@2 ~ bb4 ~@2 bb4@2 eb4@2 ~ bb4 ~ ab4 bb4@2 eb4@2 ab4 bb4 eb4 ab4 bb4@2 ~]/4",
  B: "~@2 [f4,gb4] ~@13, ~@2 g4@11 ~@3", C: "~ eb4 ~@2 g3@9 ~@3, f4@13 ~@3, ~ d4@5 ~@2",
  D: "~ ab3 c4 eb4 g4 ab4 g4 f4, ~@2 g3 ~@13", E: "b3@3 c4@2 d4@3 f4@7 ~, ~@4 e4 ~@3",
  F: "~@4 eb5 c5 g4 eb4 d5 b4 f4 d4 eb4@4", G: "~@2 d4 eb4 f4 d4 b3 c4 d4 b3 ab3 ~ f3@4, ~@11 g3@2 ~@3",
  H: "~@2 c3@3 eb3@3 bb3@3 ab3@2 g3@2 ~, ~@2 b2 ~@5 ab3 ~@7", I: "f3@5 ~@3 f3@3 eb3@3 d3@2, ~@8 e3 ~@7",
  J: "[c4@4 bb3@2 ~@2 [eb3,gb3,g3]@2 bb2 ~ [eb3,g3]@2 [bb2,d3,f3]@12 ~@4 bb2@2, [eb3,g3]@7 ~@25, gb3 ~@31]/2", // Eb Bb Eb
  K: "[c3@2 eb3 ~ eb3@2 c3@2 eb3@2 c3 ~ gb3 ~ f3@12 eb3 ~ f3@2 ~@2, ~@13 g3@2 ~@17]/2",
})).s("gm_electric_guitar_muted").gain(0.45).pan(0.7)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note("<A B C ~ A B C ~@44 D ~@55>".pickRestart({
  A: "~@3 eb4 ~@4", B: "~ f4 ~ eb4 f4 ~@3", C: "~ ab4 ~ eb4 ~@4", D: "~@3 b3@10 ~@3",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.7)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted_3 = note(`<
  A@8 B C@3 B C@3 D E D E F G H I J K L M N B C@3 B C@3 D E D E F G H I J G H I J ~@8 B C@3 B C@3 D E O P ~@26 Q@2 R ~
  Q@2 R ~@4
>`.pickRestart({
  A: "[~ bb4@12 ~@4 bb4@12 ~@4 bb4@10 ~@5 [f4,bb4]@13 ~@3, [bb3,eb4,f4]@13 ~@2 bb3@15 ~ bb3@12 ~@4 [bb3,eb4]@14 ~@3, ~@16 [d4,f4]@14 ~@2 [eb4,ab4]@11 ~@21]/4", // Bb5 Bbsus4 Eb5 Dm Ab5
  B: "~ [eb4,g4]@12 ~@3, [g3,c4]@13 ~@3", // Eb C5
  C: "[~ [d4,g4]@12 ~@4 g4@12 ~@3 g4@8 f4@7 ~, [g3,b3]@14 ~ f3@13 ~@4 eb4@15 ~, ~@16 [ab3,c4,eb4]@12 ~@3 [g3,b3]@16 ~]/3", // G5 G Ab G
  D: "~@3 g4@5, ab3, ~ c4@7, ~ f4@3",
  E: "[g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~", // G
  F: "[g2,g3]@2 g2@2 [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~, ~ b3@6 ~, ~@2 g3 ~ eb4@10 ~@2, ~@6 g4@9 ~", // G
  G: "~@2 [g3,eb4] ~ [g3,c4,eb4] ~ g2 ~ [g3,c4,eb4]@2 [g3,c4,eb4] ~ g2 ~ [ab3,c4,eb4]@2, g2 ~@3", // Cm Ab
  H: "~@4 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~ [ab3,c4,eb4] ~@3 [bb3,eb4]@2, ~@13 f3@3", // Ab Eb5
  I: "~@2 [f3,eb4] ~ [f3,bb3,eb4] ~ f3 ~ [f3,bb3,eb4] ~ [f3,bb3,eb4] ~ bb3 ~ [f3,bb3,eb4]@2", // F7 Ebsus2
  J: "~@4 eb4 ~@3 [f3,a3,eb4] ~ a3 ~@3 [g3,c4,eb4] ~", // F7 Cm
  K: "eb4 ~ g3 ~ [g3,c4,eb4] ~ g3 ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~@3 [c4,eb4]@2, ~@14 a3 ~", // Cm
  L: "~@2 [ab3,c4] ~ [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ ab3 ~ [f3,bb3,eb4] ~", // Ab Ebsus2
  M: "~@2 f3 ~ [f3,bb3,eb4] ~@3 [f3,bb3,eb4] ~ [f3,bb3,eb4] ~@3 [f3,bb3,eb4]@2", // Ebsus2
  N: "~@2 [f3,bb3,eb4] ~ [f3,bb3,eb4] ~@3 [f3,bb3,eb4] ~ [f3,bb3,eb4] ~@3 [bb3,eb4] ~", // Ebsus2 Eb5
  O: "[ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~ [ab2,ab3] ~", // Ab
  P: "[bb2,bb3]@5 ~@3", Q: "[~@2 g4@3 ~ g4@4 f4@2 eb4 ~ eb4@4 c4 ~@7 eb4@2 f4 ~ g4 ~, ~@2 gb4 ~@29]/2",
  R: "~@2 [f4,gb4,g4] ~ g4@2 ~@2 [f4,gb4,g4] ~ f4@2 eb4 ~ eb4 ~",
})).s("gm_electric_guitar_muted").gain(0.3).pan(0.2)

// chords · epiano1 · "E.PIANO"
const epiano1 = note(`<
  ~@21 A B C D A B C E ~@13 A B C D A B C D ~@21 F@4 G@4 H I J I H I J I H I J I H I J I H I J I H I J I A B C E
>`.pickRestart({
  A: "[g3,c4,eb4]!4", B: "[ab3,c4,eb4]!4", C: "[f3,bb3,eb4]!4", D: "[f3,a3,eb4]!4",
  E: "[f3,bb3,eb4]@4 [f3,bb3,eb4]@4 [f3,bb3,eb4]@4 [f3,bb3,eb4]@3 ~", // Ebsus2
  F: "[~ [f4,bb4]@14 ~@18 bb4@14 ~@2 bb4@14 ~, [bb3,eb4]@15 [bb3,d4]@16 bb3@16 bb3@16 ~, ~@16 f4@16 [eb4,ab4]@16 [eb4,f4]@15 ~, ~@17 bb4@16 ~@31]/4", // Bb5 Eb5 Bb Ab5 Ebsus2
  G: "[~ [f4,bb4]@12 ~@4 bb4@12 ~@4 bb4@11 ~@5 bb4@12 ~@3, [bb3,eb4]@13 ~@2 [bb3,d4]@14 ~@2 bb3@13 ~@3 bb3@14 ~@3, ~@16 f4@13 ~@3 [eb4,ab4]@12 ~@4 [eb4,f4]@13 ~@3]/4", // Bb5 Eb5 Bb Ab5 Ebsus2
  H: "[g3,bb3,eb4] [g3,bb3,eb4,bb4] ~ [g3,bb3,eb4], ~@2 [g3,bb3,eb4] ~, ~@5 bb4@3", // Eb
  I: "[f3,bb3,d4]!2 ~ [f3,bb3,d4], ~@2 bb4@3 bb4@3, ~@2 [f3,bb3,d4] ~", // Bb
  J: "[ab3,bb3,eb4]!2 ~ [ab3,bb3,eb4], ~@2 bb4@3 bb4@3, ~@2 [ab3,bb3,eb4] ~", // Absus2
})).s("gm_epiano1").gain(0.35).pan(0.9)

// drums · kick
const kick = s("bd").struct("<A@69 B C B C B C B C A@29 C>".pickRestart({
  A: "x!2", B: "x ~@6 x", C: "x",
})).gain(0.5)

// drums · rim
const rim = s("rim").struct("<~@69 [~ x ~ x]!8 ~@30>").gain(0.5)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!68 [~ x ~@2] ~@5 [~ x ~ x] ~@2 [~ x ~ x]!29 [~ x ~@2]>").gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!106 [x!7 ~]>").gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@78 [~ x ~@3 x ~ x] ~@28>").gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@16 A ~@4 A ~@7 A ~@7 A ~@12 A ~@7 A ~@7 A ~ A ~@2 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.3)

stack(
  bass, electric_guitar_muted, electric_guitar_muted_2, electric_guitar_muted_3, epiano1, kick, rim, snare, hihat,
  mid_tom, crash
)

More by Rembrandts