برنامه نویسی

Ableton Live Control Adventure Development Greate: EP-01

EP-01: سلام ، جهان!

من چند روز پیش یک کنترلر M-Vave SMK25-II MIDI بودجه خریداری کردم و بعداً فهمیدم که نمی تواند Ableton را از جعبه خارج کند. من برخی از تحقیقات را انجام دادم و چند گزینه دریافت کردم:

  1. “MackieControl” را برای کنترل سطح در تنظیمات زنده انتخاب کنید
  2. از یک اسکریپت غیررسمی از پیش تعیین شده و از راه دور استفاده کنید که به صورت آنلاین پیدا کردم.
  3. یک اسکریپت از راه دور MIDI سفارشی را از ابتدا بنویسید

من به عنوان یک توسعه دهنده نرم افزار ، من گزینه 3 را انتخاب کردم. چه فرصت یادگیری عالی!

Ableton Live اسکریپت های از راه دور را از چندین دایرکتوری بارگیری می کند. برخی از اطلاعات مربوط به سطح کنترل را می توان در https://help.ableton.com/hc/en-us/articles/206240184-creating-your-own-control-surface-script یافت. همچنین بارهای زنده از [USER_LIBRARY_PATH]/Remote Scripts پوشه

برای من ، من انتخاب کردم [USER_LIBRARY_PATH]/Remote Scripts و پوشه ای به نام ایجاد کرد SMK25II آنجا در اصل ، آن پوشه یک بسته پایتون است که تابعی به نام آن صادر می کند create_instanceبشر و این عملکرد برمی گردد Control Surface شیء ، که Ableton Live را کنترل می کند و کارهای دیگری را انجام می دهد.


برای شروع ، من ایجاد کردم __init__.pyبا logger.py وت SMK25II.pyبشر در اینجا ساختار پوشه فعلی وجود دارد:

.
├── __init__.py
├── SMK25II.py
└── logger.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

logger.py بسیار ساده است استفاده می کند logging بسته بندی و صادر می کند.

from logging import getLogger

logger = getLogger(__name__)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

همانطور که قبلاً هم اشاره کردم ، __init__.py باید تابعی به نام صادر کند create_instance و این عملکرد باید برگردد Control Surface شیء.

از آنجا که هیچ مستندی برای آن وجود ندارد ControlSurface شی ، من مجبور شدم تحقیق کنم و برخی از کدها را بخوانم. و این حداقل است ControlSurface شیء که خطایی را به وجود نمی آورد.

from .logger import logger

class SMK25II:
    def __init__(self, _):
        logger.info("Hello, World!")

    def disconnect(self):
        pass

    def refresh_state(self):
        """
        Live is calls this method. But I have no idea what it is for (at the moment).
        """
        pass

    def update_display(self):
        """
        Live is calls this method. But I have no idea what it is for (at the moment).
        """
        pass

    def connect_script_instances(self, _):
        """
        Live is calls this method. But I have no idea what it is for (at the moment).
        """
        pass

    def can_lock_to_devices(self):
        """
        Live is calls this method. But I have no idea what it is for (at the moment).
        """
        return False

    def build_midi_map(self, _):
        """
        Live is calls this method. But I have no idea what it is for (at the moment).
        """
        pass

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


سپس ، من Ableton Live را شلیک کردم و سطح کنترل خود را انتخاب کردم SMK25II در تنظیمات ورودی/خروجی از الان مهم نیست.

تنظیمات Ableton Live

“سلام ، جهان!” در Ableton Live وارد شده است Log.txt پرونده Log.txt مسیر را می توان در https://help.ableton.com/hc/en-us/articles/5301568366354-reading-live-crash-reports یافت.

سلام ، جهان!

خوب ، این پایان EP-01 است. حتی اگر این سریال بر اساس M-Vave SMK25-II نوشته شده باشد ، برخی از مفاهیم را می توان برای سایر کنترل کننده ها نیز اعمال کرد. با تشکر از خواندن! شما را در قسمت بعدی می بینیم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا