معرفی :
تحقق بخشیدن به یک اثر چند رسانه ایی تعاملی (interactive multimedia) بدون داشتن دانش کافی از فناوری های امروزی ممکن نیست . فناوری اطلاعات ابزار های جدیدی معرفی کرده است که اجازه یک حالت تعامل طبییعی ، بر اساس حرکات بدن و صداها بین کاربر و اثر میدهد .
یک تکنولوژی که در برابر کاربر پنهان میماند ، در حالی که با ایجاد تماس مستقیم کاربر با اثر روی اثر، تاثییر میگذرد.
تاریخچه PureData :
در نیمه دوم دهه هشتاد نرم افزار Max در IRCAM توسط Miller Puckette ریاضیدانMIT متولد میشود .
سال 1988 Puckette یک مقاله تحت عنوان “The Patcher” ارائه میکند که او در آن به شرح یک ویرایشگر برای الگوریتم های موسیقی میپردازد که در آن از بخش هایی از آهنگ Pluton از Philippe Manoury استفاده میکند.
این اولین ظهور MAX بود که با افتخارMax Mathews (پیشگام موسیقی کامپیوتری) نامیده شده!
توسعه MAX ادامه پیدا میکند تا زمان توافق صنعتی با Opcode .شرکت آمریکایی توسعه آن را به David Zicarelli کسی که آنرا دوباره مهندسی کرد واگذار کرد، برای فروش.
اما Opcode امکان دخالت مستقیم در کد را از Puckette میگیرد و وی را محروم میکند .
سپس Opcode به کارخانه گیتار سازی Gibson فروخته میشود و تولید تمام محصولاتش متوقف میشود .
MAX از طریق شرکت تاسیس شده توسط Zicarelli شناسایی میشد .
Puckette به امریکا بازگشت دوباره درخواستی به مدیر MAX مینویسد که امکان توسعه (بازنویسی) آن را هنوز دارد و آن را PureData نامید . برای جلوگیری از اشتباهات گذشته، Puckette گواهی (مجوز) از نوع FreeBSD برای نرم افزار صادر میکند و آن را در واقع یک نرم افزار رایگان و GPL-compatibile معرفی میکند .
در بازنویسی، برخی از مشکلات که او با MAX داشت رفع میکند و پردازش سیگنال های صوتی را می افزاید .
این ویژگی آخر (پردازش سیگنال های صوتی) بعدا توسط Zicarelli بهبود پیدا میکند و در نهایت افزونه MSP را میسازد.
(که مخفف Max Signal Processing است ، اما حرف اول Puckette نیز میباشد)
Puredata :
مدیریت کنترل زمان واقعی (real-time)
مجموعه ای از وظایف در حال اجرا به صورت موازی
زمانبندی کار توسط تابع صبر (wait function)
Trigger : می تواند خارجی (به عنوان مثال master keyboard) باشد.
- به عنوان مثال پیانو متشکل از 91 وظیفه (task) میباشد (88 کلید + 3 پدال) نوازنده آن به عنوان trigger عمل میکند.
- ایده ها قبل از تولد MIDI
رابط کاربری گرافیکی -GUI- با استفاده از یک زبان بصری (از patch) ساخته شده است .
Pd vs Max :
Max/MSP و Pure Data اساسا مشابه هستند، اما :
-PureData یک نرم افزار متن باز (open source) است ، به همین دلیل می توان از وب سایت متفاوت و بیشماری آن را متناسب به سیستم عامل های مختلف دانلود کرد و تنها هزینه آن هزینه اتصال به اینترنت میباشد .
بنابرین میتواند آزادانه کپی کنید ، یاد بگیرید ، ویرایش کنید ، دوباره آن توزیع کنید ، در نتیجه برای آموزش بسیار مناسب است.
-PureData برای استفاده بسیار ساده و آسان است.
-معماری “plugin-like”
ماژول های اضافی می توانند نوشته شوند، وارد شده، و در زمان اجرا لود شوند .
-افزونه های متعدد و کتابخانه های اضافی. به خصوص GEM برای رندر کردن گرافیک
برنامه نویسی ویژوال (بصری)
- با یک محیط برنامه نویسی بصری برای ایجاد سیستم های پردازش تصویر و صدا کار خواهیم کرد.
- برنامه نویسی بصری بدان معناست که به دانش زبان های برنامه نویسی نیاز ندارد و احتیاج به هیچگونه برنامه نویسی نخواهد بود. پروژه از طریق جعبه های اتصال انجام خواهد شد ، که هر کدام از آنها جهت انجام عملیات مشخص میباشد.
انجام این دست از عملیات ها به کمک اتصال منطقی بین جعبه امکانپذیر است. به عنوان مثال :
لینک ها :
GUI
تحقق بخشیدن به یک اثر چند رسانه ایی تعاملی (interactive multimedia) بدون داشتن دانش کافی از فناوری های امروزی ممکن نیست . فناوری اطلاعات ابزار های جدیدی معرفی کرده است که اجازه یک حالت تعامل طبییعی ، بر اساس حرکات بدن و صداها بین کاربر و اثر میدهد .
یک تکنولوژی که در برابر کاربر پنهان میماند ، در حالی که با ایجاد تماس مستقیم کاربر با اثر روی اثر، تاثییر میگذرد.
تاریخچه PureData :
در نیمه دوم دهه هشتاد نرم افزار Max در IRCAM توسط Miller Puckette ریاضیدانMIT متولد میشود .
سال 1988 Puckette یک مقاله تحت عنوان “The Patcher” ارائه میکند که او در آن به شرح یک ویرایشگر برای الگوریتم های موسیقی میپردازد که در آن از بخش هایی از آهنگ Pluton از Philippe Manoury استفاده میکند.
این اولین ظهور MAX بود که با افتخارMax Mathews (پیشگام موسیقی کامپیوتری) نامیده شده!
توسعه MAX ادامه پیدا میکند تا زمان توافق صنعتی با Opcode .شرکت آمریکایی توسعه آن را به David Zicarelli کسی که آنرا دوباره مهندسی کرد واگذار کرد، برای فروش.
اما Opcode امکان دخالت مستقیم در کد را از Puckette میگیرد و وی را محروم میکند .
سپس Opcode به کارخانه گیتار سازی Gibson فروخته میشود و تولید تمام محصولاتش متوقف میشود .
MAX از طریق شرکت تاسیس شده توسط Zicarelli شناسایی میشد .
Puckette به امریکا بازگشت دوباره درخواستی به مدیر MAX مینویسد که امکان توسعه (بازنویسی) آن را هنوز دارد و آن را PureData نامید . برای جلوگیری از اشتباهات گذشته، Puckette گواهی (مجوز) از نوع FreeBSD برای نرم افزار صادر میکند و آن را در واقع یک نرم افزار رایگان و GPL-compatibile معرفی میکند .
در بازنویسی، برخی از مشکلات که او با MAX داشت رفع میکند و پردازش سیگنال های صوتی را می افزاید .
این ویژگی آخر (پردازش سیگنال های صوتی) بعدا توسط Zicarelli بهبود پیدا میکند و در نهایت افزونه MSP را میسازد.
(که مخفف Max Signal Processing است ، اما حرف اول Puckette نیز میباشد)
Puredata :
مدیریت کنترل زمان واقعی (real-time)
مجموعه ای از وظایف در حال اجرا به صورت موازی
زمانبندی کار توسط تابع صبر (wait function)
Trigger : می تواند خارجی (به عنوان مثال master keyboard) باشد.
- به عنوان مثال پیانو متشکل از 91 وظیفه (task) میباشد (88 کلید + 3 پدال) نوازنده آن به عنوان trigger عمل میکند.
- ایده ها قبل از تولد MIDI
رابط کاربری گرافیکی -GUI- با استفاده از یک زبان بصری (از patch) ساخته شده است .
puredata با تعداد زیادی patch باز |
Pd vs Max :
Max/MSP و Pure Data اساسا مشابه هستند، اما :
-PureData یک نرم افزار متن باز (open source) است ، به همین دلیل می توان از وب سایت متفاوت و بیشماری آن را متناسب به سیستم عامل های مختلف دانلود کرد و تنها هزینه آن هزینه اتصال به اینترنت میباشد .
بنابرین میتواند آزادانه کپی کنید ، یاد بگیرید ، ویرایش کنید ، دوباره آن توزیع کنید ، در نتیجه برای آموزش بسیار مناسب است.
-PureData برای استفاده بسیار ساده و آسان است.
-معماری “plugin-like”
ماژول های اضافی می توانند نوشته شوند، وارد شده، و در زمان اجرا لود شوند .
-افزونه های متعدد و کتابخانه های اضافی. به خصوص GEM برای رندر کردن گرافیک
برنامه نویسی ویژوال (بصری)
- با یک محیط برنامه نویسی بصری برای ایجاد سیستم های پردازش تصویر و صدا کار خواهیم کرد.
- برنامه نویسی بصری بدان معناست که به دانش زبان های برنامه نویسی نیاز ندارد و احتیاج به هیچگونه برنامه نویسی نخواهد بود. پروژه از طریق جعبه های اتصال انجام خواهد شد ، که هر کدام از آنها جهت انجام عملیات مشخص میباشد.
انجام این دست از عملیات ها به کمک اتصال منطقی بین جعبه امکانپذیر است. به عنوان مثال :
تصویری از وب سایت pure data |
سایت رسمی puredata :
Objects
با ایجاد متن ساخته میشوند (حساس به حروف کوچک و بزرگ ، "Print" از "print" متفاوت است)، متن با فاصله تقسیم شده که به آن ATOM گفته میشود.
اولین ATOM را selector می نامند ، که تعریف کننده نوع object و در نتیجه نوع inlet/outlet را نیز تعیین میکند .
دومین و سومین ، ... creation argument نامیده میشوند و مقدار اولیه را مشخص میکنند.
ATOM ها میتوانند به صورت زیر باشند :
- اعداد : اعداد معتبر میتوانند نقطه برای اعشار داشته باشند یا نداشته باشند . به عنوان مثال : 12, 15.6, 456.- یا میتوانند به صورت نماد تصاعدی نمایش داده شوند مثل : "4.5e6" که برابر 4،500،000 میباشد
تصاعد منفی مثل 1.23e-5 که برابر با 0.000123 است .
- نمادها (رشته های عمومی) : اعداد غیر معتبر همانند نماد ها دیده میشوند .
اولین ATOM یعنی "+" نماد جمع و دومین اتم مقداری که باید جمع شود .این object جمع 13+ را اجرا میکند.
متن را همانند ی پیغام قابل ارسال تفسیر میکند ، زمانی که فعال شده باشد (از inlet و یا کلیک کردن بر روی آن)
قابل اتصال به تمام باکس ها هستند.
اسناد آنلاین و کتاب هایی در مورد PD (به زبان انگلیسی!)
کتابخانه پردازشگر تصویر Intel OpenCV مخفف (Open Source Computer Vision Libaray)
Intel OpenCV کتابخانه نوشته شده به زبان C / C + + میباشد و روش کار با آن میتواند برای یک کاربر غیر برنامه نویس پر زحمت باشد ، اما از طریق مستندات آن میتوان درکی نسبی از بسیاری از عملکرد های آن داشت.
سایت مرجع به زبان ایتالیایی (forum , patches)
سایت آموزش
: Puredata (PD) شروع به کار با
نسخه فعلی Pure Data در هنگام نگارش این مطلب 0.43 و برای Pd-Extended آخرین ورژن 0.42.5 میباشد.
PD بروی سیستم عامل های لینوکس ، مک و ویندوز کار میکند .
نصب PD:
بهترین انتخاب برای نصب pd ، نصب پکیج pdextended میباشد ، که علاوه بر pd شامل یک سری از کتابخانه های خارجی (از قبیل کتابخانه گرافیکی GEM) ، افزونه ها ، مستندات و مثال ها میباشد ، به طوری که میتوان خیلی سریع کار با آن را شروع کرد .
Pd-extended همچنان حاوی تغییراتی نسبت به ورژن پایه pd میباشد ، که معرف ویژگی های جدید است ، اما 99% این تغییرات روی سازگاری آن تاثیری نمیگذارد.
هدف اصلی از pd-extended ایجاد یک ابزار با نصب آسان بروی انواع مختلف پلاتفورم ها میباشد .
نرم افزار Pure Data و یا (PD):
نرم افزار PureData |
PD یک رابط کاربری اصلی دارد ، پنجره اصلی شامل کنترل برای مدیریت برخی از قابلیت های اساسی (غیر فعال کردن صدا در سطح global و کنترل سطح ورودی / خروجی صدا)
بخش مرکزی اختصاص داده شده به نمایش پیغام های سیستم و خروجی patch ها .
وصله ها (Patches) :
پچ یک اصطلاح مورد استفاده برای تعریف یک پروژه است. در pure data یک patch ، شبکه ای از جعبه ها / بلاک ها (box) هاست که یک جریان ورودی از داده ها را دستکاری میکند و در نهایت یک جریان از داده مورد نظر را به خروجی باز بازمیگرداند.
این عمل میتواند استاتیک باشد ، و یا تحت کنترل یک اثر متقابل خارجی به صورت زنده باشد (داینامیک)
به عنوان مثال Motion Tracking
بنابراین یک patch مانند یک برنامه کوچک میباشد.
وصله ها (Patches) |
یک پچ (patch) میتواند تبدیل به یک شبکه پیچیده و گسترده بشود ، بنابراین ، بهتر است از کامنت های متنی و دسته بندی بلاک ها بر اساس نوع عملکرد با تقسیم کردن به بخش های خروجی و ورودی به خوانا بودن patch در استفاده های بعدی کمک کنید.
با این کار خوانا بودن patch را بهبود خواهید بخشید و تغییرات بعدی را در زمان کوتاه تری انجام خواهید داد .
patch ها اسناد pd هستند و گسترش آنها به صورت عمودی به سمت پایین میباشد.
هر سند باز دارای یک پنجره اصلی و تعدادی زیر پنجره میباشد ، زیر پنجره ها میتوانند باز یا بسته باشند، اما همیشه در حال اجرا هستند ، چه قابل مشاهده باشند چه خیر!
به شکل زیر دقت کنید ، یک مثال سده از Patch Pd
مسیر جریان داده ها |
چهار جعبه (box) در این patch وجود دارد، یک باکس عدد یا number box (که مقدار 0 را نمایش میدهد)، یک object box که "print" را نمایش میدهد و ۲ کامنت .
number box و object box به هم از طریق خروجی number box به ورودی object box متصل شده اند.
box ها میتوانند 0 یا بیشتر ورودی یا خروجی داشته باشند . ورودی ها در بخش بالای box و خروجی ها در قسمت پایین آن قرار دارند. ورودی ها inlet و خروجی ها outlet نامیده میشوند .
دستور print در باکس دوم متن را در پنجره اصلی چاپ میکند ، مگر آنکه به جای دیگری هدایت شود.
راهنمای برنامه با Help browser:
از منوی Help->Browser یک پنجره اصلی برای یاد گیری و شناخت Pd بازمیشود می توان اسناد و تمامی patch های نمونه با قابلیت های مختلف ،همینطور کتابخانه های خارجی را باز کنید.
Help browser در PureData |
جعبه (box) ، بلاک (block)، ماژول ها (modules) :
4 نوع از جعبه ها / بلوک وجود دارد: objects, messages, GUI, comments
با ایجاد متن ساخته میشوند (حساس به حروف کوچک و بزرگ ، "Print" از "print" متفاوت است)، متن با فاصله تقسیم شده که به آن ATOM گفته میشود.
اولین ATOM را selector می نامند ، که تعریف کننده نوع object و در نتیجه نوع inlet/outlet را نیز تعیین میکند .
دومین و سومین ، ... creation argument نامیده میشوند و مقدار اولیه را مشخص میکنند.
ATOM ها میتوانند به صورت زیر باشند :
- اعداد : اعداد معتبر میتوانند نقطه برای اعشار داشته باشند یا نداشته باشند . به عنوان مثال : 12, 15.6, 456.- یا میتوانند به صورت نماد تصاعدی نمایش داده شوند مثل : "4.5e6" که برابر 4،500،000 میباشد
تصاعد منفی مثل 1.23e-5 که برابر با 0.000123 است .
- نمادها (رشته های عمومی) : اعداد غیر معتبر همانند نماد ها دیده میشوند .
اولین ATOM یعنی "+" نماد جمع و دومین اتم مقداری که باید جمع شود .این object جمع 13+ را اجرا میکند.
متن را همانند ی پیغام قابل ارسال تفسیر میکند ، زمانی که فعال شده باشد (از inlet و یا کلیک کردن بر روی آن)
قابل اتصال به تمام باکس ها هستند.
GUI
object های گرافیکی : number box, checkbox, slider, bang,...
Commentsرشته ای از متن مورد استفاده برای نوشتن نظر، یادداشت ها، منابع در داخل پچ ها
زمانی که inlet hot یک داده/bang دریافت میکند ، باکس با محاسبه پارامتر های فعلی خروجی را ایجاد میکند.
- اولین tag افزوده شده ، یک متن ، نماد یا یک عدد است.
-- SELECTOR نامیده میشود ، اگر یک اتم بدون فاصله ، ویرگول و یا نقطه ویرگول باشد .
-- تصمیم گیری در مورد ماهیت پیغام : اعداد یا نماد
-- دنباله ای از اعداد و موضوعات
- پیغام های wireless : دسته ای از object های send و receive
- یک پیغام میتواند به صورتی از اشکال زیر باشد :
لیست :
یک لیست ، یک ساختار داده ها است که حاوی بیش از یک داده میباشد .
print: 1
print: 2
print: 3
اگر با روش مناسب لیست مدیریت نشوند،اشیاء یی که به این پیغام ها پاسخ میدهند ،عناصر لیست را بین inlet های خودشان توزیع میکنند. اولین عنصر همانند یک float یا نماد عبور کرده است .
ترکیب / تجزیه لیست های پیغام : عناصر pack و unpack
dollar ($):
$1 $2 … در یک message به عناصر تشکیل دهنده در پیغام ورودی اشاره میکند .
این مثال را ببینید : C:\Program Files\pd\doc\2.control.examples\dollarsign2.pd
به مثال زیر دقت کنید :
Depth first and trigger :
جریان پیغام ها "لحظه" است ، پیغام ها در همان لحظه ایجادشان پردازش میشوند ، برای حفظ real-time.
نحوه ی اجرای درخت پیغام ها : استراتژی depth-first
- یک شاخه به پایین اجرا می شود. به شکل زیر دقت کنید :
- ترتیب ورود ABCD یا ACDB خواهد بود.
-- C ارسال نخواهد شد ، تا زمانی که D ارسال نشود .
-- A ارسال نخواهد شد، تا زمانی که B و C, D ارسال نشوند.
-- نمیتوان فهمید که آیا ابتدا B ارسال خواهد شد یا C
با استفاده از یک trigger میتوان یک دستور برای آن تعریف کرد (به عنوان مثال از چپ به راست)
ببینید : C:\Program Files\pd\doc\2.control.examples\08.depthfirst.pd
T مخففو معادل trigger میباشد .
منابع :
Commentsرشته ای از متن مورد استفاده برای نوشتن نظر، یادداشت ها، منابع در داخل پچ ها
ورودی / خروجی > inlet/outlet :
در PureData ورودی های یک ماژول inlet نامیده میشوند و در قسمت بالای باکس قرار دارند(شکل زیر)، در حالیکه خروجی ها (outlet) در قسمت پایین باکس قرار دارند.
ورودی / خروجی > inlet/outlet |
ترتیب آنها از سمت چپ (اولین ورودی یا خروجی) به راست میباشد
یک خروجی میتواند به بیش از یک ورودی متصل شود (شکل زیر)
یک خروجی میتواند به بیش از یک ورودی متصل شود |
ترتیب خروجی ها قابل پیش بینی نیست، میتوان از یک trigger استفاده کرد که داده ها را متوالی و پی در پی از راست به چاپ بفرستد.
چیست ؟ Inlet hot و cold
با چند مورد استثنا (object تایمر) ، ورودی در سمت چپ باکس hot نامیده مشود ، و بقیه را cold مینامند.
زمانی که inlet hot یک داده/bang دریافت میکند ، باکس با محاسبه پارامتر های فعلی خروجی را ایجاد میکند.
اگر یک داده / bang به inlet cold برسد ، باکس خروجی ایجاد نمیکند ، بلکه تنها محدود به محاسبه داخلی با یک پارامتر جدید میشود .
اتصالات :
اتصالات در patch (خط ها بین باکس ها) ۲ نوع هستند : کنترلی و سیگنالی
نوع اتصال بستگی دارد به outlet که از آن می آید. اتصالات سیگنال توسط خطوط ضخیم تر نسبت به اتصالات کنترل نشان داده
می شوند.
اتصالات در patch |
در این patch ، دو اتصال پایینی از نوع سیگنال هستند ، و بقیه از نوع کنترل . به طور کلی، یک اتصال کنترل را می تواند همراه با یک inlet از نوع سیگنال باشد ، اگر یک عدد فرستاده شود به یکی از آنها ، به صورت خودکار به یک سیگنال تبدیل میشود .
در عوض، اتصالات سیگنال نمیتوانند برای کنترل ورودی ها استفاده شوند. اما باید به درستی تبدیل شوند .
Patches & files :
زمانی که یک پچ (patch) را در یک فایل ذخیره میکنید ، pd تنظیمات داخلی اشیاء در patch را ذخیره نمیکند. اما فقط آنهایی که دیده میشوند را ذخیره میکند: موضوعات ایجاد اشیاء و ارتباطات درونی آنها است.
اما بعضی از اشیاء ذخیره سازی ، دارای قابلیت خواندن و نوشتن داخل فایل ها برای ذخیره و بازیابی وضعیت داخلی خود است.
Edit/Run :
دو نوع عملکرد وجود دارد :
Edit : در این روش امکان افزودن عناصر و ویرایش کردن آنها وجود دارد .
Run: در این روش شما میتوانید patch ها را از طریق جعبه GUI با میانبر Ctrl+E کنترل کنید . منوی edit->edit mode
سویچ کردن از یک حالت به دیگری در هر دو حالت patch ، همیشه قابل انجام است . تفاوت تنها در روشی است که موس یا صفحه کلید با هم ارتباط برقرار میکنند.
زمانی که یک patch باز میشود ، به صورت خودکار run میشود .
در طول یک performance مهم است که حالت run را ، برای کنترل اشیا؛ GUI و جلوگیری از ویرایش های اشتباه patch انتخاب کنید.
درج box وعناصر :
امکان افزودن عناصر جدید (Object, Message , GUI , Comment) با استفاده از منوی put یا کلید میانبر آنها وجود دارد .
Object و Message ها "( ctrl + (۱،۲،۳،۴،۵ " به محض ایجاد خالی میباشد ، شما می توانید آنها را به هر کجا که می خواهید بکشید و متن را وارد کنید.
Object های GUI با میانبر (shift+Ctrl+...) تایپ کردن نیاز ندارد، فقط کافیست آنها را اضافه کنید و مکان آنها را مشخص کنید
درج box وعناصر |
Editing :
box ها را میتوان با کلیک کردن روی آنها انتخاب کرد . برای انتخاب Object های بیشتر با نگاه داشتن shift آنرا انتخاب کنید ، و یا با کلیک و کشیدن موس box های مورد نظر را انتخاب کنید .
پس از انتخاب ، متن box ها میتوانند ویرایش یا حذف شوند ، برای حذف از کلید های Del یا BackSpace استفاده میشود.
علاوه بر آن ، عملیات cut , copy و past معتبر میباشند .
از منوی Edit->TextEditor امکان ویرایش اسم ها ، نماد ها ، متنهای طولانی وجود دارد .
با راست کلیک کردن روی یک box ، یک منوی متنی باز میشود .
Prorperties - اجازه ویرایش ویژگی های خاصی از GUI box را میدهد .
Open - فقط برای sub-patch ها فعال خواهد بود، برای باز کردن آن .
Help - صفحه راهنمایی مربوط به آن box را باز میکند .
انواع داده ها :
۱- Float
در pd تمام اعداد از نوع float هستند ( اما Max/msp از int استفاده میکنند )
اعداد با ویرگول
Symbol (Stop, Clear , . . . ) -۲
کلمات کلیدی هستند که تنظیم پارامترهای خاصی , یا کنترل عملیات خاص (هر box نماد خاصی را می پذیرد)
Bang (trigger events) -۳
مفهوم bang به راحتی قابل درک نمیباشد ، می تواند به عنوان یک شوک الکتریکی باشد که یک لحظه طول میکشد ، و در امتداد پیوند منتقل میشود .
هدف فعال کردن رویدادهای های خاصی در box ها است ، به عنوان مثال: play, pause, start ، counter
List (list of objects) -۴
انتقال به عنوان یک داده تنها ، در صورت فضای خالی متناوب ' '
انتقال به عنوان یک مجموعه ای از داده های مختلف اگر به صورت غیر متناوب ','
پیغام ها :
- انتقال به ورودی یک bang یا زمانی که کلیک شود.- اولین tag افزوده شده ، یک متن ، نماد یا یک عدد است.
-- SELECTOR نامیده میشود ، اگر یک اتم بدون فاصله ، ویرگول و یا نقطه ویرگول باشد .
-- تصمیم گیری در مورد ماهیت پیغام : اعداد یا نماد
-- دنباله ای از اعداد و موضوعات
- پیغام های wireless : دسته ای از object های send و receive
- یک پیغام میتواند به صورتی از اشکال زیر باشد :
single |
list |
هر دو عمل مانند یک پیام
لیست جدا شده با استفاده از "," |
دنباله ای از پیام های متعدد
لیست جدا شده با استفاده از ";" |
شروع با '';'
دنباله ای از پیام های متعدد برای n-1 گیرنده
به عنوان نمونه در مثال ، پیغام 50 برای fred و 3.14159 برای sue
یک لیست ، یک ساختار داده ها است که حاوی بیش از یک داده میباشد .
چاپ میکند :
print : 1 2 3
چاپ میکند :print: 1
print: 2
print: 3
اگر با روش مناسب لیست مدیریت نشوند،اشیاء یی که به این پیغام ها پاسخ میدهند ،عناصر لیست را بین inlet های خودشان توزیع میکنند. اولین عنصر همانند یک float یا نماد عبور کرده است .
ترکیب / تجزیه لیست های پیغام : عناصر pack و unpack
dollar ($):
$1 $2 … در یک message به عناصر تشکیل دهنده در پیغام ورودی اشاره میکند .
این مثال را ببینید : C:\Program Files\pd\doc\2.control.examples\dollarsign2.pd
اگر در آغاز یک نماد نشان دهنده یک متغیر قرار می گیرد، $1 و یا $3-dog, که در آن مقدار ورودی مربوط به آن جایگزین / گسترش داده میشود .
$3-dog OK -- متغیر مرتبط
dog-$3 NO, گسترش یافته نیست!
چاپ میکند : sidro until 23 |
Depth first and trigger :
جریان پیغام ها "لحظه" است ، پیغام ها در همان لحظه ایجادشان پردازش میشوند ، برای حفظ real-time.
نحوه ی اجرای درخت پیغام ها : استراتژی depth-first
- یک شاخه به پایین اجرا می شود. به شکل زیر دقت کنید :
استراتژی depth-first |
-- C ارسال نخواهد شد ، تا زمانی که D ارسال نشود .
-- A ارسال نخواهد شد، تا زمانی که B و C, D ارسال نشوند.
-- نمیتوان فهمید که آیا ابتدا B ارسال خواهد شد یا C
با استفاده از یک trigger میتوان یک دستور برای آن تعریف کرد (به عنوان مثال از چپ به راست)
ببینید : C:\Program Files\pd\doc\2.control.examples\08.depthfirst.pd
T مخففو معادل trigger میباشد .
منابع :
► Pd Documentation, www.puredata.info
► Federico Avanzini, “Corso di Sistemi di elaborazione per la musica”, DIE,
Università di Padova