Strudelify
Friends in Low Places cover art

No Fences (Australian)

Friends in Low Places

Brooks Garth

KeyA majorTempo100 bpm
0:00/0:00
// Friends in Low Places — Brooks Garth
// 100 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · piano
const piano = note(`<
  A B@3 C@4 D@4 E@5 F@4 G H I J K L M N O P Q R S T@2 U V W X@2 Y Z@2 AA AB AC AD@2 AE AF AG@2 G H I J K L M N O P Q R S
  T@2 ~ G H I J K L M N O P Q R S T@2 ~ G H I J K L M ~
>`.pickRestart({
  A: "~@3 c#4@5, a2, ~ e3@7, ~ a3@3",
  B: "[~@7 e4@10 ~@3 f#3@2 a3@2 b3@4 a3@2 a4@4 ~@3 b3@2 e4@2 f#4@2 g#4@5, ~ a#2@17 b2@17 ~@13, ~@3 g3@15 ~@16 e3@14, ~@5 c#4@13 ~@30]/3",
  C: "[~ a4 b4 [c#4,c#5]@2 [e3,c#5]@2 ~ [a3,c#5]@2 c#5 b4 a4@4 ~@2 c#5@2 c#5@2 [g3,d5]@2 [c#4,c#5]@2 ~ e5@6 ~@2 f#4@2 b4@2 [f#3,b4]@2 [b3,b4]@2 b4@4 ~ c#5@2 d5@2 ~@4 c#4@2 d4@2 a4@2 d4@2, ~@3 a2@17 a#2@16 ~ b2@15 f#4@5 ~@7, ~@10 c#4@10 ~@7 e4@10 ~@6 d4@10 ~ b2@10]/4", // C# C#m A G5 C# B5 B
  D: "[a3@2 ~@3 f#4@2 b4@2 b4@2 [e4,b4]@2 ~@6 f#4@2 e4@2 ~ b4@2 b4@2 [e4,b4]@2 [g#4,d5]@4 [b3,d5]@2 [e4,d5]@2 d5 ~@4 e3@2 a3@2 c#5@2 c#5@3 c#5@2 c#5@3 c#5 b4 e3@2 a3@2 ~, ~@3 f#3@4 e3@16 ~ e3@17 ~@6 c#4@10 ~@7, ~@9 b3@8 b3@6 ~@3 b3@8 ~@4 b3@2 a2@17 a2@7, ~@13 [g#4,b4]@6 ~@20 d5@3 ~ c#5@4 ~@12 a4@5]/4", // E5 G#dim Bm E7 G#m
  E: "[~@2 a4@2 e5@2 b4 a4 a4@2 c#5@2 [e3,c#5]@2 [a3,c#5]@2 c#5 b4 ~ a4@4 e4 ~ e4!2 c#5@2 [g3,d5]@2 [c#4,c#5]@2 e5@7 ~@2 f#4@2 [d4,f#4,b4]@2 [f#3,b4]@2 [a3,b4]@2 b4@4 c#5@2 b4@2 ~@7 f4@4 e4@4 d4@2 b3@2 [e2,g#3,b3,e4]@3, c#4@6 e2@4 a2@16 ~ a#2@16 ~ b2@15 d5@6 ~@15, ~@16 c#4@6 ~@11 e4@6 ~ e4@4 ~@6 d4@10 d3@17 ~@3, ~@61 [f4,a4]@4 ~@15, ~@63 a3@15 ~@2]/5", // C#m A G5 C# Bm B5 Asus2 E …
  F: "[e4@2 e4@2 e2@2 ~@2 g#4@2 g#4@2 g#4@2 [e4,g#4,b4]@2 b4@2 ~ b4@2 e2@2 b1@7 e4 [e4,g#4,b4]@2 b4@2 b4@2 [e2,e4,g#4]@2 ~@3 c#5@2 b4@2 ~@4 [e4,g#4,b4]@2 [e2,e4,g#4,b4]@2 [e2,e4,g#4,b4]@2 [f#2,f#4,a4]@2 [f#2,f#4,a4]@2 [g#2,g#4,b4]@2 [g#2,g#4,c5]@2, ~@4 [b3,e4,g#4]@4 ~@13 [g#4,b4,d5]@6 ~@10 b4@3 ~@6 e5@16 ~@2, ~@6 b1@8 e2@6 ~@11 e2@6 ~@3 b1@8 e2@4 ~@12, ~@23 [e4,g#4,b4]@2 ~@7]/4", // E F#m G#m G# E G#dim E
  G: "[e4,c#5] [e4,b4]@2 ~@3 f#4@2, a2@3 [e4,a4]@3 ~@2, ~ e2", H: "[a2,a3]@3 ~@2 e4 f#4 a4, ~@3 f#4@2 ~@3, ~@4 e2@3 ~",
  I: "[e4,c#5]!2 b4 ~@3 f#4 e4, a2@3 [e4,a4]@3 ~@2, ~@8 e2@7 ~", J: "e4 a3@2 ~@2 e4 c#4 ~, a2 e2, ~@3 f#4@2 ~@3",
  K: "b3@2 b3 ~ f#2@4, b2 ~, ~@3 [d4,f#4]@3 ~@2", L: "b2@7 ~@3 b3@2 f#4@4", M: "e3 e3@2 [b3,e4]@3 ~@2, e2",
  N: "~@3 [e4,c#5]", O: "[e4,c#5] [e4,b4]@2 [e4,a4]@3 f#4@2, a2", P: "a3@2 a3 f#4@2 e4 f#4 a4, a2@15 ~",
  Q: "[e4,c#5] c#5 b4 ~@3 a4!2, a2@8 e2@7 ~, ~@3 [e4,a4]@3 ~@2", R: "f#5@2 c#5 e5@2 c#5 b4 a4, a2",
  S: "[f#4,b4] c#5@2 [f#4,b4]@2 ~@3, b2 ~", // B5
  T: "[~@6 e4@2 c#5@2 e5@4 ~@4 c#5 b4 [e4,a4]@4 e2@7 ~, e2@7 c#5@2 ~@7, ~@16 a2@7 ~@9]/2", // A5
  U: "a2@4 e2@4 f#2@4 ~ e4 a4@2, ~@3 g#2", V: "c#5@2 c#5@2 c#5@2 c#5 b4 a4@4 ~@2 c#5@2, a2",
  W: "c#5 d5 c#5 e5@3 ~ f#4, a#2@15 ~", X: "[b4!3 b4@2 c#5 d5 ~ b2@5 ~@2 f#4, b2@7 f#4@2 ~@7]/2",
  Y: "b4!2 [e4,b4] [g#4,b4]@3 f#4 e4, e3@15 ~", // E5 G#m
  Z: "[b4@2 b4@2 [e4,b4]@2 [g#4,d5]@4 d5@2 d5@2 d5 ~@3 c#5@4 c#5@2 c#5@3 c#5@2 c#5@3, e3@15 d5@3 ~@14, ~ a2]/2", // E5 G#dim
  AA: "c#5 b4 a4@6 ~@4 b4 a4 a4@2, a2@12 e2@3 ~", AB: "c#5@2 c#5@2 c#5@2 c#5 b4 a4@4 ~@2 e4!2, a2@15 ~",
  AC: "c#5 d5 c#5 e5@4 f#4, a#2@15 ~", AD: "[[d4,f#4,b4] b4!2 b4@2 c#5 b4 ~@8 b3, b2@7 d5@3 ~@6, ~ d3]/2",
  AE: "[g#3,b3,e4] e4!2 [b3,e4,g#4]@2 g#4!3, e2", AF: "[e4,g#4,b4]@2 b4@2 b4@2 [g#4,b4,d5]@6 ~@3 e4, e2",
  AG: "[[e4,g#4,b4] b4!2 [e4,g#4] ~ c#5 b4 ~@2 [e4,g#4,b4] [e2,e4,g#4,b4]!2 [f#2,f#4,a4]!2 [g#2,g#4,b4] [g#2,g#4,c5], e2@4 e2 ~@3, ~@3 b4@2 ~@2 e5@8 ~, ~@7 [e4,g#4,b4]@2 ~@7]/2", // E F#m G#m G# E
})).s("gm_piano").gain(0.48)

// bass · electric bass finger · "Elec Bass (finger)"
const bass = note(`<
  ~@20 A B C D E F G H I J K L M N O P Q R S T U V@2 W X W Y T Z AA@2 AB AC B C D E F G H I J K L M N O P Q B C D E F G
  H I J K L M N O P Q B C D E F G H ~
>`.pickRestart({
  A: "e2@3 ~@2 e2!2 ~ f#2 ~ f#2 ~ g#2 ~ g#2 ~", B: "a2@3 a2 e2@3 e2", C: "a2@8 e2 ~ e2 ~ e2 ~ e2@2",
  D: "a2@5 ~ a2@2 e2@3 ~ e2@3 ~", E: "a2@7 ~ e2 ~ e2@2 f#2@2 e2@2", F: "b2@3 b2 f#2@2 f#2 a2", G: "b2@4 b2 a2 f#2@2",
  H: "e2@2 e3 c#3 b2@2 c#3 e3", I: "~@2 e2 ~ e2 ~ e2@2 f#2@2 f#2@2 g#2@2 g#2@2", J: "a2@3 f#2 e2@2 f#2 g2",
  K: "a2@4 e2!2 f#2 e2", L: "a2@6 f#2@2 e2@4 e2 ~ e2@2", M: "a2@15 ~", N: "b2@4 b2!2 a2 f#2", O: "e2@4 e2!2 f#2 e2",
  P: "a2@6 a2@2 e2@3 ~ e2@3 ~", Q: "a2@2 ~@2 e2@3 ~ f#2@3 ~ g#2@2 ~@2", R: "a1@7 ~", S: "a#1@7 ~", T: "b1@15 ~",
  U: "b1@10 a2@2 f#2@3 ~", V: "e2@15 ~", W: "a1@15 ~", X: "a1@11 ~ e2@4", Y: "a#1@15 ~", Z: "~@2 a1@5 ~, d2@7 ~",
  AA: "e2@5 ~ e2@2 b1@6 ~@2", AB: "e2@5 ~ e2@2 b1@7 ~", AC: "e2@3 ~ e2 ~ e2 ~ f#2 ~ f#2@2 g#2 ~ g#2 ~",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · acoustic guitar nylon · "Accoustic Guitar"
const acoustic_guitar_nylon = note(`<
  ~@20 A B@2 C B D E F G B@3 H D I J K ~@15 A B@2 C B D E F G B@3 H D I J L M B C B D E F G B@3 H D I J L M B C B D E F
  ~
>`.pickRestart({
  A: "~@8 [f#3,a3] ~ [f#3,a3] ~ [g#3,b3] ~ g#3 ~", B: "[e3,a3]@5 ~ [e3,a3] ~ [e3,a3]@5 ~@3",
  C: "[e3,a3]@5 ~ [e3,a3] ~ [e3,a3]@6 ~@2", D: "[f#3,b3]@5 ~ [f#3,b3] ~ [f#3,b3]@5 ~@3",
  E: "[f#3,b3]@5 ~ [f#3,b3] ~ [f#3,b3]@4 ~@4", F: "[b2,e3]@5 ~ [b2,e3] ~ [b2,e3]@5 ~@3", G: "~ [g#3,b3]!5 ~@2",
  H: "~@3 [e3,a3]", I: "[e3,b3]@4 ~@2 [e3,b3] ~ [e3,b3]@5 ~@3", J: "[e3,a3]@5 ~ [e3,a3] ~ [e3,a3]@7 ~",
  K: "[e3,a3]@15 ~", L: "~ [a3,c#4]!2 [g#3,b3]", M: "e3@5 ~ [e3,a3] ~ [e3,a3]@5 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.32)

// other · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel = note(`<
  ~@24 A B@2 C ~@4 D E F G ~@20 A B@2 C ~@4 D E F G ~@4 A B@2 C ~@4 D E F G ~@4 A B@2 C ~
>`.pickRestart({
  A: "a3@5 e4 c#4 e3", B: "[b3@13 f#4 d4 f#3]/2", C: "e3", D: "~@5 e4 c#4 e3", E: "b3@6 f#4 d4", F: "e3@5 b3 g#3 e3",
  G: "a3",
})).s("gm_acoustic_guitar_steel").gain(0.24)

// other · acoustic guitar steel · "Steel Guitar" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@21 A B A ~@4 C D@2 E@2 ~@20 A B A ~@4 C D@2 E@2 ~@4 A B A ~@4 C D@2 E@2 ~@4 A B A ~@5
>`.pickRestart({
  A: "a3", B: "a3@15 ~", C: "~@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2@2 ~@2", D: "[a3@15 ~]/2", E: "[a3@13 ~@3]/2",
})).s("gm_acoustic_guitar_steel").gain(0.16)

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

// drums · hihat
const hihat = s("hh").struct("<~@20 A@16 ~ A@31 ~ A@15 ~ A@7 B>".pickRestart({
  A: "x!8", B: "x",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@20 A ~@7 B ~@23 A ~@7 B ~@15 B ~@16>".pickRestart({
  A: "~@4 x!4", B: "~@9 x ~@2 x!4",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@20 A B C@6 D C@7 E C@15 A B C@6 D C@7 F B C@6 D C@7 F B C@6 ~>".pickRestart({
  A: "~@6 x!2", B: "x!2 ~ x", C: "~ x ~ x", D: "~@4 x ~@5 x!2 ~@4", E: "x!7 ~", F: "x!4 ~@2 x!2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@21 A ~@4 A ~@2 A ~@2 A ~@4 A ~@15 A ~@4 A ~@2 A ~@2 A ~@4 A ~@4 A ~@2 A ~@2 A ~@4 A ~@4 A ~@2
>`.pickRestart({
  A: "x",
})).gain(0.4)

stack(
  piano, bass, acoustic_guitar_nylon, acoustic_guitar_steel, acoustic_guitar_steel_2, kick, hihat, mid_tom, high_tom,
  crash
)

More by Brooks Garth