Strudelify
I'm in a Hurry cover art

American Pride

I'm in a Hurry

Alabama

KeyA majorTempo122 bpm
0:00/0:00
// I'm in a Hurry — Alabama
// 122 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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(`<
  ~@8 A B C D E B C F G H I J G K I J A B C D E B C F G H I J G K I J G@2 L M N O P M N Q G H I J G R I S T ~@3 E ~ U V
  G H I J G K I J G H I J G K I J ~@8
>`.pickRestart({
  A: "a1!2 ~@6", B: "e2 ~ e2@2 ~@12", C: "f#2 ~ f#2@2 ~@12", D: "d2 ~ d2@2 ~@12", E: "a1 ~ a1@2 ~@12",
  F: "d2 ~ d2@5 ~ d2 ~ d2 ~ c#2 ~ b1 ~", G: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2",
  H: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2", I: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2@2",
  J: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ e2@2", K: "e2 ~ e2 ~ e2 ~ e2@2 a1 ~ a1 ~ a1 ~ a1@2", L: "e2", M: "d2", N: "a2",
  O: "e2@15 ~", P: "f#2", Q: "e2@2 e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2", R: "e2 ~ e2 ~ e2 ~ e2@2 a1 ~ a1 ~ e2 ~ a1@2",
  S: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c#2 ~ b1 ~", T: "a1 ~@3", U: "d2@3 b1 c#2@3 a1", V: "b1@6 b1 ~ e2 ~ e2 ~ e2 ~ e2 ~",
})).s("gm_electric_bass_finger").gain(0.46)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@8 A B C D A B C E F G H I F J H I K L M N K L M O F G H I F J H I F P@8 Q F G H I F J H I R S T U R S T V F G H I F
  J H I F G H I F J H I ~@8
>`.pickRestart({
  A: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [c#4,e4] ~@3 [c#4,e4] ~@3 [c#4,e4] ~@3", // A C#m
  B: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [b3,e4] ~@3 [b3,e4] ~@3 [b3,e4] ~@3", // E E5
  C: "[a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [c#4,f#4] ~@3 [c#4,f#4] ~@3 [c#4,f#4] ~@3", // F#m F#5
  D: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4] ~@3 [d4,f#4] ~@3 [d4,f#4] ~@3", // D
  E: "[a3,d4,f#4]@2 [a3,d4,f#4]@5 ~ [d4,f#4] ~ [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  F: "[a3,c#4]@2 [a3,c#4]@2 [a3,c#4,e4] ~ [a3,c#4]@2 [a3,c#4]@2 [a3,c#4]@2 [a3,c#4,e4] ~ [a3,c#4]@2, e4 ~ e4 ~", // A
  G: "[g#3,b3]@2 [g#3,b3]@2 [g#3,b3,e4] ~ [g#3,b3]@2 [g#3,b3]@2 [g#3,b3]@2 [g#3,b3,e4] ~ [g#3,b3]@2, e4 ~ e4 ~", // G#m E G#m E G#m
  H: "[a3,c#4]@2 [a3,c#4]@2 [a3,c#4,f#4] ~ [a3,c#4]@2 [a3,c#4]@2 [a3,c#4]@2 [a3,c#4,f#4] ~ [a3,c#4]@2, f#4 ~ f#4 ~", // A F#m A F#m A
  I: "[a3,d4]@2 [a3,d4]@2 [a3,d4,f#4] ~ [a3,d4]@2 [a3,d4]@2 [a3,d4]@2 [a3,d4,f#4] ~ [a3,d4]@2, f#4 ~ f#4 ~", // D5 D D5 D D5
  J: "[g#3,b3]@2 [g#3,b3]@2 [g#3,b3,e4] ~ [g#3,b3]@2 [a3,c#4]@2 [a3,c#4]@2 [a3,c#4,e4] ~ [a3,c#4]@2, e4 ~ e4 ~", // G#m E G#m A
  K: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3", // A
  L: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3", // E
  M: "[a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~@3", // F#m
  N: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3", // D
  O: "[a3,d4,f#4]@2 [a3,d4,f#4]@5 ~ [a3,d4,f#4] ~ [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  P: "[[a3,c#4]@2 [a3,c#4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~ [b3,e4]@15 ~ [d4,f#4]@15 ~ [c#4,e4]@15 ~ [b3,e4]@15 ~ [c#4,f#4]@15 ~ [d4,f#4]@15 ~ [c#4,e4]@15 [e3,g#3], e4@4 ~@11 g#3@16 [d3,a3]@16 [e3,a3]@16 [e3,g#3]@16 [f#3,a3]@16 [d3,a3]@16 [e3,a3]@16 ~]/8", // A E5 D C#m E5 F#5 D C#m …
  Q: "[b3,e4] [g#3,b3] [g#3,b3,e4]!6", R: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~",
  S: "[a3,d4,f#4] ~ [a3,d4,f#4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~", // D E
  T: "[a3,d4,f#4] ~ [a3,d4,f#4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // D A
  U: "[f#3,a3,d4] ~ [f#3,a3,d4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~", V: "[f#3,a3,d4] ~ [f#3,a3,d4] ~ [g#3,b3,e4]!4",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.3)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note("<~@8 A B A C A B A D ~@8 E F E G E F E ~@59>".pickRestart({
  A: "~@4 a3 ~ [a3,c#4] ~ a3 ~ [a3,c#4] ~ a3 ~ [a3,c#4] ~", B: "~@4 g#3 ~ [g#3,b3] ~ g#3 ~ [g#3,b3] ~ g#3 ~ [g#3,b3] ~",
  C: "~@4 a3 ~ [a3,d4] ~ a3 ~ [a3,d4] ~ a3 ~ [a3,d4] ~", D: "~@8 a3 ~@7", E: "~@6 [a3,c#4] ~@3 [a3,c#4] ~@3 [a3,c#4] ~",
  F: "~@6 [g#3,b3] ~@3 [g#3,b3] ~@3 [g#3,b3] ~", G: "~@6 [a3,d4] ~@3 [a3,d4] ~@3 [a3,d4] ~",
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(0.3)

// other · electric guitar muted · "+FUNK GTR"
const electric_guitar_muted = note(`<
  ~@8 A B C D A B C E F@2 G@2 F@2 G@2 A B C D A B C E F@2 G@2 F@2 G@2 F@2 ~@8 F@2 G@2 F@2 G@2 ~@8 F@2 G@2 F@2 G@2 F@2
  G@2 F@2 G@2 H I J K L M N ~
>`.pickRestart({
  A: "e3@2 e3 ~@3 e3@2 a3@2 e3@2 a3@2 e3 ~", B: "e3@2 e3 ~@3 e3@2 b3@2 e3@2 b3@2 e3 ~",
  C: "f#3@2 f#3 ~@3 f#3@2 c#4@2 f#3@2 c#4@2 f#3 ~", D: "f#3@2 f#3 ~@3 f#3@2 d4@2 f#3@2 d4@2 f#3 ~",
  E: "f#3@2 f#3 ~@3 d3@2 d3@2 d3@2 d3@2 d3 ~", F: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3@2",
  G: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2", H: "a2@2 a2 ~@3 a2 ~@3 a2 ~@3 a2@2",
  I: "e3 ~ e3 ~@7 e3 ~ e3 ~ e3 ~", J: "f#3 ~ f#3 ~@7 f#3 ~@3 f#3 ~", K: "d3@2 d3 ~@7 d3@2 ~@4",
  L: "a2 ~ a2 ~@7 a2@2 ~@2 a2 ~", M: "e3 ~ e3 ~@7 a2 ~@5", N: "f#3 ~ f#3 ~@13",
})).s("gm_electric_guitar_muted").gain(0.26).pan(0.7)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@16 A B C D A E C D ~@8 A B C D A E C D F@2 ~@7 G A B C D A E C D ~@8 A B C D A E C D A B C D A E C D ~@8
>`.pickRestart({
  A: "a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3@2", B: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3@2",
  C: "f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3@2", D: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ e3@2",
  E: "e3 ~ e3 ~ e3 ~ e3 ~ a3 ~ a3 ~ a3 ~ a3@2", F: "[~@2 [c#4,e4]@5 ~ [b3,e4,f#4,a4]@6 [a3,c#4,e4]@17 ~]/2",
  G: "~@2 e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~",
})).s("gm_overdriven_guitar").gain(0.24).pan(0.3)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@24 A B C D A B C D E F G H E I G H E@2 J K@2 J L@2 M@2 N O P Q N R P Q ~@8 E F G H E I G H E F G H E I G H ~@8
>`.pickRestart({
  A: "~@7 e5, [a4,c#5], ~@3 e5@2 e5@2 ~, ~@2 a5!2", B: "~@7 e5, [g#4,b4], ~@3 e5@2 e5@2 ~, ~@2 b5!2",
  C: "~@7 f#5, [f#4,a4], ~@3 f#5@2 f#5@2 ~, ~@2 c#6!2", D: "~@7 f#5, [a4,d5], ~@3 f#5@2 f#5@2 ~, ~@2 d6!2",
  E: "[e5,a5]", F: "[e5,b5]", G: "[f#5,c#6]", H: "[f#5,d6]", I: "[e5,b5] [e5,a5]", J: "[g#4,e5]", K: "[f#5 e5, a4]/2",
  L: "[[a4,c#5,f#5] [a4,d5,f#5], f#6]/2", M: "[[a4,c#5] [g#4,b4], e5, e6@19 ~@13]/2", N: "[a4,e5]", O: "[b4,e5]",
  P: "[c#5,f#5]", Q: "[d5,f#5]", R: "[b4,e5] [a4,e5]",
})).s("gm_rock_organ").gain(0.13).pan(0.3)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@41 A B C@2 ~@45>".pickRestart({
  A: "[a3,e4]@2 [e4,a4] [e4,b4]", B: "[e4,b4]@15 ~", C: "[~@6 f#5@6 d5@4 c#5@15 ~, a5@9 ~@7]/2",
})).s("gm_electric_guitar_jazz").gain(0.28).pan(0.8)

// chords · piano · "A.PIANO 2"
const piano = note("<~@42 A B C D E F C G ~@12 H@4 ~@24>".pickRestart({
  A: "[e3,g#3,e4]@7 ~, b3@3 ~", B: "[d3,f#3,a3,d4]@7 ~", C: "[a2,c#4,e4]@15 ~, a3@13 ~@3", D: "[e3,g#3,b3,e4]@7 ~",
  E: "[f#3,a3,c#4,f#4]@15 ~", F: "[d3,a3,d4,f#4]@15 ~",
  G: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~, e3@3 b3 ~@4", // E C#m E
  H: "[a5,a6] ~@3 [a5,a6] ~@3 [a5,a6] ~@3 [a5,a6] ~@3", // A
})).s("gm_piano").gain(0.26).pan(0.7)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@50 A B C@3 D E@2 F@2 ~@30>".pickRestart({
  A: "~ c#3 d3 e3@2 d3 c#3 b2", B: "~ b2 c#3 d3@2 c#3 b2 a2",
  C: "[~ a2 b2 c#3@2 b2 a2 d2@2 f#2 a2 d3@2 c#3 b2 a2@2 c#3 d3 e3@2 d3 c#3 b2]/3",
  D: "~@2 b2 a2@2 b2 c#3@2, ~ c#3@2 ~@5", E: "[f#2!2 g#2 a2@2 g#2 f#2 d2@2 f#2 a2 d3@2 c#3 b2@2]/2", F: "[a2@5 ~@3]/2",
})).s("gm_electric_guitar_clean").gain(0.32).pan(0.4)

// bass · pizzicato strings · "PIZZICATO"
const bass_2 = note("<~@82 A B C D E F C ~>".pickRestart({
  A: "a1@3 ~@13", B: "e2@3 ~@9 e2@2 ~@2", C: "f#2 ~@7", D: "d2 ~@5 d2 ~", E: "a2 ~@7", F: "e2 ~@3 a2 ~@3",
})).s("gm_pizzicato_strings").gain(0.26).pan(0.3)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@19 [~@7 x] ~@15 [~@7 x] ~@17 [~@7 x] ~@36>").gain(0.31)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B@2 C B@3 D ~@4 E ~@3 A B@2 C B@3 D ~@4 E ~@5 A B@2 C B@3 E ~@4 E ~@3 A F B@3 C B E ~@4 E ~@7 E ~@11
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x!3 ~", D: "x!2 ~@2", E: "x", F: "x ~ x ~ x ~ x!2",
})).gain(0.31)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@8 A B@2 C B@3 D ~@8 A B@2 C B@3 D ~@10 A B@2 C B@3 ~@9 B E B@3 C B ~@25
>`.pickRestart({
  A: "~@3 x ~ x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~@2", D: "~ x ~@6", E: "~@2 x ~@3 x ~@3 x ~@4 x",
})).gain(0.12)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@11 B ~@3 A ~@5 C ~@7 D ~@3 A ~@11 D ~@15 E ~@8>".pickRestart({
  A: "~@7 x", B: "~@2 x!6", C: "~@6 x ~ x ~@3 x ~ x!2", D: "~ x!7", E: "~@3 x ~@4",
})).gain(0.37)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@11 A ~@3 B C D@3 C D@3 ~@3 A ~@3 B C D@3 C D@3 C E ~@3 A ~@3 F C D@3 C D@3 ~@5 A ~ F C D@3 C D@3 C D@3 C D@3 ~@8
>`.pickRestart({
  A: "~@3 x", B: "~@3 x!5", C: "~ x!3", D: "x!4", E: "x", F: "~ x!7",
})).gain(0.31)

// drums · high tom
const high_tom = s("ht").struct("<~@41 [~@2 x ~@2 x ~@2] ~@48>").gain(0.49)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@7 B ~@3 B ~@3 A ~@2 C ~@4 B ~@3 B ~@3 B ~ B ~@3 B ~@2 C B ~@3 B ~@3 B ~@5 B ~ B ~@3 B ~@3 B ~@2 D B ~@11
>`.pickRestart({
  A: "x!2 ~@6", B: "x", C: "~@3 x", D: "~@2 x!2",
})).gain(0.24)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@16 A@3 B A@3 B ~@8 A@3 B A@3 B A@2 ~ C ~ C ~ C ~@2 A@3 B A@3 B ~@8 A@3 B A@3 B A@3 B A@3 B ~@3 D ~@4
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "~ x", D: "~ x ~@6",
})).gain(0.24)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@82 x [~ x] ~@3 [~ x] ~@2>").gain(1.24)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@58 A@7 B ~@16 C D E D E D E ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@2 x!3 ~@3", D: "x ~@2 x ~ x!3", E: "~@2 x!2 ~@4",
})).gain(0.27)

// drums · shaker
const shaker = s("sh").struct("<~@82 x [~ x] ~ [~ x ~@6] ~ [~ x] ~@2>").gain(0.24)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@82 [~ x] ~ [~ x]!3 ~ [~ x] ~>").gain(0.79)

stack(
  bass, acoustic_guitar_steel, acoustic_guitar_steel_2, electric_guitar_muted, overdriven_guitar, rock_organ,
  electric_guitar_jazz, piano, electric_guitar_clean, bass_2, kick, snare, low_tom, hihat, hihat_soft, mid_tom,
  open_hat, high_tom, crash, tambourine, cabasa, woodblocks, shaker, jingle_bells
)

More by Alabama