CSOUND
CSound — это язык звукового программирования, также известный как звуковой компилятор или язык аудиопрограммирования. Название обусловлено средой разработки — это язык С. Распространяется бесплатно под свободной лицензией, cоздатель — Барри Веркоу (Barry Vercoe), сотрудник Массачусетского технологического института и композитор.
Csound, в отличие от своих предшественников и последователей в области языков звукового синтеза, является по большей части текстовым языком программирования в оболочке традиционной командной строки DOS.
пример программы в Сsound, выполняющей непрерывное воспроизведение звука колокола
В качестве входных аргументов используются два специальным образом отформатированных текстовых файла — оркестр (orchestra) описывает природу инструментов, а партитура (score) — ноты и их параметры относительно временной линии. Csound обрабатывает инструкции, содержащиеся в этих файлах и производит рендеринг выходного аудиофайла или аудиопоток в реальном времени.
Описание стандартных функций Сsound в рамках данной статьи не имеет смысла, так как полный список занимает 3000 страниц текста.
Пример текстового файла для создания wav–файла, содержащего синусоидальную волну 1 кГц частотой дискретизации 96 кГц продолжительностью в одну секунду
Помимо самой оболочки–компилятора, программа имеет дополнительную программу Cabbage, в которой программист может создать собственные аудиоэффекты или Vst–плагины.
Что касается использования Сsound в качестве инструмента для алгоритмической композиции, то в данном случае лучше использовать специальное расширение Майкла Гогинса, написанное на языке программирования Python — СsoundAC.
Csound использует концепцию музыкальных графов, которые схожи по философии с трехмерными графами сцены, используемыми при моделировании объемных объектов.
В музыкальных графах только один примитивный объект — событие, обычно это просто музыкальная нота, расположенная в 12–мерном музыкальном пространстве. Список пространств:
В целом, Csound можно назвать одним из самых тонких инструментов для генерации алгоритмической композиции, однако людям, не знакомым с высокоуровневым программированием, разобраться в нем будет довольно сложно.