Strudelify

Strong Enough

Crow Sheryl

KeyD majorTempo160 bpm
0:00/0:00
// Strong Enough — Crow Sheryl
// 160 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 3, 4/4 at bar 3, 2/4 at bar 4, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar 1.
setcpm(160/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 · acoustic guitar nylon · "Guitar 1"
const acoustic_guitar_nylon = note("<~@78 A B@2 A B@2 A B@2 A B@2 ~@26>".pickRestart({
  A: "~@5 a3 e4@2, ~ f#4@2 ~", B: "[~@3 e4 ~@5 a3 ~@4 e4 [a3,d4,e4], g2 b2@2 ~]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.3)

// chords · acoustic guitar steel · "Guitar 2"
const acoustic_guitar_steel = note(`<
  A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 C D@2 E F@2 C D@2 E F@2 A B@2 A
  B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 G H I G H I G H I G H I A B@2 A B@2 A B@2 A B@2 C D@2 E F@2 C D@2 E F@2 J@2
>`.pickRestart({
  A: "~@6 e4 f#4, d3!2, ~@2 [a3,f#4]@3 a3@3", // D
  B: "[~@2 [d3,b3]@2 ~@7 d4 ~@2 [e3,c#4]@2, g2 b2 b2 a2, ~@6 [f#3,d4]@3 f#3@3 ~@4, ~@5 g3 ~@2]/2", C: "e2",
  D: "[f#2@2 ~@4 b3 ~@4 b3 ~@2 [d3,a3,c#4]@2, ~@2 d3@4 ~ b3@2 b3@2 ~@5, ~ g2@2 a2, ~@8 e4@3 ~@5, ~@5 a3 ~@2]/2", // Dmaj7
  E: "~@7 b3, b2, ~@2 f#3@3 d4@3, ~@3 g3@3 g3@2, ~@4 e4@3 ~",
  F: "[~@2 [e3,g3]@2 ~@2 b3 ~@4 b3 ~@2 [e3,a3,c#4]@2, c3 g2@2 a2, ~@7 b3@2 b3@2 ~@5, ~@8 e4@3 ~@5, ~@5 a3 ~@2]/2", // Em A
  G: "[a4,d5]@2 [a4,d5]!2 [b4,d5]!2 [a4,d5]!2", H: "[b4,d5]!2 [a4,d5]!2 [a4,d5]@2 [a4,d5]!2",
  I: "[b4,d5]!2 [a4,d5]!4 [a4,d5]@2", J: "[~@2 e4 f#4@9 ~@4, ~@2 [a3,d4]@9 ~@5]/2",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.7)

// chords · acoustic guitar steel · "Guitar 3"
const acoustic_guitar_steel_2 = note(`<
  ~@18 A B@2 C B@2 C B@2 C B@2 A B@2 A B@2 A B@2 A B@2 D E@2 F G@2 D E@2 F G@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2
  A B@2 H@2 I H@2 I H@2 I H@2 I A B@2 A B@2 A B@2 A B@2 D E@2 F G@2 D E@2 F G@2 J@2
>`.pickRestart({
  A: "~@2 a3@3 [a3,d4]@3", B: "[~@2 [d3,a3,b3]@2 ~@2 d4@3 ~@2 d4 a2@4, g2 b2@2 ~, ~@3 a3@2 g3 ~@2, ~@9 d4@2 ~@5]/2",
  C: "~@2 a3@3 [a3,d4]@3, d2", D: "[d4,g4]@4 [d4,g4]@2 [d4,g4]@4 [d4,g4]@2 [d4,g4] ~ [d4,g4] ~",
  E: "[[d4,a4]@4 [d4,a4] ~ [d4,a4] ~ [d4,b4]@4 [d4,b4]@2 [d4,b4]@4 [d4,b4]@2 [d4,b4] ~ [d4,b4] ~ [e4,c#5]@4 [e4,c#5] ~ [e4,c#5] ~]/2", // D5 G C#m
  F: "[f#4,d5]@4 [f#4,d5]@2 [f#4,d5]@4 [f#4,d5]@2 [f#4,d5] ~ [f#4,d5] ~", // D
  G: "[[g4,e5]@8 [d4,b4]@4 [d4,b4]@2 [d4,b4]@4 [d4,b4]@2 [d4,b4]@4 [e4,c#5]@4 [e4,c#5] ~ [e4,c#5] ~]/2", // C G C#m
  H: "~@2 [a4,d5]@2 ~@2 [a4,d5]!2", I: "~ [a4,d5] ~ [a4,d5]", J: "[~@2 e3 f#3@13, ~ [a3,d4]@7]/2",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.7)

// other · acoustic guitar nylon · "Guitar 3 (Bend)"
const acoustic_guitar_nylon_2 = note(`<
  ~@18 A ~@2 A ~@2 A ~@2 A ~@2 A ~@2 A ~@2 A ~@2 A ~@14 A ~@2 A ~@2 A ~@2 A ~@2 A ~@2 A ~@2 A ~@2 A ~@14 A ~@2 A ~@2 A
  ~@2 A ~@16
>`.pickRestart({
  A: "~@2 e3@3 ~ e3@2",
})).s("gm_acoustic_guitar_nylon").gain(0.45)

// other · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel_3 = note("<~@54 A B@2 C D@3 E@3 B@2 ~@36 F G H@2 I@2 F G H@2 I@2 ~@2>".pickRestart({
  A: "~ [a4,d5]@3", B: "[g5@2 d5 a4 a4@6 a4@2 d5@2 c#5@2]/2", C: "a4", D: "[g5@2 d5 a4 a4@6 a4@2 d5@2 c#5@10]/3",
  E: "[g5@2 d5 a4 a4@6 a4@14]/3", F: "[b3,e4]", G: "~ e4@3", H: "[~@2 [e4,a4]@5 ~]/2", I: "[[g4,c5]@3 [e4,a4]]/2",
})).s("gm_acoustic_guitar_steel").gain(0.54).pan(0.3)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@18 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 A B@2 C D@2 E F@2 C D@2 E F@2 A B@2 A B@2 A B@2 A B@2 A G@2 A G@2 A G@2
  A G@2 A G@2 A G@2 A G@2 A G@2 A G@2 A G@2 A G@2 A G@2 C D@2 E F@2 C D@2 E F@2 H@2
>`.pickRestart({
  A: "d2", B: "[g2 b2@2 a2]/2", C: "e1", D: "[f#1 g1@2 a1]/2", E: "b1", F: "[c2 g1@2 a1]/2", G: "[g1 b1@2 a1]/2",
  H: "[d2@3 ~]/2",
})).s("gm_acoustic_bass").gain(0.4)

// drums · bongos
const bongos = s("bongo:18").struct("<~@18 A B@32 A B@35 A B@23 A B@3 ~>".pickRestart({
  A: "~@3 x ~@3 x", B: "~@3 x ~@4",
})).gain(1.04)

// drums · bongos · soft notes
const bongos_soft = s("bongo:18").struct("<~@18 [~ x ~@2]!97 ~>").gain(0.39)

// drums · congas
const congas = s("conga:13").struct("<~@18 A B@32 A B@35 A B@23 A B@2 C ~>".pickRestart({
  A: "~ x ~@4 x ~", B: "~ x ~@3 x!3", C: "~ x ~@6",
})).gain(1.27)

// drums · congas
const congas_2 = s("conga:33").struct("<~@18 A B@32 A B@35 A B@23 A B@2 C ~>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x!2", C: "x",
})).gain(1.27)

stack(
  acoustic_guitar_nylon, acoustic_guitar_steel, acoustic_guitar_steel_2, acoustic_guitar_nylon_2,
  acoustic_guitar_steel_3, bass, bongos, bongos_soft, congas, congas_2
)

More by Crow Sheryl