Just shipped: ACS — Audio Cascading Style Sheets.
CSS describes how an HTML element should LOOK. ACS uses the same selectors and cascade to describe how it should SOUND. One <link rel="audiostyle"> and your buttons sound like buttons — no event handlers, no play() calls. The cascade does the wiring.
button.primary { sound-on-click: pop; pitch: 1st; }
input:on-input { sound: keystroke; }
dialog[open] { room: small-room; }
Why I built it:
• Every product team re-solves UI sound design from scratch with imperative JS
• CSS's cascade — selectors, specificity, inheritance — is already the right abstraction
• Web Audio API is powerful but low-level; the declarative layer was missing
What's in the box:
• 49 calibrated presets (whole library within 4.8 dB spread)
• 9 mood overlays (lofi, glassy, retro… real bitcrush ring-mod noise floor)
• 8 theme packs (apple, material, retro, brutalist, cinematic, bauhaus, terminal, ambient)
• AudioWorklet realtime path (sub-1ms latency)
• Full cascade: !important,
@media, attribute selectors, descendant combinators
•
@sound blocks for custom voices
• CSS-var bridge — var(--token) works in any ACS value
• VSCode Cursor extension — syntax, outline, audition CodeLens, knob-based sound picker
• AI agent skill (Claude Code / Cursor) — turns a natural-language prompt into a paste-ready
@sound
~14 KB gzipped · zero dependencies · MIT.
audiocss.dev
github.com/Grkmyldz148/acs
npmjs.com/package/acs-audio
#WebDev #JavaScript #CSS #WebAudio #UXDesign #SoundDesign #DeveloperTools #OpenSource #UIEngineering #FrontendDevelopment #npm #VSCode #Cursor #AIAgents #ClaudeCode #ACS #AudioCSS #DesignSystems