Три предметно-ориентированных языка программирования для цифровой обработки сигналов

Kate

Administrator
Команда форума

SOUL​

Этот язык программирования (и API) представлен инженером Джулианом Сторером, которому принадлежит проект JUCE для разработки GUI приложений и плагинов. Он спроектировал SOUL, чтобы снизить порог вхождения для начинающих в эту сферу и помочь им чуточку быстрее обучаться цифровой обработке сигналов.

Джулиан сравнил свой фреймворк с OpenGLSL или OpenCL (но для аудио), поскольку он заточен под написание высокопроизводительного и безопасного кода для обработки звука. В частности, он использует язык ассемблера HEART, который можно запускать без «песочницы». SOUL также не применяет динамическое выделение памяти и исключает «состояния гонок» (race conditions) — в итоге его скорость выполнения равна или даже превышает показатели C++ на аналогичных задачах. Поскольку код практически не нагружает CPU и оперативную память компьютера, музыканты могут запускать большее число плагинов на DAW. В то же время SOUL подходит для разработки видеоигр — свободные вычислительные ресурсы девелоперы могут направить на реализацию других геймплейных аспектов.

Фреймворк SOUL относительно молод, поэтому в работе встречаются баги. Ряд пользователей отмечает частые вылеты при попытках загрузить файлы .soul в DAW. Однако разработчики быстро реагируют на обращения и исправляют недостатки. Если вас заинтересовал этот проект, вы можете его «пощупать» прямо в браузере — на официальном сайте есть удобная IDE.

Faust​

Это — функциональный язык программирования, ориентированный на разработку синтезаторов и аудиоэффектов. Его авторы — специалисты из акустической лаборатории Grame Research Labs во Франции, которая в свое время разработала музыкальную нотацию Guido (её может читать как компьютер, так и человек).

Одним из главных преимуществ Faust является его мультиплатформенность. Он поддерживает мобильные и десктопные операционные системы, в том числе Linux, где работает с набором звуковых драйверов ALSA и сервер-демоном JACK для передачи MIDI-данных. Также библиотеки Faust можно загрузить на Raspberry Pi и микроконтроллеры типа Teensy и ESP32.

Фотография: Clint Patterson. Источник: Unsplash.com
Фотография: Clint Patterson. Источник: Unsplash.com
Этот ЯП позволяет обрабатывать акустическую информацию «на лету», поэтому подходит для музыкального программирования. В то же время его используют в образовательной среде — с финансированием проекта помогло Министерство культуры Франции. Еще с помощью Faust участники проекта AmStramGrame создают акустические устройства, а энтузиасты реализуют на Faust необычные музыкальные инструменты. Примером может быть TheBladeAxe, который похож на гитару, но с iPad’ом вместо грифа, управляющим звучанием устройства. Еще один интересный девайс на базе Faust — Sweeps and Collisions. Он представляет собой пластиковый ящик, где перекатываются шарики. Микроконтроллер захватывает этот звук микрофонами, обрабатывает его и воспроизводит с помощью резонаторов.

Но несмотря на частое применение в образовательной сфере, начинающему «музыкальному программисту» синтаксис языка может показаться запутанным. Однако опытные специалисты разберутся в нем достаточно быстро — поможет подробная документация и бесплатный курс от Стэнфордского университета.

Feldspar​

Feldspar разработали инженеры из технических университетов Швеции и компании Ericsson еще в 2009 году. Цель проекта — представить язык, который бы решил проблему «портируемости» и мог работать на большинстве вычислительных систем, которые появятся в будущем. Feldspar построен на базе программных пакетов и библиотек, входящих в состав Haskell Platform. Язык обладает высоким уровнем абстракции благодаря векторам (стр.3), при этом Feldspar можно запустить как на 8-разряной встроенной системе, так и на сервере в дата-центре.

Знакомство с языком можно начать с официального руководства. Там подробно разобраны все алгоритмы и операторы. У тех, кому привычен синтаксис C (именно на нем написан Haskell), это не вызовет особых сложностей.

Но есть у Feldspar и свои недостатки — поддержку языка прекратили в 2011 году, и хотя с тех пор разработчики все же выпустили несколько баг-фиксов, о развитии функциональности инструмента говорить не приходится. В то же время Feldspar не всегда справляется с обработкой больших объёмов акустических данных.

 
Сверху