Strudelify

Honey, I'm Home

Shania Twain

KeyF♯ majorTempo165 bpm
0:00/0:00
// Honey, I'm Home — Shania Twain
// 165 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 140 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(165/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 · tremolo strings · "Violin"
const tremolo_strings = note(`<
  ~@4 A B C D E F G H ~@12 I J I J I J K ~@26 A L C D I J I J I J K ~@28 M N M O ~@28 A P C D E F G Q@5
>`.pickRestart({
  A: "[a#4,c#5]@3 ~ [f#4,c#5]@3 ~", B: "[e4,f#4]@3 ~ [e4,f#4]@3 ~@5 c4 ~@3, ~@7 [c#4,f#4]@8 ~",
  C: "[a#4,c#5]@6 ~@2 [f#4,c#5]@6 ~ f#4", D: "[b3,b4]@4 ~@3 [a3,a4]@7 ~@2",
  E: "[a#4,c#5]@2 ~@2 [a#4,c#5]@3 ~ [f#4,c#5]@4 ~@3 c#4", F: "[e4,f#4]@3 ~ [e4,f#4]@2 ~ [c#4,f#4]@8 ~",
  G: "[a#4,c#5]@6 ~@2 [f#4,c#5]@6 ~ [f#4,g#4,a4]", H: "[b3,b4]@2 ~@2 [b3,b4]@3 [a3,a4]@8 ~, a#4 ~@15",
  I: "~@4 e4 ~@3 f#4@6 ~ f#3, f#3 ~", J: "~@3 e4 ~@3 f#4@4 c#4 e4@3 f#4, f#3@3 ~@5", K: "f#3 ~@7",
  L: "[e4,f#4]@2 ~@2 [e4,f#4]@3 ~@5 c4 ~@3, ~@7 [c#4,f#4]@8 ~", M: "[e4,e5]@6 ~ [d#4,d#5] [e4,e5]@6 ~ [d#4,d#5]",
  N: "[e4,e5]@6 ~ [d#4,d#5] [e4,e5]@3 [d#4,d#5] [c#4,c#5]@3 [b3,b4]", // E D# E D# C# B
  O: "[e4,e5]@6 ~ [f#4,f#5] [e4,e5]@2 ~ [d#4,d#5] [c#4,c#5]@2 ~ [b3,b4]", // E F# E D# C# B
  P: "[e4,f#4]@3 ~ [e4,f#4]@2 ~@6 c4 ~@3, ~@7 [c#4,f#4]@8 ~", Q: "[[b3,b4]@2 ~@14 a4@55 ~@9, ~@4 [b3,b4]@67 ~@9]/5",
})).s("gm_tremolo_strings").gain(0.35)

// bass · slap bass 1 · "Acoustic"
const bass = note(`<
  ~@24 A ~ A ~ A ~ B ~ C@4 D@5 E@3 F G H I J E@3 F G H I J ~@4 A ~ A ~ A ~ B ~ C@4 D@5 E@3 F G H I J E@3 F G H I J K@2
  ~@3 L M N M O M P D@4 Q R ~ S T E G H I J E@3 F G H I J U@6 V W@5
>`.pickRestart({
  A: "f#2", B: "f#2 ~@7", C: "b1 ~ b1 ~ b1 ~ b1 ~", D: "c#2 ~ c#2 ~ c#2 ~ c#2 ~", E: "f#2@7 ~ c#2@7 ~",
  F: "f#2@6 ~ a#1 b1@3 ~ c2@3 ~", G: "c#2@3 ~ g#1@3 ~", H: "c#2@6 ~ a#1 b1@3 ~ c2@3 ~", I: "c#2@7 ~ g#1@7 ~",
  J: "c#2@6 ~ c#2 d#2@3 ~ f2@3 ~", K: "[f#2@9 ~@7]/2", L: "~@4 c#2@2 ~@2 c#2@3 b1 a1@2 ~ a#1", M: "f#2@5 ~@3 e2@5 ~@3",
  N: "b1@5 ~@2 b1 d#2@3 ~ e2@3 ~", O: "b1@5 ~@2 b1 a1@3 ~ g#1@3 ~", P: "b1@5 ~@2 a#1 b1@3 ~ b1@3 ~", Q: "c#2!4",
  R: "c#2 b1 a#1 g#1", S: "~@3 f#2", T: "f#1@7 ~ c#2@7 ~", U: "[f#2@19 ~@13]/2", V: "f#2@7 ~ e2@7 ~",
  W: "[b1@3 ~ b1@67 ~@9]/5",
})).s("gm_slap_bass_1").gain(0.48)

// chords · piano
const piano = note(`<
  ~@38 A B C D E F G H I J H K L M E N J O P Q ~@17 A B C D E F M H R J H K L M E N J H P ~@6 E S T U E V W@3 X Y@2 ~@2
  Z E O R J H K E M E N J H P AA@6 AB AC@3 ~@2
>`.pickRestart({
  A: "[c#3,g#3,c#4] ~", B: "[c#3,g#3,c#4]@9 ~@7", C: "[c#3,g#3,c#4]@3 ~",
  D: "~@3 [c#4,f#4], f#2@7 ~ f#3@7 ~, ~@4 [a#3,c#4,f#4]@6 ~ a#3@5", // F#5 F#
  E: "~@12 c#4@3 f#4, f#2@7 ~ f#3@7 ~, ~@4 [a#3,c#4,f#4]@6 ~ a#3@5", // F#
  F: "~@12 [c#4,f#4]@3 a#3, f#2@7 ~, ~@3 a#3@3 ~ a#3@2 ~@2 a#3@3 ~@2, ~@2 [c#4,f#4]@3 ~@3, ~@4 f#3@3 ~", // F#5
  G: "~@3 [c#4,f#4], f#2@8 f#3@7 ~, ~@4 [a#3,c#4,f#4]@6 ~ a#3@5", // F#5 F#
  H: "~@3 [c#4,f4], c#3@7 ~ f3@8, ~@4 [g#3,c#4,f4]@6 ~ g#3@5", // C#
  I: "~@6 [c#4,f4] ~, c#3@7 ~ f3@5 ~@3, ~@4 [g#3,c#4,f4]@6 ~ g#3@5", // C#
  J: "~@12 c#4@3 f4, c#3@7 ~ f3@8, ~@4 [g#3,c#4,f4]@6 ~ g#3@5", // C#
  K: "~@12 [c#4,f#4]@3 a#3, f#2@7 ~, ~@3 a#3@3 ~ a#3@2 ~@2 a#3@3 ~@2, ~@2 [c#4,f#4]@3 ~@3, ~@8 f#3@7 ~", // F#5
  L: "~@12 c#4@3 f#4, f#2@7 ~ f#3@8, ~@4 [a#3,c#4,f#4]@6 ~ a#3@5", // F#
  M: "~@3 [c#4,f#4], f#2 f#3, ~@4 [a#3,c#4,f#4]@6 ~ a#3@5", // F#5 F#
  N: "~@12 [c#4,f4]@3 g#3, c#3@15 ~, ~@3 g#3@3 ~ g#3@2 ~@2 g#3@3 ~@2, ~@2 [c#4,f4]@3 ~@3, ~@4 f3@3 ~", // C#
  O: "~@3 [c#4,f4], c#3@7 ~ f3@7 ~, ~@4 [g#3,c#4,f4]@6 ~ g#3@5", // C#
  P: "~@3 [c#4,f4], c#3@4 f3@3 ~, ~@4 [g#3,c#4,f4]@6 ~ g#3@5", Q: "[f#2,f#3]",
  R: "~@3 [c#4,f4], c#3@7 ~ f3@5 ~@3, ~@4 [g#3,c#4,f4]@6 ~ g#3@5", // C#
  S: "~@12 [b3,d#4]@3 ~, b2@8 d#3@5 ~@3, ~@4 [f#3,b3,d#4]@6 ~ f#3@4 ~", // B
  T: "~@6 [c#4,f#4] ~, f#2@7 ~ f#3@5 ~@3, ~@4 [a#3,c#4,f#4]@6 ~ a#3@3 ~@2", // F#5 F#
  U: "~@12 b3@3 d#4, b2@7 ~ d#3@7 ~, ~@4 [f#3,b3,d#4]@6 ~ f#3@5", // B
  V: "~@12 [b3,d#4]@3 f#3, b2@7 ~, ~@3 f#3@3 ~ f#3@2 ~@2 f#3@3 ~@2, ~@2 [b3,d#4]@3 ~@3, ~@4 d#3@3 ~", // B
  W: "[c#2,c#3] [f3,g#3,c#4] [c#2,c#3] [f3,g#3,c#4]", X: "[c#2,c#3] [f3,g#3,c#4] c#3 [f3,g#3,c#4], ~@8 c#2@7 ~",
  Y: "[c#2,c#3,f3,g#3,c#4]@3 ~ [c#2,c#3,f3,g#3,c#4]@3 ~ [c#2,c#3,f3,g#3,c#4]@3 ~ [c#2,c#3,f3,g#3,c#4]@3 ~", // C#
  Z: "~@3 [c#4,f#4], f#2@7 ~ f#3@8, ~@4 [a#3,c#4,f#4]@6 ~ a#3@5", AA: "[[f#2,c#3,f#3]@19 ~@13]/2",
  AB: "[f#2,f#3]@7 ~ [e2,e3]@7 ~", AC: "[[b2,f#3,b3]@3 ~ [b2,f#3,b3]@32 ~@12]/3",
})).s("gm_piano").gain(0.48).pan(0.6)

// other · electric guitar jazz · "Jazz Gui"
const electric_guitar_jazz = note(`<
  ~@41 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@21 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@20 A@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@12
>`.pickRestart({
  A: "[c#5@24 a#5@4 g#5@3 ~]/2", B: "[c#5@24 a#4@4 b4@3 ~]/2", C: "[c#5@24 g#5@3 ~ f5@3 f#5, ~@27 f#5@4 ~]/2",
  D: "[c#5@3 ~]/2",
})).s("gm_electric_guitar_jazz").gain(0.18)

// other · electric guitar jazz · "Jazz Gui"
const electric_guitar_jazz_2 = note(`<
  ~@41 A@2 B@2 C@4 A@2 B@2 C@4 ~@21 A@2 B@2 C@4 A@2 B@2 C@4 ~@20 A@2 C@4 A@2 B@2 C@4 ~@12
>`.pickRestart({
  A: "[[f#4,f#5]@24 f#5@4 d#5@3 ~]/2", B: "[[f#4,f#5]@24 c#5@4 e5@3 ~]/2", C: "[g#4@3 ~]/2",
})).s("gm_electric_guitar_jazz").gain(0.18).pan(0.7)

// chords · acoustic guitar steel · "Steel St"
const acoustic_guitar_steel = note(`<
  ~@41 A@4 B@4 A@4 B@4 ~@21 A@4 B@4 C@4 D@4 ~@6 C E C E C E D@6 ~@2 A@2 B@4 C@4 D@4 ~@12
>`.pickRestart({
  A: "~@4 [c#4,f#4,a#4]@7 ~ [c#4,f#4,a#4]@4", B: "~@4 [f4,g#4,c#5]@7 ~ [f4,g#4,c#5]@4",
  C: "~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4]", D: "~ [c#4,f4,g#4] ~ [c#4,f4,g#4]", E: "~ [b3,d#4,f#4] ~ [b3,d#4,f#4]",
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.7)

// chords · electric guitar muted · "Muted Gu"
const electric_guitar_muted = note(`<
  ~@20 A B A B A B A B A B C D E D E F G ~ H I J ~@20 A B A B A B C D E D E F G ~ H I J ~@21 K L M N O@4 ~@6 P ~@14 Q@6
  R S@3 ~@2
>`.pickRestart({
  A: "~@4 e4 ~@3 f#4@6 ~ f#3, f#3 ~", B: "~@3 e4 ~@3 f#4@4 c#4 e4@3 f#4, f#3@3 ~@5", C: "f#3 ~@7", D: "~@15 [a2,e3,a3]",
  E: "[b2,f#3,b3] ~@3 [b2,f#3,b3]@12", F: "~@15 [b2,f#3,b3]", G: "[c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@12",
  H: "[c#3,g#3,c#4] ~", I: "[c#3,g#3,c#4]@9 ~@7", J: "[c#3,g#3,c#4]@3 ~", K: "~@4 [a3,a4]@3 ~ [a3,a4] ~@2 [a3,a4]@5",
  L: "[a#3,a#4]@4 [f#4,f#5]@10 ~ f#3", M: "[f#4,f#5]@2 ~ [d#4,d#5]@5 [b3,b4]@5 ~@3",
  N: "f#3@2 ~@2 f#3@3 ~ f#3@3 e3 d#3@4",
  O: "[b2@12 ~@3 [f#3,f#4]@3 ~ [c#3,c#4] [a#3,a#4]@5 ~@2 [d#3,d#4] [b3,b4]@6 ~ [f3,f4] [c#4,c#5]@15 ~@13]/4", // F# C# A# D# B F C#
  P: "~@11 [f#2,f#3] [f#2,f#3]@3 ~", Q: "[[f#2,c#3,f#3]@19 ~@13]/2", R: "[f#2,c#3,f#3]@7 ~ [e2,b2,e3]@7 ~",
  S: "[[b2,f#3,b3]@3 ~ [b2,f#3,b3]@32 ~@12]/3", // B5
})).s("gm_electric_guitar_muted").gain(0.36).pan(0.4)

// chords · acoustic guitar steel · "Steel St"
const acoustic_guitar_steel_2 = note(`<
  ~@24 A@2 B@4 C D E D E F G ~ H I J K@3 L M@3 N O L O P Q R M Q ~@4 A@2 B@4 C D E D E F G ~ H I J K@3 L M@4 O L O P Q R
  M S@2 ~@4 T U V W X@4 M R@4 ~ Y K@2 M@4 O L O P Q R M Z ~@12
>`.pickRestart({
  A: "[[f#2,c#3,f#3]@7 ~]/2", B: "[[f#2,c#3,f#3]@18 ~ [g#3,b3,e4] ~@3 [a#3,c#4,f#4]@8 ~]/2", C: "[f#2,c#3,f#3] ~@7",
  D: "~@15 [a2,e3,a3]", E: "[b2,f#3,b3] ~@3 [b2,f#3,b3]@12", F: "~@15 [b2,f#3,b3]",
  G: "[c#3,g#3,c#4]@3 ~ [c#3,g#3,c#4]@12", H: "[c#4,f4,g#4] ~", I: "[c#4,f4,g#4]@9 ~@7", J: "[c#4,f4,g#4]@3 ~",
  K: "~@12 a#3@3 c#4, f#2, c#4@7 c#4@8 ~, ~@3 f#3@8 ~@5, ~ a#3@2 ~",
  L: "~@12 a#3@3 c#4, f#2, ~@3 f#3@8 f#3@5, ~ a#3@2 ~, ~@7 c#4@8 ~",
  M: "~@12 g#3@3 c#4, c#3, c#4@7 c#4@8 ~, ~@3 f3@8 ~@5, ~ g#3@2 ~",
  N: "~@12 g#3@3 c#4, c#3, c#4@7 c#4@8 ~, ~@3 f3@8 f3@5, ~ g#3@2 ~",
  O: "~@4 a#3@3 [a#3,c#4]@4 ~ [a#3,c#4]@4, f#2@11 f#2@5, c#4@7 ~@9, ~@3 f#3@4 ~@9", // A#m
  P: "~@12 a#3@3 c#4, f#2, ~@4 a#3@7 f#3@5, ~@7 c#4@8 ~",
  Q: "~@12 g#3@3 c#4, c#3, ~@3 f3@8 f3@5, ~ g#3@2 ~, ~@7 c#4@8 ~",
  R: "~@4 g#3@3 [g#3,c#4]@4 ~ [g#3,c#4]@4, c#3@11 c#3@5, c#4@7 ~@9, ~@3 f3@4 ~@9", // C#5
  S: "[~ f#4, c#3@15 [f#3,a#3,c#4]@17, ~@3 f3@8 f3@5 ~@16, ~ g#3@2 g#3 ~@4, ~@7 c#4@7 f#2@18]/2", // F#
  T: "~@4 [a3,a4]@3 ~ [a3,a4] ~@2 [a3,a4]@5", U: "[a#3,a#4]@4 [f#4,f#5]@10 ~ f#3",
  V: "[f#4,f#5]@2 ~ [d#4,d#5]@5 [b3,b4]@5 ~@3", W: "f#3@2 ~@2 f#3@3 ~ f#3@3 e3 d#3@4",
  X: "[b2@12 ~@3 [f#3,f#4]@3 ~ [c#3,c#4] [a#3,a#4]@5 ~@2 [d#3,d#4] [b3,b4]@6 ~ [f3,f4] c#4@12 ~@12 g#3@3 c#4, ~@36 c#5@19 c#4@8 ~, ~@3 c#3, ~@12 c#4 g#3@2 ~, ~@51 f3@8 ~@5]/4", // F# C# A# D# B F
  Y: "~@11 [f#2,f#3,a#3,c#4] [f#2,f#3,a#3,c#4]@4", // F#
  Z: "~@15 [f#3,a#3,c#4], c#3, ~@3 f3@8 f3@5, ~ g#3@2 g#3, ~@7 c#4@7 f#2@2", // F#
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.7)

// chords · acoustic guitar steel · "Steel St" · soft notes
const acoustic_guitar_steel_3 = note(`<
  ~@41 A@3 ~ B@3 ~ C ~ C D ~ E B ~@22 A@3 ~ B@4 C ~ C D ~ E B ~@13 B@2 E@4 ~@2 A@2 B@4 C ~ C D ~ E B ~@13
>`.pickRestart({
  A: "~@11 f#3@5", B: "~@11 f3@5", C: "~@7 f#3@5 f#3@4", D: "~@3 f#3@8 ~@5", E: "~@7 f3@5 f3@4",
})).s("gm_acoustic_guitar_steel").gain(0.11).pan(0.7)

// drums · kick
const kick = s("bd").struct("<A@40 B C@16 A@10 D ~ A@8 B C@16 A@5 B C@5 E C@5 E ~ F C@14 A@6 G A ~@3 H>".pickRestart({
  A: "x!2 ~@2", B: "x ~@3 x ~@2 x ~@8", C: "x!2", D: "x", E: "x ~@2 x ~@4 x ~@2 x ~@4", F: "~@11 x ~@4", G: "x ~ x!2",
  H: "~@5 x ~@10",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B C D@7 E D@3 E D@4 A@3 B A@3 B A@2 ~ F A@3 B A@3 B C D@7 E
  D@3 E D@4 A B A B A C D@5 G D@5 G ~ H D@5 E D@3 E D@4 A@3 B A@2 I J ~@4
>`.pickRestart({
  A: "~ x", B: "~@8 x ~@6 x", C: "~@3 x ~@4 x ~@3 x ~@2 x", D: "~ x ~ x", E: "~@4 x ~@7 x ~@2 x", F: "~@15 x",
  G: "x ~@3 x ~@3 x ~@3 x!2 ~ x", H: "~@12 x ~@2 x", I: "~@11 x ~ x ~ x", J: "x!2 ~@2",
})).gain(0.8)

// drums · clap
const clap = s("cp").struct("<A@40 ~@17 A@10 ~@2 A@8 ~@17 A@5 ~@29 A@6 ~@6>".pickRestart({
  A: "~ x",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@56 A ~@36 A ~@33 A ~@6 B ~@5>".pickRestart({
  A: "~@12 x ~@2 x", B: "~@13 x ~ x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  A@38 B@2 C D E@6 F D E@2 F D E@2 G H A@2 I A@6 J K A@6 B@2 C D E@6 F D E@2 F D E@2 G H A H A H C L@5 M D E@3 L M N O D
  E@4 F D E@2 F D E@2 G A@6 ~@6
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", B: "x ~@2 x!2 ~@2 x ~@3 x!2 ~@2 x", C: "x ~@3 x ~@3 x ~@2 x ~@4",
  D: "~@4 x ~@2 x!2 ~@3 x ~@2 x", E: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", F: "x ~@3 x ~@2 x!2 ~@3 x ~@3",
  G: "x ~@3 x ~@2 x!2 ~@7", H: "~@3 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", I: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3", J: "x!2 ~ x",
  K: "~@4 x ~@7 x ~@2 x", L: "x ~@6 x!2 ~@6 x", M: "~@7 x ~@4 x ~@2 x", N: "~ x ~ x", O: "~@4 x ~@10 x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@56 A ~@36 A ~@33 A ~@6 B ~@5>".pickRestart({
  A: "~@11 x ~@4", B: "~@11 x!2 ~@3",
})).gain(0.72)

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

stack(
  tremolo_strings, bass, piano, electric_guitar_jazz, electric_guitar_jazz_2, acoustic_guitar_steel,
  electric_guitar_muted, acoustic_guitar_steel_2, acoustic_guitar_steel_3, kick, snare, clap, low_tom, hihat, mid_tom,
  crash
)

More by Shania Twain