Strudelify

Free as a Bird

Supertramp

KeyA majorTempo72 bpm
0:00/0:00
// Free as a Bird — Supertramp
// 72 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 74 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 27.
setcpm(72/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(`<
  ~ A B C D E F G H I J K D L M N O P Q R D S T U V W X Y Z AA AB AC AD AE AF AG AH AI M U V AJ AF AK D AL T AM AN AA AB
  AC AO AP AQ AR AS AT AU AV AF AW AH AG T AJ AX AY AX AZ AX BA@3
>`.pickRestart({
  A: "a1@6 ~@2 f#1@5 ~@3", B: "f1@7 ~ e1@3 ~ e1@4", C: "a1@4 ~@2 c#2 ~ f#2@6 ~@2", D: "d2@6 ~@2 e2@3 ~ e2@3 ~",
  E: "a1@5 ~ c#2 ~ f#2@4 e2@4", F: "d2@7 ~ g2@4 g1@3 ~", G: "c2@5 ~ b1 ~ a1@5 ~@3", H: "e2@2 e2@4 e2@2 e1@7 ~",
  I: "a1@6 e1 ~ f#1@5 ~@3", J: "f1@7 ~ e1@4 ~@2 e1 ~", K: "a1@4 c#2 ~ e2 ~ f#2@6 e2 ~",
  L: "a1@5 ~ c#2 ~ f#2@4 ~@2 e2 ~", M: "d2@6 d2 ~ g2@4 g1@3 ~", N: "c2@3 ~ c2@2 b1@2 a1@5 ~ a1 ~",
  O: "e2@6 e2 ~ e1@4 e1@4", P: "a1@6 e1 ~ f#1@5 ~ f#1 ~", Q: "f1@7 ~ e1@4 e1@4", R: "a1@4 ~ c#2 e2 ~ f#2@6 e2 ~",
  S: "a1@5 ~ a1 ~ f#2@4 ~@2 e2 ~", T: "d2@6 d2 ~ g2@4 g2@3 ~", U: "c2@4 ~@2 b1 ~ a1@5 ~ a1 ~", V: "e2!4 e1@2 e1@2",
  W: "f1 ~ f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2", X: "f#1@2 f#1 ~ f#1@2 f#1@2 f#1 ~ f#1@2 f#1@2 f#1@2",
  Y: "g1 ~ g1@2 g1 ~ g1 ~ g1@2 g1@2 g1@2 g1@2", Z: "a1 ~ a1 ~ a1@2 a1 ~ g1 ~ g1@2 g1 ~ g1 ~",
  AA: "f1@2 f1 ~ f1 ~ f1 ~ f1 ~ f1@2 f1 ~ f1@2", AB: "f#1@2 f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2",
  AC: "g1 ~ g1@2 g1@2 g1 ~ g1@2 g1 ~ g1 ~ g1@2", AD: "e2 ~ e2 ~ e2 ~ e2 ~ e1@2 e1 ~ e1 ~ e1 ~",
  AE: "a1@5 ~ a1 ~ f#1@5 ~@3", AF: "f1@5 ~ f1 ~ e1@4 e1@4", AG: "a1 c#2 f#2 e2", AH: "d2@5 ~ d2@2 e2@2 e2@2 e2@3 ~",
  AI: "a1@5 ~ c#2 ~ f#2@5 ~ e2 ~", AJ: "a1@6 a1 ~ f#1@5 ~ f#1 ~", AK: "a1@4 ~ c#2 e2@2 f#2@6 e2 ~",
  AL: "a1@6 ~@2 f#2@4 ~@2 e2 ~", AM: "c2@4 ~@2 b1 ~ a1@6 ~@2", AN: "e1@6 e1 ~ g1@4 g1@3 ~",
  AO: "e1 ~ e1 ~ e2 ~ e2 ~ e1@2 e1 ~ e1 ~ e1 ~", AP: "c2@4 e1@2 g1@2 a1@5 ~ a1@2", AQ: "g#1@5 ~ g#1@2 g1@4 g1@4",
  AR: "c2@4 e1@2 g1@2 a1@5 ~ g1@2", AS: "f1@5 ~ f1@2 g1@4 g1@4", AT: "c2@4 e1@2 g1@2 a1@5 ~ g1 ~",
  AU: "f1@5 ~ f1 ~ g1@4 g1@4", AV: "a1@2 a1@5 ~ f#1@5 ~ f#1 ~", AW: "a1@2 c#2 e2 f#2@2 f#2 e2",
  AX: "d1@5 ~ d1 ~ g1@4 g1@4", AY: "a1@6 a1 ~ f#1@5 ~ e1 ~", AZ: "a1@4 a1@2 g#1 ~ f#1@5 ~ e1 ~", BA: "[a1@7 ~]/3",
})).s("gm_fretless_bass").gain(0.47)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~ A B C D C E F G A B C D C E F G A B C D C E F G H I J K H I J G A B C D C E F G A B C D C E F L H I J M N O P Q P Q
  A B C D C R C R C R S T U@3
>`.pickRestart({
  A: "[e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!2 [f#3,a3,c#4,e4]@2 [f#3,a3,c#4,e4]@2 [f#3,a3,c#4,e4]@2 [f#3,a3,c#4,e4]!2", // A F#m7
  B: "[f3,a3,c4,e4]@2 [f3,a3,c4,e4]@2 [f3,a3,c4,e4]@2 [f3,a3,c4,e4]!2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2", // Fmaj7 E
  C: "[e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]!2", // A F#m
  D: "[f3,a3,d4,f4]@2 [f3,a3,d4,f4]@2 [f3,a3,d4,f4]@2 [f3,a3,d4,f4]!2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2", // Dm E
  E: "[f3,a3,d4,f4]@2 [f3,a3,d4,f4]@2 [f3,a3,d4,f4]@2 [f3,a3,d4,f4]!2 [d3,g3,b3,d4]@2 [d3,g3,b3,d4]@2 [d3,g3,b3,d4]@2 [d3,g3,b3,d4]!2", // Dm G
  F: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]!2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]!2", // C Am
  G: "[e3,a3,b3,e4]@2 [e3,a3,b3,e4]@2 [e3,a3,b3,e4]@2 [e3,a3,b3,e4]!2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2", // Esus4 E
  H: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2", // F
  I: "[f#3,a3,c4,f#4]@2 [f#3,a3,c4,f#4]@2 [f#3,a3,c4,f#4]@2 [f#3,a3,c4,f#4]!2 [f#3,a3,c4,f#4]@2 [f#3,a3,c4,f#4]@2 [f#3,a3,c4,f#4]@2 [f#3,a3,c4,f#4]!2", // F#dim
  J: "[g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!2", // G
  K: "[e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!2 [e3,g3,b3,e4]@2 [e3,g3,b3,e4]@2 [e3,g3,b3,e4]@2 [e3,g3,b3,e4]!2", // A Em
  L: "[e3,g#3,c4,e4]@2 [e3,g#3,c4,e4]@2 [e3,g#3,c4,e4]@2 [e3,g#3,c4,e4]@2 [d3,g3,b3,d4]@2 [d3,g3,b3,d4]@2 [d3,g3,b3,d4]@2 [d3,g3,b3,d4]!2", // Eaug G
  M: "[e3,a3,b3,e4]@2 [e3,a3,b3,e4]@2 [e3,a3,b3,e4]@2 [e3,a3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2", // Esus4 E
  N: "[g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2 [g3,c4,e4,g4]!2 [a3,c4,e4,g4]@2 [a3,c4,e4,g4]@2 [a3,c4,e4,g4]@2 [a3,c4,e4,g4]!2", // C Am7
  O: "[g#3,c4,d#4,g4]@2 [g#3,c4,d#4,g4]@2 [g#3,c4,d#4,g4]@2 [g#3,c4,d#4,g4]!2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!2", // G#maj7 G
  P: "[g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2 [g3,c4,e4,g4]!2 [a3,c4,e4,a4]@2 [a3,c4,e4,a4]@2 [a3,c4,e4,a4]@2 [a3,c4,e4,a4]!2", // C Am
  Q: "[g#3,c4,f4,g#4]@2 [g#3,c4,f4,g#4]@2 [g#3,c4,f4,g#4]@2 [g#3,c4,f4,g#4]!2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!2", // Fm G
  R: "[f3,a3,d4,f4]@2 [f3,a3,d4,f4]@2 [f3,a3,d4,f4]@2 [f3,a3,d4,f4]!2 [g3,b3,d4,f4]@2 [g3,b3,d4,f4]@2 [g3,b3,d4,f4]@2 [g3,b3,d4,f4]!2", // Dm G7
  S: "[e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!2 [f#3,a3,c#4,f#4]!2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]!2", // A F#m
  T: "[f3,a3,d4,f4]@2 [f3,a3,d4,f4]@2 [f3,a3,d4,f4]@2 [f3,a3,d4,f4]!2 [g3,b3,d4,g4]!2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!2", // Dm G
  U: "[[a3,c#4,e4,a4]@7 ~]/3", // A
})).s("gm_acoustic_guitar_nylon").gain(0.22).pan(0.6)

// chords · synth strings 1
const synth_strings_1 = note("<A@7 B@16 C@5 D@7 E@8 F@5 G@7 H@8 I@6 J@5>".pickRestart({
  A: "[~@15 [a3,c#4,e4]@8 [f#3,a3,c#4,e4]@8 [f3,a3,c4,e4]@8 [e3,g#3,b3,d4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [e3,g#3,b3,e4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [d3,g3,b3,d4]@8 [g3,c4,e4]]/7", // A F#m7 Fmaj7 E7 A F#m Dm E …
  B: "[~@7 [a3,c4,e4]@8 a3@8 g#3@8 [a3,c#4,e4]@8 [f#3,a3,c#4,e4]@8 [f3,a3,c4,e4]@8 [e3,g#3,b3,d4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [e3,g#3,b3,e4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [d3,g3,b3,d4]@8 [g3,c4,e4], ~@15 [e3,b3,e4]@16 ~@97]/8", // Am A F#m7 Fmaj7 E7 A F#m Dm …
  C: "[~@7 [a3,c4,e4]@8 a3@8 g#3@8 [f3,a3,c4]@16 [f#3,a3,c4]@16 [g3,b3,d4]@16 [a3,c#4,e4], ~@15 [e3,b3,e4]@16 ~@49]/5", // Am F F#dim G A E5
  D: "[~@7 [g3,b3]@8 [f3,a3,c4]@16 [f#3,a3,c4]@16 [g3,b3,d4]@16 a3@8 g#3@8 [a3,c#4,e4]@8 [f#3,a3,c#4,e4]@8 [f3,a3,c4,e4]@8 [e3,g#3,b3,d4]@8 [a3,c#4,e4], ~@63 [e3,b3,e4]@16 ~@33]/7", // G F F#dim G A F#m7 Fmaj7 E7 …
  E: "[~@7 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [e3,g#3,b3,e4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [d3,g3,b3,d4]@8 [g3,c4,e4]@8 [a3,c4,e4]@8 a3@8 g#3@8 [a3,c#4,e4]@8 [f#3,a3,c#4,e4]@8 [f3,a3,c4,e4]@8 [e3,g#3,b3,d4]@8 [a3,c#4,e4], ~@79 [e3,b3,e4]@16 ~@33]/8", // F#m Dm E A F#m Dm G C …
  F: "[~@7 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [e3,g#3,b3,e4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [d3,g3,b3,d4]@8 [g3,c4,e4]@8 [a3,c4,e4]@8 [g#3,c4,e4]]/5", // F#m Dm E A F#m Dm G C …
  G: "[~@7 [g3,b3,d4]@8 [f3,a3,c4]@16 [f#3,a3,c4]@16 [g3,b3,d4]@16 a3@8 g#3@8 [c4,e4,g4]@8 [a3,c4,e4,g4]@8 [g#3,c4,d#4,g4]@8 [g3,b3,d4,f4]@8 [c4,e4,g4], ~@63 [e3,b3,e4]@16 ~@33]/7", // G F F#dim G C Am7 G#maj7 G7 …
  H: "[~@7 [a3,c4,e4,a4]@8 [g#3,c4,f4,g#4]@8 [g3,b3,d4,g4]@8 [c4,e4,g4]@8 [a3,c4,e4,a4]@8 [g#3,c4,f4,g#4]@8 [g3,b3,d4,g4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,e4]@8 [f3,a3,c4,e4]@8 [e3,g#3,b3,d4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [e3,g#3,b3,e4]@8 [a3,c#4,e4]]/8", // Am Fm G C Am Fm G A …
  I: "[~@7 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [d3,g3,b3,d4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [d3,g3,b3,d4]@8 [a3,c#4,e4]@8 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [d3,g3,b3,d4]@8 [a3,c#4,e4]]/6", // F#m Dm G A F#m Dm G A …
  J: "[~@7 [f#3,a3,c#4,f#4]@8 [f3,a3,d4,f4]@8 [d3,g3,b3,d4]@8 [e3,a3,c#4,e4]@42 ~@7]/5", // F#m Dm G A
})).s("gm_synth_strings_1").gain(0.15)

// chords · drawbar organ
const drawbar_organ = note(`<
  ~ A B A C A D E F A B A C A D E F A B A C A D E F G H I J G H I K A B A C A D E F A B A C A D E L G H I K M N M O M O
  A B A C A D A D A D A D P@3
>`.pickRestart({
  A: "[e4,a4,c#5] [f#4,a4,c#5]", B: "[f4,a4,c5] [e4,g#4,b4]", C: "[d4,f4,a4] [e4,g#4,b4]", D: "[d4,f4,a4] [d4,g4,b4]",
  E: "[e4,g4,c5] [e4,a4,c5]", F: "[e4,a4,b4] [e4,g#4,b4]", G: "[f4,a4,c5]", H: "[f#4,a4,c5]", I: "[g4,b4,d5]",
  J: "[a4,c#5] [g4,b4], e5", K: "a4 g#4, [b4,e5]", L: "[e4,g#4,c5] [d4,g4,b4]", M: "[g4,c5,e5] [a4,c5,e5]",
  N: "[g#4,c5,d#5] [g4,b4,d5]", O: "[f4,g#4,c5] [g4,b4,d5]", P: "[[c#4,e4,a4]@7 ~]/3",
})).s("gm_drawbar_organ").gain(0.07).pan(0.4)

// other · overdriven guitar
const overdriven_guitar = note("<~ A@4 B@4 ~@44 C@4 D@2 E ~@5 F G H I J K ~@3>".pickRestart({
  A: "[e4@22 ~@2 e4@4 c#4@2 a3@22 ~@2 c4 a3 d4@4 ~@2 c4@2]/4",
  B: "[a3@18 ~@3 e4 g4 e4 f4@5 g4@2 e4@27 ~@6, ~@24 e4 ~@39]/4",
  C: "[e5@21 ~@3 f5@2 g5@2 ~ e5@22 ~ c5 d#5 d5@6 ~ g4@2 ~]/4", D: "[e5@5 g5 a5@2 e5@10 ~@2 c5 d#5@2 d5@5 g4@3 ~]/2",
  E: "a4 c#5@13 ~@2", F: "e4@11 ~ c#4@3 ~", G: "a3@5 ~@11", H: "~ e4@2 f#4", I: "c4@7 ~@9", J: "~ e4@2 c#4",
  K: "a3@7 ~@9",
})).s("gm_overdriven_guitar").gain(0.32).pan(0.4)

// chords · piano
const piano = note(`<
  ~ A B C D C E F G H B I J C K F L H B I J C K F L M N O P M Q O R A B I J C K S T U B V J A K W X M Q O R Y Z AA AB AC
  AD AE AF AG AH AI AJ AK AL AM AL AN AL AO@3
>`.pickRestart({
  A: "~ [a3,c#4,e4] ~ [f#3,a3,c#4], a2@7 ~ f#2@7 ~", B: "~@4 [f3,a3,c4]@4 e2@3 ~ [e2,e3,g#3,b3]@4, f2@7 ~@9",
  C: "a2@2 ~ a2 f#2@2 ~ f#2, ~ [a3,c#4,e4] ~ [f#3,a3,c#4]", D: "d2@2 ~ d2 e2@2 [e2,e3,g#3,b3]@2, ~ [f3,a3,d4] ~@2",
  E: "d2@2 ~ d2 g2@2 [g2,g3,b3,d4]@2, ~ [f3,a3,d4] ~@2", F: "~@3 b2 ~@3 a2, c3@3 ~ a2@3 ~, ~ [g3,c4,e4] ~ [a3,c4,e4]",
  G: "e3@4 [e3,a3,b3,e4]@4 ~@4 [g#3,b3,e4]@3 ~, ~@8 e2@7 ~", // Esus4 E
  H: "a2@4 ~@2 e2 ~@5 [f#3,a3,c#4]@4, ~@4 [a3,c#4,e4]@4 f#2@7 ~", I: "~ [a3,c#4,e4] ~ [f#3,a3,c#4], a2@7 ~ f#2@6 ~@2",
  J: "~ [d3,f3,a3,d4] e2 [e2,e3,g#3,b3], d2@7 ~@9", K: "~ [f3,a3,d4] g2 [g2,g3,b3,d4], d2@7 ~@9",
  L: "e3 [e3,a3,b3,e4] e2 [e2,g#3,b3,e4]", M: "a3@3 ~ a3@4 b3@4 c4@4, [f1,f2]", N: "a3!2 b3 c4, [f#1,f#2]",
  O: "b3@3 ~ b3@4 c4@4 d4@4, [g1,g2]", P: "a3@4 a3@4 b3@4 a3@3 ~, [a1,a2] [g1,g2]",
  Q: "a3@3 ~ a3@4 b3@4 c4@4, [f#1,f#2]", R: "[a3,b3,e4] [e3,a3,b3,e4] [e1,e2,g#3,b3,e4] [e3,g#3,b3,e4], [e1,e2] ~",
  S: "~@3 b2 ~@2 [a3,c4,e4]@2, c3@3 ~ a2@4, ~ [g3,c4,e4] ~@2", T: "e3@2 [e3,a3,b3,e4]@2 e2@2 [e2,g#3,b3,e4] e2",
  U: "a2@4 ~@2 a2 ~@5 [f#3,a3,c#4]@4, ~@4 [a3,c#4,e4]@4 f#2@7 ~", // F#m A
  V: "~@6 a2 ~@5 [f#3,a3,c#4]@4, a2@3 ~ f#2@3 ~, ~ [a3,c#4,e4] ~@2", // F#m A
  W: "[g3,c4,e4]@2 ~ b2 [a3,c4,e4]@2 ~ a2, c3@3 ~ a2@3 ~, ~ [g3,c4,e4] ~ [a3,c4,e4]", // C Am C Am
  X: "[e3,g#3,c4,e4]!2 [g2,g3,b3,d4]!2", Y: "[c1,c2]@4 ~@2 [c1,c2] ~@5 [a3,c4,e4]@4, ~@4 [c4,e4,g4]@4 [a1,a2]@7 ~",
  Z: "~@4 [g#3,c4,d#4]@4 [g1,g2]@3 ~ [g1,g2,g3,b3,d4]@4, [g#1,g#2]@7 ~@9", // G# G G#
  AA: "~ [c4,e4,g4] ~ [a3,c4,e4], [c1,c2]@4 [a1,a2]@3 ~", // C Am C A
  AB: "~ [f3,g#3,c4,f4] [g1,g2] [g1,g2,g3,b3,d4], [f1,f2]@7 ~@9", // Fm G F
  AC: "~ [c4,e4,g4] ~ [a3,c4,e4], [c1,c2]@7 ~ [a1,a2]@7 ~", AD: "~ [g#3,c4,f4] [g1,g2] [g1,g2,g3,b3,d4], [f1,f2]@7 ~@9",
  AE: "~@4 [a3,c#4,e4]@4 [f#1,f#2]@4 ~@2 [f#1,f#2] ~, [a1,a2]@7 ~@5 [f#3,a3,c#4]@4", // A F# A F#m
  AF: "~@4 [f3,a3,c4]@4 [e1,e2]@3 ~ [e1,e2,e3,g#3,b3]@4, [f1,f2]@7 ~@9", // F E F
  AG: "~ [a3,c#4,e4] ~ [f#3,a3,c#4], [a1,a2]@7 ~ [f#1,f#2]@6 ~@2", // A F#m A F#
  AH: "~ [d3,f3,a3,d4] [e1,e2] [e1,e2,e3,g#3,b3], [d1,d2]@7 ~@9", // Dm E D
  AI: "a2 ~ [a3,c#4,e4] a3 ~@2 [f#3,a3,c#4]@2, a1@7 ~ [f#1,f#2]@7 ~, ~ a2@2 ~@5", // A F#m F#
  AJ: "~ [f3,a3,d4] [g1,g2] [g1,g2,g3,b3,d4], [d1,d2]@7 ~@9", // Dm G D
  AK: "[a1,a2]@4 ~@2 [a1,a2] ~ [f#1,f#2]@4 ~@2 [f#1,f#2] ~, ~ [a3,c#4,e4] ~ [f#3,a3,c#4]", // A F# A F#m
  AL: "[d1,d2]@4 ~@2 [d1,d2] ~ [g1,g2]@4 [g1,g2,g3,b3,d4]@4, ~ [f3,a3,d4] ~@2", // D G Dm
  AM: "[a1,a2]@4 ~@2 [a1,a2] ~ [f#1,f#2]@4 ~@2 [e1,e2] ~, ~ [a3,c#4,e4] ~ [f#3,a3,c#4]", // A F# E A F#m
  AN: "[a1,a2]@2 [a1,a2,a3,c#4,e4]@2 [f#1,f#2]@2 ~ [e1,e2], ~@3 [f#3,a3,c#4]", AO: "[[a1,a2,a3,c#4,e4]@7 ~]/3",
})).s("gm_piano").gain(0.54).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@8 A ~@7 A ~@7 A ~@10 B ~ B ~@4 C D ~ E ~@28>".pickRestart({
  A: "~ d4 ~@2", B: "~@3 e4", C: "~@6 d5 ~@5 d5@2 ~@2", D: "~@9 [e4,a4,c#5] e5@2 e4@4", E: "~@2 b4 ~@5",
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.7)

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

// drums · snare
const snare = s("sd").struct("<A B@23 C B@15 C B@21 D B@8 ~@3>".pickRestart({
  A: "~@6 x!2", B: "~ x ~ x", C: "~@4 x ~@2 x!2 ~@3 x ~@3", D: "~@4 x ~@7 x!2 ~@2",
})).gain(0.5)

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

// drums · hihat
const hihat = s("hh").struct("<~ A@62 B A@3 B A B A C ~@2>".pickRestart({
  A: "x!8", B: "~ x!7", C: "x",
})).gain(0.5)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ [~@7 x ~@7 x]!70 ~@3>").gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~@7 B ~@7 C ~@7 D ~@7 E ~@7 F ~@7 G ~@3 H ~@3 F ~@5 C ~@3 I ~ E ~ E ~@3
>`.pickRestart({
  A: "~@6 x!2", B: "~@5 x!2 ~", C: "~@7 x", D: "~@3 x!4 ~", E: "~@4 x!4", F: "~@4 x!3 ~", G: "~@9 x!7",
  H: "~@2 x ~ x ~ x ~ x!6 ~@2", I: "~@12 x!2 ~@2",
})).gain(0.35)

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

// drums · tambourine
const tambourine = s("tb").struct("<~ A@3 B A@7 B A@7 B A@7 B A@7 B A@7 B A@11 B A@5 B A@8 C ~@2>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", C: "x",
})).gain(0.35)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~ A@3 B A@7 B A@7 B A@7 B A@7 B A@7 B A@11 B A@5 B A@8 ~@3>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@3 x ~ x ~ x ~ x",
})).gain(0.15)

// drums · shaker
const shaker = s("sh").struct("<~@49 [~@8 x!5 ~ x ~] [x ~ x ~ x!12] [x!16] [x!15 ~] ~@21>").gain(0.2)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~@49 [~@13 x ~ x] [~ x ~ x ~@12] ~ [~@15 x] ~@21>").gain(0.1)

stack(
  bass, acoustic_guitar_nylon, synth_strings_1, drawbar_organ, overdriven_guitar, piano, electric_guitar_clean, kick,
  snare, low_tom, hihat, hihat_soft, mid_tom, crash, tambourine, tambourine_soft, shaker, shaker_soft
)

More by Supertramp