🧭 خلاصه (Summary)

Math CHOP عملیات‌های ریاضی را روی کانال‌های ورودی انجام می‌دهد.
این نود می‌تواند چند کانال از یک CHOP را با هم ترکیب کند تا یک کانال خروجی بسازد،
یا چندین CHOP را با هم ادغام کند تا یک خروجی نهایی تولید شود.

در صفحه‌ی OP می‌توان پیش از انجام عملیات اصلی، روی هر نمونه اعمالی مثل گرفتن قدر مطلق یا مجذور انجام داد.
در مرحله‌ی Combine Channels می‌توان نمونه‌های چند کانال را با هم جمع، ضرب، یا مقایسه کرد (مثلاً کمینه، بیشینه، میانگین).

در مرحله‌ی Combine CHOPs، چندین CHOP را با هم ترکیب می‌کند — به‌عنوان مثال کانال‌های CHOP اول را با CHOP دوم ضرب یا جمع می‌کند.

پس از آن، می‌توان روی نتایج نهایی عملیات پس‌پردازش (Post-Op) مثل منفی کردن یا گرفتن ریشه انجام داد.
در صفحه‌ی Mult-Add می‌توان مقادیر را ضرب و آفست کرد.
در صفحه‌ی Range می‌توان مقادیر را از یک بازه‌ی ورودی به بازه‌ی خروجی دلخواه مقیاس خطی (Linear Scaling) داد.
در پایان، می‌توان خروجی را گرد کرد (Round) تا فقط مقادیر عدد صحیح بدهد.

🔹 نکته: با پارامتر Scope در صفحه‌ی Common می‌توان مشخص کرد کدام کانال‌ها تحت تأثیر قرار بگیرند.
🔹 نکته: برای عملیات منطقی (AND، OR و …) باید از Logic CHOP استفاده شود.
🔹 نکته‌ی پیشرفته: می‌توان از متغیر chanIndex در پارامترهایی مثل Post-Add استفاده کرد
تا برای هر کانال مقدار متفاوتی تعریف شود. (مثلاً me.chanIndex*2)


⚙️ پارامترها – صفحه OP (Parameters – OP Page)

چهار مرحله‌ی اصلی به ترتیب زیر انجام می‌شود:

🔹 Channel Pre OP (preop)

اعمالی که به‌صورت تکی روی هر کانال انجام می‌شود (پیش از ترکیب):

گزینهتوضیح
Offهیچ کاری انجام نمی‌دهد.
Negateمقدار منفی هر نمونه را می‌گیرد.
Positiveهمه‌ی مقادیر را مثبت می‌کند (قدر مطلق).
Rootجذر هر مقدار را می‌گیرد.
Squareمقدار را به توان ۲ می‌رساند.
Inverseمعکوس هر مقدار را می‌گیرد (۱/x).

🔹 Combine Channels (chanop)

عملیاتی که بین کانال‌های یک CHOP انجام می‌شود:

گزینهتوضیح
Offهیچ ترکیبی انجام نمی‌دهد.
Addمجموع تمام کانال‌ها.
Subtractتفریق همه از کانال اول.
Multiplyضرب همه‌ی کانال‌ها.
Divideتقسیم کانال اول بر بقیه.
Averageمیانگین همه‌ی کانال‌ها.
Minimumکمترین مقدار بین کانال‌ها.
Maximumبیشترین مقدار بین کانال‌ها.
Lengthفرض بر بردار بودن کانال‌ها و محاسبه‌ی طول آن‌ها.

🔹 Combine CHOPs (chopop)

عملیات بین چندین ورودی CHOP:

گزینهتوضیح
Offهیچ ترکیبی انجام نمی‌دهد.
Addجمع کل CHOPها.
Subtractتفریق از CHOP اول.
Multiplyضرب تمام CHOPها.
Divideتقسیم CHOP اول بر بقیه.
Averageمیانگین همه‌ی ورودی‌ها.
Minimum / Maximumکمترین یا بیشترین مقدار.
Lengthطول برداری از ورودی‌ها.

🔹 Channel Post OP (postop)

عملیات نهایی روی نتایج ترکیب بالا، دقیقاً مانند Pre OP:

گزینهتوضیح
Offبدون تغییر
Negate / Positive / Root / Square / Inverseهمان گزینه‌های مرحله‌ی اول ولی بعد از ترکیب.

🔹 Match by (match)

مشخص می‌کند که کانال‌ها بین ورودی‌ها بر اساس نام یا شماره مطابقت داده شوند.

گزینهتوضیح
Channel Number (index)بر اساس شماره‌ی کانال.
Channel Name (name)بر اساس نام کانال.

🔹 Align (align)

وقتی ورودی‌ها شروع یا پایان زمانی متفاوتی دارند، مشخص می‌کند چگونه هم‌تراز شوند:

گزینهتوضیح
Automaticبه‌صورت خودکار تریم یا اکستند می‌کند.
Extend to Min/Maxورودی‌ها را به بازه‌ی مشترک بلندتر گسترش می‌دهد.
Stretch to Min/Maxورودی‌ها را کشیده و هم‌طول می‌کند.
Shift to Minimum / Maximumشروع یا پایان ورودی‌ها را هماهنگ می‌کند.
Trim / Stretch to First / Smallest Intervalتریم یا کشش بر اساس CHOP اول یا کوتاه‌ترین بازه.

🔹 Interp Pars per Sample (interppars)

در ورودی‌هایی با فرکانس بالا (مثل صوت)، از این گزینه استفاده می‌شود
تا در زمان تغییر پارامترهایی مثل Multiply یا Add صدای “کلیک” یا “کراکل” ایجاد نشود.


🔹 Integer (integer)

نتایج را به اعداد صحیح تبدیل می‌کند:

گزینهتوضیح
Offبدون تغییر.
Ceilingگرد به بالا.
Floorگرد به پایین.
Roundگرد به نزدیک‌ترین عدد.

⚙️ پارامترها – صفحه Mult-Add (Parameters – Mult-Add Page)

سه مرحله به ترتیب انجام می‌شود:

  1. Pre-Add (preoff) → ابتدا به هر نمونه مقدار اضافه می‌کند.

  2. Multiply (gain) → سپس در این مقدار ضرب می‌کند.

  3. Post-Add (postoff) → در پایان مقدار دیگری اضافه می‌کند.

ترکیب کلاسیک ریاضی:
Output = (Input + PreAdd) × Multiply + PostAdd


⚙️ پارامترها – صفحه Range (Parameters – Range Page)

آخرین مرحله قبل از خروجی‌گیری، برای مقیاس‌دهی بازه‌ها است.

پارامترتوضیح
From Range (fromrange)بازه‌ی ورودی (کمترین تا بیشترین مقدار).
To Range (torange)بازه‌ی خروجی که مقادیر به آن نگاشت می‌شوند.

مثال: اگر بخواهی ورودی بین ۰ تا ۱ را به خروجی بین -۵ تا ۵ تبدیل کنی،
From Range = 0→1 و To Range = -5→5


⚙️ پارامترهای مشترک – صفحه Common (Parameters – Common Page)

پارامترتوضیح
Time Slice (timeslice)خروجی فقط بین آخرین و فریم فعلی پردازش شود.
Scope (scope)انتخاب کانال‌هایی که باید تحت تأثیر قرار گیرند.
Sample Rate Match (srselect)نحوه‌ی هم‌زمان‌سازی نرخ نمونه‌برداری بین ورودی‌ها.
Export Method (exportmethod)نحوه‌ی اتصال خروجی به پارامترها یا DATها.
Export Root / Tableمسیر پایه و جدول داده‌های Export.

🔌 ورودی‌ها (Operator Inputs)

ورودیتوضیح
Input 0CHOP یا CHOPهایی که قرار است عملیات ریاضی روی آن‌ها انجام شود.

📊 Info CHOP Channels

🔹 Common CHOP Info Channels

پارامترتوضیح
startشروع بازه در نمونه‌ها.
lengthتعداد نمونه‌ها.
sample_rateنرخ نمونه‌برداری بر حسب فریم بر ثانیه.
num_channelsتعداد کانال‌ها.
time_sliceفعال بودن Time Slice.
export_sernumشمار دفعات به‌روزرسانی Export.

🔹 Common Operator Info Channels

پارامترتوضیح
total_cooksتعداد دفعات پردازش (Cook).
cook_timeمدت زمان Cook آخر (ms).
cook_frame / cook_abs_frameفریم نسبی و مطلق آخرین Cook.
cook_start_time / cook_end_timeزمان شروع و پایان Cook.
cooked_this_frameآیا در همین فریم پردازش شده یا نه.
warnings / errorsتعداد هشدارها یا خطاها.