web-kits/audio: صدای وب رو مثل آبجکت تعریف کن
خلاصهٔ کاملتر
رافائل سالاجا کتابخونهٔ متنباز @web-kits/audio رو منتشر کرده که صداهای کوتاه رابط کاربری رو به شکل declarative میسازه. تو توضیح خود پروژه اومده که ایده اینه: بهجای اینکه دستی گرههای Web Audio API (یعنی همون API مرورگر که باهاش صدا رو از صفر میسازی و به هم زنجیر میکنی) رو بسازی و وصل کنی، صدا رو مثل یه آبجکت ساده توصیف میکنی و با یه فراخوانی پخشش میکنی.
توصیف هر صدا سه بخش داره: source که نوع موج و فرکانسش رو مشخص میکنه، envelope که شکل بالا و پایین شدن صدا رو میده (attack و decay و sustain و release) و gain که بلندیشه. مثال خود مستندات یه صدای کلیک میسازه که فرکانسش از ۱۲۰۰ به ۳۰۰ هرتز سُر میخوره:
const click = defineSound({
source: { type: "sine", frequency: { start: 1200, end: 300 } },
envelope: { attack: 0.001, decay: 0.06, sustain: 0, release: 0.03 },
gain: 0.3,
});
await ensureReady();
click();قبل از اولین پخش باید ensureReady صدا زده بشه و بعدش خود متغیر مثل یه تابع فراخوانی میشه. برای React هم یه هوک به اسم usePatch داره که یه فایل patch رو لود میکنه و با patch.play("click") صدای موردنظر پخش میشه؛ تا وقتی patch.ready نشده هم میتونی دکمه رو غیرفعال نگه داری.
کنارش یه CLI داره که با npx اجرا میشه و باهاش میتونی patchهای صدای جامعه رو مستقیم از ریپوهای گیتهاب مرور و نصب کنی یا یه patch تازه بسازی. خود کتابخونه حدود ۱۱ کیلوبایت gzip شدهست، tree-shakeable هست و با جاوااسکریپت خالص هم کار میکنه. لایسنسش MIT هست و به گفتهٔ نویسنده، ایدهٔ رجیستری و CLI از skills.sh ورسل الهام گرفته شده.
نکات کلیدی:
- حجم حدود ۱۱ کیلوبایت gzip شده و tree-shakeable
- تعریف هر صدا با سه بخش source و envelope و gain در قالب یه آبجکت
- هوک usePatch برای React و پخش با patch.play
- CLI روی npx برای مرور و نصب patchهای جامعه از گیتهاب
- لایسنس MIT و ساختهشده روی Web Audio API مرورگر




