Strudelify

Baby I Love Your Way (Freebird)

Will to Power

KeyG majorTempo75 bpm
0:00/0:00
// Baby I Love Your Way (Freebird) — Will to Power
// 75 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 58, 4/4 at bar 59, 2/4 at bar 60, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 76 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H E I J K L M N O P Q P Q P Q R D S T U V S W U X S T U V S W Y Z Y AA E F AB H E F J K L AC N O P Q P Q
  P Q P Q P Q P Q AD AE P Q P Q P Q P Q
>`.pickRestart({
  A: "g2 f#2", B: "e2@6 e2 d2", C: "c2@7 c2 b1@7 b1", D: "a1@2 b1@2 c2@2 d2@6 e2 g2@2 e2", E: "g2 g2@2 g2 f#2 f#2@3",
  F: "e2@2 e2@5 b1 e2!2 b1 e1@3 d2@2", G: "c2@2 c2@5 g1 c2@2 c2@4 d2 e2", H: "f2@7 c2 f2 c2 f2@4 f2 f#2",
  I: "e2@2 e2@5 b1 e2!2 b1 e1@3 b1@2", J: "c2@2 c2@4 g1@2 c2@2 c2@4 d2 e2", K: "f2@7 c2 f2 c2 f2@6",
  L: "b1@7 f#1 b1@2 b1@4 d2@2", M: "e2@7 b1 e2!2 b1 e1@3 e2@2", N: "a1@7 e1 a1@2 a1@4 b1 c2",
  O: "d2@7 a1 d2 a1 d2@4 b1 a1", P: "g1 g1@2 b1 d2 d2@2 b1", Q: "a1@2 a1@4 a1 b1 c2 c2@2 c2@2 b1 a1@2",
  R: "c2@7 c2 b1@2 b1@4 b1@2", S: "g2@2 g2@5 g2 f#2@2 f#2@6", T: "e2@2 e2@5 b1 e2!2 b1 c1@2 b1 e2 b1",
  U: "f2@2 f2@5 f2 c2@2 c2@5 c2", V: "d2@2 d2@5 a1 d2!2 a1 d1@2 e2 g2 e2", W: "e2@2 e2@5 b1 e2!2 b1 c1@3 d2 e2",
  X: "d2@2 d2@5 a1 d2 e2 f#2 g2@2 e2 g2 e2", Y: "f2@2 f2@5 f2 c2@2 c2@4 c2@2", Z: "d2@2 d2@5 a1 d2 a1 d2@4 d2 e2",
  AA: "d2@2 d2@5 g#1 d2 e2 f#2 g2@2 e2 g2 e2", AB: "c2@2 c2@5 g1 c2@2 c2@3 d2 e2 f2", AC: "e2@7 b1 e2!2 b1 e1@3 d2@2",
  AD: "c2@8 b1@2 b1@5 b1", AE: "a1 b1 c2 d2@2 d2 d2@2",
})).s("gm_acoustic_bass").gain(0.64)

// other · tubular bells · "TUBULARBEL"
const tubular_bells = note("<~@16 A@6 ~@32 A@3 B A B C B A@3 B ~@2 A@3 B A B ~@2>".pickRestart({
  A: "d5!4", B: "d5!2 ~@2", C: "~@2 d5!2",
})).s("gm_tubular_bells").gain(0.54)

// other · tubular bells · "TUBULARBEL" · soft notes
const tubular_bells_soft = note("<~@73 [~@2 d5!2] [d5!4] [d5!2 ~@2]>").s("gm_tubular_bells").gain(0.16)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@3 A ~@19 A ~@3 B C ~@2 D ~@3 B C E F ~@4 G H ~@12 I ~ J@2 I ~@3 I K A ~@3 I ~@3 I
>`.pickRestart({
  A: "[c4,e4] [d4,f#4] [e4,g4] [e4,g4,a4]@5", B: "~@11 g5 f#5 d5 a4 d5", C: "b4 ~",
  D: "~ d4@2 ~ d5@2 ~ a5@2 ~ d5@2 ~ e4 g4 e4", E: "~@8 a5@2 ~ a4 ~@2 g4@2", F: "a4 ~@3", G: "~@10 g5 f#5@3 d5@2",
  H: "g5 ~", I: "~@9 e5 ~ a5 ~ b5 g5@2", J: "[~@9 g5 ~ g5 ~ e5 ~ g5@3 a5 b5 ~@12]/2", K: "g4 f#4",
})).s("gm_synth_brass_1").gain(0.64)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C D E F G H I J K H L M N O P Q P R P R S T P U V W I X Y Z AA AB AC AD AA AE AF AG AH AI E F AJ H I J K H AK AL N
  AM P R P R P R P R P R P R AN T P R P R P R P R
>`.pickRestart({
  A: "[g4,b4,d5]@3 [g4,b4,d5]@2 d4 g4 b4 [d4,f#4,a4]@3 [d4,f#4,a4]@3 f#4 a4, g3 f#3", // G D
  B: "[e4,g4,b4]@3 [e4,g4,b4]@2 e4 g4 b4 e5 b4 g4 e4 [e3,b3,e4,g4]@2 [d3,a3,d4,f#4]@2, e3@3 ~", // Em D
  C: "[g3,c4,e4]@3 [g3,c4,e4]@3 e4 [c3,d4] [f#3,a3,d4]@2 [f#3,a3,d4]@4 d4 [b2,c4], c3@7 ~ b2@7 ~", // C Csus2 D Cmaj7
  D: "[a2,a3,c4,e4] [b2,b3,d4,f#4] [c3,c4,e4,g4] [d3,c4,e4,g4,a4]@5", // Am Bm C Am7
  E: "[b3,d4,g4]@3 [b3,d4,g4] [a3,d4,f#4]@3 [a3,d4,f#4]", F: "[g3,b3,e4]@6 [g4,b4] [f#4,a4]",
  G: "[c4,e4,g4]@6 e4 g4@7 c4 e4", H: "[a3,d#4,g4]@8 g4 d#4 c4 a3 f3@4", I: "[b3,d4,g4]@4 [a3,d4,f#4]@3 [a3,d4,f#4]",
  J: "[g3,b3,e4]@8 e5 b4 g4 e4@3 [f#4,a4]@2", K: "[c4,e4,g4]@4 g4@2 g4 e4", L: "[b3,d4,f#4]@5 [b3,d4,f#4]@2 [f3,b3,d4]",
  M: "[g#3,b3,e4]@9 [a3,b3,e4]@7", N: "[a3,c4,e4]@10 [a3,c4,e4]@3 [a3,c4,e4]@3",
  O: "[a3,c4,e4]@5 [a3,c4,e4]@3 [a3,d4,f#4]@5 [a3,d4,f#4]@3", P: "[b3,d4,g4] [a3,d4,f#4]",
  Q: "~@2 [a3,c4,e4]@4 [a3,c4,e4]@3 [c4,e4]@3 [c4,e4] [b3,d4] [a3,c4]@2", // Am C Bm Am
  R: "[a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [c4,e4] [b3,d4] [a3,c4]@2", // Am C Bm Am
  S: "[g3,c4,e4]@3 [g3,c4,e4]@3 e4 d4 [f#3,b3,d4]@2 [f#3,b3,d4]@4 d4 c4", // C Bm
  T: "[a3,c4,e4] [b3,d4,f#4] [c4,e4,g4] [c4,e4,g4,a4]@5", U: "[b3,e4,g4]@7 [g3,b3,e4]",
  V: "[a3,c4,f4]@4 [g3,c4,e4]@3 [g3,c4,e4]", W: "d4@9 ~@2 g5 f#5 d5 a4 d5, [f#3,a3], ~@9 d4@7",
  X: "[b3,e4,g4]@5 b3 e4 g4 b4@6 [g3,b3,e4]@2", Y: "f4@4 f4@2 a4@2 [g3,c4,e4]@4 c4@2 c4 e4, [a3,c4] ~",
  Z: "[f#3,a3,d4]@8 d4 e4 f#4 g4@2 e4 g4 e4", AA: "[b3,d4,g4]@2 d4 g4 [a3,d4,f#4]@2 d4 f#4",
  AB: "[b3,e4,g4]@5 b3 e4 g4 b4@4 e4@2 g4@2", AC: "[a3,c4,f4]@2 c4 f4 e4@2 e4@2, ~ [g3,c4]",
  AD: "d4@4 d4@4 [f#3,a3,d4]@3 g5 f#5 d5 a4 d5, [f#3,a3] ~", AE: "[b3,e4,g4]@5 e4 g4 b4 e5@6 [e4,g4,b4]@2",
  AF: "[c4,f4,a4]@4 c4 f4 a4@2 [c4,e4,g4]@6 [c4,e4,g4]@2", AG: "[a3,d4,f#4] [a3,d4,f#4]@3",
  AH: "[a3,c4,f4]@4 a3 c4 f4@2 [g3,c4,e4]@4 g3 c4 e4@2", AI: "[f#3,a3,d4] [f#3,a3,d4]@3", AJ: "[c4,e4,g4]@6 e4 g4@9",
  AK: "[b3,d4,f#4]@5 [b3,d4,f#4]@2 [f#3,b3,d4]", AL: "[g#3,b3,e4]@9 a3@3 g#3@4, ~@9 [b3,e4]@7", AM: "[c4,e4] [d4,f#4]",
  AN: "[g3,c4,e4]@3 [g3,c4,e4] [g3,c4,e4]@2 e4 d4 [f#3,b3,d4]@2 [f#3,b3,d4]@4 d4 c4", // C Bm
})).s("gm_epiano2").gain(0.54)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@16 A B A B A B A C A D E F A D E F A D E F A D E G H F I J K L I J K M N O P Q R@4 S T R@4 S T A U R@4 V@2 ~@2
>`.pickRestart({
  A: "g4 f#4", B: "e4", C: "e4 f#4 g4 a4@5", D: "g4", E: "f4 e4", F: "d4", G: "d4@9 g4 a4 g4 a4 g4 a4!2",
  H: "a4 f4 e4@2", I: "b4 a4", J: "b4", K: "c5", L: "d5", M: "d5@2 d5 c5", N: "b4@3 a4", O: "g#4@4 a4@4 b4@3 ~ d5@4",
  P: "e5 c5@3", Q: "e5 d5", R: "[d5@5 c5 b4 a4]/2", S: "d5@15 e5", T: "d5 c5 b4 a4",
  U: "[c4,e4] [d4,f#4] [e4,g4] [e4,g4,a4]@5", V: "[d5@5 ~@3]/2",
})).s("gm_string_ensemble_2").gain(0.31)

// other · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@51 A ~@21 B C@2>".pickRestart({
  A: "~@11 c5 ~@4", B: "~ c5 b4 a4", C: "[d5@5 c5 b4 a4]/2",
})).s("gm_string_ensemble_2").gain(0.15)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C D A B E F A B E F G H I J A K A K A K C D A L M N A L M N A L M N A L M N M N A B E F A B E F G H I J A K A K A
  K A K A K A K O D A K A K A K A K
>`.pickRestart({
  A: "[g3,b3,d4] [f#3,a3,d4]", B: "[g3,b3,e4]@7 [f#3,a3,d4]", C: "[g3,c4,e4] [f#3,b3,d4]",
  D: "[a3,c4,e4] [f#3,b3,d4] [g3,c4,e4] [f#3,a3,d4]@5", E: "[g3,c4,e4]", F: "[g3,a3,c4,d#4]", G: "[f#3,b3,d4]",
  H: "[g#3,b3,d4,e4]", I: "[g3,a3,c4,e4]", J: "[g3,a3,d4] [f#3,a3,c4,d4]", K: "[a3,c4,e4] [g3,c4,e4]", L: "[g3,b3,e4]",
  M: "[a3,c4,f4] [g3,c4,e4]", N: "[f#3,a3,d4]", O: "[g3,b3,c4,e4] [f#3,a3,b3,d4]",
})).s("gm_acoustic_guitar_steel").gain(0.38)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B A@7 B A@3 B A@3 B A@3 B A@7 B A@3 B A@3 B A B A@7 B A@3 B A@11 B A B A@8
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2",
})).gain(0.62)

// drums · hihat
const hihat = s("hh").struct("<~@2 A B A@7 B A@3 B A@33 B A@3 B A@13 B A@8>".pickRestart({
  A: "x!8", B: "x!6 ~@2",
})).gain(0.62)

stack(
  bass, tubular_bells, tubular_bells_soft, synth_brass_1, epiano2, string_ensemble_2, string_ensemble_2_soft,
  acoustic_guitar_steel, kick, snare, hihat
)

More by Will to Power