بیشتر صدای محیط بازی را میتوان بدون کتابخانهی سمپل و فقط با شکل دادن به نویز ساخت. باران نویز فیلترشده بهعلاوهی تیکهای تصادفی قطره است، باد نویز عبوری از باندپس با فیلتر آهستهمتحرک، و آتش یک غرش بم بهعلاوهی ترقتروقهای تصادفی. چون نتیجه از چند پارامتر و یک seed تصادفی ساخته میشود، تمیز لوپ میشود و تقریباً هیچ فضایی اشغال نمیکند.
آخرین بازبینی: مهر ۱۴۰۵
صدای پروسیجرال (procedural audio) به زبان ساده یعنی چه؟
صدای پروسیجرال یعنی تولید صدا از روی قاعده و عدد، بهجای پخش یک ضبط. بهجای ذخیرهی سی ثانیه باران بهصورت یک فایل 5 MB، یک دستورپخت ذخیره میکنید: «نویز، با هایپس در این فرکانس، بهعلاوهی اینقدر قطره در ثانیه». دستورپخت چند عدد است. کامپیوتر آن را دنبال میکند تا صدا را در لحظه تولید کند.
مصالحهاش واقعنمایی است. یک ضبط میدانی خوب از یک طوفان مشخص، برای یک لحظهی سینمایی از نسخهی سنتزشده بهتر است. صدای پروسیجرال در حجم، تنوع و کنترل برنده است: شدت باران را با یک اسلایدر عوض میکنید و لازم نیست دو بازیکن قطرههای یکسان بشنوند.
چهار بلوک سازنده کدامند؟
تقریباً هر صدای محیط پروسیجرالی از همین چهار ایده استفاده میکند.
- نویز: سیگنال تصادفی با انرژی در فرکانسهای متعدد. نویز سفید روشن و خشدار است، نویز صورتی (pink) به سمت زیر افت میکند و طبیعیتر شنیده میشود، و نویز قهوهای (brown) غرنده و تاریک است. نویز مادهی خام باران، باد، موج و آتش است.
- فیلترها: فرکانسها را حذف میکنند. لوپس (low-pass) نویز را تاریکتر و دورتر میکند. هایپس (high-pass) آن را نازکتر میکند. باندپس (band-pass) یک باند را نگه میدارد و به نویز حالتی شبیه زیروبمی میدهد، که باد «سوت»ش را از همین میگیرد.
- انولوپها (envelope): شکل تغییر صدا در زمان کوتاه را تعیین میکنند، معمولاً attack، decay، sustain و release. قطره نویزی با attack بسیار سریع و decay تند است. قدم یک انفجار کوتاه با دنبالهی کندتر است.
- LFOها (نوسانسازهای فرکانس پایین): سیگنالهای کنترلی آهسته و نوسانی. اگر LFO را به cutoff یک فیلتر وصل کنید، باد اوج و فرود میگیرد. اگر به ولوم وصل کنید، ضربان ملایم میگیرید.
اگر با سینتیسایزر کار کرده باشید، هر چهار را میشناسید. کار خلاقانه تصمیمگیری دربارهی این است که چه چیزی به چه چیزی وصل شود.
باران، باد، آتش و آب را چطور بسازیم؟
| صدا | دستورپخت اصلی | چه چیزی آن را باورپذیر میکند |
|---|---|---|
| باران | نویز صورتی یا سفید با هایپس | تیکهای تصادفی قطره با انولوپ سریع، روشنایی متفاوت بسته به سطح |
| باد | نویز عبوری از فیلتر باندپس | LFO آهسته روی cutoff، بهعلاوهی وزشهای نامنظم |
| آتش | نویز قهوهای لوپسشده برای بدنه | ترقهای تیز تصادفی در فاصلههای نامنظم، چند پاپ بلندتر |
| آب | نویز فیلترشده برای جریان | بیپهای کوتاه زیروبمدار برای حباب، با فرکانس صعودی |
| پرندگان | تن سینوسی با جاروب سریع زیروبمی | زمانبندی تصادفی و پراکنده، جملههای کوتاه |
| جیرجیرک | تن باند باریک، ضربان دامنه | ضربان سریع و ثابت با کمی دیتیون بین صداها |
| صدای اتاق (room tone) | نویز لوپسشدهی بسیار آرام | بهسختی شنیدنی، اما بدون آن سکوت غلط حس میشود |
یک دستور شبهکد برای باران این شکلی است:
bed = highpass(pinkNoise, 800 Hz) // the hiss of many drops
drops = randomClicks(density = 40 per sec) // individual hits
drops = bandpass(drops, 3000 Hz) * envelope(attack 1ms, decay 30ms)
rain = bed * 0.5 + drops * 0.5سطح را با عوض کردن فیلتر عوض کنید. باران روی سقف روشن و تیز است، روی برگ نرمتر و گردتر، و روی شیشه ضربهی تقتق مشخصی دارد.
صدای قدم و فولی (foley) تکضرب را چطور بسازیم؟
تکضربهها رویدادهای کوتاهاند و واقعنماییشان از لایهگذاری و تنوع میآید:
- ضربه: یک انفجار نویز بسیار کوتاه، با باندپس متناسب با سطح (بالاتر برای شن، پایینتر برای چوب).
- بدنه: یک تاپ بم سریع از یک سینوسی که زیروبمیاش بهسرعت میافتد.
- بافت: دنبالهی نویز کمی بلندتر، مثل خردهسنگ برای شن یا قیژ برای برف.
- تنوع: در هر فراخوانی زیروبمی، زمانبندی و سطح را کمی تصادفی کنید. چند نسخه را بهنوبت (round-robin) پخش کنید تا یک قدم هرگز دو بار پشت سر هم تکرار نشود.
در، تقه، کلیک رابط و برخورد هم همین الگو را با انتخاب فیلتر و طول انولوپ متفاوت دارند. صداهای رابط کاربری بهجای نویز، به تنهای تمیز با انولوپ کوتاه تکیه میکنند.
چرا صداهای پروسیجرال با seed لوپ میشوند و کوچک میمانند؟
دو ویژگی این رویکرد را برای بازی مناسب میکند.
قطعیت (determinism). یک مولد تصادفی با seed همیشه همان دنباله را تولید میکند. همان seed و همان تنظیمات را بدهید، دقیقاً همان باران را میگیرید. seed را عوض کنید، بارانی متفاوت اما همارز میگیرید. یعنی میتوانید بهجای صدا چند عدد ذخیره کنید و صدا را روی هر ماشینی دقیقاً بازسازی کنید.
لوپ بیدرز در ذات ساختار. لوپها وقتی کلیک میدهند که انتهای بافر به ابتدا نرسد. مولد پروسیجرال میتواند از اول جلوی آن را بگیرد: فیلترها را میشود دو بار روی بافر اجرا کرد تا وضعیت داخلیشان گرم شود، رویدادهای نزدیک انتها را به ابتدا تاب داد، و LFOهای آهسته را طوری تنظیم کرد که در هر لوپ تعداد صحیحی سیکل کامل کنند. نیازی نیست کراسفید در صدا پخته شود. لوپ پیوسته است چون ریاضی پیوسته است.
حجم هم از همین ایده میآید. یک بستر استریو سیثانیهای بهصورت صدای 16 بیت و 44.1 kHz حدود 5 MB است. پارامترهایی که آن را توصیف میکنند چند بایتاند.
چه چیزی میتواند خراب شود؟
- زیادی یکنواخت. نویز خالص مثل پنکه میشود. مدولاسیون آهسته و رویدادهای پراکنده اضافه کنید.
- زیادی روشن. نویز سنتزشده معمولاً تندتر از ضبط است. بالا را بکاهید، مخصوصاً برای صداهای دور.
- زیادی بلند و متراکم. صدای محیط باید زیر موسیقی و دیالوگ بنشیند. پیش از کم کردن ولوم، تراکم را کم کنید.
- تکرار. لوپ دهثانیهای بعد از یک دقیقه مشخص میشود. از لوپهای بلندتر استفاده کنید، یا دو لوپ با طولهای متفاوت را لایه کنید تا ترکیبشان بهندرت تکرار شود.
Mowjera این را چطور مدیریت میکند؟
Mowjera، یک DAW مرورگرمحور برای موسیقی تطبیقی بازی، یک موتور افکت و صدای محیط پروسیجرال دارد. بسترهای لوپی شامل باران، باد، آتش، آب، پرندگان، جیرجیرک و room tone هستند. تکضربهها شامل قدم، تقه، در، رابط کاربری و برخورد است. بسترها کنترلهایی برای تراکم، روشنی، وزش، طول لوپ و seed دارند، با چند واریانت برای هر نوع (مثلاً باران سقف، برگ، شیشه و گودال دارد). صدای تولیدشده در مرورگر سنتز و کش میشود، پس هر ترک بهجای فایل صوتی چند پارامتر هزینه دارد.
این ترکها مثل هر ترک دیگری رفتار میکنند: EQ، سند و اتوماسیون میگیرند، میتوان به لایهی شدت وصلشان کرد تا باران فقط در طوفانها فید شود، و همراه بقیهی قطعه خروجی میگیرند. این آخری به مبانی موسیقی تطبیقی مربوط است: صدای محیط اغلب ارزانترین لایهی تطبیقی برای افزودن است. برای فضایی که با سکوت کار میکند نه برخلافش، طراحی صدای بازی ترسناک را بخوانید.
این صدا سنتز سبکدار است، نه ضبط میدانی. اگر صدای مشخصی از دنیای واقعی لازم دارید، آن را ضبط کنید و بهصورت سمپل آپلود کنید. مستندات فعلی از ساختهشدن ترکهای SFX از طریق ابزارهای دستیار هوش مصنوعی Mowjera میگویند، پس ببینید نسخهی شما در ادیتور چه چیزی عرضه میکند. میتوانید ادیتور را امتحان کنید تا اول بخش موسیقی را بشنوید.
سوالات متداول
آیا میشود صدای باران را از نویز ساخت؟
بله. باران با نویز صورتی یا سفیدِ هایپسشده برای خش متراکم، بهعلاوهی تیکهای کوتاه قطره با زمانبندی تصادفی و انولوپ سریع، خوب تقریب زده میشود. روشنی فیلتر را برای نوع سطح و تراکم قطره را برای شدت تنظیم کنید. با ضبط میدانی یک طوفان مشخص برابری نمیکند، اما بهعنوان لوپ خوب کار میکند.
seed در صدای پروسیجرال یعنی چه؟
seed عدد شروع یک مولد تصادفی است. همان seed و همان تنظیمات همیشه همان صدا را میدهند، و seed جدید نسخهای متفاوت با همان خصوصیت. این کار صداهای پروسیجرال را قابل بازتولید، قابل اشتراک و کمحجم میکند، چون بهجای شکل موج اعداد را نگه میدارید.
یک صدای پروسیجرال را چطور بیدرز لوپ کنیم؟
انتهای بافر را به ابتدا ادامه دهید. رویدادهایی را که از مرز میگذرند به ابتدا تاب بدهید، وضعیت فیلتر را پیش از ضبط گرم کنید و مدولاسیون آهسته را طوری تنظیم کنید که در هر لوپ سیکلهای کامل بزند. این کار از پختن کراسفید در صدا که ممکن است در محل درز ولوم را پایین بیاورد جلوگیری میکند.
آیا افکت پروسیجرال از کتابخانهی سمپل بهتر است؟
هیچکدام همیشه بهتر نیست. سمپلها بیشترین واقعنمایی را برای صداهای کلیدی میدهند. صدای پروسیجرال حجم ناچیز، تنوع بیپایان، کنترل پارامتری و لوپ تضمینشده میدهد، که به صدای محیط، نمونههای اولیه و پروژههای کوچک میخورد. بسیاری از تیمها ترکیب میکنند: ضبط برای لحظههای کلیدی و بسترهای پروسیجرال در زیرشان.
حجم صدای پروسیجرال در مقایسه با WAV چقدر است؟
یک WAV استریوی سیثانیهای با 44.1 kHz و 16 بیت حدود 5 MB است. یک بستر پروسیجرال که بهصورت پارامتر ذخیره شود چند بایت است، چون صدا در زمان اجرا تولید میشود. بهایش را با کمی زمان CPU هنگام بارگذاری میپردازید، معمولاً کسری از ثانیه تا حدود یک ثانیه برای بسترهای متراکم.