(مدیریت رویدادهای هم‌پوشان، مشابه سیستم ذرات برای کنترل ورودی‌ها مثل 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)


ورودی‌ها

  1. ورودی اول: برای تریگر رویدادها

  2. ورودی دوم: برای ریست کردن تریگرها

  3. ورودی سوم (اختیاری): برای نمونه‌برداری از مقادیر خاص برای هر رویداد


📘 همچنین ببینید:

  • 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 – تعداد هشدارها یا خطاها