OSC In CHOP

خلاصه (Summary)

اپراتور OSC In CHOP برای دریافت پیام‌های Open Sound Control (OSC) استفاده می‌شود.
OSC In می‌تواند پیام‌ها را از یک اپلیکیشن شخص ثالث که از مشخصات استاندارد Open Sound Control پیروی می‌کند دریافت کند
( http://www.cnmat.berkeley.edu/OpenSoundControl/ ).

OSC In بر پایه‌ی یک سیستم بدون اتصال (Connection-less) کار می‌کند؛ به این معنا که می‌تواند به‌طور هم‌زمان پیام‌های متعددی را از هر تعداد منبع مختلف دریافت کند.

کاربر باید یک شماره پورت مشخص کند که OSC In پیام‌های ورودی را روی آن دریافت کند.
این پورت نباید پیش از استفاده‌ی OSC In توسط برنامه‌ی دیگری اشغال شده باشد.

CHOPهای OSC در TouchDesigner از پروتکل انتقال UDP استفاده می‌کنند.

همچنین ببینید:
OSC In DAT، OSC Out CHOP، iOS and OSC، Touch In CHOP


گزینه‌هایی وجود دارد که به کاربر اجازه می‌دهد سیستم پیش‌فرض صف‌بندی پیام‌ها (Message Queue) را برای بهینه‌سازی متناسب با شرایط شبکه و نیازهای استفاده‌ی خود تنظیم کند.

پارامترهای Min/Max Target size محدوده‌ای را مشخص می‌کنند که صف تلاش می‌کند اندازه‌ی بافر را در آن (بر حسب ثانیه) نگه دارد.
افزایش مقدار Queue Adjust Time تعیین می‌کند که صف چه مدت می‌تواند خارج از این محدوده باقی بماند قبل از آن‌که تلاش کند آن را اصلاح کند.

اگر کاربر بخواهد از OSC In فقط برای تشخیص زمان رسیدن پیام‌ها استفاده کند، گزینه‌ی Pulse Mode وجود دارد.
در این حالت، هنگام رسیدن هر پیام ورودی تنها یک سمپل خوانده می‌شود و در سایر زمان‌ها مقادیر کانال‌ها روی حالت Reset Pulse باقی می‌مانند.

این قابلیت برای همگام‌سازی ضرب (Beat Sync) بین TouchDesigner و برنامه‌های دیگر بسیار کاربردی است.

نکته برای ویندوز:
در صورت بروز مشکل در اتصال، مطمئن شوید که Windows Firewall غیرفعال باشد.


محتوا (Contents)

  1. خلاصه

  2. پارامترها – صفحه OSC In

  3. پارامترها – صفحه Common

  4. کانال‌های Info CHOP
      4.1 کانال‌های اطلاعات اختصاصی OSC In CHOP
      4.2 کانال‌های اطلاعات عمومی CHOP
      4.3 کانال‌های اطلاعات عمومی اپراتور


پارامترها – صفحه OSC In

Active (active)
در صورت روشن بودن، CHOP اطلاعات ارسال‌شده به پورت شبکه را دریافت می‌کند.
در صورت خاموش بودن، هیچ به‌روزرسانی‌ای انجام نمی‌شود و داده‌های ارسال‌شده به پورت از بین می‌روند.

Protocol (protocol)
پروتکل شبکه‌ای که استفاده می‌شود.
برای اطلاعات بیشتر به مقاله‌ی Network Protocols مراجعه کنید.

Network Address (netaddress)
در حالت Multicast، این آدرسی است که OSC In بسته‌های شبکه را روی آن گوش می‌دهد.

Network Port (port)
پورتی که OSC In بسته‌های ورودی را از آن دریافت می‌کند.

Local Address (localaddress)
مشخص کردن یک IP برای دریافت داده‌ها؛
این گزینه زمانی مفید است که سیستم دارای چند کارت شبکه (NIC) باشد و بخواهید مشخص کنید کدام‌یک استفاده شود.

OSC Address Scope (oscaddressscope)
برای محدود کردن کانال‌های تولیدشده، می‌توان از الگوهای نام کانال جهت شامل یا حذف کردن کانال‌ها استفاده کرد.

مثال:
^*accel*
باعث می‌شود کانال‌های مربوط به شتاب‌سنج (accelerometer) که از آیفون یا اپ‌های iOS مثل mrmr می‌آیند، حذف شوند.

برای جزئیات بیشتر، بخش Pattern Matching را ببینید.

Use Global Rate (useglobalrate)
در صورت فعال بودن، CHOP با نرخ نمونه‌برداری سراسری (Global Sample Rate) تعیین‌شده در TouchDesigner سمپل‌برداری می‌کند.

Default Sample Rate (samplerate)
وقتی Use Global Rate خاموش است، این پارامتر نرخ نمونه‌برداری این CHOP را مشخص می‌کند.

Queued (queued)
با روشن کردن این گزینه، صف‌بندی فعال می‌شود تا از از دست رفتن پیام‌ها جلوگیری شود.
پارامترهای زیر برای تنظیم رفتار صف استفاده می‌شوند.

Queue Variance (queuevariance)
محدوده‌ی قابل قبول اطراف مقدار Queue Target.
اگر طول صف در محدوده‌ی Target + Variance باشد، CHOP تلاشی برای اصلاح صف نمی‌کند.

Queue Variance Unit (queuevarianceunit)
انتخاب واحد این پارامتر بین Samples، Frames یا Seconds.

Maximum Queue (maxqueue)
حداکثر اندازه‌ی صف در حالت پر.
اگر صف به این مقدار برسد، سمپل‌های ورودی جدید حذف می‌شوند.

Max Queue Unit (maxqueueunit)
انتخاب واحد بین Samples، Frames یا Seconds.

Queue Adjust Time (adjusttime)
مشخص می‌کند هر چند وقت یک‌بار سمپل‌ها تکرار یا حذف شوند تا صف به محدوده‌ی هدف نزدیک‌تر شود.

مثال:
اگر مقدار = 1 و واحد = Seconds باشد، سیستم هر یک ثانیه یک سمپل را تکرار یا حذف می‌کند تا صف در محدوده‌ی Min/Max Target باقی بماند.

Adjust Unit (adjusttimeunit)
انتخاب واحد بین Samples، Frames یا Seconds.

Strip Prefix Segments (stripsegments)
تعدادی از بخش‌های ابتدایی آدرس OSC را حذف می‌کند.

مثال:
اگر آدرس /a/b/c/d/e باشد و 3 Segment حذف شوند، نتیجه d/e خواهد بود
(یا d_e به‌عنوان نام نهایی کانال).

Reset Channels (resetchannels)
در صورت فعال بودن، تمام کانال‌ها حذف می‌شوند و تا زمانی که خاموش نشود، کانال جدیدی اضافه نمی‌شود.

Reset Channels Pulse (resetchannelspulse)
به‌صورت آنی تمام کانال‌ها را حذف می‌کند.

Reset Values (resetvalues)
در صورت روشن بودن، مقدار تمام کانال‌ها روی 0 تنظیم می‌شود و تا خاموش شدن آن، مقادیر جدید دریافت نمی‌شوند.

Reset Values Pulse (resetvaluespulse)
به‌صورت آنی مقدار تمام کانال‌ها را به 0 بازنشانی می‌کند.


پارامترها – صفحه Common

Time Slice (timeslice)
با فعال‌سازی این گزینه، کانال‌ها به‌صورت Time Slice پردازش می‌شوند.
Time Slice فاصله‌ی زمانی بین آخرین فریم Cook شده و فریم فعلی است.

Scope (scope)
برخی CHOPها از Scope String برای تعیین کانال‌های تحت تأثیر استفاده می‌کنند.

Sample Rate Match (srselect)
مدیریت تفاوت نرخ نمونه‌برداری بین CHOPهای ورودی.
در صورت Resampling، منحنی‌ها با روش Interpolation انتخاب‌شده یا به‌صورت Linear درون‌یابی می‌شوند.

Export Method (exportmethod)
نحوه‌ی اتصال کانال CHOP به پارامتر را تعیین می‌کند.
برای اطلاعات بیشتر به مقاله‌ی Export مراجعه کنید.

Export Root (autoexportroot)
مسیر نود ریشه‌ای که Exportها نسبت به آن تعریف می‌شوند.

Export Table (exporttable)
DAT مورد استفاده برای ذخیره‌ی اطلاعات Export هنگام استفاده از روش‌های مبتنی بر جدول.


کانال‌های Info CHOP

اطلاعات تکمیلی مربوط به OSC In CHOP از طریق Info CHOP قابل دسترسی است.

کانال‌های اختصاصی OSC In CHOP

  • queue_length — طول فعلی صف

  • time_queue_under_min_target — مدت زمانی که صف کمتر از حداقل هدف بوده است

  • time_queue_over_max_target — مدت زمانی که صف بیشتر از حداکثر هدف بوده است

  • queue_retarded_total — مجموع دفعاتی که صف عقب نگه داشته شده است

  • queue_advanced_total — مجموع دفعاتی که صف جلو انداخته شده است

  • total_bumped — تعداد کل سمپل‌هایی که حذف شده‌اند

کانال‌های اطلاعات عمومی CHOP

  • start — شروع بازه‌ی CHOP بر حسب سمپل

  • length — تعداد سمپل‌ها

  • sample_rate — نرخ نمونه‌برداری (فریم بر ثانیه)

  • num_channels — تعداد کانال‌ها

  • time_slice — اگر Time Slice فعال باشد 1، در غیر این صورت 0

  • export_sernum — تعداد به‌روزرسانی‌های اتصال Export

کانال‌های اطلاعات عمومی اپراتور

  • total_cooks — تعداد دفعات Cook شدن اپراتور از شروع اجرا

  • cook_time — مدت زمان آخرین Cook (میلی‌ثانیه)

  • cook_frame — شماره فریم آخرین Cook نسبت به تایم‌لاین کامپوننت

  • cook_abs_frame — شماره فریم آخرین Cook نسبت به زمان مطلق

  • cook_start_time — زمان شروع Cook (میلی‌ثانیه)

  • cook_end_time — زمان پایان Cook (میلی‌ثانیه)

  • cooked_this_frame — اگر در این فریم Cook شده باشد مقدار 1

  • warnings — تعداد هشدارها

  • errors — تعداد خطاها