(مدیریت رویدادهای همپوشان، مشابه سیستم ذرات برای کنترل ورودیها مثل MIDI)
خلاصه (Summary)
Event CHOP مسئول مدیریت ایجاد (birth) و زندگی (life) رویدادهای همپوشان است که توسط دستگاههایی مانند کیبورد MIDI ایجاد میشوند.
میتوان آن را بهعنوان یک سیستم ذرات ساده (simple particle system) برای کیبوردهای MIDI در نظر گرفت.
این CHOP برای هر رویداد روشن شدن (off-to-on) در کانالهای ورودی (که معمولاً از MIDI In CHOP، MIDI In Map CHOP، Keyboard In CHOP یا رویدادهای پایتون ارسالشده) میآیند، یک نمونه (sample) تولید میکند.
این نمونه تا پایان زمانهای Attack + Decay + Sustain + Release فعال باقی میماند.
💡 نکته: مثالها در مسیر Help → OP Snippets موجودند.
کاربردها
Event CHOP میتواند برای دنبالکردن یک کیبورد موسیقی پلیفونیک با MIDI velocity استفاده شود، و برای هر رویداد، یک شیء، پلیگون یا نمونهی هندسی (geometry instance) تولید کند.
این CHOP تضمین میکند که هر شیء تا پایان فاز ADSR زنده بماند.
معمولاً خروجی آن از طریق OPهای دیگر به پارامترهای Instance در یک Geometry Component وصل میشود.
خروجی Event CHOP شامل تا ۸ کانال است؛
برای هر رویداد فعال، یک نمونه تولید میشود.
این نمونه تا پایان فاز ADSR فعال میماند، و سپس از بین میرود (مانند مرگ ذره).
مشاهده و کاربرد
میتوانید با مشاهدهی نمودار کانالهای Event CHOP، عملکرد آن را درک کنید.
برای مثال، میتوانید آن را به یک Limit SOP یا Channel SOP متصل کنید تا برای هر رویداد یک هندسه در فضا قرار گیرد.
اطلاعات رویداد میتواند شامل موارد زیر باشد و برای کنترل ویژگیهای هندسه استفاده شود:
موقعیتها (tx, ty)
اندازه (scale)
زمان بافت یا ویدیو (texture v)
شفافیت (alpha)
رنگها (r, g, b)
در یک کیبورد MIDI، میتوانید چندین رویداد را بهطور همزمان فعال کنید، و مانند ذرات، ممکن است بخواهید اشیائی بسازید که حتی در فشار بعدی همان کلید، هنوز وجود داشته باشند.
Event CHOP برای چنین مواردی طراحی شده است:
با هر بار فشار هر کلید، یک نمونه ایجاد میکند که میتواند برای هر مدتی زنده بماند.
این CHOP بسیار سبک است؛ حتی برای کیبوردهای ۸۸ کلیدی نیز فقط حداقل تعداد لازم کانال و نمونه را ایجاد میکند.
کانالهایی وجود دارند که ویژگیهای زیر را نمایش میدهند:
age (سن رویداد)
note number (شماره نت)
velocity (سرعت یا شدت فشردن کلید)
released flag (آیا کلید رها شده است یا نه)
هر رویداد یک شناسهی منحصربهفرد در کانال id دارد؛ مثلاً میتوان از آن برای ایجاد جابهجایی تصادفی در XY برای هر نت استفاده کرد.
کانال state برای تعیین وضعیت رویداد طراحی شده است و از مقدار ۰ تا ۱ افزایش مییابد و بین ۱ تا ۲ در حالت sustain تکرار میشود، تا زمانی که وارد مرحله release شود و به ۲ تا ۳ برسد.
مثلاً برای انیمیشن پرنده:
۰ تا ۱ = فاز پرش (jump)
۱ تا ۲ = فاز پرواز (flapping)
۲ تا ۳ = فاز فرود (landing)
ورودیها
ورودی اول: برای تریگر رویدادها
ورودی دوم: برای ریست کردن تریگرها
ورودی سوم (اختیاری): برای نمونهبرداری از مقادیر خاص برای هر رویداد
📘 همچنین ببینید:
Timer CHOP
Count CHOP
Speed CHOP
Trigger CHOP
پارامترها – صفحه Channels
Event CHOP هفت کانال خروجی دارد که ویژگیهای هر رویداد را تعریف میکنند:
| کانال | توضیح |
|---|---|
| id | شمارهی ترتیبی رویداد، از ۰ شروع و برای هر رویداد جدید ۱ واحد افزایش مییابد. |
| index | شماره کانال ورودی که باعث ایجاد این رویداد شده است. |
| active | وقتی ورودی > 0 باشد، مقدار ۱ میگیرد (یعنی کلید روشن است). |
| input | مقدار ورودی در لحظهی روشن شدن (مثلاً velocity در MIDI). |
| time | زمان (بر حسب ثانیه) از شروع رویداد. |
| adsr | مقدار بر اساس فازهای Attack، Decay، Sustain، Release. |
| state | مناسب برای پخش ویدیوها؛ از ۰ تا ۳ حرکت میکند بسته به فاز ADSR. |
Reset Condition (شرایط ریست)
(تنها در صورت اتصال ورودی دوم فعال است)
offtoon – هنگام تغییر از خاموش به روشن
on – در حالت روشن
ontooff – هنگام تغییر از روشن به خاموش
off – در حالت خاموش
Reset (ریست)
اگر روی On باشد، همهی رویدادها را پاک میکند.
Reset Pulse (پالس ریست)
با کلیک، بلافاصله همهی رویدادها را پاک میکند.
Callbacks DAT (فایل کالبک)
مسیر یک DAT که شامل توابع onCreate() و onDestroy() برای هر رویداد است.
پارامترها – صفحه ADSR
| پارامتر | توضیح |
|---|---|
| Attack Time | زمان صعود به سطح ماکزیمم |
| Attack Level | سطح اوج در فاز Attack |
| Decay Time | زمان کاهش تا سطح Sustain |
| Sustain Time | مدت زمان نگهداری در فاز Sustain |
| Sustain Min / Max | حداقل و حداکثر سطح در فاز Sustain |
| Release Time | زمان کاهش تا پایان عمر |
| Release Level | سطح نهایی هنگام پایان |
| Speed | سرعت اجرای فازها (کشیدن یا کوتاه کردن طول عمر رویداد) |
| Global Speed | ضریب سرعت کلی برای همه رویدادها |
همهی این پارامترها میتوانند در واحدهای Samples، Frames یا Seconds تنظیم شوند.
پارامترها – صفحه Common
Time Slice: فعالسازی پردازش زمانبرشی
Scope: تعیین محدوده کانالهای تأثیرپذیر
Sample Rate Match: نحوهی برخورد با نرخهای متفاوت ورودیها
First / Max / Min / Error
Export Method: نحوهی خروجیدادن مقادیر کانالها
از طریق DAT Table یا مسیر پارامتر مستقیم
ورودیهای اپراتور (Operator Inputs)
Input 0: تریگر اصلی
Input 1: ریست تریگرها
Input 2: ورودی اختیاری برای مقادیر نمونهگیری
کانالهای Info CHOP
| کانال | توضیح |
|---|---|
| start | شروع محدوده CHOP بر حسب نمونهها |
| length | تعداد نمونهها |
| sample_rate | نرخ نمونهبرداری بر حسب فریم در ثانیه |
| num_channels | تعداد کانالها |
| time_slice | آیا Time Slice فعال است یا نه |
| export_sernum | شمارش بهروزرسانی ارتباطات خروجی |
کانالهای Info مشترک اپراتورها
total_cooks – تعداد دفعات پردازش
cook_time – مدت آخرین پردازش (ms)
cook_frame – شماره فریم آخرین پردازش
cook_abs_frame – فریم مطلق آخرین پردازش
cooked_this_frame – آیا در این فریم پردازش شده یا نه
warnings / errors – تعداد هشدارها یا خطاها
