Strudelify

She's Out of My Life

98 Degrees

KeyE majorTempo60 bpm
0:00/0:00
// She's Out of My Life — 98 Degrees
// 60 bpm, 4/4, key E major. 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 57 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 · fretless bass
const bass = note(`<
  ~@7 A B ~ C ~ D@3 E F G H I J K L M ~ N O P Q R S T U V W X Y Z AA AB AC AD AE AF N AG P AH G AI AJ AK@3 AL@3
>`.pickRestart({
  A: "~@20 b2@11 ~", B: "e2 b1", C: "e2 b2", D: "[e2@4 g2 g#2]/3", E: "a#2@2 b2 g#2", F: "a2 a1", G: "g#1 c#2",
  H: "f#2@14 e2 ~ d#2@16", I: "g#2@8 c2@8 c#2@7 ~ c#3@4 b2@4", J: "a2@24 g#2@7 ~", K: "f#2 b2", L: "e2@15 ~ g#2@16",
  M: "a2", N: "e2@13 ~ e2@2", O: "g2 g#2", P: "a#1@2 b1 g#1", Q: "a1 a2", R: "g#2 c#2", S: "f#2@3 e2 d#2@4",
  T: "g#2@4 c2@4 c#2@6 c#3 b2", U: "a2@3 g#2", V: "f#2@2 b2 b1", W: "e2@3 g#2", X: "d2@15 ~ d2@16",
  Y: "c#2@11 ~ c#2@4 b1@7 ~ b1@4 c#2@4", Z: "d2@13 ~ a2@2 d3 ~ a2@2 d2@11 ~", AA: "a1 ~@3 a1@8 e1@10 ~@2 e1@4 f#1@4",
  AB: "g1@4 g2@4 f#2@7 f#1", AC: "f#2@13 ~ f#2@2 e2@4 d#2@4 c#2@4 b1@4", AD: "a1@13 ~ g#1@2 f#1@16",
  AE: "b1@16 b2@15 ~", AF: "e2@27 ~@5", AG: "g2@4 g#2@3 g#1", AH: "a1@4 a2@3 a1", AI: "g1 ~ f#1@6 f#2@6 e2@2 d#2@16",
  AJ: "g#1@2 c2@2 ~@3 b1", AK: "[a1@25 a2@4 g#2@5 f#2@21 b1@24 ~@17]/3",
  AL: "[~@2 g#1@17 a1@17 ~@21 e2@33 ~@6, ~@36 b1@25 ~@35]/3",
})).s("gm_fretless_bass").gain(0.15)

// bass · fretless bass · soft notes
const bass_soft = note("<~@9 A ~ A ~@12 B ~@18 C ~@5 D E ~@2 F ~@3>".pickRestart({
  A: "a2", B: "e2@27 ~@5", C: "~@15 b1", D: "g#1 ~@31", E: "~@4 c#2@3 ~", F: "~@15 e2@17",
})).s("gm_fretless_bass").gain(0.1)

// chords · epiano1
const epiano1 = note(`<
  ~@8 A B C D E@2 F G H I J K L@2 M N O P Q R S T U@2 V@2 W X Y Z AA AB AC AD AE AF AG@2 AH AI AJ AK AL AM@3 AN@3
>`.pickRestart({
  A: "~@3 e5 ~@3 e5, [e3,g#3,e4] [e3,b3,e4,f#4,b4], ~ e5@2 ~@2 e5@2 ~, ~ d#5 ~ d#5", B: "~@7 b2, [a2,f#3,e4,f#4]",
  C: "~@3 e5 ~@3 e5, [e2,e4,g#4] [e3,e4,b4], ~ e5@2 ~@2 e5@2 ~, ~ d#5 ~ d#5", D: "[a2,c#4,e4,f#4]",
  E: "[[e3,a3]@4 [e3,g#3]@4 ~@4 g#3@3 [b3,e4,g#4], e2, [b3,e4]@8 [b3,e4]@7 ~]/2", // A5 E E5
  F: "[a#3,c#4,e4,g4]@4 b3@3 b3, ~ [e3,g#3,e4,g#4]", G: "[g3,c#4,e4,g4,a#4]@4 b4@2 ~ g#2, ~ [g#3,e4,f#4], ~@3 [b4,e5]",
  H: "~ [a3,d#4,f#4,a4,c#5], a2, [a3,e4,a4,c#5] ~, ~@3 f#3@5", // D#m7b5 A
  I: "[g#2,f#3,d#4,f#4,b4]@8 ~@7 g#4, b3, ~ [c#3,g#3,e4], ~@7 f#4", J: "[f#2,f#3,a3,c#4,f#4,a4] [d#2,c#4,f#4,b4]",
  K: "[f#3,f#4,a4]@4 [f#3,c4,f#4,g#4]@4 ~@7 [b2,d#5], g#2 [g#3,e4], ~@3 e3, ~@7 c#5", // F#m G#7 B C#m
  L: "[[a2,e4,a4,c#5,e5]@3 [g#2,b3,d#4] [c#3,a3]@2 ~ [b3,d#4], ~@3 e4@4 ~, ~@32 c#4@24 f#3 ~@7]/2", // A G#m F#m B
  M: "~@3 e5 ~@3 e5, [b2,e4] [e3,e4,b4], ~ g#4@3 ~@4, ~ e5@2 ~@2 e5@2 ~, ~ d#5 ~ d#5", N: "~@7 b2, [c#4,e4,f#4]",
  O: "[e3,a3] [e3,g#3], e4", P: "~@3 a3 ~@3 [b3,e4,g#4], [e3,a3,b3,e4]@5 e3@3 [e3,g#3]@8, ~ b2 ~ b2, ~@3 [b3,e4]@4 ~",
  Q: "~@2 c#3@2 b3@2 ~ [g#4,b4], [a#3,c#4,e4,g4] [e3,e4], ~@4 g#4@3 ~, ~@3 b3", // G#m A#dim E
  R: "[g3,c#4,e4,g4,a#4,c#5]@4 [e4,b4]@2 ~ [g#2,g#3], ~ f#4, ~@4 g#3@3 ~, ~@3 [e4,g#4,b4,e5]", // Gdim E5 G# E
  S: "~@8 f#4@4 ~@3 a4, a2@7 g#4, [a3,e4,a4,c#5] [a3,d#4,a4,c#5], ~@3 f#3@3 f#3@2, ~@13 f#4@3", // A D#m7b5
  T: "[g#2,f#3] ~@5 g#2@2 g#3@4 g#3@3 c#3, [b3,f#4,b4]@17 ~@15, ~ d#4 [c#3,b3,e4]@2", // G#7 B5 C#m7
  U: "[c#4@4 c#4@3 e2 d#4@4 a4@4 [c4,f#4]@4 [c3,d#4,f#4]@4 g#3@4 ~@3 d#5, [f#2,f#3,a3,f#4,a4] [d#2,d#3,b4] [g#2,g#4] [c#3,b3,c#4,e4], ~@3 d#4@2 ~@2 g#3, ~@15 [b2,c#5]]/2", // Cdim F#m G#m G# C#m7 Bsus2
  V: "[~@6 [f#4,d#5]@2 ~@6 [b3,d#4]@2 ~@6 c#5@2 a4@3 ~@3 [f#4,d#5]@2, a2@2 ~ [b2,e4,c#5], [e4,a4,c#5,e5] [a3,a4,c#5,e5] [a3,c#4] ~, ~@4 f#5@4 ~@4 e4@12 ~@3 [a4,e5]@5]/2", // D#m B D#m C#m7 A A5
  W: "e5 ~@6 e5, [e2,g#4], e3@3 e5 [e4,f#4,b4]@4, ~ b2@7, ~ e5 d#5@3 e5 [e3,d#5]@2", // E Esus2 Emaj7
  X: "[b3,d4]@4 ~@2 d3 ~@7 [d2,a3,d4,f#4]@2, d2@3 d3, [g4,b4]@7 d3 [d4,f#4]@6 ~@2, d3@6 ~ a3@7 ~@2, ~ [b3,d4] a4@2", // Bm D G D Bm
  Y: "[c#3,a3,c#4,e4]@8 [c#3,a3,c#4,e4]@7 ~ [b2,b3,e4,g#4]@6 b3@2 [b2,b3,e4,g#4]@4 [c#2,c#3,e4,a4]@4, [c#2,a4]@4 b1@3 ~", // A E A F#m
  Z: "[d4,g4,b4]@8 [d4,g4,b4]@6 d4 ~ [d4,f#4,a4]@8 ~@4 a3@3 ~, [d2,d3]@15 ~ d3@15 ~, ~@4 a3@3 ~, ~@24 [d4,f#4,a4]@7 ~", // G D
  AA: "[a2,e3,a3,c#4,e4,a4] ~@3 [a2,a3,c#4,e4,a4]@8 ~@10 e3@2 [e2,b3,e4,g#4]@4 [f#2,f#3,f#4,a4]@4, ~@3 [e2,e3,b3,e4,g#4]@3 ~@2, ~@5 b2@2 ~", // A E F#m E
  AB: "[d4,g4]@4 ~@3 d3 [a3,d4,f#4]@4 [a3,d4,f#4]@3 f#3, [g2,b4] [f#2,f#3,a4], g3@3 g3 ~@4, ~ [b3,d4,g4] ~@2", // G5 D G F#m G
  AC: "[f#3,g#3,c4,d#4]@2 [f#3,g#3,c4,d#4]@2 [e2,e3,g#3,c#4,e4,g#4] [d#2,d#3,g#3,d#4,f#4] ~ [b1,b2], [f#2,g#4]@2 ~ [c#2,c#3,g#3,c#4,e4]", // G#7 C#m G#7 B F#sus2 C#m
  AD: "[a3,c#4]@4 [a3,c#4]@4 [a3,c#4]@4 ~@2 f#3!2, e4, [a1,a2]@16 b3 ~@7 [a3,c#4]@8, b3 ~@15 f#2@16", // A
  AE: "~@3 [a3,b3], [b2,e4]@11 f#4@5, a3 b5, b3@6 b3@3 f#5@7, ~@2 f#3@3 b4@3", AF: "~@3 b2 g#3@4, [b3,e4], a3 ~",
  AG: "[a4@4 ~@3 b4 e3@4 ~@4 g3@6 g3@2 b3@4 ~@3 b4, b3@13 g#3@2 e4@9 [e4,g#4]@6 [e4,g#4]@2, [e3,e4]@3 f#4 e4@3 b3 [c#3,a#3,c#4,g4]@4 ~@4, ~@8 a4@8 ~@8 e3@9 ~@15 e3@16, ~@10 g#4@6 g#4@17 ~@23 b3@8]/2", // E Gdim
  AH: "e4@8 ~@4 c#4@3 ~ e4@4 e4@2 ~@2 [g#2,b3,e4,b4,e5]@6 e3@2, [g3,g4,a#4,c#5]@2 [g#3,g#4,b4] ~, ~@8 e4@7 ~@17", // E Gdim G#m
  AI: "~@3 [b3,c#4,e4] ~@3 b3, [a2,a3,a4,c#5] [a2,d#4,f#4], e4@3 ~ b3@3 ~, ~ e3 a3!2, ~@5 f#3@3", // C#m7 A D#dim
  AJ: "[b3,d#4,f#4]@4 ~@3 b3 ~@7 c#3, [g#2,b4]@8 c#3@5 f#4 g#4@2, f#3@3 f#3 ~ g#3@3, ~@4 [b3,d#4,f#4]@4 [c#4,e4]@3 c#4@5, ~@3 e4", // B G#m B C#m
  AK: "~@4 [a3,c#4,f#4]@3 a#2 d#4@4 ~@2 d#3!2, [f#2,a4] [d#2,b4], [f#3,a3,c#4,f#4]@3 f#3@5 ~@4 [d#4,a4]@4, ~ c#3@3 d#3@3 ~", // F#m G#m F#m D#dim
  AL: "[g#2,f#3,c#4,f#4]@4 [c3,g#3,c4,d#4,f#4]@4 ~@7 d#5, g#4@6 ~ [b2,c#5], ~ c#3, ~@2 [c#4,e4] [c#4,e4,g#4], ~@5 g#3@3", // C#sus4 G#7 Bsus2 C#m
  AM: "[~@8 [b4,d#5,f#5]@6 d#5@2 ~@13 [g#2,b3,d#4]@5 [f#2,a3,c#4]@21 ~@18 [f#4,d#5]@6 e5@5 ~@9 e5@3, a2@35 ~@44 [e2,g#4]@17, [a3,e4,a4,c#5,e5]@16 [a4,e5]@19 ~@20 [e4,a4,c#5]@24 ~@10 d#5@7, ~@4 e3@12 a3@9 [a3,c#4]@9 ~@30 e5@15 ~@5 e5@9 ~@3, ~@10 e3@7 ~@31]/3", // B G#m F#m D#m E A A5 A
  AN: "[~@15 e5@4 ~@17 b3@11 [a3,d#4]@10 [e2,e3,b3,e4,g#4]@38 ~, ~@2 [g#2,b3,f#4,b4]@17 [a2,c#4,e4]@17 [b2,c#4]@22 ~@38, ~@6 e5@9 ~@17 a3@15 ~@49, ~@10 d#5@9 f#4@39 ~@38]/3", // Adim E G#m7 A Bsus2
})).s("gm_epiano1").gain(0.15)

// chords · epiano1 · soft notes
const epiano1_soft = note(`<
  ~@8 A B C D E F G H ~@2 I J K L M N O P Q ~@2 R S T U V W ~@2 X Y ~ Z AA AB AC@2 ~ AD ~@4 AE@3 AF AG ~
>`.pickRestart({
  A: "[e2,b2] g#2", B: "[a3,c#4]", C: "e3 [g#2,b3]", D: "a3@15 b2", E: "~@15 b2",
  F: "[e3,a3]@4 ~@3 g#3, ~ e3, ~@13 b2@3", G: "c#3 ~@31", H: "~@3 e3, ~ b3", I: "~@7 e2 f#3@8",
  J: "c4 ~ c#2@2, ~@2 e3 ~", K: "~@12 e3 ~@3", L: "[f#2,f#3]@2 b2 a3", M: "[e2,e3] [g#2,b3]", N: "[a2,a3]",
  O: "~@6 b2@9 b2, [e2,b3]", P: "e2", Q: "g3 ~", R: "~ f#3 ~@2", S: "~@15 d#3", T: "~ c4 ~@2, f#3 ~",
  U: "a3@4 e4@2 ~ [g#2,e3], ~@3 c#4", V: "[f#2,e3] a3", W: "~@4 b3@3 b3", X: "~@12 b3@3 ~@17", Y: "~@6 e3 ~",
  Z: "~@5 g#4@3", AA: "~@3 g#2 e3@4", AB: "f#4@11 ~@3 f#3@2", AC: "[~@8 f#3 ~@6 b2 ~@16, e2, e3 ~]/2",
  AD: "~@11 e4 ~@4", AE: "[~@16 e4@9 ~@9 f#3@21 ~@3 b2@21 e3@17, ~@16 c#5@19 ~@61, ~@25 e4@30 a3@24 ~@17]/3",
  AF: "~@2 e4@17 a3@13", AG: "~@15 [f#3,b3]@11 ~@6, ~@4 e4@21 ~@7",
})).s("gm_epiano1").gain(0.1)

// chords · string ensemble 2
const string_ensemble_2 = note("<~ A@7 ~@26 B C@2 D E F@2 G@2 ~@14>".pickRestart({
  A: "[~@6 b3@9 ~ c#4@10 f#4@9 ~@10 e4@14 c#4@5 d#4@19 ~@58 [f#3,b3]@9 ~@10 e5@64, ~@35 b4@43 ~@5 e3@36 ~@3 [a2,e4]@29 ~@73, ~@83 [a3,d4,f#4]@19 [g#3,c#4,f4]@20 [g3,c4]@19 d5@19 ~@64, ~@93 b4@19 e5@19 f#5@19 b5@74]/7", // B5 A5 D C# C5
  B: "~@2 g#4 a4, ~@12 g#3@19 ~", C: "[g4@4 f#4@4 c#3@4 [b2,g#4]@2 [b2,g#4] a4, d3@32 e4@23 ~ e4@8, ~@4 a4@8 b3@3 ~]/2",
  D: "[g4,b4] ~, d4@31 ~", // G
  E: "[a2,c#4,e4,a4] ~@3 [c#4,a4]@8 [e2,e3,b3,g#4]@11 ~ [e2,b3,g#4]@4 [f#2,f#4,a4]@4, ~@4 e4@19 ~ e4@8, ~@4 a2@5 ~@23", // A F#m E F#m
  F: "[g2@2 [g3,b3]@2 [a3,f#4,a4]@4 [c4,d#4,g#4]@4 [e3,e4] [d#3,d#4,f#4] [c#3,c#4,e4] [b2,b3,d#4,f#4], d4@15 ~@17, g4@17 ~@31 g#4@16, b4@7 ~ f#3@16 ~@8]/2", // G D G# E D#m C#m B
  G: "[a2@16 [f#2,b4]@16 ~@16 d#4@15 ~, e4@3 ~, [a3,c#4]@32 [b2,f#4]@31 ~]/2", // B5 A B5
})).s("gm_string_ensemble_2").gain(0.12)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@2 A@2 ~@30 B@3 C D ~@3 E ~@14>".pickRestart({
  A: "[~@13 [b2,f#3]@35 ~@16]/2", B: "[~@8 b3@6 ~@18 b4@16 a3@31 ~@13 c#3@4, ~ [e3,e4]@3 d4@4 ~@4, ~@10 b3@13 ~@25]/3",
  C: "~@28 d3@3 ~, d3@27 ~@5, ~ [f#4,a4]", D: "~@6 e3 ~", E: "b3@29 ~@3",
})).s("gm_string_ensemble_2").gain(0.08)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@7 A@2 B C@2 D@2 E@3 F@2 G@2 H I J K@2 L M@8 N O@2 P Q@2 R S T@2 U V W X@2 Y@5 Z@2
>`.pickRestart({
  A: "[e3@3 ~@8 b3 f#4@12 ~@8]/2", B: "~@14 e4@2 d#5@11 ~ c#5@4",
  C: "[~@12 f#4@5 ~@15 f#4@14 b3@2 g#4@12 f#4@4, b4@33 ~@31, ~@2 b3@5 ~@25, ~@8 e4@9 ~@7 e4@23 ~@17]/2",
  D: "[a3@16 g#3@13 ~@3 b3@29 ~@3, e4@63 ~, b3@15 ~ a3@7 ~@9]/2",
  E: "[[a#3,c#4]@8 [g#3,b3]@8 [a#3,c#4,g4]@8 ~@4 g#4 f#4 ~ b3 c#4@7 ~ d#4@5 ~ f#4@2, e4@29 ~ e4@18, ~@24 g#3@8 a3@11 ~@2 b3@2 ~]/3", // A#m G#m Gdim
  F: "[d#4@8 ~@6 g#3@2 f#3@8 ~ c#4@6 ~, [g#3,b3]@26 b3@23 ~@15, ~@16 e4@32 f#4@15 ~, ~@16 c#3@13 ~@3 a3@13 ~@19]/2", // G#m
  G: "[~@4 a4@4 ~@4 d#4@3 ~ c#3@12 [b2,d#4]@4 [a3,c#4]@24 f#4@4 e4@2 b3@2, [g#2,f#3,c4]@8 g#4@15 ~@5 b3@3 ~ a2@16 ~@16, ~ f#4@3 c3@4 e4@20 ~@4]/2", // B A G#7
  H: "a3@7 ~", I: "g#3", J: "~@8 g#4@7 f#4", K: "[~@15 e4, b3@15 ~, ~@32 e2@29 ~@3, ~@48 g#3@7 ~ e3@8, ~@52 b2@11 ~]/2",
  L: "~ [g3,a#3] ~ e4, ~@16 b3@15 ~", // Gm
  M: "[~@24 g#4@2 f#4@2 ~@2 b3@2 [a3,c#4]@16 ~@12 a2@3 ~@9 f#4@8 b3@10 ~@4 g#3@2 f#3@14 e3@2 ~@8 c#4@2 ~@6 [c4,g#4]@8 [c3,d#4,f#4]@8 [c#4,e4]@7 ~@3 c#4@2 [b2,b3,d#4]@4 [a2,e3,a3,c#4]@22 ~@2 [a2,a3,c#4]@4 [g#2,b3,d#4]@4 ~@16 b2@16 ~@4 b2@10 ~@14 e4@4, [a#3,c#4]@17 ~@7 e3@24 d#4@33 ~@9 d#4@6 ~@28 f#4@11 ~@9 c#3@12 ~@28 e3@41 ~@17 b2@8 b3@5 ~, ~@8 e4@19 ~ e4@20 [a3,b3]@16 g#3@23 ~@5 b3@4 [a3,c#4]@22 ~@4 a3@6 g#3@22 ~@4 g#3@4 ~@34 a3@29 ~@3 g#3@21 ~ f#3@6 ~@4, ~@64 b3@15 ~ e4@31 ~ a4@12 ~@28 e4@31 ~@9 [c#4,e4]@32 ~@24 g#3@5 ~@3]/8", // A Fm Cdim C#m B A G#m A#m …
  N: "b3@4 ~@3 f#4, d3, a3 ~@15",
  O: "[b3@15 ~@9 [g#3,e4,g#4]@4 [c#3,f#4]@4 [g4,b4]@16 a3@8 ~@6 f#3@2, e4@22 ~@6 a4@3 ~ d4@23 ~@3 d4@5 ~, ~@16 b3@31 ~ a4@16, ~@16 b2@13 ~@3 d3@28 a3@4, ~@24 f#4@3 ~ f#4@4]/2", // C#m F#5 G
  P: "[e3,c#4,e4] ~@3 [e3,c#4]@8 [e3,b3,g#4]@11 ~ [e2,g#3]@4 [f#2,a3]@4, ~@4 e4@17 ~@11, ~@2 a3@3 ~@7 [e3,e4]@4", // C#m E F#m E
  Q: "[[g3,b3]@8 ~@6 d4@3 ~@11 f#4@2 a4@2 ~@10 c4@2 ~@2 g#4@2 [e3,c#4]@4 [d#3,d#4]@4 [c#3,c#4,e4]@4 [b2,b3,d#4]@4, g2@15 ~@5 f#2@12 ~@32, d4@10 g3@5 ~@7 f#3@24 ~@18, d3@6 ~@2 d3@7 ~@11 d4@4 ~@2 [c4,d#4]@11 ~ d#4@4 e4@3 ~ f#4@2 ~@10, ~@12 b3@4 ~@8 a3@5 ~@11 g#3@10 ~@14]/2", // G C#m D# C#m B Cm
  R: "[a2,a3]@13 ~ b3@2 [a3,e4]@16, c#4", S: "b2@7 a3",
  T: "[[a3,b3]@6 ~@10 g#3@14 ~@2 a3@14 ~@2 g#3@11 ~ g#3@2 e4@2, e4@15 ~, e2@31 ~ [e2,b3]@30 ~@2, e3@7 ~@25]/2", // Asus2 E5
  U: "[g2,a#3]@15 ~ [b3,e4]@16, ~@16 g#2@13 ~@3, ~@16 g#3@7 ~@9", V: "[g3,a#3,c#4]@16 e4@11 ~ e4@4, ~@16 g#3@15 ~",
  W: "a3@4 ~@3 e4 [b3,d#4]@8, c#4@12 a3@15 ~@5, ~@8 a2@21 ~@3, ~@5 e3@4 ~@7", // B
  X: "[~@4 b4@4 ~@5 g#3 ~ g#3 ~@7 e3 [d#3,c#4,f#4]@7 a3, b3@19 ~@9 b3@4 [f#3,a3,c#4]@17 ~@15, f#4@16 e4@33 ~@15, g#2@3 ~ c#3@4 ~@8]/2", // D#m7 F#m
  Y: "[c#4@8 [c3,c4,d#4]@8 [c#3,c#4]@12 [b2,d#4]@4 [a2,c#4]@24 ~ [a3,c#4]@4 [g#3,b3,d#4]@5 [a3,c#4]@19 ~@2 c#4@23 ~ e3@9 ~@7 b3@2 ~ f#4@15 e4@2 ~@13, g#3@28 b3@3 ~ a3@9 ~@25 f#3@9 ~@85, g#4@16 e4@39 ~@2 e4@71 ~@32]/5", // Cm C# B A G#m A
  Z: "[~@4 g#4@16 ~@5 b4@37 ~@2, ~@20 f#4@43 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.15)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@10 A ~ B C D E F G@2 H ~@3 I J@2 K L ~ M N ~@2 O P Q@2 ~@4 R S T U@2 V ~@5 W@2 X Y@2
>`.pickRestart({
  A: "~@7 g#4, ~ g#3, ~@5 b3@3", B: "e3@29 ~@3", C: "~@16 g#3@13 ~@3, e3", D: "g3 ~", E: "~@4 b3@3 ~",
  F: "~@2 b3 a3, ~@16 a2@15 ~", G: "[~@30 c#3@4 ~@14 d#3@15 ~]/2", H: "~@16 g#3@15 ~", I: "~@7 b3 ~@8",
  J: "[~@8 f#3@8 ~@12 b2@3 ~@13 e3@5 ~@9 g#3@2 ~@4, ~@16 g#3@20 ~@4 a3@11 ~@13, ~@24 e3@10 ~@2 b2@15 ~@13]/2",
  K: "~@16 e3@15 ~", L: "g3@15 ~ g#3@16, ~@4 b3@3 ~", M: "~ c#3", N: "~@15 a4, ~ d#3, ~@7 c#4", O: "f#2@13 ~@19",
  P: "~@5 e3@3, [e2,e4]@27 ~@5", Q: "[~@16 f#3@6 ~@2 f#3@8 c#3@15 ~ g#3@7 ~@9, ~@2 d4@31 ~@31, ~@16 a3@31 ~@17]/2",
  R: "~@16 f#2@15 ~", S: "b3", T: "~@8 e3@7 ~", U: "[e3@14 ~@2 e3@37 ~@11]/2", V: "~@7 e3, ~ b3",
  W: "[~@23 [b2,f#3]@23 ~ b3@14 ~@3]/2", X: "~@19 b3@12 ~", Y: "[~@25 g#4@37 ~@2]/2",
})).s("gm_acoustic_guitar_steel").gain(0.05)

// drums · hihat
const hihat = s("hh").struct("<[~@3 x ~@3 x ~@3 x ~@3 x] ~@56>").gain(0.3)

stack(
  bass, bass_soft, epiano1, epiano1_soft, string_ensemble_2, string_ensemble_2_soft, acoustic_guitar_steel,
  acoustic_guitar_steel_2, hihat
)

More by 98 Degrees