Strudelify
I'm Alright cover art

Caddyshack

I'm Alright

Kenny Loggins

KeyD majorTempo131 bpm
0:00/0:00
// I'm Alright — Kenny Loggins
// 131 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(131/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@2 C@2 D@3 A E@2 F@2 G@2 H I J K L@2 M N O@2 P Q R S T U@2 V W X Y Z AA AB@2 A B@2 C@2 D@3 A E@2 F@2 G@2 H I J K
  L@2 M N O@2 P Q R AC AD AE@2 AF@2 AE@2 AG AH V AI AJ AK Z AL AM@2 AN AO AP@2 C@2 AQ@3 A E@2 F@2 G@2 AR A AS@2 AT@2
  AU@3 AV@6 AW@2 AV@6 AW@2 AV@6 AX@2
>`.pickRestart({
  A: "d2@3 d2 a1@2 c2@2, [e4,a4,c5] [e4,a4,d5]", // Am Dsus2
  B: "[[a4,d5,f#5]@2 ~ d2 a1@2 ~@3 c5@2 [d2,a4] d5 c5 [c2,e4,a4,d5]@2, d2@3 ~@3 c2@2 d2@3 ~ [a1,f#4,a4]@2 ~@2, ~@7 [e4,a4]@4 ~@5, ~@7 c5@2 ~@7]/2", // D D5 Am D A5
  C: "[[f#4,a4,d5]@2 ~ d2 a1@2 ~@3 c5!2 [d2,c5] d5 ~@2 d5, d2@3 ~@3 c2@2 d2@3 ~ a1@2 c2@2, ~@7 [e4,a4]@5 [e4,a4]@4, ~@7 c5@2 ~@4 d5@2 ~]/2", // D D7 A5
  D: "[[a4,d5,f#5]@2 ~ d2 a1@2 ~@3 a4 ~ d2 [a1,e4,a4,d5]@2 d5 ~ d2@3 b2 c3 f#2 g2 a2, d2@3 ~@3 c2@2 d2@3 ~@3 c2@2 ~@8, ~@7 [e4,a4,c5]@2 ~ [e4,a4,c5]@2 ~@3 [f#4,a4,d5]@3 ~@6]/3", // D Asus4 Am D
  E: "[[a4,d5,f#5]@2 ~ d2 a1@2 ~@3 c5!2 [d2,a4] d5 c5 [c2,e4,a4,d5]@2, d2@3 ~@3 c2@2 d2@3 ~ [a1,e4,a4]@2 ~@2, ~@7 [e4,a4]@4 ~@5, ~@7 c5@2 ~@7]/2", // D D5 Am A5
  F: "[[d4,f#4,b4]@2 ~ d2 a1@2 ~@3 c5@2 [d2,a4] d5 ~@2 d5, d2@3 ~@3 c2@2 d2@3 ~ a1@2 c2@2, ~@7 [e4,a4]@4 ~ [e4,a4]@4, ~@7 c5@2 ~@4 d5@2 ~]/2", // Bm D5 A5
  G: "[[a4,d5,f#5]@2 ~ d2 a1@2 c5 ~@2 a4 ~ d2 [a1,e4,a4,d5]@2 [c2,e4,a4,d5]@2, d2@3 ~@3 c2@2 d2@3 ~@5, ~@7 [e4,a4,c5]@2 ~ [e4,a4,c5]@2 ~@4]/2", // D Asus4 Am
  H: "[d2,f#4,a4,d5]@2 d2@2 a5@2 g5 f5", I: "[d5,f5,a5]@2 ~ d2 a1@2 c2@2, d2@3 ~@5",
  J: "d2@4 [d5,f5,a5] g5 [a4,d5,g5]@2, ~ a1", K: "[b4,d5,g5]@2 d5 g1 d2@2 f2@2, g1@3 [g4,b4,d5]@5",
  L: "[~@3 d5 [b4,d5,a5] g5 f5 ~@4 d2 a1@2 c2@2, g2@4 g1@4 d2@3 ~@5, ~@7 [d5,f5,a5]@3 [f4,a4,d5]@2 ~@4]/2", // Bm7 Dm
  M: "~@3 d5 [a4,d5,g5] g5 f5 e5, d2 a1", N: "g1@3 g1 d2@2 f2@2, [g4,b4,d5] ~",
  O: "[g2@4 [b4,d5,a5] g5@2 ~ d2@3 d2 a1@2 c2@2, ~ g1 ~@2, ~@7 [d5,f5,a5]@3 ~@6]/2", // Bm7 Dm
  P: "~@3 d5 [d5,f5,a5] a5 g5 f5, g3 a1", Q: "[b4,d5,g5]@2 d5 g1 d2@2 f2@2, g1@3 [b4,d5,f5]@5",
  R: "~ a5!2 ~@3 a5 g5, g2 g1, ~@3 [d5,f5,c6]@3 ~@2", S: "g5@2 ~ d2 a1@2 c2@2, d2@3 ~@5, ~ [f4,a4,d5]@3",
  T: "~@2 d5 ~@2 g5!3, d2 a1, ~@3 [d5,f5,a5]@2 ~@3", U: "[g1@3 g1 d2@2 f2@2 g2@4 ~ g1!3, [g4,b4,d5]@3 ~]/2",
  V: "a1@2 a1@2 ~@3 [a4,c#5,e5], ~@2 f#2!2, ~@5 [a4,c#5,e5]@2 ~", // A
  W: "[a1,a4,c#5,e5]@2 [a4,c#5,e5] ~@3 a2@2, ~ a1 a2 ~, ~@3 [a4,c#5,f#5]@2 [c#5,e5,a5]@3", // A F#m A
  X: "a1!2 ~ f#2, ~@2 [a4,c#5,g5]@3 [a4,c#5,g5]@2 ~, ~@2 f#2 ~", // A7
  Y: "[a4,c#5,g5]!4 [a2,a4,c#5,g5]!2 a2!2, a1!2 ~ [a4,c#5,f#5]", // A7 F#m
  Z: "a1!2 [f#2,e4,a4,c#5] [f#2,c#4,f#4,a4], [f#4,b4,d5] ~", AA: "a1!2 [a2,f#4,b4,d5] [a2,c#4,f#4,a4], [e4,a4,c#5] ~",
  AB: "[[g4,b4,f5]!4 [g1,g4,b4,f5]!3 g1 [g1,d4] d4!7, g1@2 g1@2 ~@3 [g4,b4,f5]@2 ~@7]/2", // G7 G5 G7
  AC: "d2@3 d2 a1@2 c2@2, [d5,f5,a5]@3 ~", AD: "d2@4 g5!2 f5 e5, ~ [a1,a4,d5]",
  AE: "[[a4,c5,e5]@4 d5 c5@2 [a4,d5]@2 ~@3 f2@4, [f2,c3]@3 ~, ~@4 a4@3 ~@2 [a4,c5,e5]@7]/2", // Am D5 F5 Am
  AF: "[[g4,b4,e5]@4 d5 c5@2 [g4,b4,d5]@2 ~@3 a2@4, [e2,d3]@3 ~, ~@4 [g4,b4]@3 ~@2 [g4,b4,e5]@7]/2", // Em G E7 G Em
  AG: "[g4,b4,e5]@4 d5 c5@3, [e2,d3], ~ [g4,a#4]", AH: "e2!4 a2@2 a2@2, [g4,b4,d5] [e4,a4,c#5]",
  AI: "[a1,a4,c#5,e5]@2 [a4,c#5,e5] ~@3 a2@2, ~ a1 a2 ~, ~@3 [a4,c#5,f#5]@2 [a4,c#5,g5]@3", // A F#m A7
  AJ: "[a4,c#5,g5]!3 ~ f#2@2 f#2@2, a1!2 ~@2, ~@3 [c#5,e5,a5]@3 ~@2", // A7 A
  AK: "~ e5 [a4,c#5,g5] e5 a2!4, a1!2 [a4,c#5,g5] [a4,c#5,e5]", // A7 A
  AL: "a1@2 a1@2 [a2,f#4,b4,d5]@2 a4 f5, [e4,a4,c#5]@2 ~ a2", // Bm7 A
  AM: "[[g4,b4,f5]!4 [g1,g4,b4,f5]!3 ~ d4!8, g1@2 g1@2 ~@3 [g1,g4,b4,f5]@2 ~@7]/2", AN: "[d2,c4,e4,a4,c5] c4!3",
  AO: "d2@6 d2@2 a1@3 ~ c2@3 ~, [e4,a4,c5] [e4,a4,d5]", // Am Dsus2
  AP: "[[a4,d5,f#5]@2 ~ d2 a1@2 ~@3 c5@2 [d2,a4] d5 c5 [c2,e4,a4,d5]@2, d2@3 ~@3 c2@2 d2@3 ~ [a1,e4,a4]@2 ~@2, ~@7 [e4,a4]@4 ~@5, ~@7 c#5@2 ~@7]/2", // D D5 Am A5
  AQ: "[[a4,d5,f#5]@2 ~ d2 a1@2 ~@3 a4 ~ d2 [a1,e4,a4,d5]@2 d5 ~ d2@2 f#2 g2 a2!4, d2@3 ~@3 c2@2 d2@3 ~@3 c2@2 ~@8, ~@7 [e4,a4,c5]@2 ~ [e4,a4,c5]@2 ~@3 [f#4,a4,d5]@3 ~@6]/3", // D Asus4 Am D
  AR: "[d2,f#4,a4,d5]@2 f#2 g2 a2!4", // D
  AS: "[[a4,d5,f#5]@2 ~ d2 a1@2 ~@3 c5@2 [d2,a4] d5 c#5 [c2,e4,a4,d5]@2, d2@3 ~@3 c2@2 d2@3 ~ [a1,e4,a4]@2 ~@2, ~@7 [e4,a4]@4 ~@5, ~@7 c5@2 ~@7]/2", // D D5 Am A5
  AT: "[d5 ~@2 d2 a1@2 ~@3 c5!2 [d2,c5] d5 ~@2 d5, [f#4,a4]@4 ~@3 [e4,a4]@5 [e4,a4]@4, d2@3 ~@3 c2@2 d2@3 ~ a1@2 c2@2, ~ c5@3 ~@3 c5@2 ~@4 d5@2 ~]/2", // D7 F#m A5
  AU: "[[a4,d5,f#5]@2 ~ d2 a1@2 ~@3 a4 ~ d2 [a1,e4,a4,d5]@2 d5 ~ d2 c3@2 a2 g2@2 f#2@2, d2@3 ~@3 c2@2 d2@3 ~@3 c2@2 ~@8, ~@7 [e4,a4,c5]@2 ~ [e4,a4,c5]@2 ~@3 [f#4,a4,d5]@3 ~@6]/3", // D Asus4 Am D
  AV: "[d2@3 d2 a1@2 ~@5 d2 a1@2 c2@2, [e4,a4,c5]@4 [e4,a4,d5]@3 [f#4,a4]@7 ~@2, ~@6 c2@2 d2@3 ~@5, ~@7 d5@2 c5@5 ~@2]/2", // Am Dsus2 F#m
  AW: "[~@3 d2 [a1,e4,a4,d5]@2 d5 ~ d2@2 f#2 g2 a2!4, d2@3 ~@3 c2@2 ~@8, ~ [e4,a4,c5]@3 ~@3 [f#4,a4,d5]@5 ~@4]/2", // Asus4 Am D
  AX: "[~@3 d2 [a1,e4,a4,d5]@2 d5 [f#4,a4,d5]@5 ~@4, d2@3 ~@3 c2@2 ~@8, ~ [e4,a4,c5]@3 ~@12]/2", // Asus4 D Am
})).s("gm_piano").gain(0.64)

// bass · slap bass 2
const bass = note(`<
  A B C B A B C B A B C B A B C B D@2 E ~ D@2 E ~ D@2 E ~ D@2 E ~ F@3 ~ F@2 E ~ A B C B A B C B A B C B A B C B D@2 E ~
  D@2 E ~ D@2 E ~ D@2 ~@8 F@3 ~ F@2 G ~ H A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C
  B A B C B A B C ~
>`.pickRestart({
  A: "d2@4 ~@2 d2 ~ d2 ~@7", B: "d2@2 d3 ~@3 d2 ~@9", C: "d2@4 ~@2 d2 ~ d2 d3 ~@6", D: "~@9 a2 d3@2 ~@4",
  E: "~@9 d3 g3@2 ~@4", F: "~@9 e2 a2@2 ~@4", G: "~@9 d2 g2@2 ~@4", H: "d2 ~@3",
})).s("gm_slap_bass_2").gain(0.35)

// chords · pad sweep
const pad_sweep = note("<~@70 A@2 B@2 A@2 C@2 ~@57>".pickRestart({
  A: "[[f2,c3]@15 ~]/2", B: "[[e2,d3]@15 ~]/2", C: "[[e2,d3]@3 ~]/2",
})).s("gm_pad_sweep").gain(0.48).pan(0.4)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  A B A ~ A B A ~ A B A ~ A B A ~@25 A B A ~ A B A ~ A B A ~ A B A ~@31 A@2 B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A
  ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~
>`.pickRestart({
  A: "a3 ~@3", B: "~@9 [a3,d4,a4] a3 d3 [a3,a4] d4 ~@2",
})).s("gm_lead_2_sawtooth").gain(0.4)

// chords · clavinet
const clavinet = note(`<
  A ~@2 B A ~@2 B A ~@2 B A ~@2 B ~@24 A ~@2 B A ~@2 B A ~@2 B A ~@2 B ~@30 A@2 ~@2 B A ~@2 B A ~@2 B A ~@2 B A ~@2 B A
  ~@2 B A ~@2 B A ~@2 B A ~@2 B A ~@2 B A ~@2 B A ~@3
>`.pickRestart({
  A: "~@4 [e4,a4]@2 ~ [e4,a4] ~@8", B: "~@9 a3 d3!2 [d3,f#4] ~@3",
})).s("gm_clavinet").gain(0.45)

// bass · slap bass 1
const bass_2 = note(`<
  ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@25 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@32 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B
  ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~@2
>`.pickRestart({
  A: "~@9 d3 d2 d3 ~@4", B: "~@9 d2 d3@2 ~@4",
})).s("gm_slap_bass_1").gain(0.3)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@2 A ~@3 A ~@3 A ~@3 A ~@17 B C D E B C F G ~@2 A ~@3 A ~@3 A ~@3 A ~@15 H I J K H I J K B C D E B C F G ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~
>`.pickRestart({
  A: "~@7 a3 a4 e4 c4 a3 ~@4", B: "[a4,c#5] ~ c#5 ~ [c#5,a5]@2 ~@3 [c#5,a5] ~ [a4,c#5] [c#5,a5]@2 [a4,c#5] [c#5,a5]",
  C: "[a4,c#5] [c#5,a5] ~@2 [c#5,a5]@2 a4 c#5 ~ c#5!2 a4 [c#5,a5]@2 c#5 ~", // A F#m
  D: "[a4,c#5] ~ [a4,c#5] ~ [c#5,a5]@2 c#5 ~@2 [c#5,a5] ~ a4 [c#5,a5]@2 ~ [c#5,a5]", // A F#m
  E: "[a4,c#5] ~ [a4,c#5] ~ [c#5,a5]@2 c#5 [c#5,a5] ~ [c#5,a5] ~ a4 [c#5,a5]@2 ~@2", // A F#m
  F: "[g4,b4] ~ [g4,b4] ~ [b4,g5]@2 b4 ~@2 [b4,g5] ~ g4 [b4,g5]@2 ~ [b4,g5]", // G Em
  G: "[g4,b4] ~ [g4,b4] ~ [b4,g5]@2 b4 [b4,g5] ~ [b4,g5] ~ g4 [b4,g5]@2 ~@2", // G Em
  H: "[f4,a4] ~ a4 ~ [a4,f5]@2 ~@3 [a4,f5] ~ [f4,a4] [a4,f5]@2 [f4,a4] [a4,f5]", // F Dm F Dm F Dm
  I: "[f4,a4] [a4,f5] ~@2 [a4,f5]@2 f4 a4 ~ a4!2 f4 [a4,f5]@2 a4 ~", // F Dm
  J: "[e4,g4] ~ [e4,g4] ~ [g4,e5]@2 g4 ~@2 [g4,e5] ~ e4 [g4,e5]@2 ~ [g4,e5]", // Em C
  K: "[e4,g4] ~ [e4,g4] ~ [g4,e5]@2 g4 [g4,e5] ~ [c#5,a5] ~ a4 [c#5,a5]@2 ~@2", // Em C F#m
})).s("gm_electric_guitar_muted").gain(0.35)

// bass · fretless bass
const bass_3 = note("<~@16 A ~@3 A ~@3 A ~@3 A ~@27 A ~@3 A ~@3 A ~@3 A ~@66>".pickRestart({
  A: "d2 ~ d2 ~@4 d2 ~@8",
})).s("gm_fretless_bass").gain(0.5)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@16 A B C D A B C D A B C D A B C D ~@24 A B C D A B C D A B C D A B ~@65
>`.pickRestart({
  A: "[d4,f4] ~ f4 ~ [f4,d5]@2 ~@3 f4 ~ [d4,f4] [f4,d5]@2 [d4,f4] [f4,d5]", // Dm
  B: "[d4,f4] [f4,d5] ~@2 [f4,d5]@2 ~ f4 ~ f4!2 d4 [f4,d5]@2 f4 ~", // Dm
  C: "[g4,b4] ~ b4 ~ [b4,g5]@2 b4 ~@2 [b4,g5] ~ g4 [b4,g5]@2 ~ b4", // G Em
  D: "[g4,b4] ~ [g4,b4] ~ [b4,g5]@2 b4 [b4,g5] ~ [b4,g5] ~ g4 [b4,g5]@2 ~@2", // G Em
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@16 A B C ~ A B C ~ A B C ~ A B C ~@25 A B C ~ A B C ~ A B C ~ A B ~@65
>`.pickRestart({
  A: "~@9 d5 ~@6", B: "~@6 d4 ~@9", C: "~@2 g4 ~@12 g5",
})).s("gm_electric_guitar_clean").gain(0.25)

// bass · synth bass 2
const bass_4 = note(`<
  ~@16 A B C D A B C D A B C D A B C D E@3 F E@2 C D ~@16 A B C D A B C D A B C D A B G@2 H@2 G@2 I J E@3 F E@2 K ~@50
>`.pickRestart({
  A: "~@13 f1 a1@2", B: "d2 ~ d2 ~@4 d2 ~@5 f1 a1@2", C: "g2 ~ g2 ~@4 g2 ~@5 b1 d2@2",
  D: "g2 ~ g2 ~@3 d2 g2 ~ g2 g3 ~ g2 ~@3", E: "a1 ~ a1 ~@4 a1 ~@5 c#2 e1@2", F: "a1 ~ a1 ~@3 e1 a1 ~ a1 a2 ~ a1 ~@3",
  G: "[f2@3 f2]/2", H: "[e2@3 a2]/2", I: "e2", J: "e2!4 a2@2 a2@2", K: "g1 ~ g1 ~@4 g1 ~@5 b1 d2@2",
})).s("gm_synth_bass_2").gain(0.5)

// chords · pad warm
const pad_warm = note("<~@34 A ~@3 B ~@33 C ~@3 C ~@3 A ~@3 B ~@50>".pickRestart({
  A: "~@4 [a5,e6,a6]@7 ~@5", B: "~@4 [g5,d6,g6]@7 ~@5", C: "~@4 [e5,b5,e6]@7 ~@5",
})).s("gm_pad_warm").gain(0.4)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  A@17 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@19 ~ A@3 ~ A@3 ~ A@3 ~@9 A ~ A@3 ~ A@50 ~
>`.pickRestart({
  A: "~@3 x ~@4",
})).gain(0.3)

// drums · clap
const clap = s("cp").struct(`<
  A ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A ~ A ~ A ~ A ~ A
  ~ A ~@9 A ~ A ~ A ~ A ~ A@2 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A ~
>`.pickRestart({
  A: "~@3 x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  A@3 B A@3 B A@3 B A@3 B C D E D C D E D C D E D C D E D C D E D C D E D A@3 B A@3 B A@3 B A@3 B C D E D C D E D C D E
  D C D ~@7 F C D E D C D E D A@4 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@4 x ~@4 x ~@2 x ~@2 x",
  E: "~@4 x ~@2 x ~@4 x ~@2 x", F: "~@9 x ~@2 x ~@2 x",
})).gain(0.5)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@16 A B ~ C A B ~ C A B ~ C A B ~ C A B ~ C A B ~ C ~@16 A B ~ C A B ~ C A B ~ C A B ~@7 D A B ~ C A B ~ C ~@49
>`.pickRestart({
  A: "~@9 x ~@5 x", B: "~@5 x ~ x ~@8", C: "~@5 x ~ x ~@6 x ~", D: "~@7 x",
})).gain(0.3)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B@2 C A B@2 C A B@2 C A B@2 C D E@3 D E@3 D E@3 D E@3 D E@3 D E@3 A B@2 C A B@2 C A B@2 C A B@2 C D E@3 D E@3 D E@3
  D E ~@7 D@2 E@3 D E@3 A@2 B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2
  ~
>`.pickRestart({
  A: "~ x ~ x!3 ~ x", B: "x!2 ~ x!3 ~ x", C: "x!2 ~ x!3 ~@2", D: "~@9 x ~@6", E: "~@2 x ~@6 x ~@6",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct(`<
// … 53 more lines

More by Kenny Loggins