Strudelify

One Last Breath

Creed

KeyB majorTempo112 bpm
0:00/0:00
// One Last Breath — Creed
// 112 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 13 "Distortion Guitar" distortion guitar (copy of ch 5 "Overdriven Guitar" overdriven guitar)
// note: Full arrangement: all 130 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): Overdriven Guitar.
setcpm(112/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar clean · "Electric Guitar (clean)"
const electric_guitar_clean = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D E F G H E F G H A B C D A B C D A B C D A B C D A B C
  D A B C D A B C D E F G H E F G H E F G H E F G H ~@8 I J K L I J K L E F G H E F G H M N O P M N O P M N O P M ~@9
>`.pickRestart({
  A: "[c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,d#4]@2 [c#4,d#4]@2 [c#4,d#4]@2 d#4!2 [e3,a3] a3, ~@13 e4@3", // C#m C#sus2 A5
  B: "[a3,c#5]@3 [a3,c#5]!3 [a3,b4]@3 [a3,c#5] [a3,c#5]@2 [a3,e5]@3 ~", // A Asus2 A A5
  C: "[e4,b4]@3 [e4,b4]!3 [e4,b4]@3 [e4,b4]!3 [e4,b4]@2 [a3,f#4]!2", // E5 D
  D: "[b3,f#4]@3 [b3,f#4]!3 [b3,f#4]@3 [b3,f#4]!3 [b3,f#4]@2 e4!2", // B5
  E: "[b3,f#4]@3 [b3,f#4]!3 [b3,f#4]@3 [b3,f#4]@3 [b3,f#4]@2 [e3,a3]!2", // B5 A5
  F: "[f#3,c#4]@3 [f#3,c#4]!3 [f#3,c#4]@3 [f#3,c#4]@3 [f#3,c#4]@2 e3!2", // F#5
  G: "[c#4,g#4]@3 [c#4,g#4]!3 [c#4,g#4]@3 [c#4,g#4]!3 [c#4,g#4]@2 [c#4,g#4]!2", // C#5
  H: "[g#3,d#4]@3 [g#3,d#4]!3 [g#3,d#4]@2 [g#3,d#4]!4 [g#3,d#4]@2 [e3,a3]@2", // G#5 A5
  I: "b3 ~ f#4 d#5@3 b4@5 ~ e5@2 b4@2, ~ b3@3 ~@12", J: "f#4!3 d#5@3 b4@5 ~ e5@2 b4@2",
  K: "f#4!3 d#5@3 b4@3 d#5@3 e5 d#5 b4@2",
  L: "[e3,e4,b4,e5]@3 [e3,e4,b4,e5]@3 [e3,e4,b4,e5] [e3,e4,b4,e5]@2 [e3,e4,b4,e5]@3 [e3,e4,b4,e5]@2 [e3,a3]@2", // E5 A5
  M: "[b3,f#4]!7 [b3,f#4]@2 [b3,f#4]!3 [b3,f#4]@2 [b3,f#4]@2", N: "f#3!3 c#4@2 c#4 f#3!3 c#4@2 c#4 f#3 c#4 f#3@2",
  O: "[c#4,g#4]@2 [c#4,g#4]!5 [c#4,g#4]@2 [c#4,g#4]!3 [c#4,g#4]@2 [c#4,g#4]@2", // C#5
  P: "g#3!3 d#4@2 d#4 g#3!3 d#4@2 d#4 g#3 d#4 g#3@2",
})).s("gm_electric_guitar_clean").gain(0.72)

// chords · electric guitar clean · "Electric Guitar (clean)" · soft notes
const electric_guitar_clean_2 = note("<~@121 A B C D A B A B ~>".pickRestart({
  A: "f#3!3 c#4@2 c#4 f#3!3 c#4@2 c#4 f#3 c#4 f#3@2",
  B: "[c#4,g#4]@2 [c#4,g#4]!5 [c#4,g#4]@2 [c#4,g#4]!3 [c#4,g#4]@2 [c#4,g#4]@2", // C#5
  C: "g#3!3 d#4@2 d#4 g#3!3 d#4@2 d#4 g#3 d#4 g#3@2", D: "[b3,f#4]!7 [b3,f#4]@2 [b3,f#4]!3 [b3,f#4]@2 [b3,f#4]@2",
})).s("gm_electric_guitar_clean").gain(0.24)

// bass · electric bass pick · "Electric Bass (pick)"
const bass = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D E F G H E F G H A B C D A B C D A B C D A B C D A B C
  D A B C D A B C D E F G H E F G H E F G H E F G H ~@8 I J K L I J K L E F G H E F G H M N O P M N O P M N O P M ~@9
>`.pickRestart({
  A: "[c#2,e2]@2 [c#2,e2]@2 [c#2,e2]@2 [c#2,d#2]@2 [c#2,d#2]@2 [c#2,d#2]@2 d#2!2 [e1,a1] a1, ~@13 e2@3", // C#m C#sus2 A5
  B: "[a1,c#3]@3 [a1,c#3]!3 [a1,b2]@3 [a1,c#3] [a1,c#3]@2 [a1,e3]@3 ~", // A Asus2 A A5
  C: "[e2,b2]@3 [e2,b2]!3 [e2,b2]@3 [e2,b2]!3 [e2,b2]@2 [a1,f#2]!2", // E5 D
  D: "[b1,f#2]@3 [b1,f#2]!3 [b1,f#2]@3 [b1,f#2]!3 [b1,f#2]@2 e2!2", // B5
  E: "[b3,f#4]@3 [b3,f#4]!3 [b3,f#4]@3 [b3,f#4]@3 [b3,f#4]@2 [e3,a3]!2", // B5 A5
  F: "[f#3,c#4]@3 [f#3,c#4]!3 [f#3,c#4]@3 [f#3,c#4]@3 [f#3,c#4]@2 e3!2", // F#5
  G: "[c#4,g#4]@3 [c#4,g#4]!3 [c#4,g#4]@3 [c#4,g#4]!3 [c#4,g#4]@2 [c#4,g#4]!2", // C#5
  H: "[g#3,d#4]@3 [g#3,d#4]!3 [g#3,d#4]@2 [g#3,d#4]!4 [g#3,d#4]@2 [e3,a3]@2", // G#5 A5
  I: "b1 ~ f#2 d#3@3 b2@5 ~ e3@2 b2@2, ~ b1@3 ~@12", J: "f#2!3 d#3@3 b2@5 ~ e3@2 b2@2",
  K: "f#2!3 d#3@3 b2@3 d#3@3 e3 d#3 b2@2",
  L: "[e1,e2,b2,e3]@3 [e1,e2,b2,e3]@3 [e1,e2,b2,e3] [e1,e2,b2,e3]@2 [e1,e2,b2,e3]@3 [e1,e2,b2,e3]@2 [e1,a1]@2", // E5 A5
  M: "[b3,f#4]!7 [b3,f#4]@2 [b3,f#4]!3 [b3,f#4]@2 [b3,f#4]@2", N: "f#3!3 c#4@2 c#4 f#3!3 c#4@2 c#4 f#3 c#4 f#3@2",
  O: "[c#4,g#4]@2 [c#4,g#4]!5 [c#4,g#4]@2 [c#4,g#4]!3 [c#4,g#4]@2 [c#4,g#4]@2", // C#5
  P: "g#3!3 d#4@2 d#4 g#3!3 d#4@2 d#4 g#3 d#4 g#3@2",
})).s("gm_electric_bass_pick").gain(0.72)

// bass · electric bass pick · "Electric Bass (pick)" · soft notes
const bass_soft = note("<~@121 A B C D A B A B ~>".pickRestart({
  A: "f#3!3 c#4@2 c#4 f#3!3 c#4@2 c#4 f#3 c#4 f#3@2",
  B: "[c#4,g#4]@2 [c#4,g#4]!5 [c#4,g#4]@2 [c#4,g#4]!3 [c#4,g#4]@2 [c#4,g#4]@2", // C#5
  C: "g#3!3 d#4@2 d#4 g#3!3 d#4@2 d#4 g#3 d#4 g#3@2", D: "[b3,f#4]!7 [b3,f#4]@2 [b3,f#4]!3 [b3,f#4]@2 [b3,f#4]@2",
})).s("gm_electric_bass_pick").gain(0.24)

// chords · overdriven guitar
const overdriven_guitar = note("<~@56 A B C D E F G H E F G H ~@16 I J K L I J K L ~@38>".pickRestart({
  A: "g#4@2 g#4@2 g#4@2 g#4@2 g#4@2 g#4@2 [c#4,g#4]@3 ~", B: "e4 [a3,e4] e4!2 [a3,e4] e4 ~ [a3,d4]",
  C: "~ [e3,e4,b4] ~@2 [e3,e4,b4] ~@2 e3", D: "~ [b3,f#4] ~@5 a3", E: "g#4@11 ~ [c#4,g#4]@3 e4",
  F: "e4@11 ~ c#5@2 [e3,a3]!2", G: "~ [e4,b4] ~@2 [e4,b4] ~@2 b3",
  H: "~@2 [b3,f#4] ~@3 d#5 [b3,f#4,b4,d#5]!2 d#5!3 d#5@3 ~", I: "[b3,f#4]@15 ~", J: "[f#3,c#4]@15 ~",
  K: "[c#4,f#4]@15 ~", L: "[g#3,d#4]@15 ~",
})).s("gm_overdriven_guitar").gain(0.72)

// bass · electric bass pick · "Electric Bass (pick)-3"
const bass_2 = note(`<
  ~@31 A B C D E B C D E ~@16 F G H I J K L M J K L M B C D E B C D E B C D E B C D E N O P Q N O P Q R S T U R S T U B
  C D E B C D E V W X Y V W X Y V W X Y V ~@9
>`.pickRestart({
  A: "~@8 [d3,g3]!5 ~ [e1,a1]!2, ~@13 [d3,g3]@3", B: "[b1,f#2]@3 [b1,f#2]!3 [b1,f#2]@3 [b1,f#2]@3 [b1,f#2]@2 [e1,a1]!2",
  C: "[f#1,c#2]@3 [f#1,c#2]!3 [f#1,c#2]@3 [f#1,c#2]@3 [f#1,c#2]@2 e1!2", // F#5
  D: "[c#2,g#2]@3 [c#2,g#2]!3 [c#2,g#2]@3 [c#2,g#2]!3 [c#2,g#2]@2 [c#2,g#2]!2", // C#5
  E: "[g#1,d#2]@3 [g#1,d#2]!3 [g#1,d#2]@2 [g#1,d#2]!4 [g#1,d#2]@2 [e1,a1]@2", F: "[c#2,g#2]!7 [e1,a1]",
  G: "[a1,e2]!7 [a1,d2]", H: "[e1,e2,b2]!7 [e1,a1]", I: "[b1,f#2]!3 [b1,f#2]@2 [b1,f#2]!2 a1",
  J: "[c#2,g#2]@11 ~ [c#2,g#2]@2 [e2,a2]!2", K: "[a1,e2,a2]@11 ~ [a1,e2,a2,c#3]@2 [e1,a1]!2", L: "[e2,b2]!7 [b1,f#2]",
  M: "[b1,f#2]@2 [b1,f#2]!4 [b1,f#2,b2,d#3]!6 [b1,f#2,b2,d#3]@3 ~", N: "[b1,f#2]@15 ~", O: "[f#1,c#2]@15 ~",
  P: "[c#2,f#2]@15 ~", Q: "[g#1,d#2]@15 ~", R: "b1 ~ f#2 d#3@3 b2@5 ~ e3@2 b2@2, ~ b1@3 ~@12",
  S: "f#2!3 d#3@3 b2@5 ~ e3@2 b2@2", T: "f#2!3 d#3@3 b2@3 d#3@3 e3 d#3 b2@2",
  U: "[e1,e2,b2,e3]@3 [e1,e2,b2,e3]@3 [e1,e2,b2,e3] [e1,e2,b2,e3]@2 [e1,e2,b2,e3]@3 [e1,e2,b2,e3]@2 [e1,a1]@2", // E5 A5
  V: "[b1,f#2]!7 [b1,f#2]@2 [b1,f#2]!3 [b1,f#2]@2 [b1,f#2]@2", W: "f#1!3 c#2@2 c#2 f#1!3 c#2@2 c#2 f#1 c#2 f#1@2",
  X: "[c#2,g#2]@2 [c#2,g#2]!5 [c#2,g#2]@2 [c#2,g#2]!3 [c#2,g#2]@2 [c#2,g#2]@2", // C#5
  Y: "g#1!3 d#2@2 d#2 g#1!3 d#2@2 d#2 g#1 d#2 g#1@2",
})).s("gm_electric_bass_pick").gain(0.72)

// bass · electric bass pick · "Electric Bass (pick)-3" · soft notes
const bass_soft_2 = note("<~@121 A B C D A B A B ~>".pickRestart({
  A: "f#1!3 c#2@2 c#2 f#1!3 c#2@2 c#2 f#1 c#2 f#1@2",
  B: "[c#2,g#2]@2 [c#2,g#2]!5 [c#2,g#2]@2 [c#2,g#2]!3 [c#2,g#2]@2 [c#2,g#2]@2", // C#5
  C: "g#1!3 d#2@2 d#2 g#1!3 d#2@2 d#2 g#1 d#2 g#1@2", D: "[b1,f#2]!7 [b1,f#2]@2 [b1,f#2]!3 [b1,f#2]@2 [b1,f#2]@2",
})).s("gm_electric_bass_pick").gain(0.24)

// chords · guitar harmonics
const guitar_harmonics = note("<~@67 A ~@9 B ~ B ~ B ~ B ~@33 B ~ B ~@10>".pickRestart({
  A: "b4!3 d#5 b4!2 g#5 d5!3 d5@5 ~", B: "[e4,g#4]@15 ~",
})).s("gm_guitar_harmonics").gain(0.72)

// chords · guitar harmonics · soft notes
const guitar_harmonics_soft = note("<~@121 A ~ A ~ A ~ A ~@2>".pickRestart({
  A: "[e4,g#4]@15 ~", // E
})).s("gm_guitar_harmonics").gain(0.32)

// bass · electric bass pick · "Electric Bass (pick)-5"
const bass_3 = note("<~@67 A ~@9 B ~ B ~ B ~ B ~@33 B ~ B ~@10>".pickRestart({
  A: "b2!3 d#3 b2!2 g#3 d3!3 d3@5 ~", B: "[e2,g#2]@15 ~",
})).s("gm_electric_bass_pick").gain(0.72)

// bass · electric bass pick · "Electric Bass (pick)-5" · soft notes
const bass_soft_3 = note("<~@121 A ~ A ~ A ~ A ~@2>".pickRestart({
  A: "[e2,g#2]@15 ~", // E
})).s("gm_electric_bass_pick").gain(0.32)

// other · electric guitar clean · "Electric Guitar (clean-3"
const electric_guitar_clean_3 = note("<~@84 A B C D A B C D ~@38>".pickRestart({
  A: "b3@3 f#4 b4@2 [c#5,f#5]@7 ~ e3@2", B: "f#3@3 ~ e5@2 b4@4 a#4@4 f#4@2", C: "c#4@3 g#4 c#5@2 [d#5,g#5]@7 ~ e3@2",
  D: "g#3@3 d#4 f#4@2 c#5@4 g#3@2 c5@2 a3@2",
})).s("gm_electric_guitar_clean").gain(0.72)

// bass · electric bass pick · "Electric Bass (pick)-6"
const bass_4 = note("<~@84 A B C D A B C D ~@38>".pickRestart({
  A: "b1@3 f#2 b2@2 [c#3,f#3]@7 ~ e1@2", B: "f#1@3 ~ e3@2 b2@4 a#2@4 f#2@2", C: "c#2@3 g#2 c#3@2 [d#3,g#3]@7 ~ e1@2",
  D: "g#1@3 d#2 f#2@2 c#3@4 g#1@2 c3@2 a1@2",
})).s("gm_electric_bass_pick").gain(0.72)

// drums · kick
const kick = s("bd").struct("<~@3 A ~@28 B ~@35 C ~@31 C ~@29>".pickRestart({
  A: "~@5 x ~ x", B: "x ~ x!2 ~@3 x", C: "x ~ x!2 ~@2 x ~",
})).gain(0.8)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@122 [~ x ~ x]!8>").gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 B ~@3 A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 C A ~@3 A ~@3 D ~@3 A ~ A ~
  A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 D ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@3 x", C: "~@3 x", D: "x ~@2 x ~@2 x ~",
})).gain(0.8)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@122 A ~ A ~ A ~ A ~>".pickRestart({
  A: "x",
})).gain(0.32)

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

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@122 A B A B A B A B>".pickRestart({
  A: "~ x", B: "x!2",
})).gain(0.32)

stack(
  electric_guitar_clean, electric_guitar_clean_2, bass, bass_soft, overdriven_guitar, bass_2, bass_soft_2,
  guitar_harmonics, guitar_harmonics_soft, bass_3, bass_soft_3, electric_guitar_clean_3, bass_4, kick, snare,
  snare_soft, crash, crash_soft, ride, ride_soft
)

More by Creed