برنامه نویسندگی محتوا برای موتور موسیقی تعاملی JET
1 مقدمه
1.1 بررسی اجمالی
این سند حاوی دستورالعملهای کاربر برای SONiVOX JET Creator، یک برنامه نویسندگی برای ایجاد و بررسی فایلهای JET است. JET یک پخش کننده موسیقی تعاملی برای دستگاه های تعبیه شده کوچک، از جمله دستگاه هایی که پلتفرم اندروید را اجرا می کنند، است. این امکان را به برنامهها میدهد تا موسیقی متنهای موسیقی تعاملی را در قالب MIDI درج کنند که در زمان واقعی به رویدادهای بازی و تعامل کاربر پاسخ میدهند.
JET در ارتباط با SONiVOX Embedded Audio Synthesizer (EAS) که دستگاه پخش MIDI برای اندروید است، کار می کند. هر دو موتور JET و EAS از طریق کلاس JetPlayer
در پلتفرم تعبیه شده اندروید و همچنین در برنامه JET Creator یکپارچه شده اند. به این ترتیب، نویسنده محتوای JET می تواند مطمئن باشد که پخش در JET Creator و برنامه اندروید نهایی که در دستگاه های تلفن همراه Android پخش می شود، دقیقاً یکسان خواهد بود.
علاوه بر رابط کاربری گرافیکی، دو قابلیت اصلی در JET Creator وجود دارد. اولین مورد شامل جمع آوری تمام داده های منبع (فایل های MIDI و فایل DLS)، افزودن ویژگی های زمان واقعی JET و ساخت یک فایل JET (jet.) است که برنامه اندروید از آن استفاده خواهد کرد. عملکرد دوم شامل استماع عناصر بازپخش تعاملی است که در برنامه اندروید انجام می شود.
برنامه JET Creator به زبان برنامه نویسی پایتون نوشته شده است، بنابراین باید نسخه فعلی Python و WXWidgets را نصب کنید. هر دو نسخه مک و ویندوز وجود دارد.
1.2 اختصارات و اصطلاحات رایج
برای به حداقل رساندن سردرگمی استفاده از مجموعه ای از اصطلاحات مهم است. از آنجایی که JET از MIDI به روشی منحصر به فرد استفاده می کند، ممکن است اصطلاحات صنعتی معمولی همیشه کافی نباشند. در اینجا تعریف اصطلاحات استفاده شده در این صفحه و در برنامه JET Creator آمده است:
کانال : داده های MIDI مرتبط با یک کانال MIDI خاص. MIDI استاندارد امکان 16 کانال داده MIDI را می دهد که هر کدام معمولاً با یک ابزار خاص مرتبط هستند.
کنترلر : یک رویداد MIDI متشکل از شماره کانال، شماره کنترلر و مقدار کنترلر. مشخصات MIDI بسیاری از اعداد کنترلر را با عملکردهای خاصی مانند صدا، بیان، پدال ثابت و غیره مرتبط می کند.
DAW : ایستگاه کاری صوتی دیجیتال. یک اصطلاح رایج برای برنامه های کاربردی MIDI و توالی صدا مانند Logic، SONAR، Cubase و غیره.
EAS: MIDI Synthesizer تعبیه شده. نام موتور سینت سایزر SONiVOX MIDI.
JET : موتور تعاملی جت. نام موتور موسیقی تعاملی SONiVOX JET.
M/B/T : اندازهگیریها، ضربهها و تیکها
بخش : بخش موسیقایی مانند گروه کر یا شعر که جزئی از ترکیب کلی است. در JET، یک بخش می تواند یک فایل MIDI کامل یا مشتق شده از بخشی از یک فایل MIDI باشد.
SMF-0 : فایل استاندارد MIDI نوع 0، یک فایل MIDI که حاوی یک تراک است، اما ممکن است از چندین کانال داده MIDI تشکیل شده باشد.
SMF-1 : فایل استاندارد MIDI نوع 1، یک فایل MIDI که حاوی یک تراک دیگر است و هر آهنگ ممکن است به نوبه خود از یک یا چند کانال داده MIDI تشکیل شده باشد. طبق قرارداد، هر کانال در یک مسیر جداگانه در یک فایل SMF-1 ذخیره می شود. با این حال، ممکن است چندین کانال MIDI در یک آهنگ واحد یا چندین تراک که حاوی داده های یک کانال MIDI هستند، داشته باشید.
تراک : یک تراک منفرد در یک DAW حاوی یک توالی زمانبندی شده از رویدادها. مراقب باشید آهنگ ها را با کانال ها اشتباه نگیرید. یک فایل MIDI ممکن است حاوی تعداد زیادی آهنگ با چندین تراک با استفاده از یک کانال MIDI باشد.
2 مفهوم موسیقی تعاملی JET
موسیقی تعاملی را می توان به عنوان موسیقی تعریف کرد که در زمان واقعی با توجه به رویدادهای غیرقابل پیش بینی مانند تعامل کاربر یا رویدادهای بازی تغییر می کند. به این ترتیب، موسیقی تعاملی بسیار جذاب تر است، زیرا این توانایی را دارد که انرژی و حال و هوای یک بازی را بسیار نزدیک تر از یک ترکیب از پیش ساخته شده که هرگز تغییر نمی کند، مطابقت دهد. در برخی از برنامهها و بازیها، موسیقی تعاملی محور اصلی بازی است. Guitar Hero یکی از این بازی های محبوب است. هنگامی که کاربر نهایی با موفقیت نتهای موسیقی را ضبط میکند، موسیقی خودش را تطبیق میدهد و به طور همزمان تعداد موفقیتها و شکستها را حفظ میکند. JET این نوع بازی های مبتنی بر موسیقی را نیز امکان پذیر می کند.
روش های مختلفی برای ساخت و کنترل موسیقی تعاملی وجود دارد که JET یکی از این روش ها است. این بخش ویژگی های JET و نحوه استفاده از آنها در یک بازی یا نرم افزار را توضیح می دهد. همچنین توضیح می دهد که چگونه می توان از JET برای صرفه جویی در حافظه در دستگاه های کوچک مانند گوشی های موبایل دارای Android استفاده کرد.
2.1.1 فشرده سازی داده ها
JET از یک فرمت موسیقی منعطف پشتیبانی می کند که می تواند برای ایجاد سکانس های موسیقی طولانی با حداقل مقدار داده استفاده شود. یک ترکیب موسیقی به بخش هایی تقسیم می شود که می توان آنها را برای ایجاد یک قطعه طولانی تر ترتیب داد. توالی را می توان در زمان ایجاد فایل موسیقی ثابت کرد، یا می توان آن را به صورت پویا تحت کنترل برنامه ایجاد کرد.
2.1.2 موسیقی خطی مثال
شکل 1: قطعه موسیقی خطی
این نمودار نشان می دهد که بخش های موسیقی چگونه ذخیره می شوند. هر بخش به عنوان یک فایل MIDI جداگانه نوشته شده است. یک ابزار پس پردازش، فایل ها را در یک فایل ظرف واحد ترکیب می کند. هر بخش میتواند شامل آهنگهای موسیقی متناوب باشد که میتوانند برای ایجاد علاقه بیشتر، بیصدا یا بیصدا شوند. یک مثال ممکن است لهجه برنجی در گروه کر باشد که آخرین بار نواخته شده است. همچنین، بخش ها را می توان به بالا یا پایین منتقل کرد.
قسمت پایین نمودار نشان می دهد که چگونه بخش های موسیقی را می توان برای ایجاد یک قطعه موسیقی خطی دوباره ترکیب کرد. در این مثال، پل ممکن است با یک مدولاسیون کلید نیمهمرحلهای به پایان برسد و بخشهای باقیمانده میتوانند برای مطابقت با یک نیم پله به بالا منتقل شوند.
2.1.3 موسیقی غیر خطی مثال
شکل 2: قطعه موسیقی غیر خطی
در این نمودار شاهد یک قطعه موسیقی غیر خطی هستیم. این سناریو یک تیراندازی اول شخص (FPS) است و JET موسیقی پسزمینه را ارائه میکند. مقدمه هنگام بارگذاری سطح پخش می شود و سپس تحت کنترل برنامه به بخش جستجو منتقل می شود. این بخش به طور نامحدود تکرار می شود، شاید با تغییرات کوچک (با استفاده از ویژگی mute/un-mute) تا زمانی که فعالیت در بازی تغییری را دیکته کند.
همانطور که پخش کننده به لانه هیولا نزدیک می شود، برنامه یک انتقال هماهنگ به بخش Danger را آغاز می کند و سطح تنش را در صدا افزایش می دهد. با نزدیکتر شدن بازیکن به لانه، آهنگهای اضافی برای افزایش تنش خاموش میشوند.
هنگامی که بازیکن وارد نبرد با هیولا می شود، برنامه یک انتقال هماهنگ به بخش مبارزه را آغاز می کند. این بخش به طور نامحدود با ادامه مبارزه تکرار می شود. یک ضربه جایزه به طور موقت یک آهنگ تزئینی را که بازیکن را از حمله موفقیت آمیز مطلع می کند، قطع می کند، و به طور مشابه، آهنگ دیگری به طور موقت قطع می شود تا مشخص شود که بازیکن آسیب ویژه دریافت می کند.
در پایان نبرد، موسیقی بر اساس نتیجه نبرد به بخش پیروزی یا شکست تبدیل میشود.
2.1.4 همگام سازی بی صدا/لغو صامت
JET همچنین می تواند قطع و وصل آهنگ ها را با رویدادهای موجود در موسیقی همگام کند. به عنوان مثال، در بازی FPS، احتمالاً مطلوب است که رویدادهای موسیقی مربوط به پاداش ها و آسیب ها تا حد امکان به رویداد واقعی بازی نزدیک شود. با این حال، صرفاً نادیده گرفتن یک آهنگ در لحظه وقوع رویداد بازی ممکن است منجر به شروع یک کلیپ موسیقی از وسط شود. متناوباً، میتوان یک کلیپ را از ابتدا شروع کرد، اما سپس با سایر آهنگهای موسیقی همگامسازی نمیشود.
با این حال، با موتور همگام سازی JET، می توان یک کلیپ را در لحظه مناسب بعدی راه اندازی کرد و همگام سازی را حفظ کرد. این را می توان با قرار دادن تعدادی کلیپ موسیقی کوتاه در یک آهنگ تزئینی انجام داد. یک رویداد MIDI در جریان به معنای شروع یک کلیپ و یک رویداد دوم به معنای پایان یک کلیپ است. هنگامی که برنامه عملکرد کلیپ JET را فراخوانی می کند، کلیپ بعدی در آهنگ اجازه پخش کاملاً هماهنگ با موسیقی را دارد. به صورت اختیاری، آهنگ می تواند به طور خودکار توسط یک رویداد MIDI دوم بی صدا شود.
شکل 3: بیصدا/باصدا کردن همزمان
2.2 همگام سازی صدا
JET یک API همگام سازی صدا را فراهم می کند که اجازه می دهد بازی با رویدادهای موجود در صدا همگام شود. مکانیزم متکی بر دادههای تعبیهشده در فایل MIDI در زمان نگارش محتوا است. هنگامی که موتور JET یک رویداد را در حین پخش حس می کند، یک تماس برگشتی به برنامه کاربردی ایجاد می کند. زمان پاسخ به تماس را می توان برای جبران هرگونه تاخیر در سیستم پخش صدا تنظیم کرد تا صدا و تصویر همگام شوند. نمودار زیر نمونه ای از یک بازی موسیقی ساده را نشان می دهد که شامل فشار دادن فلش های چپ و راست به موقع با موسیقی است.
شکل 4: بازی موسیقی
فلش ها نشان دهنده رویدادهایی در دنباله موسیقی هستند که در آن رویدادهای بازی باید همگام شوند. در این حالت، فلش آبی نشان دهنده زمانی است که بازیکن قرار است دکمه سمت چپ را فشار دهد و فلش قرمز برای دکمه سمت راست است. فلش زرد به موتور بازی می گوید که توالی کامل شده است. بازیکن اجازه دارد یک پنجره زمانی مشخص قبل و بعد از رویداد را فشار دهد تا کلید مناسب را فشار دهد.
اگر رویدادی دریافت شود و بازیکن دکمه ای را فشار نداده باشد، یک تایمر به نصف طول پنجره تنظیم می شود. اگر بازیکن قبل از اتمام زمان سنج دکمه را فشار دهد، بازی موفقیت آمیز است و اگر نه، بازی شکست را ثبت می کند.
اگر پخش کننده دکمه را قبل از دریافت رویداد فشار دهد، یک تایمر به نصف طول پنجره تنظیم می شود. اگر رویدادی قبل از انقضای تایمر دریافت شود، بازی موفقیت آمیز است و اگر نه، بازی شکست را ثبت می کند. بازی ممکن است شامل جوایزی برای نزدیک شدن به زمان رویداد واقعی نیز باشد.
3 بررسی اجمالی تألیف محتوای JET
برای نوشتن فایلهای JET و شنیدن بازپخش آنها به صورت تعاملی، نویسنده محتوا در دو برنامه کاربردی کار میکند که به گونهای طراحی شدهاند که با هم کار کنند. اولین مورد این است که برنامه هر برنامه توالی MIDI خارج از قفسه ای است که از پلاگین های VST (برای رایانه شخصی) یا AU (برای Mac) پشتیبانی می کند. در اینجا نویسنده فایل های موسیقی MIDI خود را با استفاده از افزونه به عنوان دستگاه سینت سایزر می سازد. برنامه دوم برنامه JET Creator است. در اینجا نویسنده فایل های موسیقی MIDI خود (و به صورت اختیاری یک مجموعه صوتی DLS2) را وارد می کند و شرایط را برای پخش تعاملی در بازی دارای JET تنظیم می کند. در صورت تمایل، نویسنده محتوا ممکن است مجموعه ای سفارشی از ابزارهای DLS را با استفاده از یک ویرایشگر ابزار که از قالب سطح 2 DLS پشتیبانی می کند، ایجاد کند. یکی از این برنامه ها Awave از MJSoft است.
لطفاً برای جزئیات بیشتر در مورد تألیف محتوا به مستندات دستورالعمل های تألیف محتوای JET مراجعه کنید.
4 نصب و راه اندازی JET Creator
JET Creator یک برنامه زبان پایتون است، بنابراین، باید پایتون و wxPython را روی دستگاه خود نصب کنید.
JetCreator ایجاد و آزمایش شد با:
پایتون نسخه 2.5.4
wxPython نسخه 2.8.7.1
اینها را می توان از اینجا دانلود کرد:
PC:
- http://www.python.org/download/releases/2.5.4/
- http://www.wxpython.org/download.php
MAC:
- http://wiki.python.org/moin/MacPython/Leopard
- http://www.wxpython.org/download.php
پس از نصب Python و wxPython، به سادگی تمام فایل های موجود در فهرست برنامه JET Creator را از حالت فشرده خارج کرده یا در پوشه ای در هارد دیسک خود کپی کنید.
برای راه اندازی JET Creator به یک خط فرمان بروید و دایرکتوری را در جایی که پایتون را نصب کرده اید تنظیم کنید. سپس پایتون را با دستور زیر اجرا کنید:
python jetcreator.py
5 با استفاده از JET Creator
5.1 انواع فایل
چند نوع فایل مختلف مرتبط با JET Creator وجود دارد.
فایل پروژه JET Creator .jtc. این فایل حاوی تمام اطلاعات مرتبط با پروژه JET Creator است. وقتی خارج از JET Creator ذخیره یا ذخیره میکنید، این نوع فایل ذخیره میشود.
فایل جت جت. هر زمان که پروژه JET Creator خود را ذخیره می کنید، این فایل خروجی به طور خودکار از JET Creator تولید می شود. این فایلی است که تمام دارایی های JET را در یک فایل واحد که برنامه اندروید از آن استفاده خواهد کرد، جمع می کند. این فایل را در اختیار برنامه نویس اندروید قرار دهید.
فایل .mid. این فایل استاندارد MIDI نوع 1 است که JET Creator از آن برای ساخت بخش ها استفاده می کند.
فایل بخش .seg. این یک فایل JET Segment است. این همان نام فایل MIDI است که به آن ارجاع می دهد، اما حاوی اطلاعات بخش اضافی است.
فایل زیپ آرشیو .zip. هنگامی که یک بایگانی JET را صادر می کنید، یک فایل فشرده ایجاد می شود که حاوی تمام دارایی ها (فایل ها) لازم برای JET Creator است. از این برای انتقال پروژه های JET Creator به افراد دیگر استفاده کنید.
5.2 گفتگو را باز کنید
هنگامی که برای اولین بار JET Creator را راه اندازی می کنید، با یک گفتگوی باز مانند شکل زیر مواجه می شوید.
Open یک فایل jtc. (فایل JET Creator) موجود را باز می کند. از دکمه مرورگر برای مرور به دایرکتوری که فایل jtc. خود را در آن ذخیره کرده اید استفاده کنید.
New یک فایل .jtc جدید ایجاد می کند.
Import یک فایل JET Archive (zip.) را وارد می کند.
لغو، گفتگو را لغو می کند و از برنامه خارج می شود.
5 پنجره اصلی
پنجره اصلی برنامه JET Creator مانند تصویر زیر است. سه بخش اصلی از بالا به پایین وجود دارد: نمای بخش، نمای رویداد و جدول زمانی.
بخش نمای بخش لیستی از بخش های فعلی را نشان می دهد که هر بخش از فایل MIDI و (اختیاری) فایل DLS2 مشتق شده است. همچنین زمان شروع و توقف هر بخش را نشان می دهد و هر بخش تنظیمات پرچم را کمی کردن، جابجایی، تکرار و بی صدا می کند.
درست در زیر نمای Segment نمای رویداد است. بخش نمای رویداد تمام رویدادهای مرتبط با یک بخش معین را نمایش می دهد. رویدادها فقط زمانی نمایش داده می شوند که قسمتی که به آن اختصاص داده شده برجسته شود. هر رویداد نوع، نقاط شروع و پایان، تخصیص کانال آهنگ و midi و شناسه رویداد خود را نشان می دهد.
درست در زیر نمای رویداد، نمایش خط زمانی است. جدول زمانی نشان می دهد که یک بخش معین چند معیار است و همچنین رویدادهای مرتبط با آن بخش را نشان می دهد. جدول زمانی برای نمایش بخش انتخابی یا در حال پخش فعلی تغییر می کند. شما می توانید یک رویداد را در این پنجره در حالی که بخش در حال پخش است با کلیک کردن بر روی رویداد در صفحه نمایش جدول زمانی فعال کنید.
پنجره اصلی JET Creator
دکمه های سمت چپ پنجره اصلی به صورت زیر عمل می کنند:
افزودن: بخش یا پنجره رویداد را برای افزودن بخش یا رویداد جدید نمایش می دهد
Revise: بخش یا پنجره رویداد را برای بهروزرسانی یک بخش یا رویداد موجود نمایش میدهد
حذف: بخش یا رویداد انتخاب شده را حذف می کند (تایید می خواهد)
Move: پنجره حرکت را نمایش می دهد که به شما امکان می دهد بخش ها یا رویدادهای انتخاب شده را در زمان جابجا کنید
Queue All: صف تمام بخش ها را برای پخش (انتخاب می کند).
Dequeue All: تمام بخش ها را Dequeue (از انتخاب خارج می کند).
پخش: پخش تمام بخش های در صف را شروع می کند. اگر بخش هایی در حال پخش هستند، این دکمه به Stop تغییر می کند
Audition: پنجره Audition را نمایش می دهد (به زیر مراجعه کنید)
5.1 پنجره بخش
پنجره بخش جایی است که ویژگی های یک بخش مشخص شده، همانطور که در تصویر زیر نشان داده شده است، اختصاص داده می شود و مورد بررسی قرار می گیرد. در سمت چپ پنجره ویژگی های بخش هایی که در فایل JET ذخیره شده اند را نمایش می دهد. سمت راست پنجره به نویسنده اجازه میدهد تا پرچمهای بیصدا را تنظیم کند، تنظیمات را تکرار و جابهجا کند و بخش را همانطور که در بازی JET بازی میکند، تست کند.
توجه : ویژگی های استماع (پرچم های بی صدا، تکرار و جابجایی) در فایل محتوای JET (jet.) ذخیره نمی شوند، بلکه توسط خود بازی یا برنامه تعریف می شوند. در زبان برنامه نویسی، این تنظیمات مستقیماً با فراخوانی های API به موتور JET مطابقت دارد. با گنجاندن آنها در اینجا، نویسنده محتوای JET می تواند نحوه پاسخگویی بخش به دستورات API برنامه ها را در طول بازی شبیه سازی کند.
پارامترهای بخش موارد زیر را انجام می دهند:
- نام بخش - نام بخش را تنظیم می کند
- فایل MIDI - نام و محل فایل MIDI که بخش از آن مشتق شده است. دکمه سمت راست بلافاصله مرورگری را برای مکان یابی فایل midi روی هارد دیسک نمایش می دهد.
- فایل DLS - نام و مکان فایل DLS2، در صورت وجود، که فایل MIDI برای آن بخش استفاده می کند.
- شروع M/B/T - شروع اندازه گیری، ضربه و تیک قطعه
- پایان M/B/T - اندازه گیری، ضرب و تیک پایان بخش
- Quantize - مقدار کمی کردن بخش فعلی در حین پخش
زمینه های آزمون به شرح زیر است:
- Track Mutes - آهنگ های MIDI (نه کانال ها) را در فایل MIDI نشان می دهد. با کلیک بر روی چک باکس یک آهنگ، آن آهنگ قطع می شود.
- Channel - کانال MIDI اختصاص داده شده به هر آهنگ را نشان می دهد
- نام - رویداد متا نام آهنگ (در صورت وجود) را برای هر آهنگ نمایش می دهد
- Repeat - تعداد دفعاتی که یک بخش باید در طول پخش تکرار شود را نشان می دهد
- Transpose - جابهجایی را به صورت نیمهآهنگ یا نیمگام نشان میدهد که یک قطعه باید در حین پخش جابجا شود.
- در سمت راست پنجره Audition چند دکمه اضافی وجود دارد. اینها به صورت زیر عمل می کنند:
- OK - انتخاب OK تمام تنظیمات بخش را تأیید می کند و پنجره بخش را می بندد
- لغو - با انتخاب لغو هر گونه تغییر لغو می شود و پنجره بخش بسته می شود
- Replicate - پنجره Replicate Segment را برای وارد کردن چندین بخش به طور همزمان نمایش می دهد. زیر را ببینید.
- Play/Stop Segment - پخش بخش را با استفاده از ویژگی های بخش اختصاص داده شده شروع یا متوقف می کند.
- پخش/توقف فایل MIDI - پخش فایل MIDI را که بخش به آن اختصاص داده شده شروع یا متوقف می کند.
- مکث/رزومه - پخش را متوقف یا از سر می گیرد.
5.2 پنجره رویداد
همانطور که در تصویر زیر نشان داده شده است، پنجره رویداد جایی است که ویژگیهای رویداد یک بخش خاص تخصیص داده میشوند و مورد بررسی قرار میگیرند. برای افزودن یک رویداد به یک بخش، نویسنده باید ابتدا قسمتی را که حاوی رویداد است انتخاب کند، سپس دکمه افزودن را انتخاب کند. با این کار پنجره Event ظاهر می شود.
دو بخش اصلی در پنجره رویداد وجود دارد. بخش بخش در سمت چپ پنجره رویداد فقط برای نمایش است. نشان می دهد که ویژگی های بخش برای بخش داده شده چیست. بخش رویداد، در سمت راست، جایی است که رویدادها را می توان اختصاص داد. پارامترهای زیر در دسترس هستند:
نام رویداد - نامی را به یک رویداد اختصاص می دهد
نوع رویداد - نوع رویداد را انتخاب می کند.
شروع M/B/T - معیار شروع، ضرب و تیک را برای رویداد تنظیم می کند
پایان M/B/T - در صورت وجود، اندازه گیری پایان، ضرب و تیک را برای رویداد تنظیم می کند.
آهنگ - تعیین می کند که رویداد برای کدام آهنگ در بخش داده شده اعمال شود
کانال - تعیین می کند که رویداد برای کدام کانال MIDI اعمال شود. کانال MIDI باید با کانال MIDI آهنگ مطابقت داشته باشد
شناسه رویداد - شناسه رویداد را برای رویداد تنظیم می کند. رویدادهای متعددی را می توان به یک بخش اختصاص داد و بنابراین از شناسه رویداد برای شناسایی آنها استفاده می شود
در سمت راست پنجره Audition چند دکمه اضافی وجود دارد. اینها به صورت زیر عمل می کنند:
OK - انتخاب OK تمام تنظیمات رویداد را تأیید می کند و پنجره رویداد را می بندد
لغو - با انتخاب لغو هرگونه تغییر لغو شده و پنجره رویداد بسته می شود
Replicate - پنجره Replicate Event را برای وارد کردن چندین رویداد به طور همزمان نمایش می دهد. زیر را ببینید.
Play/Stop - پخش بخش را با استفاده از ویژگی های بخش اختصاص داده شده شروع یا متوقف می کند. در حالی که بخش در حال پخش است، رویدادها می توانند فعال شوند و مورد آزمایش قرار گیرند.
Trigger - رویداد اختصاص داده شده را فعال می کند. این دستور API را تکرار می کند که بازی JET از آن برای راه اندازی رویداد استفاده می کند، بنابراین به نویسنده محتوا روشی برای بررسی رفتار رویداد ارائه می دهد.
Mute/UnMute - Mute/UnMute آهنگی را که رویداد به آن اختصاص داده شده قطع یا لغو می کند
مکث/رزومه - پخش را متوقف یا از سر می گیرد.
برای استماع رفتار یک رویداد، میتوانید دکمه Play را انتخاب کنید. این کار پخش را آغاز می کند. با فشار دادن دکمه ماشه رویداد ماشه را ارسال می کند. این معادل انتخاب رویداد ماشه سبز در جدول زمانی است.
توجه: رویدادهای راهانداز برای لغو نادیده گرفتن یک تراک از یک بخش در هنگام راهاندازی، سپس بیصدا کردن آن آهنگ در انتهای بخش راهانداز است. بنابراین، باید مطمئن شوید که پرچم بیصدا برای بیصدا کردن مسیر تنظیم شده است که یک رویداد ماشه هنگام دریافت یک رویداد ماشه، قطع میشود.
لطفاً بخش 6 Under The Hood را برای جزئیات بیشتر در مورد نحوه عملکرد و رفتار رویدادهای محرک در زیر بخوانید.
5.3 ویندوز را تکرار کنید
اغلب در ایجاد فایل های JET، باید ده ها یا حتی صدها رویداد ایجاد کنید. همچنین ممکن است لازم باشد رویدادها را جابجا کنید. پنجره های Replicate و Move این امکان را می دهند. دو پنجره Replicate برای ایجاد چند بخش یا رویداد وجود دارد. آنها شبیه زیر هستند:
تکرار کردن پنجره بخش
پنجره رویداد تکراری
هر دو ویندوز Replicate عملکرد یکسانی دارند. پس از ایجاد یک قطعه یا رویداد اولیه، می توانید دکمه Replicate را انتخاب کنید. پارامترها به شرح زیر است:
پیشوند نام - پیشوند نام هر بخش یا رویداد ایجاد شده را تعیین می کند
شروع M/B/T - زمان شروع اولین بخش یا رویداد را تنظیم می کند
افزایش M/B/T - زمان بین بخش ها یا رویدادهای ایجاد شده را تنظیم می کند.
Number - تعداد بخش ها یا رویدادهایی را که می خواهید ایجاد کنید را تنظیم می کند. اگر تعداد از طول فایل MIDI (برای بخش ها) یا بخش (برای رویدادها) فراتر رود، آن اشیا ایجاد نمی شوند.
پیش نمایش - پیش نمایش به شما امکان می دهد اشیاء ایجاد شده را قبل از گفتن OK برای درج آنها بررسی کنید.
5.4 انتقال ویندوز
تابع Move مشابه تابع Replicate عمل می کند زیرا به شما امکان می دهد چندین بخش یا رویداد را در یک زمان ویرایش کنید، در این مورد آنها را در زمان جابجا کنید. مانند Replicate، دو پنجره Move وجود دارد، یکی برای Segments و دیگری برای Events. ظاهر پنجره ها به شکل زیر است:
انتقال پنجره رویداد
برای استفاده از Move، ابتدا بخشها یا رویدادهایی را که میخواهید در زمان جابجا شوند انتخاب کنید، سپس روی دکمه Move کلیک کنید. پارامترها به شرح زیر است:
شروع M/B/T - زمان شروع اولین بخش یا رویداد را تنظیم می کند
افزایش M/B/T - زمانی را بر حسب M/B/T تنظیم می کند که می خواهید اجسام را بر اساس آن جابجا کنید.
پیش نمایش - پیش نمایش به شما اجازه می دهد تا اشیاء ایجاد شده را قبل از گفتن OK بررسی کنید تا آنها را جابجا کنید.
5.5 پنجره استماع
با کلیک بر روی دکمه Audition در پنجره اصلی برنامه JET Creator، پنجره Audition باز می شود. اینجاست که نویسنده محتوا یا برنامه نویس برنامه می تواند پخش تعاملی را همانطور که ممکن است در خود برنامه تلفن همراه یا بازی رخ دهد شبیه سازی کند.
پنجره JET Audition
چهار بخش اصلی در پنجره استماع وجود دارد. بخش اکثر سمت چپ بخش های موجود و طول آنها را بر حسب ثانیه نمایش می دهد. بخش میانی یک لیست در حال اجرا از بخش هایی که برای پخش در صف قرار می گیرند و وضعیت پخش آنها در چه وضعیتی است را نشان می دهد. بخش سمت راست، پرچمهای بیصدا را برای بخش در حال پخش نمایش میدهد. بخش تایم لاین در پایین مانند پنجره اصلی است. این بخش بخش در حال پخش و همچنین نمایش بصری هر عامل رویداد مرتبط با آن بخش را نمایش می دهد.
پنجره Audition به شما این امکان را می دهد که هر بخش را به هر ترتیبی برای پخش در صف قرار دهید. برای انجام این کار کافی است قسمتی را که می خواهید علامت گذاری کنید انتخاب کنید و روی Queue بزنید. آن بخش در پنجره صف ظاهر می شود و شروع به پخش می کند (اگر اولین بخش باشد). متعاقباً میتوانید هر بخش یا بخش دیگری را انتخاب کنید و آنها را برای پخش علامت بزنید. همانطور که بخش ها پخش را کامل می کنند، قسمت بعدی در صف پخش می شود. همانند سایر پنجرههای JET Creator، میتوانید همزمان با پخش هر بخش، کلیپهای رویداد را بیصدا، لغو، راهاندازی کنید، و غیره را بیصدا کنید.
به طور خاص دکمه ها به صورت زیر عمل می کنند:
صف - بخش انتخاب شده را در صف بارگذاری می کند و پخش را شروع می کند
لغو و صف - بخش در حال پخش را قبل از قرار دادن بخش انتخاب شده برای پخش در صف لغو می کند
Cancel Current - بخش در حال پخش در صف را لغو می کند و پخش بخش بعدی را آغاز می کند
توقف - پخش تمام بخش های در صف را متوقف می کند
بیصدا کردن همه - همه آهنگها را در بخش فعلی بیصدا میکند
بیصدا کردن هیچکدام - همه آهنگها را در بخش فعلی لغو میکند
صداهای اصلی - پرچم های بی صدا اصلی را برای بخش فعلی تنظیم می کند
ترکیبی از این گزینههای پخش به یک نویسنده یا برنامهنویس برنامه اجازه میدهد تا هر رفتاری را که ممکن است یک برنامه موسیقی تعاملی با آن مواجه شود، بررسی کند.
5.6 منوهای ایجاد JET
منوهای JET Creator دسترسی به بسیاری از پارامترهای پنجره اصلی به اضافه چند پارامتر اضافی را فراهم می کنند.
5.6.1 منوی فایل
منوی فایل شامل عناصر زیر است:
جدید - یک فایل JET Creator جدید (jtc.) ایجاد می کند
Open - یک فایل JET Creator موجود را باز می کند
ذخیره - فایل JET Creator باز شده را ذخیره می کند
Save As - فایل JET Creator را که در حال حاضر باز شده است را در یک فایل جدید ذخیره می کند
پروژه واردات - بایگانی سازنده JET را وارد می کند (zip.)
پروژه صادرات - بایگانی سازنده JET (.zip) را صادر می کند
خروج - از برنامه خارج می شود
5.6.2 منوی ویرایش
منوی ویرایش شامل عناصر زیر است:
واگرد - واگرد آخرین ویرایش انجام شده را لغو می کند
Redo - Redo آخرین واگرد را دوباره انجام می دهد
برش - پارامتر انتخاب شده را در کلیپ بورد کپی کنید و انتخاب را حذف کنید
کپی - پارامتر انتخاب شده را در کلیپ بورد کپی کنید و انتخاب را نگه دارید
چسباندن - چسباندن پارامتر انتخاب شده
5.6.3 جت
منوی ویرایش شامل عناصر زیر است:
Properties - پنجره اولویت های JET Creator را نشان می دهد. این پنجره به شما امکان می دهد شرایط زیر را برای یک فایل JET معین تنظیم کنید:
اطلاعات حق چاپ - حاوی اطلاعات حق چاپ برای درج در فایل JET است
Chase Controllers - گزینه ای برای تعقیب و گریز کنترل کننده ها (روشن/خاموش). این معمولا باید ON باشد.
حذف آهنگ های خالی - هر آهنگ MIDI خالی را حذف می کند
5.6.4 بخش ها
منوی بخش ها شامل عناصر زیر است:
افزودن بخش - پنجره Segment را باز می کند
به روز رسانی بخش - ویژگی های بخش را به روز می کند
حذف بخش - بخش فعلی را از لیست بخش حذف می کند
5.6.5 راهنما
منوی راهنما حداقل شامل عناصر زیر خواهد بود:
JET Creator Help - سند راهنمای PDF را راه اندازی می کند یا به راهنمای آنلاین می رود
درباره - شماره نسخه JET Creator، اطلاعات SONiVOX
6 رویدادهای ماشه توضیح داده شده است
شکستن یک فایل MIDI به بخش های منفرد (غیر خطی) و قرار دادن آن بخش ها برای پخش در یک بازی بر اساس رویدادهای درون بازی، یکی از راه های تعاملی بودن فایل های موسیقی JET است. رویدادهای ماشه یک روش اضافی برای پخش تعاملی هستند. هر دو با هم در یک بازی یا برنامه تعاملی استفاده می شوند.
رویدادهای ماشه موارد زیر را امکان پذیر می کند:
- آهنگ های موجود در بخش MIDI را می توان بر اساس رویدادهای بازی روشن یا خاموش کرد. برای مثال آهنگساز میتواند دو آهنگ درام بنویسد، یکی سریع و دیگری آهسته. اگر اکشن در یک بازی سریع باشد، آهنگ سریع درام می تواند پخش شود. اگر اکشن در بازی کند باشد، آهنگ آهسته درام می تواند پخش شود.
- کنشهای کاربر را میتوان با رویدادهای ماشهای مقایسه کرد که از قبل در یک فایل موسیقی در مکانهای درست از نظر موسیقی درج شدهاند. بر اساس نتایج، امتیاز گیری یا سایر اقدامات بازی می تواند انجام شود.
- انتقال های موسیقی بین سطوح یا سکانس های اکشن را می توان هماهنگ کرد تا از نظر موسیقی یکپارچه باشد.
زیر کاپوت، JET از رویدادهای استاندارد MIDI CC برای انجام این اقدامات و همگام سازی صدا استفاده می کند. کنترل کننده های مورد استفاده توسط JET از جمله کنترل کننده هایی هستند که در مشخصات برای استفاده خاص تعریف نشده اند. تعاریف خاص کنترلر به شرح زیر است:
کنترلرهای 80-83 برای استفاده توسط برنامه رزرو شده است
نشانگر رویداد Controller 102 JET
کنترلر 103 نشانگر گیره JET
کنترلرهای 104-119 برای استفاده در آینده رزرو شده است
نشانگر گیره JET 6.1 (CC103)
کنترلر 103 برای علامتگذاری کلیپها در یک آهنگ MIDI که میتواند با فراخوانی API JET_TriggerClip فعال شود، رزرو شده است. شناسه کلیپ در 6 بیت پایین مقدار کنترلر کدگذاری می شود. بیت 6 برای نشان دادن شروع یک کلیپ روی یک و برای نشان دادن پایان یک کلیپ روی صفر تنظیم شده است.
به عنوان مثال، برای شناسایی یک کلیپ با شناسه کلیپ 1، نویسنده یک رویداد کنترلر MIDI با controller=103 و value=65 در ابتدای کلیپ و یک رویداد دیگر با controller=103 و مقدار=1 در انتهای کلیپ درج می کند. کلیپ هنگامی که تابع ()JET_TriggerClip با شناسه کلیپ 1 فراخوانی می شود، هنگامی که با مقدار کنترلر 65 مواجه شد، آهنگ قطع می شود و هنگامی که با مقدار کنترلر 1 مواجه می شود، دوباره بی صدا می شود.
شکل 5: کلیپ همگام
در شکل بالا، اگر تابع ()JET_TriggerClip قبل از اولین رویداد کنترلر فراخوانی شود، آهنگ 3 با رخ دادن اولین رویداد کنترل کننده، نادیده گرفته می شود، اولین کلیپ پخش می شود، و آهنگ با کنترل کننده دوم قطع می شود. رویداد رخ می دهد اگر تابع JET_TriggerClip () پس از وقوع اولین رویداد کنترلر فراخوانی شود، آهنگ 3 با وقوع سومین رویداد کنترل کننده، قطع می شود، کلیپ دوم پخش می شود و با وقوع چهارمین رویداد کنترل کننده، آهنگ دوباره بی صدا می شود.
توجه: به طور معمول، زمانی که بخش در ابتدا با فراخوانی به JET_QueueSegment () در صف قرار می گیرد، تراک حاوی کلیپ توسط برنامه بی صدا می شود. اگر بی صدا نباشد، کلیپ همیشه پخش می شود تا زمانی که Jet_TriggerClip() با شناسه کلیپ فراخوانی شود.
نشانگر رویداد 6.2 JET (CC102)
کنترلر 102 برای علامت گذاری رویدادها در جریان های MIDI که مختص عملکرد JET هستند، رزرو شده است. در حال حاضر، تنها مقدار تعریف شده 0 است که پایان یک بخش را برای اهداف زمان بندی نشان می دهد.
به طور معمول، JET پخش بخش بعدی را شروع می کند (یا قسمت فعلی را تکرار می کند) زمانی که متا رویداد پایان مسیر MIDI مواجه می شود. برخی از ابزارهای تألیف MIDI، قرار دادن نشانگر انتهای مسیر را با دقت دشوار میکنند و در نتیجه هنگام اتصال بخشها به هم، مشکلات همگامسازی ایجاد میشود.
برای جلوگیری از این مشکل، نویسنده میتواند نشانگر انتهای بخش JET (کنترلکننده=102، مقدار=0) را در نقطهای که قطعه قرار است حلقه شود، قرار دهد. وقتی با نشانگر انتهای بخش مواجه میشوید، بخش بعدی فعال میشود، یا اگر بخش فعلی حلقه شود، پخش در ابتدای بخش از سر گرفته میشود.
نشانگر پایان بخش همچنین می تواند برای تکمیل یک فیگور موسیقی فراتر از پایان اندازه گیری که شروع بخش بعدی را نشان می دهد استفاده شود. به عنوان مثال، نویسنده محتوا ممکن است یک بخش 4 نواری با پر کردن درام ایجاد کند که به ضرب 1 از نوار پنجم ختم می شود، یک نوار فراتر از انتهای طبیعی بخش. با قرار دادن یک نشانگر انتهای بخش در انتهای نوار چهارم ، بخش بعدی فعال می شود، اما پر شدن درام به موازات بخش بعدی ادامه می یابد که تداوم موسیقی را فراهم می کند.
شکل 6: نشانگر انتهای بخش
6.3 کنترلکنندههای برنامه (CC80-83)
برنامه ممکن است از کنترلرهایی در این محدوده برای اهداف خود استفاده کند. هنگامی که با یک کنترلر در این محدوده مواجه می شوید، رویداد وارد یک صف رویداد می شود که می تواند توسط برنامه پرس و جو شود. برخی از کاربردهای احتمالی شامل همگام سازی رویدادهای ویدیویی با صدا و علامت گذاری نقطه ای در یک بخش MIDI برای قرار دادن بخش بعدی است. محدوده کنترلرهای نظارت شده توسط برنامه را می توان توسط برنامه در طول مقداردهی اولیه تغییر داد.
7 دستورالعمل ایجاد JET
7.1 ترتیب وظایف
مانند همه پروژه ها، بهتر است قبل از شروع آهنگسازی خود، طرح موسیقی تعاملی را با طراح و برنامه نویس بازی در میان بگذارید و طراحی کنید. یک طرح کلی و/یا مشخصات می تواند تا حد زیادی شما را از انجام مجدد کارها پس از اجرای بازی نجات دهد.
به طور کلی، ابتدا باید موسیقی خود را در DAW انتخابی خود به روشی که به آهنگسازی عادت کرده اید بنویسید، سپس فایل MIDI نهایی را در صورت نیاز برای برنامه جدا کنید. در مرحله بعد، به JET Creator بروید و تمام بخشهای موسیقی خود را به آسانترین ترتیب ایجاد کنید تا هنگام پخش به ترتیب پیشنمایش آنها را مشاهده کنید. در نهایت، رویدادهای JET را اضافه کنید تا بخشها را از طریق بازی اندروید کنترل کنید و در صورت نیاز در JET Creator آنها را استماع کنید. در نهایت پروژه را در JET Creator ذخیره کنید و فایل .jet را به برنامه نویس بسپارید تا در بازی ادغام شود. پس از پیش نمایش، احتمالاً تغییراتی در فایل(های) MIDI و ویژگی های JET Creator ایجاد خواهد شد.
7.2 حفظ حافظه
اگر میخواهید حافظه را ذخیره کنید، تا حد امکان فایلهای MIDI کمتری بنویسید و چندین بخش از آن فایل MIDI ایجاد کنید. به عنوان مثال یک فایل MIDI 12 نواری با سه بخش 4 نواری، A، B، C، می تواند آهنگ بسیار طولانی تری ایجاد کند. به سادگی چندین بخش ایجاد کنید که به یک فایل MIDI اشاره دارد، سپس آنها را هر طور که دوست دارید سفارش دهید. به عنوان مثال، A، A، B، A، C، A، B، A، A یک آهنگ 36 نواری ایجاد می کند. از JET برای افزودن تکرار، جابجایی بخشها و بیصدا کردن و بیصدا کردن آهنگها به صورت تعاملی استفاده کنید تا جالبتر بماند.
7.3 تکرار
برای اضافه کردن بخش ها یا رویدادها سریعتر ، از دستور تکرار استفاده کنید. تکثیر می تواند چندین بخش یا رویدادها را به طور همزمان اضافه کند و از یک پارامتر افست و کنوانسیون نامگذاری پیشوند استفاده می کند تا خواندن چیزها آسان باشد. دستور حرکت همچنین برای جابجایی چندین رویداد با تعداد مشخصی از اقدامات ، ضرب و شتم ها یا کنه ها مفید است.
7.4 گزینه های تعاملی
چندین مفهوم صوتی تعاملی در جت وجود دارد. در زیر چند نمونه وجود دارد اگرچه امیدواریم توسعه دهندگان با دیگران بیایند که به آنها فکر نکرده ایم! اینها عبارتند از:
7.4.1 بخش چندگانه
در این روش برنامه در حال ایجاد بخش های خاص بر اساس وقایع بازی است. به عنوان مثال ، یک راهرو با بسیاری از دعوا ممکن است باعث ایجاد بخش 1 شود و یک راهرو بدون درگیری ممکن است باعث ایجاد بخش 2 شود. استفاده از TriggerClips در رابطه با این روش تنوع بیشتری را ایجاد می کند.
7.4.2 آرایه های بی صدا
در این روش ، برنامه باعث ایجاد وقایع بی صدا و غیرمجاز به آهنگ های خاص در یک دنباله MIDI واحد می شود. به عنوان مثال ، یک راهرو با جنگ های زیادی ممکن است آهنگ های MIDI 1-16 را بازی کند و یک راهرو که هیچ دعوا نمی تواند همان پرونده MIDI را بازی کند اما آهنگ های بی صدا 9-16. استفاده از TriggerClips در رابطه با این روش تنوع بیشتری را ایجاد می کند.
7.4.3 گیم پلی موسیقی محور
بازی های محور موسیقی شبیه به آنچه Guitar Hero و Jetboy انجام داده اند در این مورد که محتوای موسیقی نحوه نمایش رویدادهای گرافیکی را تعیین می کند. سپس برنامه پاسخ کاربر به رویدادهای گرافیکی را نشان می دهد و در پاسخ به طور تعاملی موسیقی را اصلاح می کند. در این روش بازی از برنامه های کاربردی JET استفاده می کند ، کنترل کننده های MIDI که در پرونده MIDI تعبیه شده و توسط بازی در زمان واقعی خوانده می شوند. بر اساس پاسخ کاربر ، می توان آرایه های تحریک کننده و/یا بی صدا را تنظیم کرد.