توپ به عنوان ساز با استفاده از پردازش تصویر

توپ به عنوان ساز - با استفاده از پردازش تصویر

«توپ‌جمع‌کن» نام پروژه‌ی آخر هفته من بود. هدف از این پروژه استفاده از یک توپ و حرکت آن جلوی دوربین برای ارسال دستورات به برنامه‌های مختلف است.

 

این برنامه در مرحله ابتدایی (یا حتی پیش دبستانی) خود است و محدودیت‌های زیادی دارد. کاری که این برنامه می‌کند این است که به دوربین اصلی کامپیوتر وصل می‌شود، با استفاده از opencv تصاویر را پردازش می‌کند، از چند فیلتر رد می‌کند، مختصات یک دایره سبز رنگ را در تصویر تخمین می‌زند، و در نهایت این مختصات را به صورت بیدرنگ در خروجی‌اش چاپ می‌کند. کار این برنامه همین است. هیچ کار دیگری با مختصات بدست آمده نمی‌کند.

 

استفاده از مختصات بدست آمده وظیفه‌ی برنامه‌های دیگر است. به واسطه‌ی همین تقسیم مسئولیت، اضافه کردن کاربردهای گوناگون به این برنامه بسیار راحت است. همه می‌توانند بدون اینکه وارد کد ++C توپ‌جمع‌کن شوند برای آن کاربردهای جدید درست کنند. با استفاده از bash ،python ،go ،ruby یا هر زبان دیگر. به عنوان نمونه می‌توان برنامه‌ای نوشت که با استفاده از مختصاتی که توپ‌جمع‌کن خروجی می‌دهد مکان ماوس رو تعیین کند، یا با آن نقاشی بکشد، یا جهت حرکت توپ را تشخیص دهد و با استفاده از آن یک دستور اجرا کند، مثلا حرکت بالا به پایین باعث اجرای دستور «صفحه را قفل کن» شود.

 

پنجشنبه کنسرت «جک وایت» رو تماشا می‌کردم. در اجرایشان در فستیوال گلاستنبری از ساز ترمین استفاده می‌کردند. ترمین ساز بسیار جالبی است. کنجکاو شدم بدانم این ساز چگونه کار می‌کند و یکی برای خودم درست کنم. دو آنتن و دو حس‌گر دارد، هر آنتن یک میدان مغناطیسی اطراف خود ایجاد می‌کنند. با دو دست می‌توان در این میدان‌ها اختلال ایجاد کرد و شدت و فرکانس صدا را تغییر داد. به عنوان اولین نمونه استفاده از توپ‌جمع‌کن یک ساز مشابه ترمین درست کردم: یک برنامه به زبان ruby که مختصات توپ را از توپ‌جمع‌من گرفته و نت های موسیقی midi تولید می‌کند. فرکانس نت‌ها به ارتفاع توپ و شدت نت به فاصله‌ی افقی آن بستگی دارد. مسئولیت اجرای نت‌ها با یک برنامه دیگر است که نت‌های midi را درک می‌کند و به صدا تبدیل می‌کند. در نهایت، این سه برنامه، توپ‌جمع‌کن، ترمین، و اجرا کننده، به یک ساز جدید تبدیل می‌شوند که می‌توان با آن موسیقی دلنشین تولید کرد.

 

توپ‌جمع‌کن تازه متولد شده. اگر فرصت شود در آینده امکانات بیشتری را به این برنامه اضافه می‌کنیم. مثل تشخیص دست، صورت، پلک، یا حتی حرکت انگشتان. خودتان کد را بخوانید، تست کنید، تغییر دهید و pull-request یا issue ارسال کنید.

 

برنامه‌نویس گو و روبی در شرکت سارینا.