🧭 خلاصه (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)
سه مرحله به ترتیب انجام میشود:
Pre-Add (preoff) → ابتدا به هر نمونه مقدار اضافه میکند.
Multiply (gain) → سپس در این مقدار ضرب میکند.
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 0 | CHOP یا 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 | تعداد هشدارها یا خطاها. |
