~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 463FC9A50EB027D11A5AF6C5556968DE__1696048980 ✰
Заголовок документа оригинал.:
✰ FAUST (programming language) - Wikipedia ✰
Заголовок документа перевод.:
✰ ФАУСТ (язык программирования) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/FAUST_(programming_language) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/46/de/463fc9a50eb027d11a5af6c5556968de.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/46/de/463fc9a50eb027d11a5af6c5556968de__translat.html ✰
Дата и время сохранения документа:
✰ 22.06.2024 17:07:58 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 30 September 2023, at 07:43 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
ФАУСТ (язык программирования) — Jump to content

ФАУСТ (язык программирования)

Из Википедии, бесплатной энциклопедии
ФАУСТ
Оригинальный автор(ы) Янн Орларей, Доминик Фобер, Стефан Летц
Разработчики) GRAME, Национальный центр музыкального творчества
Начальная версия 2002  ( 2002 )
Стабильная версия
2.60.3 [1] / 14 июня 2023 г. ( 14.06.2023 )
Написано в С++
Операционная система Linux , OS X , Windows , Unix
Тип Функциональный язык программирования для обработки аудиосигналов.
Лицензия лицензия GPL
Веб-сайт Фауст .грамм .fr

FAUST (Functional AUdio STream) — это ориентированный на предметную область, чисто функциональный язык программирования, предназначенный для реализации обработки сигналов алгоритмов в виде библиотек , аудиоплагинов или автономных приложений. Программа FAUST обозначает процессор сигналов: математическую функцию, которая применяется к некоторому входному сигналу и затем выводится.

Обзор [ править ]

FAUST Модель программирования сочетает в себе подход функционального программирования с синтаксисом блок-схемы :

  • Подход функционального программирования обеспечивает естественную основу для обработки сигналов . Цифровые сигналы моделируются как дискретные функции времени, процессоры сигналов — как функции второго порядка блок-схем FAUST , которые над ними работают, а операторы композиции , используемые для объединения процессоров сигналов вместе, — как функции третьего порядка и т. д.
  • Блок-схемы, даже если они чисто текстовые, как в FAUST, способствуют модульному подходу к обработке сигналов, который соответствует привычкам звукорежиссеров и разработчиков звука.

Программа FAUST описывает не звук или группу звуков, а процессор сигналов . Исходный код программы организован как набор определений, по крайней мере, с определением ключевого слова. process (эквивалент main в С):

процесс   =   ...  ; 

FAUST Компилятор преобразует код FAUST в C++ объект , который затем может взаимодействовать с другим кодом C++ для создания полноценной программы.

Сгенерированный код работает на уровне образца. Поэтому он подходит для реализации низкоуровневых DSP функций , таких как рекурсивные фильтры . Код также может быть встроен . Он автономен и не зависит от какой-либо библиотеки DSP или системы выполнения . Он имеет очень детерминированное поведение и постоянный размер памяти.

Семантика FAUST призвана быть простой и четко определенной. Это позволяет компилятору FAUST управляться семантически . Вместо буквальной компиляции программы она компилирует математическую функцию, которую она обозначает. Это может способствовать повторному использованию компонентов. Более того, доступ к точной семантике программы FAUST может упростить вопросы сохранения.

FAUST — текстовый язык, ориентированный на блок-схемы. Он сочетает в себе два подхода: функциональное программирование и алгебраические блок-схемы , которые строятся посредством композиции функций . Для этого FAUST использует алгебру блок-схем из пяти операций композиции.

Пример кода [ править ]

Программы FAUST определяют processфункция, которая работает с входящими данными. Это аналогично mainфункционируют в большинстве языков программирования. Ниже приведен пример, вызывающий тишину:

процесс   =   0  ; 

Второй пример копирует входной сигнал на выход. Это предполагает _ примитив, обозначающий функцию идентичности сигналов:

процесс   =   _  ; 

Другой пример суммирует стереосигнал в моносигнал, используя + примитивный:

процесс   =   +  ; 
Блок-схемы, созданные Фаустом из некоторых простых программ.

Большинство примитивов FAUST аналогичны своим аналогам в C по числам, но перенесены в сигналы. Например, примитив FAUST sin работает с сигналом X, применяя C функцию sinк каждому образцу X[t]. Все числовые функции C имеют аналог в FAUST. Некоторые примитивы обработки сигналов специфичны для FAUST. Например, оператор задержки @ принимает два входных сигнала: X (сигнал, который нужно задержать) и D (задержка, которую нужно применить), и выдает выходной сигнал Y такой, что Y(t) = X(t - D(t)).

Состав блок-схемы [ править ]

В отличие от подобных Max, языков визуального программирования, где пользователь выполняет соединения вручную, примитивы FAUST собираются в блок-схемы с помощью набора высокоуровневых операций композиции блок-схем .

Простые примеры составления блок-схем
блок-схемы Операторы композиции , используемые в FAUST
х~г Рекурсивная композиция (приоритет 4)
ж, г Параллельная композиция (приоритет 3)
е:г Последовательная композиция (приоритет 2)
е<:г Разделенная композиция (приоритет 1)
е:>г Объединение композиции (приоритет 1)

Использование оператора последовательной композиции : вывод + можно направить на вход abs для вычисления абсолютного значения сигнала:

процесс   =   +   :   абс  ; 

Вот пример параллельной композиции с использованием ,оператор, который параллельно упорядочивает левое и правое выражения. Это аналог стереокабеля.

процесс   =   _  ,  _  ; 

Эти операторы можно произвольно комбинировать. Следующий код умножает входной сигнал на 0,5:

процесс   =   _  ,  0,5   :   *  ; 

Вышеуказанное можно переписать в каррированной форме:

процесс   =   *  (  0,5  ); 

Оператор рекурсивной композиции ~может использоваться для создания блок-схем с циклами (которые включают неявную задержку на одну выборку). Вот пример интегратора, который принимает входной сигнал X и вычисляет выходной сигнал Y такой, что Y(t) = X(t) + Y(t−1):

процесс   =   +   ~   _  ; 

Создание полноценных приложений [ править ]

Используя файлы конкретной архитектуры , программу FAUST можно использовать для создания кода для различных платформ и форматов подключаемых модулей. Эти файлы архитектуры действуют как оболочки и описывают взаимодействие с аудиосистемой хоста и системой графического интерфейса. По состоянию на 2021 год , поддерживается более 30 архитектур, а новые может реализовать кто угодно.

Скриншот файла Mixer.dsp (доступен в дистрибутиве FAUST) с использованием архитектуры jack-qt.
Некоторые файлы архитектуры доступны для FAUST
alsa-gtk.cpp Приложение ALSA + GTK
alsa-qt.cpp Приложение ALSA + QT4
android.cpp Android-приложения
au.cpp Плагин аудиоустройства
ca-qt.cpp Приложение CoreAudio + QT4
ios-coreaudio.cpp приложения для iPhone и iPad
jack-gtk.cpp Приложение JACK + GTK
jack-qt.cpp Приложение JACK + QT4
ladspa.cpp Плагин LADSPA
макс-msp.cpp Плагин Max MSP
pd.cpp Плагин Puredata
q.cpp Плагин языка Q
суперколлайдер.cpp Плагин суперколлайдера
vst.cpp VST-плагин
vsti-mono.cpp Плагин Monophonic VST Instrument
vsti-poly.cpp Плагин Polyphonic VST Instrument

Создание блок-схем [ править ]

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

Полезно отметить разницу между блок-схемой и сгенерированным кодом C++. Как уже говорилось, ключевая идея здесь заключается не в буквальном составлении блок-схемы, а в математической функции, которую она обозначает. Современные компиляторы C/C++ также не компилируют программы буквально. Но из-за сложной семантики C/C++ (из-за побочных эффектов, псевдонимов указателей и т. д.) они не могут продвинуться далеко в этом направлении. Это явное преимущество чисто функционального языка: он позволяет компиляторам выполнять очень сложную оптимизацию.

Семантика, подобная стрелкам [ править ]

Семантика Faust почти такая же, как и у в Haskell Arrows класса типов . Однако класс типа Arrow не привязан к процессорам сигналов.

Эквивалентность комбинаторов FAUST и Arrow
f~g loop ((\(a,b) -> (b,a)) ^>> f >>> id &&& (delay>>>g)) где delay не является методом Arrow класс типа, но специфичен для стрелок обработки сигналов
f,g f***g
f:g f>>>g
f<:g f>>^h>>>g с соответствующей функцией h (или &&& в особых случаях)
f:>g f>>^h>>>g с соответствующей функцией h

Комбинаторы Arrow более ограничительны, чем их аналоги FAUST, например, сохраняется вложенность параллельной композиции, а входы операндов &&& должно точно совпадать.

Ссылки [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 463FC9A50EB027D11A5AF6C5556968DE__1696048980
URL1:https://en.wikipedia.org/wiki/FAUST_(programming_language)
Заголовок, (Title) документа по адресу, URL1:
FAUST (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)