Strudelify

Fly Away From Here

Aerosmith

KeyE majorTempo70 bpm
0:00/0:00
// Fly Away From Here — Aerosmith
// 70 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 89 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): guitar program 26.
setcpm(70/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 A B C D E F C D E F G H G I ~@12 J K L ~@53 J K M ~>".pickRestart({
  A: "g#4@4 f#4@4 g#4@4 b4@3 ~, [b3,e4]@15 ~", B: "[c#4,e4,b4]@4 a4 g#4 [a3,c#4,e4]@9 ~",
  C: "[e4,g#4] b3 [e4,g#4] b3 [e4,g#4] b3 [e4,g#4] b3", D: "[d#4,f#4] b3 [d#4,f#4] b3 [d#4,f#4] b3 [d#4,f#4] b3",
  E: "[c#4,e4] a3 [c#4,f#4] a3 [c#4,e4] a3 [c#4,f#4] a3", // C#m F#5 C#m F#5
  F: "[c4,e4]@2 a3@2 [c4,f#4]@2 a3@2 [c4,e4]@2 a3@2 [c4,f#4]@2 a3 ~", // C Cdim C Cdim
  G: "[e4,g#4] c#4 [e4,g#4] c#4 [d#4,f#4] b3 [d#4,f#4] b3", // E D#m
  H: "[c#4,e4]@2 a3@2 [c#4,e4]@2 ~@2 [c#4,e4]@2 ~@2 [a3,c#4,e4] [b3,d#4,f#4]@2 ~, ~@3 a3@2 ~@3", // C#m A B
  I: "[c#4,e4] a3 [c#4,e4] a3 [c#4,e4] a3 [c#4,e4] a3", J: "g#4@4 f#4@4 g#4@4 b4@3 ~, [g#3,b3]@7 ~",
  K: "b4@4 a4 g#4 [a3,c#4]@7 ~@3, [a3,c#4,e4]@6 e4@9 ~", L: "[e2,b2]", M: "~ b3@15, [e2,b2,e3,g#3]",
})).s("gm_piano").gain(0.26)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~ A B A C D E F G D H F I J K L M N O P Q R S T U V W X Y A Z AA AB AC AD AE AF AG AH AI AJ AK AL N O P Q R S T U V W
  X Y AM AN@2 AO AP AQ@2 AR AS@2 AT AU AV AW ~ AX AY AZ BA BB BC BD BE BF BG@2 BH BI BJ BK BL@2 BM@2
>`.pickRestart({
  A: "g#3 a3 b3 e4", B: "e4", C: "e4@15 ~", D: "g#4@11 ~ g#4@3 g4", E: "f#4@12 f#4@3 f4", F: "e4@12 e4@3 d4",
  G: "c4@7 ~, c#4 ~@15", H: "f#4@11 ~ f#4@3 f4", I: "c4, c#4 ~@15", J: "c#4 b3", K: "a3@10 ~@2 a3 b3@3",
  L: "c#4@8 [b3,d#4]@7 ~", M: "[c#4,e4]@13 ~@3", N: "~@2 g#4 [b3,e4], g#3@15 ~, [b3,e4]@3 ~",
  O: "[g#3,c4,d#4]@11 ~ [g#3,c4,d#4]@4", P: "[a3,c#4,e4]@8 [a3,c#4,e4]@7 ~", Q: "[a3,c4]@5 a3 ~ e4, [e4,a4]@3 c4",
  R: "[g#3,b3,e4,g#4]@15 ~", S: "g#3@9 ~@3 c4@2 d#4@2, [c4,d#4]@3 ~, ~@5 g#3@3", T: "[a3,c#4,e4]@9 ~ [a3,c#4,e4]@6",
  U: "[a3,c4,e4]@7 ~", V: "[g#3,c#4,e4] [f#3,b3,d#4]", W: "[a#3,c#4,f#4]@7 ~", X: "[a3,c#4,e4]@15 ~",
  Y: "[a3,c4,e4,a4]", Z: "e4@13 ~@3", AA: "g#3@3 e3@5, [b3,e4]", AB: "g#3@5 g#3@3, b3, d#4@13 ~@3",
  AC: "a3@9 ~@5 [c#4,e4]@2, [c#4,e4]@13 ~@3, ~@5 a3@3", AD: "e4@5 a4@3, [a3,c4]", AE: "e4@3 g#4@2 e4@3, [g#3,b3]",
  AF: "g#3@9 ~@4 b3@3, [b3,d#4]@13 ~@3, ~@5 g#3@3", AG: "c#4@5 a4@3, a3, e4@3 ~@5", AH: "a3@5 a2@2 a3, [c4,e4]",
  AI: "~ [c#4,e4] [f#3,b3,d#4]@2, ~ g#3@3 ~@4", AJ: "[a3,c#4,e4]@11 ~ [a3,c#4] [b3,d#4]@3",
  AK: "[g#3,c#4,e4] [f#3,b3], ~@4 d#4@3 ~", AL: "[a3,c#4,e4,a4]@7 ~", AM: "f#3@9 ~@4 d#4@3, [b3,d#4]@3 b3, ~@5 f#3@3",
  AN: "[[f#3,d#4]@10 ~@3 d#4@2 ~ [g3,d4,g4]@7 ~ [a3,c#4,e4,a4]@7 ~, b3@13 ~@2 b3@2 ~@15, ~@5 [f#3,b4]@3 ~@8]/2", // D#m G5 A B5
  AO: "b3@9 ~@5 g#4@2, [e4,g#4]@13 e4@2 ~, ~@5 b3@3", AP: "b3@9 ~@4 d#4 f#4@2, [d#4,f#4]@13 ~@3, ~@5 b3@3",
  AQ: "[[b3,d#4,f#4]@13 ~ d#4 f#4 [d4,g4]@8 [a3,c#4,e4,a4]@8, ~@13 b3@11 ~@8]/2", AR: "[b3,d4,g4] [a3,c#4,e4,a4]",
  AS: "[~ [b4,d5]!2 ~ [b4,d5]!2 ~ [b4,d5]!2 ~ [b4,d5]!2 ~ [b4,d5]!2 e4 e4 [b4,d5]!2 e4 [b4,d5]!2 e4 [b4,d5]!2 e4 [b4,d5]!2 e4 [b4,d5]!2 e4, [g#3,b3]@31 ~, g#4@15 ~@17, e4@3 e4@3 e4@3 e4@3 e4@3 ~@17]/2", // Bm G#m
  AT: "~ e4 [f#3,b3,d#4]@2, [g#3,c#4] ~", AU: "[a3,c#4,e4]@10 ~@2 [a3,c#4,e4] [f#3,b3,d#4]@3",
  AV: "[g#3,c#4,e4] [b3,d#4,f#4]", AW: "[a3,c#4,e4,a4]@15 ~", AX: "~@5 g#4@3, [g#3,c4,d#4]",
  AY: "[e4,a4]@10 ~@3 e4@3, a3, c#4@13 ~@3, ~@5 a4@3", AZ: "[c4,e4,a4]@12 ~ e4 c4@2, a3, ~@6 a4 ~",
  BA: "[e4,g#4]@12 ~ g#4 e4@2, b3@11 ~ b3@4", BB: "[c4,d#4]@10 g#4@3 d#4@2 c4, g#3", BC: "[c#4,e4]@5 a4@3, a3@15 ~",
  BD: "a3@9 ~@4 e4 a4@2, [c4,e4,a4]@6 c4 ~, ~@5 a3@3", BE: "g#3@10 b3@5 ~, g#4@15 ~, e4@3 ~",
  BF: "d#4@6 g#4@4 d#4@3 c4@3, c4@3 ~, g#3@5 g#3@3",
  BG: "[[c#4,e4]@10 ~@4 a3@2 a3@9 ~@4 e4 a4@2, a3@6 c#4@2 [c4,e4]@6 c4 ~, a4@4 ~ a4@9 ~@2, ~@11 e4@5 ~@10 a3@6]/2", // C#m C
  BH: "g#4@4 f#4@2 e4@2 f#4@2 g#4@3 ~ f#4@2", BI: "~ e4 c#4@11 ~@3", BJ: "[c#4,e4]@6 ~ e4, a3@11 ~ a3@4, ~@13 c#4@3",
  BK: "[a3,c4,e4,a4]@15 ~", BL: "[g#3@4 a3@4 b3@4 e4@19 c#4]/2", BM: "[b3@9 ~@7, c4 ~@31]/2",
})).s("gm_distortion_guitar").gain(0.36)

// bass · fretless bass
const bass = note(`<
  ~@13 A B A C D E F G H I J K L M N O P C Q R S T U V S W L B X Y D E F G H I J K L M N O Z AA AB Q AC AD AE AF AG AH
  AI AJ L AK P AL AM AN AH AO AP AQ AH AL AR AS AT AU S AV AW C P ~
>`.pickRestart({
  A: "c#2 b1", B: "a1@11 ~ a1 b1@3", C: "a1", D: "e1@5 ~ e1!2 ~ e1@3 e1@4", E: "g#1@5 ~ g#1!2 ~ g#1@3 g#1@4",
  F: "a1@5 ~ a1!2 ~ a1@4 ~ e1@2", G: "a1@6 a1@2 ~ a1 ~@2 a1@4", H: "e1@5 ~ e1!2 ~@2 e1@4 e1@2",
  I: "g#1@6 g#1!2 ~@2 g#1@3 ~ g#1@2", J: "a1@5 ~ a1!2 ~@2 a1@5 ~", K: "a1@5 ~ a1@3 ~ a1@5 ~",
  L: "c#2@6 c#2@2 b1@5 ~ b1@2", M: "a#1@5 ~ a#1@2 f#1@5 ~ f#1@2", N: "a1@5 ~ a1@2 a1@6 e1@2",
  O: "a1@5 ~ a1@4 a1 ~ a1@4", P: "e1", Q: "e1@5 ~ e1@3 ~ e1@4 e1@2", R: "g#1@5 ~ g#1@4 g#1@4 ~ g#1",
  S: "a1@5 ~ a1@3 ~ a1@4 e1@2", T: "a1@5 ~ a1@6 a1@4", U: "e1@5 ~ e1@6 e1@4", V: "g#1@5 ~ g#1@6 g#1@3 ~",
  W: "a1@7 ~ a1@6 a1@2", X: "c#2@6 c#2 ~ b1@5 ~ b1@2", Y: "a1@9 ~ a1@5 ~", Z: "b1@3 ~ b1@7 ~ b1@4", AA: "a1 a1@2 a1",
  AB: "g1!2 a1!2", AC: "b1@3 ~ b1@8 b1@4", AD: "a1@3 a1@3 a1@2", AE: "g1@6 g1@2 a1@5 ~ a1@2",
  AF: "g1@5 ~ g1@2 a1@3 ~ a1@4", AG: "e1@5 ~ e1@4 e1@5 ~", AH: "e1@5 ~ e1@3 ~ e1@3 ~ e1@2",
  AI: "c#2@5 ~ c#2@2 b1@5 ~ b1@2", AJ: "a1@5 ~ a1@5 ~ a1 b1@3", AK: "a1@2 a1!2", AL: "g#1@5 ~ g#1@3 ~ g#1@4 g#1@2",
  AM: "a1@3 a1@2 a1@2 e1", AN: "a1@5 ~ e1@3 ~ a1@3 ~ a1@2", AO: "g#1@5 ~ g#1@4 g#1@3 ~ g#1@2",
  AP: "a1@5 ~ a1@3 ~ a1@3 ~ e1@2", AQ: "a1@5 ~ a1@3 ~ a1@3 ~ a1@2", AR: "a1@5 ~ a1@4 a1@3 ~ e1@2",
  AS: "a1@5 ~ a1@3 ~ a1@4 a1@2", AT: "c#2@5 ~ c#2@2 b1@6 b1@2", AU: "a#1@6 f#1@4 a#1@3 ~ f#1@2",
  AV: "a1@5 ~ a1@4 ~@2 a1@4", AW: "e1@15 ~",
})).s("gm_fretless_bass").gain(0.36)

// chords · rock organ
const rock_organ = note(`<
  ~@5 A@2 B C D E F G H I H J K L B G M L B G H N F G D F ~ O F C M O F C H P H F M L F C M L B G H Q F G R@2 S T R@2 S
  U V@2 H W H F ~ L F C M L X@2 M L F C H Q F G D F M ~
>`.pickRestart({
  A: "[[e5,g#5]@16 [d#5,f#5]@15 ~, b4]/2", B: "[a4,c#5,e5]@15 ~", C: "[a4,c5,e5]", D: "[b4,e5,g#5]", E: "[b4,d#5,f#5]",
  F: "[a4,c#5,e5]", G: "[a4,c5,e5]@15 ~", H: "[g#4,c#5,e5] [f#4,b4,d#5]", I: "[e4,a4,c#5]@11 ~ [a4,c#5] [b4,d#5]@3",
  J: "[e4,a4,c#5]@15 ~", K: "[e4,g#4,b4,e5]", L: "[g#4,c5,d#5]", M: "[g#4,b4,e5]", N: "[f#4,a#4,c#5]",
  O: "[g#4,b4,d#5]", P: "[a4,c#5,e5]@11 ~ [a4,c#5] [f#4,b4,d#5]@3", Q: "[f#4,a#4,c#5]@7 ~", R: "[f#4,b4,d#5]",
  S: "[g4,b4,d5] [a4,c#5,e5]", T: "[g#4,b4,e5]@15 ~", U: "[g4,b4,d5]@8 [a4,c#5,e5]@7 ~", V: "[[g#4,b4,e5]@31 ~]/2",
  W: "[a4,c#5,e5]@10 ~@2 [a4,c#5,e5] [f#4,b4,d#5]@3", X: "[[a4,c#5]@16 [a4,c5]@15 ~, e5@31 ~]/2",
})).s("gm_rock_organ").gain(0.12)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@15 A B C D E@2 ~@3 F G H I J K L ~@3 M N@2 O P G Q R S T U V W X Y Z AA AB AC AD@2 AE@2 AF AG AH AI AJ AK AL@2 G Q
  AM AN T AO AP@2 AQ AR AS AT AU AV AW@2 AX AY AZ@2 ~ BA ~@2
>`.pickRestart({
  A: "[g#3,c#4] [e3,g#3,c#4] [f#3,b3]@2, ~@8 c4 ~@7", B: "[e3,a3,c#4]@12 ~@2 a3 c#4, ~@6 a2 ~, ~@13 e3@3",
  C: "[e3,g#3,b3]@15 ~", D: "[g#3,c4,d#4]", E: "[[a3,c#4]@16 [a3,c4,e4]@15 ~, e3@31 ~]/2",
  F: "[a3,a4] [b3,b4] [c4,c5] [d4,d5]", G: "[c#4,c#5] [b3,b4]", H: "[a#3,a#4]@13 ~@3", I: "[a3,a4]",
  J: "b4 a4 e4 f#4, d4 ~@15", K: "[e3,e4,g#4]", L: "[a3,e4,a4]", M: "~ [a3,c4,a4,c5] [b3,b4] [a3,a4]",
  N: "[[e3,e4] [b3,b4], [g#3,g#4]@31 ~]/2", O: "[a3,a4] [c#4,c#5] [e4,e5] [c#4,c#5]", P: "[a4,c5]",
  Q: "[a3,c#4,a4,c#5]@10 ~@2 [a3,c#4,a4,c#5] [b3,d#4,b4,d#5]@3", R: "[c#4,e4,c#5] [b3,d#4,b4,d#5]",
  S: "[a3,c#4,a4,c#5]@7 ~", T: "[g#3,b3,g#4,b4]", U: "[c4,g#4,c5], g#3@7 ~", V: "[a3,a4], b4 ~@15",
  W: "~ [b3,b4] [a3,a4] [b3,b4]", X: "[e3,g#3,e4,g#4]", Y: "[c4,g#4,c5]", Z: "[a3,c#4,a4]", AA: "~@2 [b3,b4] [a3,a4]",
  AB: "[g#3,g#4] ~", AC: "~@4 a#3@3 ~, [f#3,f#4]@7 ~",
  AD: "[c#5@12 ~@4 [c4,c5]@15 ~, a4@31 ~, a3 ~, ~@12 [e4,e5]@19 ~]/2", AE: "[[b3,b4]@16 [a3,a4]@15 ~, [d#4,d#5]]/2",
  AF: "g4 g5 g4 g5 a4 a5 ~ a5, g3@4 a3@3 ~, ~@3 a4", AG: "~@2 [e4,g#4,b4]@5 ~, [g#3,e5]@15 ~", AH: "b4@3 f#4, [b3,d#5]",
  AI: "[a3,f#4,a4,d#5]", AJ: "[g3,g4,b4,d5] [a3,a4,c#5]", AK: "[g3,g4,b4] [a3,a4,c#5]", AL: "e4/2",
  AM: "[c#4,e4,c#5,e5] [b3,d#4,b4,d#5]", AN: "[a4,c#5], [a3,c#4]@7 ~", AO: "[g#3,c4,g#4,c5]@6 [g#3,g#4] [c4,c5]",
  AP: "[[c#4,c#5]@3 e5 [c4,c5]@2 [b3,b4] [a3,a4], [a3,a4]@3 ~, ~@12 e4@13 ~@7]/2", AQ: "[g#3,g#4], [e3,e4]@7 ~",
  AR: "[g#3,c4,g#4,c5]", AS: "[a3,a4]@2 [c#4,c#5] [e4,e5]", AT: "[a3,c4,a4,c5]@2 [b3,b4] [a3,a4]",
  AU: "[e3,g#3,e4,g#4]@5 [e3,e4]@2 [g#3,g#4]", AV: "[c4,c5]@8 [d#4,d#5]@7 ~, [g#3,g#4]",
  AW: "[[a3,c#4,c#5,e5]@5 a4 [c#4,c#5] e5 [a3,c4,a4,c5]@2 [c4,a4,c5]@2 [b3,b4]@2 [a3,a4]@2, ~@5 a3@3 ~@8, ~@7 e4@5 ~@4]/2", // A C# Am F B A
  AX: "[c#4,c#5] [b3,f#4,b4]", AY: "[f#3,a#3,f#4,a#4]@15 ~",
  AZ: "[[a3,c#4,c#5]@8 [a3,c4,c5]@7 ~, [e4,a4]@15 ~, e5@3 ~@29]/2", BA: "[a3,c#4]@13 ~@3",
})).s("gm_string_ensemble_1").gain(0.2)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@15 A ~@18 B ~@3 C ~@9 D E ~@2 F ~ G ~@8 H@2 ~@14 I ~@5 J K L@2>".pickRestart({
  A: "e3@4 ~@4 e3 ~@7", B: "a4 ~@15", C: "[a3,c4]", D: "g#3@7 ~", E: "c#5", F: "~@4 a#4@3 ~", G: "a3@15 ~",
  H: "[g#4,b4]/2", I: "e4@5 ~@3", J: "[e3,g#3,e4,g#4]", K: "a4@13 ~@3", L: "[[e2,e3,g#3]@9 ~@7]/2",
})).s("gm_string_ensemble_1").gain(0.15)

// drums · kick
const kick = s("bd").struct("<~@16 A B@12 C ~ B@38 C B@10 D B D B D C ~ C ~>".pickRestart({
  A: "~@5 x ~ x", B: "x ~@6 x!2 ~ x ~@5", C: "x", D: "x ~@2 x ~@2 x ~@2 x!3 ~@4",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@16 A B@12 ~@2 B@38 ~ B@10 C B C B C ~@4>".pickRestart({
  A: "~@7 x!2 ~@7", B: "~ x ~ x", C: "~ x ~@2 x ~@2 x ~@2 x ~@5",
})).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct("<~@30 A ~@11 B ~@11 B ~@13 B ~@3 C ~@7 D ~ D ~ D ~ E ~@2>".pickRestart({
  A: "~@13 x!2 ~", B: "~@14 x!2", C: "~@7 x", D: "~@15 x", E: "~@11 x!2 ~@3",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<[x!4] ~@16 [x!8]!12 ~@2 [x!8]!38 ~ [x!8]!15 ~@4>").gain(0.51)

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

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@42 [~@10 x!2 ~@4] ~@11 [~@10 x!2 ~@4] ~@13 [~@10 x!2 ~@4] ~@20>").gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<~@16 A ~@21 B ~@3 C ~@11 C ~@11 D ~ C ~@3 E ~@7 A ~ A ~ A ~@4>".pickRestart({
  A: "~@3 x", B: "~@12 x!3 ~", C: "~ x ~@2 x ~@11", D: "~@8 x!3 ~@5", E: "~@2 x!4 ~@3 x ~@6",
})).gain(0.41)

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct("<~@38 A ~@3 B ~@11 B ~@13 B ~@20>".pickRestart({
  A: "~@11 x ~@4", B: "~@3 x ~@2 x ~@2 x ~@6",
})).gain(0.26)

// drums · crash
const crash = s("cr").struct(`<
  ~@17 A ~@3 A ~@3 A B A ~ A ~ A ~@7 A B A ~ A ~@3 A ~@3 A B A ~@5 A ~@3 A ~ A C A ~ A@2 ~@2 A ~@2 A@2 ~@3 A D A D A ~ A
  ~
>`.pickRestart({
  A: "x", B: "~@12 x!2 ~@2", C: "~@13 x ~@2", D: "~ x ~@2 x ~@2 x ~@2 x ~ x ~ x ~",
})).gain(0.26)

// drums · ride bell
const ride_bell = s("rd").struct("<~@17 [x!8]!12 ~@10 [x!8]!30 ~ [x!8]!15 ~@4>").gain(0.26)

// drums · tambourine
const tambourine = s("tb").struct("<~@17 [~ x ~ x]!12 ~@2 [~ x ~ x]!38 ~ [~ x ~ x]!15 ~@4>").gain(0.51)

stack(
  piano, distortion_guitar, bass, rock_organ, string_ensemble_1, string_ensemble_1_soft, kick, snare, low_tom, hihat,
  mid_tom, mid_tom_soft, high_tom, high_tom_soft, crash, ride_bell, tambourine
)

More by Aerosmith