Strudelify
Second Home by the Sea cover art

1983 · Genesis

Second Home by the Sea

Genesis

KeyE minorTempo128 bpm
0:00/0:00
// Second Home by the Sea — Genesis
// 128 bpm, 4/4, key E minor. 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: duplicate parts dropped: ch 2 overdriven guitar (copy of ch 3 distortion guitar, 0.125 beats early)
// note: Full arrangement: all 174 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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, A@4 for four bars: edit a riff to change every repeat.

// chords · distortion guitar · Em
const distortion_guitar = note("<[~@2 [b2,e3,g3] ~@3 [b2,e3,g3] ~]!12 ~@162>").s("gm_distortion_guitar").gain(0.02)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  A@12 ~@43 B C D E B C D E F C E@2 ~@16 A@11 ~@13 B C D E B C D E G C E@2 G C E@2 B C D E B C D E G C E@2 G C E@2 ~@35
>`.pickRestart({
  A: "~@7 [b2,e3,g3]@3 ~@9 [b2,e3,g3]@3 ~@2", B: "~@7 [g2,b2,e3,g3]@3 ~@9 [g2,b2,e3,g3]@3 ~@2",
  C: "~@7 [g2,b2,d3,g3]@3 ~@9 [g2,b2,d3,g3]@3 ~@2", D: "~@7 [f#2,b2,d3,f#3]@3 ~@9 [f#2,b2,d3,f#3]@3 ~@2",
  E: "~@7 [f#2,a2,d3,f#3]@3 ~@9 [f#2,a2,d3,f#3]@3 ~@2", F: "~@7 [g2,c3,e3]@3 ~@9 [g2,c3,e3]@3 ~@2",
  G: "~@7 [g2,c3,e3,g3]@3 ~@9 [g2,c3,e3,g3]@3 ~@2", // C
})).s("gm_distortion_guitar").gain(0.02)

// bass · electric bass pick
const bass = note(`<
  ~ A B C B D B C B D B D B@3 E B@2 D C B@2 F G H G I J K L B@2 D B M B@3 N B@2 E G H G O J P L Q G R J S L T U V W X U
  V Y Z AA AB AC AD@2 AE B AF B AG@2 AH@2 AF@2 AI B AF AJ B@3 E B@3 AK B@2 E G AL G AM J P L AN G R J S L T AO AP Y T U
  AP Y AQ AA AB AR AQ AA AB AS T AO AP Y T U AP Y AQ AA AB AT AQ AA AB AS B@2 AG@2 AH@2 AF@2 AU@2 AF@2 B@2 AF@4 B@2 ~@15
>`.pickRestart({
  A: "~@7 d#1", B: "e1 ~@2 e1 ~@4", C: "e1 ~@2 e1 ~@3 d#1", D: "e1 ~@2 e1 ~@2 d2@2", E: "e1 ~@2 e1 ~@2 g1 a1",
  F: "e1@4 ~@5 e1@9 g1@3 a1@3", G: "c2@3 g2@3 a1 b1", H: "e1@2 e2 [d2,d3]@3 g1 a1", I: "e1@3 e2@5", J: "c2@9 a1@14 ~",
  K: "d2@7 d2", L: "c2!2 b1!2 a1!2 g1!2", M: "e1 ~@2 e1 ~@2 a1 b1", N: "e1 ~@2 e1 ~@2 e2 ~", O: "e1@3 d2@3 f#1@2",
  P: "d2!2 d3 d2@4 d2", Q: "e1@5 ~ e2@3 [d2,d3]@15", R: "e1@3 a1", S: "d2@2 d3 d2@4 d2", T: "e1@3 d2@5",
  U: "g1@3 g2@3 g1 a1", V: "b1@2 d2 b1@3 a1 b1", W: "d2@3 e2@3 g1 f#1", X: "e1@7 ~@2 d2@12 e1@3", Y: "d2@3 e2@3 d2@2",
  Z: "a#1@3 e1@3 f#1@2", AA: "g1@3 b1@3 c2@2", AB: "d2@3 f#1@3 g1@2",
  AC: "b1@9 d2@6 ~@3 c3 c3@2 ~@3, ~@15 [d2,e2]@2 [g#2,a#2]@2 ~@5, ~@8 f#2 d3 ~@2", AD: "[e1@47 ~]/2",
  AE: "a1@4 ~@5 a1@4 ~@11", AF: "c2 ~@2 c2 ~@4", AG: "g1 ~@2 g1 ~@4", AH: "f1 ~@2 f1 ~@4", AI: "a1@4 ~@5 a1@3 ~@12",
  AJ: "e1 ~@2 e1 ~@2 d2 d#1", AK: "e1@3 ~@6 e1@4 ~@2 e1@3 g1@3 d1@3", AL: "e1@2 e2 d2@3 g1 a1", AM: "e1@3 e1@3 g1 a1",
  AN: "e1@5 ~ e2@3 d2@15", AO: "g1@3 f2@3 g1 a1", AP: "b1@3 d2@3 b1@2", AQ: "c2@3 e1@3 f#1@2", AR: "a1@2 d2 d2@3 d2@2",
  AS: "a1@6 d2@3 d2@6 ~@3 c3 ~ a#2@2 ~@2, ~@15 [d2,e2]@2 [g#2,a#2]@2 c3@2 ~@3, ~@8 f#2 d3 ~@2", AT: "a1 ~ d2 d2@3 d2@2",
  AU: "d2 ~@2 d2 ~@4",
})).s("gm_electric_bass_pick").gain(0.12)

// bass · electric bass pick · soft notes
const bass_soft = note("<~@66 A ~@28 B ~@5 C ~@20 D ~@15 D ~@35>".pickRestart({
  A: "~@11 [f#1,g#1,a#1,c2], ~@10 [g#2,a#2] ~, ~@21 [d2,e2,f#2]@2 ~", B: "~@3 d3@3 ~@2", C: "~@3 d3@5",
  D: "~@11 [f#1,g#1,a#1,c2], ~@10 g#2 ~, ~@21 [d2,e2,f#2]@2 ~", // G#7 D
})).s("gm_electric_bass_pick").gain(0.07)

// chords · piano · E5
const piano = note(`<
  ~@8
  [[b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2]!15
  ~@7
  [[b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2]!12
  ~@41
  [[b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2 [b3,e4] ~@2]!11
  ~@80
>`).s("gm_piano").gain(0.06)

// chords · lead 5 charang
const lead_5_charang = note(`<
  ~@12 A B@2 C@2 B@2 C@2 D@2 ~@8 A B@2 C@2 B@2 C@2 D@2 ~@41 A B@2 C@2 B@2 C@2 D@2 ~@80
>`.pickRestart({
  A: "[b3,e4,g4]@23 ~", B: "[[a3,d4,f#4]@47 ~]/2", C: "[b3,e4,g4]/2", D: "[a3,d4,f#4]/2",
})).s("gm_lead_5_charang").gain(0.07).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@23 A@2 B@3 C D@2 ~@11 A@2 B@3 C E@2 B@3 C F@3 G@2 H I@3 J K L@2 ~@26 M@5 N@6 O@4 P@8 Q@8 P@8 R@7 ~@35
>`.pickRestart({
  A: "[g3@9 ~ a3@12 ~@2 [g3,b3]@23 ~, e4@47 ~, c4@23 ~@25]/2", // G
  B: "[g3@8 ~@2 a3@13 ~ [g3,b3]@23 ~ g3@8 ~@2 a3@13 ~, e4@71 ~, c4@23 ~@25 c4@23 ~]/3", C: "[a3,d4,f#4]@23 ~",
  D: "[g3@8 ~ a3@14 ~ [g3,b3]@24, e4, c4@23 ~@25]/2", E: "[g3@8 ~ a3@14 ~ [g3,b3]@23 ~, e4, c4@23 ~@25]/2",
  F: "[g3@8 ~ a3@14 ~ g3@23 [d4,g4]@23 ~@2, e4@2 ~, c4@23 ~ b3@46 ~@2]/3", G: "[b3@23 ~ a3@24, [d4,f#4]@47 ~]/2",
  H: "[g3,b3,e4]", I: "[[d4,g4]@23 ~ d4@24 [a3,d4]@23 ~, b3@47 ~@25, ~@24 f#4@47 ~]/3", J: "[g3,c4,e4]@23 ~",
  K: "[b3,d4,g4]@23 ~", L: "[a3,d4,f#4]/2",
  M: "[~@23 g3@8 ~@2 a3@13 ~ [g3,b3]@23 ~ g3@8 ~@2 a3@13 ~ [g3,b3]@23 ~ [g3,c4], ~@23 e4@48 e4@49, ~@23 c4@23 ~@25 c4@23 ~@26]/5", // G C5
  N: "[~@9 a3@13 ~ [a3,d4,f#4]@23 ~ g3@8 ~ a3@14 ~ [g3,b3]@23 ~ g3@8 ~@2 a3@13 ~ [g3,b3]@23 ~ [g3,c4], ~@47 e4@48 e4@49, ~@47 c4@23 ~@25 c4@23 ~@26]/6", // D G C5
  O: "[~@9 a3@13 ~ [a3,d4,f#4]@23 ~ g3@8 ~ a3@14 ~ g3@23 [d4,g4]@2, ~@47 e4@48 ~, ~@47 c4@23 ~ b3@25]/4", // D G5
  P: "[~@23 b3@23 ~ a3@24 [g3,b3,e4]@24 [d4,g4]@23 ~ d4@24 [a3,d4]@23 ~ [g3,c4,e4]@23 ~ [b3,d4,g4], ~@23 [d4,f#4]@47 ~@25 b3@47 ~@50, ~@119 f#4@47 ~@26]/8", // Em G5 D5 C G D
  Q: "[~@23 [a3,d4,f#4]@48 [g3,c4,e4]@23 ~ [b3,d4,g4]@23 ~ [a3,d4,f#4]@48 [g3,b3,e4]@23 ~ b3, ~@95 [d4,g4]]/8", // D C G D Em G5
  R: "[~@23 [a3,d4,f#4]@48 [g3,c4,e4]@23 ~ [b3,d4,g4]@23 ~ [a3,d4,f#4]@49]/7", // D C G D
})).s("gm_string_ensemble_1").gain(0.06).pan(0.6)

// other · tinkle bell
const tinkle_bell = note("<~@23 A@2 B@3 C@4 ~@10 D@2 E F@5 G@3 H@4 ~@37 D@2 E F@5 G@3 H@4 ~@65>".pickRestart({
  A: "[~@3 e4@3 g4@3 a4@13 g4@11 e4@14 ~]/2", B: "[~@3 g4@3 a4@3 b4@18 d5@5 e5@40]/3",
  C: "[f#5@3 d5@3 b4@3 a4@3 g4@3 e4@3 d4@2 ~ e4@18 d4@3 g4@3 e4@12 [e5,f#5,g5]@37 ~@2]/4", D: "[~ e4 g4 a4@4 g4@9]/2",
  E: "~ g4 a4 b4@5", F: "[~@3 b4@3 d5@3 e5@42 f#5@3 d5@3 b4@3 a4@2 g4@3 ~ d4@2 e4@19 d4@3 g4@2 e4@9 g4@3 ~ a4@15]/5",
  G: "[~@4 g4@2 a4@3 b4@18 f#5@3 e5@3 d5@3 e5@36]/3",
  H: "[f#5@3 d5@3 b4@3 a4@3 g4@3 e4@3 d4@2 ~ e4@18 d4@3 g4@3 e4@43 ~@8]/4",
})).s("gm_tinkle_bell").gain(0.18).pan(0.6)

// other · pad warm
const pad_warm = note(`<
  ~@67 A B C D E F G H I J K D C D E L@2 ~@55 M@2 N@2 O J K D C P@2 Q R@4 S@4 T@2 U@7 ~@6
>`.pickRestart({
  A: "e4@3 f#4@3 d4@2", B: "e4@3 f#4@5", C: "b4", D: "e4", E: "[f#4,d5]", F: "[g4,b4]", G: "a4@17 ~ b4@6", H: "d5",
  I: "c5@3 b4", J: "a4", K: "b4@3 a4", L: "[[g4,b4]@7 ~]/2", M: "[g4@17 a4@6 b4@25]/2", N: "[a4@17 b4@6 d5@25]/2",
  O: "c5@17 b4@7", P: "[d5@23 a4@19 g4@6]/2", Q: "e4@3 g4",
  R: "[b4@17 c5@6 d5@18 e5@6 d5@7 g4@6 a4@5 b4@6 c5@7 b4@6 a4@6 g4@6]/4", S: "[~ b4, d5@13 ~@11]/4", T: "[d5,f#5]/2",
  U: "[~ b4@48 f#5@53 ~ b4@49 ~@16, ~ d5@151 ~@16]/7",
})).s("gm_pad_warm").gain(0.31)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@67 A@4 B@6 C@7 ~@55 D@2 E@4 F@2 G@2 H@2 I@8 J@4 K@5 ~@6>".pickRestart({
  A: "[b3@47 ~@3 c4@22 ~ [b3,e4]@23, g3@95 ~, e4@71 ~@25]/4", // E5
  B: "[~ [a3,d4,f#4]@24 ~ [g3,e4,g4]@24 d4@46 ~@2 c4@46, ~@25 b3@24 ~ [a3,f4]@94]/6", // D C Dm
  C: "[~@2 g3@46 ~ a3@23 ~ g3@24 ~ [a3,d4]@24 [g3,b3,e4,g4]@35 ~@11, ~@2 e4@95 f#4@24 ~@47, ~@2 c4@70 ~ b3@23 ~@72]/7", // D5 Em
  D: "[g3,b3,e4]/2", E: "[[a3,d4]@48 ~ [a3,c4]@47, f4@95 ~]/4", F: "[~ g3@46 ~, [c4,e4]@47 ~]/2",
  G: "[[a3,d4,f#4]@47 ~]/2", H: "[g3,c4,e4]/2", I: "[~ b3@46 ~ [g3,c4]@96 ~ [g3,b3]@47, e4, g3@47 ~@145]/8",
  J: "[~@3 c4@46 ~ b3@46, ~ e4@47, ~@2 g3@46 ~ g3@47]/4", K: "[~ e4@49 ~@10, ~ g3@52 ~@67, ~@2 c4@51 ~@67]/5",
})).s("gm_string_ensemble_2").gain(0.1).pan(0.4)

// other · french horn
const french_horn = note("<~@55 A@4 B@8 ~@40 C@8 D@8 A@4 E@8 F@4 ~@35>".pickRestart({
  A: "[~@3 e4@3 b4@3 g4@5 e4@3 b4@4 g4@9 d5@3 b4@6 g4@3 d5@3 b4@8 f#5@4 d5@6 b4@3 f#5@3 d5@9 a5@3 f#5@6 d5@3 a5@3 f#5@3]/4",
  B: "[~@4 e4@3 b4@2 g4@6 e4@3 b4@3 g4@9 d5@3 b4@6 g4@3 d5@3 b4@9 f#5@3 d5@6 b4@3 f#5@3 d5@9 a5@3 f#5@6 d5@3 a5@2 f#5@7 c5@3 g5@3 e5@6 c5@3 g5@3 e5@6 b4@3 g5@3 ~ d5@5 b4@3 g5@3 d5@6 a4@3 f#5@3 d5@6 a4@3 f#5@3 d5@6 a4@3 f#5@3 d5@6 a4@2 f#5@3 d5@4]/8",
  C: "[~@3 e4@3 b4@3 g4@5 e4@3 b4@4 g4@8 d5@3 b4@6 g4@3 d5@3 ~ b4@9 f#5@3 d5@5 b4@3 f#5@3 d5@10 a5@3 f#5@6 d5@2 a5@3 f#5@7 e4@3 b4@3 g4@6 e4@3 b4@3 g4@9 d5@3 b4@6 g4@3 d5@3 b4@8 f#5@4 d5@6 b4@3 f#5@3 d5@9 a5@3 f#5@6 d5@3 a5@3 f#5@3]/8",
  D: "[~@3 c5@3 g5@3 e5@6 c5@3 g5@3 e5@6 b4@2 g5@4 d5@6 b4@2 g5@4 d5@6 a4@3 f#5@3 d5@6 a4@3 f#5@3 d5@6 a4@3 f#5@3 d5@5 a4@3 f#5@3 d5@7 c5@3 g5@3 e5@5 c5@3 ~ g5@2 e5@7 b4@3 g5@3 d5@5 b4@3 g5@3 d5@7 a4@3 f#5@3 d5@5 a4@3 f#5@3 d5@7 a4@3 f#5@3 d5@5 a4@3 f#5@3 d5@4]/8",
  E: "[~@3 e4@3 b4@3 g4@5 e4@3 b4@4 g4@9 d5@3 b4@6 g4@3 d5@3 b4@8 f#5@4 d5@6 b4@3 f#5@3 ~@8 a5@3 f#5@7 d5@3 a5@3 f#5@6 c5@3 g5@3 e5@6 c5@3 g5@3 e5@6 b4@3 g5@3 d5@6 b4@3 g5@3 d5@6 a4@3 f#5@3 d5@5 a4@3 f#5@3 d5@6 a4@3 f#5@3 d5@6 a4@3 ~ f#5@2 d5@4, ~@69 d5@10 ~@113]/8",
  F: "[~@3 c5@3 g5@3 e5@5 c5@3 ~ g5@2 e5@7 b4@3 g5@3 d5@5 b4@3 g5@3 d5@7 a4@3 f#5@3 d5@5 a4@4 f#5@2 d5@6 a4@3 f#5@3 d5@6 a4@3 f#5@3 d5@4]/4",
})).s("gm_french_horn").gain(0.14).pan(0.6)

// other · lead 2 sawtooth
const lead_2_sawtooth = note("<~@2 A@21 ~@7 B A@11 ~@41 B A@10 ~@80>".pickRestart({
  A: "[e2,e3] ~@2 [e2,e3] ~@4", B: "[e2,e3]@2 ~ [e2,e3] ~@4",
})).s("gm_lead_2_sawtooth").gain(0.04)

// other · recorder
const recorder = note("<~@67 A@7 ~ B@3 C@6 ~@58 D@2 E@3 F@3 ~ G H@2 ~ I@3 ~ J@2 K@3 L@3 ~@7>".pickRestart({
  A: "[~ a5@39 ~@11 g5@32 ~@10 d5@6 e5@57 ~@12, ~@45 e5@38 ~@85]/7", B: "[~@7 e6@22 ~@7]/3",
  C: "[~@13 a5@65 ~@6 d6@49 ~@11]/6", D: "[a5@2 ~]/2", E: "[~@9 e5@22 ~@5]/3", F: "[~@7 e5@20 ~@9]/3", G: "~@3 e5",
  H: "[g5@6 ~ e5@39 ~@2]/2", I: "[e5@49 ~@23]/3", J: "[~ e5@38 ~@9]/2", K: "[~ b5@31 ~@4 e6@30 ~@6]/3",
  L: "[~@13 d5@43 ~@16]/3",
})).s("gm_recorder").gain(0.09)

// other · timpani
const timpani = note("<~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@14 A ~@3 A ~@43 A ~@3 A ~@3 A ~@83>".pickRestart({
  A: "~@7 d2",
})).s("gm_timpani").gain(0.25)

// other · synth drum
const synth_drum = note("<~@165 [~@7 g#2@8 ~@9] ~@8>").s("gm_synth_drum").gain(0.62)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@22 A@8 ~@11 A@8 B@6 ~@38 A@8 B@6 ~@67>".pickRestart({
  A: "[~@25 b2@8 ~ a3@8 [c3,e3,a3,d4]@3 [b2,e3,e4]@7 ~@2 [e2,b2,e3,e4]@3 ~@6 [e2,b2,e3,e4]@3 ~@5 b2@7 [b2,e3,g3,c4]@3 ~ a3@8 [c3,e3,a3,d4]@3 [b2,e3,e4]@7 ~@2 [e2,b2,e3,e4]@3 ~@6 [e2,b2,e3,e4]@3 ~@4 [b2,e3]@8 ~@3 [a3,d4]@12 ~ [f#3,a3]@11 [d3,f#3,a3,d4]@12 ~ [b2,e3]@8 ~@3 [c3,e3,a3,c4]@14 ~, ~@23 [g3,c4]@9 ~@37 c4@9 ~@39 [g3,c4]@9 ~@15 [d3,d4]@11 ~@13 [g3,c4]@9 ~@18, ~@24 e3@8 ~ [c3,e3,d4]@9 ~@28 [e3,g3]@8 ~@3 [c3,e3,d4]@9 ~@39 [c3,e3]@14 ~@49]/8", // Am E5 Cmaj7 Am E5 D5 F#m D …
  B: "[~@6 [e2,b2,e3,e4]@3 ~@6 [e2,b2,e3,e4]@3 ~@5 b2@7 [b2,e3,g3,c4]@3 ~ a3@8 [c3,e3,a3,d4]@3 [b2,e3,e4]@7 ~@2 [e2,b2,e3,e4]@3 ~@6 [e2,b2,e3,e4]@3 ~@4 [b2,e3]@8 ~@3 [a3,d4]@12 ~ [f#3,a3]@11 [d3,f#3,a3,d4]@12 ~ [b2,e3]@8 ~@3 [c3,e3,a3,c4]@14 ~, ~@21 c4@9 ~@39 [g3,c4]@9 ~@15 [d3,d4]@11 ~@13 [g3,c4]@9 ~@18, ~@22 [e3,g3]@8 ~@3 [c3,e3,d4]@9 ~@39 [c3,e3]@14 ~@49]/6", // E5 Cmaj7 Am E5 D5 F#m D E5 …
})).s("gm_electric_guitar_clean").gain(0.06)

// chords · synth strings 2
const synth_strings_2 = note("<~@73 A@8 ~@93>".pickRestart({
  A: "[~@184 d#5@7 ~, ~@12 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@2 a#5@4 f#5@5 ~@6, ~@13 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@2 a5@4 f5@5 ~@5, ~@14 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 g#5@4 e5@7 ~@2, ~@15 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@4 d#5@7 g5@5 ~@7]/8",
})).s("gm_synth_strings_2").gain(0.06)

// other · overdriven guitar
const overdriven_guitar = note("<~@146 A@3 ~ B@3 C@2 D@7 ~ E@3 ~@8>".pickRestart({
  A: "[~@18 e4@43 ~@11, ~@17 a4@44 ~@11]/3", B: "[~@5 d4@46 ~@21]/3", C: "[~@13 g4@31 ~@4]/2",
  D: "[~@13 a4@40 ~@8 d5@38 ~@19 d4@37 ~@13]/7", E: "[~@13 d4@56 ~@3]/3",
})).s("gm_overdriven_guitar").gain(0.02).pan(0.4)

// other · xylophone
const xylophone = note("<~@151 A@8 B@4 C@3 ~@8>".pickRestart({
  A: "[~@191 g6, e6 c7 e6!2 c7 e6!2 c7 e6!2 c7 e6 e6 c7 e6!2 c7 e6!2 c7 e6!2 c7 e6 e6 c7 e6!2 c7 e6!2 c7 e6!2 c7 e6 e6 c7 e6!2 c7 e6!2 c7 e6!2 c7 e6 e6 c7 e6!2 c7 e6!2 c7 e6!2 c7 e6 e6 c7 e6!2 c7 e6!2 c7 e6!2 c7 e6 e6 c7 e6!2 c7 e6!2 c7 e6!2 c7 e6 e6 c7 e6!2 c7 e6!2 c7 e6!2 c7 e6, ~ a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 ~]/8",
  B: "[~@6 e6 ~@40 c6, e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 ~@3 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 ~, ~ a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 ~ a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 ~@2]/4",
  C: "[~@23 c6@2 ~@8 e6@2 ~@6 a6@2 ~@4 e6@2 ~@3 e6@2 ~ e6@2 ~@15, e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 e6@2 e6@2 c7@2 ~@2 g6@2 a6@2 c6@2 g6@2 ~ a6@2 c6@2 g6@2 ~@2 c7@2 e6@2 ~@3 c7@2 ~@2 g6@2 ~@16, ~ g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 c6@2 g6@2 a6@2 ~@2 e6@2 e6@2 c7@2 e6@2 ~@3 c7@2 e6@2 e6@2 ~@2 c6@2 g6@2 ~ a6@2 c6@2 ~@19]/3",
})).s("gm_xylophone").gain(0.05).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@2 [x ~@2 x ~@4]!155 ~@17>").gain(0.13)

// drums · rim
const rim = s("rim").struct("<~@67 [~@19 x ~@4]!16 ~@56 [~@19 x ~@4]!18 ~@17>").gain(0.16)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A@20 B A B A B A@2 B A@8 C A@2 B A B A B A@2 B A@2 B A@2 B C A@2 D C A@2 B A@4 ~@16 A@7 C A@2 B A B A B A@2 B A@2
  B A@2 B C A@2 D C A@2 B A@7 D C A@2 E C A@2 B A@7 F ~@35
>`.pickRestart({
  A: "~ x ~ x", B: "~@6 x ~@11 x ~@2 x ~ x", C: "~@2 x ~@2 x!2 ~", D: "~@2 x ~@2 x!3", E: "~@6 x ~@8 x ~ x!2 ~@2 x ~ x",
  F: "~@2 x ~ x!4",
})).gain(0.19)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B@9 A B@10 A B A B A B@2 A B@11 A B A B A B@2 A B@2 A B@2 A B@3 A B@3 A B@3 A B@26 A B A B A B@2 A B@2 A B@2 A
  B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@14 C B@2 ~@17
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!6 ~ x",
})).gain(0.16)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@9 A ~@10 A ~ A ~ A ~@2 A ~@11 A ~ A ~ A ~@2 A ~@2 A ~@2 A ~@3 A ~@3 A ~@3 B C@15 A ~@10 A ~ A ~ A ~@2 A ~@2 A
  ~@2 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 B C@7 B C@9 ~@8 D ~@8
>`.pickRestart({
// … 13 more lines

More by Genesis