Введение

Язык программирования Csound — это специализированный язык программирования для работы со звуком. Он получил название Csound, поскольку написан на языке C, в отличие от некоторых своих предшественников. Это свободное программное обеспечение, распространяемое под лицензией LGPL 2.1 или более поздней версии. Csound был первоначально разработан Барри Верко в MIT в 1985 году на основе его более ранней системы Music 11, которая, в свою очередь, развивалась из модели MUSIC N, предложенной Максом Мэтьюсом в Bell Labs. Его развитие продолжалось на протяжении 1990-х и 2000-х годов под руководством Джона Фитча в Университете Бата. Первым задокументированным выпуском версии 5 стала версия 5.01 от 18 марта 2006 года. В разработку внесли вклад многие специалисты, среди которых Иштван Варга, Габриэль Мальдонадо, Робин Уиттл, Ричард Карпен, Иэн МакКарди, Майкл Гогинс, Мэтт Ингаллс, Стивен И, Ричард Булангер, Виктор Лаззарини и Йоахим Хайнц. За годы разработки Csound насчитывает почти 1700 генераторов. Одной из его главных сильных сторон является полная модульность и возможность расширения функциональности пользователями. Csound тесно связан с базовым языком расширений Structured Audio для MPEG 4, SAOL.

Сунду 5

Версия 5.01 была выпущена 18 марта 2006 года – спустя 20 лет после первого релиза Csound. Csound 5 доступен в виде двоичного кода и исходного кода для Linux, Microsoft Windows и Mac OS X из проекта Csound на SourceForge. Он значительно улучшен и расширен по сравнению с оригинальным программным обеспечением, фактически став программной библиотекой с API. Для него разработано множество пользовательских интерфейсов. Помимо базового C API, существуют также привязки для Python, Java, Lisp, Tcl и C++, в том числе привязка для Haskell, позволяющая управлять Csound из чисто функциональной среды. Использование плагинов позволяет добавлять новые возможности без внесения изменений в код Csound, поскольку есть возможность создавать пользовательские опкоды как расширения к исходному языку. Поддерживаются LADSPA и DSSI, но поддержка VST была исключена. Возможность работы в реальном времени через MIDI была добавлена в 1990-х годах. Также была добавлена поддержка виджетов FLTK (элементы графического интерфейса с ползунками, ручками и т.п.) для управления звуком в реальном времени и интеграция пользовательских графических интерфейсов, написанных на Python.

Сунду 6

Csound 6 разрабатывается с тех пор, как его функциональность была определена на конференции Csound, проходившей в 2011 году в Ганновере. Csound 6 был выпущен в июле 2013 года и теперь доступен на GitHub. Csound 6 также доступен для Android. Основные новые возможности Csound 6 включают в себя:

Стандартным стал парсер на основе bison/flex для языка Csound. Он генерирует абстрактное синтаксическое дерево, доступное через Csound API. Затем это дерево может быть скомпилировано в среду выполнения Csound (Csound performance runtime) с использованием API. Таким образом, после компиляции дерева, им можно манипулировать в пользовательском коде перед компиляцией в среду выполнения Csound. В качестве альтернативы, пользователь может создать все абстрактное синтаксическое дерево из другого языка, а затем скомпилировать дерево в среду выполнения Csound. Добавлен новый встроенный многомерный тип массива. Массивы могут передаваться в инструменты и опкоды. Арифметические операции могут выполняться непосредственно над массивами. Реализована новая система типов, позволяющая использовать пользовательские типы в языке Csound. Оркестр может быть перекомпилирован в любое время, или отдельные инструменты могут быть скомпилированы в любое время во время исполнения. Это обеспечивает возможность "живого кодирования" (live coding) в Csound. Csound API был рационализирован и упрощен. Csound может использовать любое количество процессоров для параллельной обработки во время исполнения. Это происходит без внесения изменений в код Csound, что значительно ускоряет большинство процессов Csound. Например, фрагмент, рендеринг которого занимает 100 секунд на одном ядре, должен рендериться примерно за 50 секунд на четырех ядрах. Csound может компилировать оркестры и партитуры непосредственно из текстовых строк, что позволяет использовать Csound в средах, где запись в файловую систему запрещена. События партитуры, такие как ноты, могут быть запланированы с точностью до отсчета, даже если синтез обрабатывается блоками отсчетов. Любой опкод, возвращающий одно значение, может использоваться как функция в языке оркестра. Форматы файлов для аудиоанализа могут быть независимы от порядка байтов. Одно утверждение партитуры может содержать несколько строковых параметров. Большинство опкодов-генераторов будут использовать внутреннюю таблицу синусоидальных значений, если номер таблицы не указан. Параметры командной строки могут быть установлены программно с помощью Csound API. Многочисленные дублирующиеся участки кода в Csound были рационализированы. Было разработано приложение для Android, которое предоставляет пользовательские графические интерфейсы и алгоритмическую композицию на основе JavaScript с использованием HTML5. Разработкой Csound 6 руководили Джон Фитч, Стивен И и Виктор Лаззарини.

Csound для живого выступления

В настоящее время в реальном времени могут генерироваться только события партитуры или ноты Csound (в отличие от инструментов, которые определяются только во время компиляции, при первом запуске csound; в Csound 6 это ограничение снято). Набор звуковых процессоров определяется и компилируется при загрузке, но отдельные объекты обработки могут создаваться или уничтожаться в реальном времени, входной звук обрабатывается в реальном времени, а вывод также генерируется в реальном времени. События нот могут запускаться на основе OSC-коммуникаций внутри экземпляра инструмента, генерироваться MIDI или вводиться через stdin (вводом с терминала или отправкой текстовых команд из другой программы). Возможности Csound 5 как инструмента для живых выступлений можно расширить с помощью различных сторонних программ. Live Event Sheet в CsoundQt позволяет изменять партитуру в реальном времени. Кроме того, интерфейсы с другими языками программирования можно использовать для написания скриптов для Csound. На конференции Linux Audio Conference 2012 года была представлена работа, подробно описывающая использование Csound с Qt или Pure Data для музыкального синтеза в реальном времени. Проект Ounk пытается интегрировать Python с Csound, а CsoundAC предоставляет возможность алгоритмического сочинения на Python с использованием Csound в качестве бэкенда. Csound for Live от Audivation объединяет различные опкоды в оболочки Max/MSP, подходящие для использования в Ableton Live. Csound также доступен для мобильных систем (iOS, Android).

Один ноутбук на ребенка (OLPC)

Csound5 был выбран в качестве системы разработки звука и музыки для проекта OLPC на платформе ноутбука XO-1.