Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Аудио язык программирования FAUST (Functional AUdio STream) — это специализированный чисто функциональный язык программирования, предназначенный для реализации алгоритмов обработки сигналов в виде библиотек, аудиоплагинов или автономных приложений. Программа на FAUST представляет собой процессор сигналов — математическую функцию, которая применяется к входному сигналу и выдает результат.
Audio programming language
FAUST (Functional AUdio STream) is a domain specific purely functional programming language for implementing signal processing algorithms in the form of libraries, audio plug ins, or standalone applications. A FAUST program denotes a signal processor: a mathematical function that is applied to some input signal and then fed out.
Создание полных приложений
Используя специальные архитектурные файлы, программа FAUST может быть использована для генерации кода для различных платформ и форматов плагинов. Эти архитектурные файлы выступают в качестве оберток и описывают взаимодействие с хост-аудио и графической системой интерфейса пользователя. По состоянию на 2021 год поддерживается более 30 архитектур, и новые могут быть реализованы любым желающим. + Некоторые архитектурные файлы, доступные для FAUST: alsa gtk.cpp – ALSA приложение + GTK; alsa qt.cpp – ALSA приложение + QT4; android.cpp – Android приложения; au.cpp – Audio Unit плагин; ca qt.cpp – CoreAudio приложение + QT4; ios coreaudio.cpp – iPhone и iPad приложения; jack gtk.cpp – JACK приложение + GTK; jack qt.cpp – JACK приложение + QT4; ladspa.cpp – LADSPA плагин; max msp.cpp – Max MSP плагин; pd.cpp – Puredata плагин; q.cpp – Q language плагин; supercollider.cpp – Supercollider плагин; vst.cpp – VST плагин; vsti mono.cpp – Монофонический VST инструмент плагин; vsti poly.cpp – Полифонический VST инструмент плагин.
Using specific architecture files, a FAUST program can be used to produce code for a variety of platforms and plug in formats. These architecture files act as wrappers and describe the interactions with the host audio and GUI system. as of 2021, more than 30 architectures are supported and new ones may be implemented by anyone. + Some architecture files available for FAUST alsa gtk. cpp ALSA application + GTK alsa qt. cpp ALSA application + QT4 android. cpp Android applications au. cpp Audio Unit plug in ca qt. cpp CoreAudio application + QT4 ios coreaudio. cpp iPhone and iPad applications jack gtk. cpp JACK application + GTK jack qt. cpp JACK application + QT4 ladspa. cpp LADSPA plug in max msp. cpp Max MSP plug in pd. cpp Puredata plug in q. cpp Q language plug in supercollider. cpp Supercollider plug in vst. cpp VST plug in vsti mono. cpp Monophonic VST Instrument plug in vsti poly. cpp Polyphonic VST Instrument plug in
Создание блок-схемы
Полезная опция позволяет генерировать блочно-схемное представление программы в виде одного или нескольких графических файлов SVG. Важно понимать разницу между блок-схемой и сгенерированным кодом C++. Как уже отмечалось, ключевая идея заключается не в буквальном преобразовании блок-схемы, а в математической функции, которую она представляет. Современные компиляторы C/C++ также не компилируют программы буквально. Однако из-за сложной семантики C/C++ (обусловленной побочными эффектами, псевдонимами указателей и т.п.) они не могут существенно продвинуться в этом направлении. Это существенное преимущество чисто функциональных языков: они позволяют компиляторам выполнять очень продвинутые оптимизации.
A useful option makes it possible to generate the block diagram representation of the program as one or more SVG graphic files. It is useful to note the difference between the block diagram and the generated C++ code. As stated, the key idea here is not to compile the block diagram literally, but the mathematical function it denotes. Modern C/C++ compilers also don't compile programs literally. But because of the complex semantics of C/C++ (due to side effects, pointer aliasing, etc.) they can't go very far in that direction. This is a distinct advantage of a purely functional language: it allows compilers to do very advanced optimisations.