Ableton Live Control Adventure Development Greate: EP-01

EP-01: سلام ، جهان!
من چند روز پیش یک کنترلر M-Vave SMK25-II MIDI بودجه خریداری کردم و بعداً فهمیدم که نمی تواند Ableton را از جعبه خارج کند. من برخی از تحقیقات را انجام دادم و چند گزینه دریافت کردم:
- “MackieControl” را برای کنترل سطح در تنظیمات زنده انتخاب کنید
- از یک اسکریپت غیررسمی از پیش تعیین شده و از راه دور استفاده کنید که به صورت آنلاین پیدا کردم.
- یک اسکریپت از راه دور 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 وارد شده است Log.txt
پرونده Log.txt
مسیر را می توان در https://help.ableton.com/hc/en-us/articles/5301568366354-reading-live-crash-reports یافت.
خوب ، این پایان EP-01 است. حتی اگر این سریال بر اساس M-Vave SMK25-II نوشته شده باشد ، برخی از مفاهیم را می توان برای سایر کنترل کننده ها نیز اعمال کرد. با تشکر از خواندن! شما را در قسمت بعدی می بینیم.