О звуке простыми словами42Производители Hi-Fi.
Истории и интервью111Репортажи с заводов65Репортажи с Hi-Fi выставок69"Сделай сам"44Готовые проекты Аудиомании42Пресса об Аудиомании50Видео494Фотогалерея100Интересное о звуке804Новости мира Hi-Fi2545Музыкальные и кинообзоры616Глоссарий
Попробовать себя в проектировании интерфейсов для DAW-плагинов — помогут эти инструменты
Ранее мы уже рассказывали о библиотеках, заточенных под разработку алгоритмов синтеза и фильтрации аудио. Сегодня покажем утилиты, которые помогут нарисовать для них графический интерфейс с целью интеграции в цифровые звуковые рабочие станции (DAW). Под катом — о возможностях VSTGUI, Elements и Pugl.
VSTGUI
Впервые этот комплект для разработки интерфейсов представила немецкая компания Steinberg Media Technologies (производит аппаратное и программное обеспечение для музыкальной индустрии) еще в 1998 году. Продукт активно использовали для проектирования плагинов формата VST, который укоренился в индустрии и сегодня поддерживается многими DAW. Вскоре VSTGUI стала частью VST SDK, и в 2003 году её код был передан в open source.
С тех пор toolkit постепенно обрастал новыми функциями — туда добавили поддержку форматов AU, AAX, RTAS, а также JSON. С помощью VSTGUI разбирающиеся в вопросе специалисты могут создать комплексный UI всего за несколько минут. Например, один энтузиаст воспроизвел интерфейс плагина Grungelizer, который добавляет шум и помехи на аудиодорожку. Инструмент находит применение и в профессиональной среде — VSTGUI часто использует диджей Стив Дуда, известный как BSOD, а инженеры из Steinberg построили на базе toolkit’а виртуальный аналоговый синтезатор Nanologue для iPad.
Однако новичкам может быть сложно начать работу с утилитой, так как, по словам резидентов тематического форума KVR Audio, её документацию нельзя назвать user friendly — на сайте и в репозиториях нет наглядных примеров.
Elements
Это — модульная GUI-библиотека на C++. Её разработал инженер Джоэл Де Гузман, который выступил автором библиотеки для цифровой обработки сигналов — Q. Изначально Джоэл использовал JUCE и iPlug, но они не отвечали его требованиям, поэтому он решил выпустить свой инструмент. К его ключевым особенностям можно отнести поддержку HDPI-дисплеев, наличие декларативных API на C++ и векторные элементы интерфейса — виртуальные слайдеры и регуляторы, кнопки и окна с уведомлениями, а также блоки для вывода текста. При этом Elements можно интегрировать в другие GUI-библиотеки и фреймворки.
Модульная природа библиотеки позволяет переиспользовать элементы интерфейса для создания новых визуальных компонентов — вот пример кода, который нарисует кнопку:
auto constexpr button_margin = rect{ 10, 5, 10, 5 }; template <typename Button> inline Button make_button( std::string const& text , float size = 1.0 , color body_color = get_theme().default_button_color ) { return make_button<Button>( margin( button_margin, align_center(label(text, size)) ), body_color ); } |
Elements имеет собственный движок для отрисовки векторной графики, в основу которого положена открытая библиотека Cairo.
Из недостатков пользователи жалуются на мелкие баги — ошибки файловой системы и раздражающие зависания. Но если вы хотите познакомиться с библиотекой поближе, то хорошим местом для старта будет официальное руководство. Помимо примеров, там можно найти руководство по установке и настройке.
Pugl
Это — портируемый API для сборки интерфейсов, ориентированный на работу в плагинах. Автором выступил аудиоинженер Дэвид Робиллард, в портфолио которого есть такие проекты, как Machina и Ingen. Первый — это MIDI-секвенсор, основанный на конечных автоматах, а второй — система обработки звука для платформ на базе форматов Jack и LV2.
Pugl построен на графических интерфейсах Cairo, OpenGL и Vulkan. По функциональности он напоминает GLUT and GLFW, но имеет ряд отличий — в частности, подходит для проектирования событийно-управляемых приложений и не использует статические данные.
Дэвид поддерживает инструмент в одиночку (хотя иногда ему помогают участники сообщества), поэтому в Pugl встречаются баги. Однако разработчик быстро исправляет ошибки — за день он выпускает до десяти фиксов. Если вы хотите помочь с развитием проекта, то можете изучить Pugl по официальным туториалам — они затрагивают специфику работы на С и С++.