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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В прошлый раз мы рассказывали о книгах, которые пригодятся специалистам по цифровой обработке сигналов, и обсуждали библиотеки на C++ для синтеза звука. Продолжим тему, но поговорим о ЯП под эти задачи — Faust, SOUL и Feldspar.

Фотография: Vadim Artyukhin. Источник: Unsplash.com
Фотография: Vadim Artyukhin. Источник: Unsplash.com

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 не всегда справляется с обработкой больших объёмов акустических данных.


Дополнительное чтение по этой теме в нашем «Мире Hi-Fi»:

  • Как синтез речи появился на ПК

  • Как писать музыку на Python — помогут три тематические библиотеки

  • Влиться в муз. программирование — языки, которые помогут это сделать


Другие наши материалы на Хабре:

  • Проигрыватели винила в районе двадцати тысяч рублей — три модели

  • Что происходит в сфере аудиочатов и есть ли у них будущее


Источник: https://habr.com/ru/company/audiomania/blog/570550/


Интересные статьи

Интересные статьи

Весь телеком-бизнес основан на данных, и Билайн не исключение. Данные генерируются как внутри, так и снаружи: в OSS-системах (события на оборудовании, сетевой трафик), в ...
В марте этого года Oracle выпускает 16-ю версию Java, а уже осенью выйдет 17-я версия - следующая версия с долгосрочной поддержкой (LTS). Вряд ли за пол года появятся какие-то существенны...
Давно хотели разобраться с базовыми принципами обработки звука — всеми этими компрессорами, лимитерами, экспандингом и дисторшеном? Прозрачностью и ламповостью звука? Я п...
Битрикс24 — популярная в малом бизнесе CRM c большими возможностями даже на бесплатном тарифе. Благодаря API Битрикс24 (даже в облачной редакции) можно легко интегрировать с другими системами.
Эта статья посвящена одному из способов сделать в 1с-Битрикс форму в всплывающем окне. Достоинства метода: - можно использовать любые формы 1с-Битрикс, которые выводятся компонентом. Например, добавле...