ChucK — это язык программирования для синтеза звука и создания музыки в реальном времени. Он имеет открытый исходный код и бесплатно доступен для macOS, Windows и Linux. ChucK представляет уникальную модель параллельного программирования, основанную на времени, которая является точной и выразительной (мы называем это строго синхронизированной ), с динамическими скоростями управления и возможностью добавлять и изменять код на лету. Кроме того, ChucK поддерживает MIDI, OpenSoundControl, HID-устройства и многоканальный звук. Это весело и легко в освоении, и оно предлагает композиторам, исследователям и исполнителям мощный инструмент программирования для создания и экспериментирования со сложными программами синтеза/анализа звука и интерактивной музыкой в реальном времени.
Добро пожаловать в Чак!
Чтобы загрузить и установить ChucK, посетите официальную страницу выпуска ChucK .
Для получения дополнительной информации, включая документацию, примеры, исследовательские публикации и ресурсы сообщества, посетите домашнюю страницу ChucK или его зеркало в Принстоне .
brew install chuck
Чтобы собрать последнюю версию ChuckK из исходного кода, клонируйте репозиторий chuck
с GitHub:
git clone https://github.com/ccrma/chuck.git
перейдите в каталог chuck/src
и запустите make
:
cd chuck/src
make mac
ИЛИ собрать универсальный двоичный файл (Intel + Apple Silicon):
make mac-ub
Это должно создать исполняемый файл chuck
в chuck/src
.
Зависимости: gcc, g++, make, bison, flex, libsndfile, ALSA (для сборок linux-alsa), PulseAudio (для сборок linux-pulse), JACK (для сборок linux-jack)
Чтобы настроить среду сборки для Chuck в Debian или Ubuntu:
sudo apt install build-essential bison flex libsndfile1-dev
libasound2-dev libpulse-dev libjack-jackd2-dev
Для других дистрибутивов Linux настройка должна быть аналогичной, хотя инструменты установки пакетов и имена пакетов могут немного отличаться. ( ПРИМЕЧАНИЕ: настройки, в которых не требуется JACK или PulseAudio, могут не включать один или оба этих пакета. ALSA необходим для поддержки MIDI в Linux. )
Чтобы собрать патрон (со всеми поддерживаемыми драйверами: ALSA, PulseAudio, JACK), перейдите в каталог chuck/src
и запустите make
:
cd chuck/src
make linux-all
К вашему сведению, make linux-all
эквивалентно объединению отдельных драйверов:
make linux-alsa linux-pulse linux-jack
Чтобы создать патрон для подмножества ALSA, PulseAudio или JACK, запустите make
с нужными драйверами. Например, для сборки только для ALSA и PulseAudio:
make linux-alsa linux-pulse
Или для сборки только для ALSA:
make linux-alsa
Этот процесс должен создать исполняемый chuck
chuck/src
.
Чтобы собрать chuck с помощью Visual Studio (рекомендуется 2019 или более поздняя версия), перейдите в chucksrcvisual-studio
, откройте chuck.sln
и выполните сборку.
Чтобы скомпилировать ChucK в WebAssembly (WASM):
emsdk
): source ./emsdk_env.sh
chuck/src/
и запустите make web
: cd chuck/src
make web
Это должно создать webchuck.wasm
и webchuck.js
в каталоге chuck/src/host-web/webchuck/js
. (См. также: WebChucK)
Вот репозитории исходного кода, поддерживаемые командой ChucK. Разыскиваются разработчики!
патрон | основной язык, виртуальная машина и механизм синтеза
чугины | Расширьте патрон с помощью плагинов! отличное место, чтобы начать вносить свой вклад
миниАудикл | IDE для Чака
вебчак | патрон работает в веб-браузерах (работает на настольных компьютерах и телефонах!)
веб-интерфейс IDE | браузерная IDE для патрона
чунити | Чак в Unity
чунреал | Чак в Unreal Engine (новинка!)
чугл | Графическая библиотека ChucK (новинка!)
Ядро ChucK (компилятор, виртуальную машину, механизм синтеза) можно включить в качестве компонента/библиотеки в другие хосты программного обеспечения C++. Это может быть полезно для добавления функций ChucK в ваши программные системы или для создания новых плагинов. К вашему сведению, все инструменты, перечисленные в предыдущем разделе, включают ChucK в эту модель ядра/хоста: включая командную строку, miniAudicle, Unity, Unreal Engine, WebAssembly; кроме того, ChucK интегрирован с openFrameworks, приложениями iOS/Android, встроенными системами и гибридными языковыми системами, например, FaucK (FAUST + ChucK), ChucKDesigner (ChucK в TouchDesigner), chuck~ (ChuckK в Pure Data), chuck~ ( Чак в Max/MSP).
Чтобы показать, как можно осуществить эту интеграцию, мы создали серию примеров на C++, показывающих, как интегрировать ChucK в любой хост C++. Самый простой из этих примеров, example-1-minimal.cpp, создает минимальный хост ChucK на C++ примерно за 20 строк кода. В последующих примерах показано добавление звука в реальном времени, связи C++/ChucK с использованием глобальных переменных ChucK и управления уничтожением ChucK из C++ соответственно. Эти примеры хостов можно найти в папке src/host-examples/ этого репозитория. Для более продвинутого использования ознакомьтесь с различными инструментами экосистемы ChucK, перечисленными выше в предыдущем разделе. Чтобы начать создавать эти примеры хостов:
cd src/host-examples
make
Также возможно построить только ядро ChucK (компилятор, виртуальную машину и механизм синтеза), без хоста и без какого-либо специфичного для платформы аудио ввода-вывода в реальном времени. Это может стать полезной отправной точкой для интеграции ядра ChucK в существующие хост-системы, которые уже имеют аудиовход/выход. Чтобы собрать ядро ChucK в «ванильном» режиме:
cd src/core
make vanilla
Исходный код ChucK имеет двойную лицензию: MIT License и GNU General Public License 2.0 (или любой более поздней версии). Если вы используете эту работу, вы можете выбрать любую лицензию.
ChucK был создан в начале 2000-х годов в Принстонском университете Ге Вангом и Перри Р. Куком, когда Ге был доктором философии. студент, которого консультировал Перри на факультете компьютерных наук. Первая версия ChucK была выпущена под лицензией GPL в 2003 году. Многие исследователи, преподаватели и художники на протяжении многих лет вносили свой вклад в развитие ChucK. Спенсер Салазар создал miniAudicle, интегрированную среду разработки на основе графического пользовательского интерфейса для ChucK в 2004 году (эта IDE, в дополнение к версии ChucK для командной строки, во многом остается тем способом, которым ChucK распространяется и используется сегодня). Принстонский оркестр ноутбуков (PLORk), основанный Дэном Труманом и Перри Куком в 2005 году, начал использовать ChucK для обучения, а также для дизайна инструментов и звука. В 2006 году Ребекка Фибринк и Ге Ванг создали систему анализа звука ChucK, выраженную с помощью анализаторов единиц измерения — аналога генераторов единиц измерения. Ге присоединился к профессорско-преподавательскому составу CCRMA Стэнфордского университета в 2007 году, а исследования и разработки ChuckK стали распределенными среди разработчиков в Принстоне, Стэнфорде и других местах. Стэнфордский оркестр ноутбуков (SLOrk) был основан в 2008 году в CCRMA, где ChucK продолжал выступать инструментом проектирования инструментов и обучения. В том же году был основан мобильный музыкальный стартап Smule, который использовал ChucK на iPhone (под кодовым названием «ChiP») в качестве звукового движка в реальном времени для своих ранних приложений: Ocarina, Sonic Lighter, Zephyr и Leaf Trombone: Мировая сцена. Тем временем ChucK продолжал внедряться в учебные программы по компьютерной музыке, в том числе в Стэнфорде, Принстоне и CalArts. В 2015 году вышла книга «Программирование для музыкантов и цифровых художников: создание музыки с ChucK» , авторами которой являются Аджай Капур, Перри Кук, Спенсер Салазар и Ге Ванг. Примерно в то же время Кадензе представил онлайн-курс «Введение в программирование аудио в реальном времени» в ChucK. Ромен Мишон и Ге Ван объединили FAUST и ChucK, чтобы создать FaucK. В 2017 году Джек Атертон создал Chunity, который позволяет программировать ChucK внутри среды разработки игр Unity. В 2018 году Ге написал о Чаке в фотокомиксе Artful Design: Technology in Search of the Sublime о важности культурной осведомленности в формировании технологий. ChucK теперь работает в веб-браузерах (WebChucK) и может быть запрограммирован непосредственно в среде WebChucK IDE.
ChucK подробно описан в опубликованных статьях и книгах (см. список). Для обзора ознакомьтесь:
Отрывок из комикса «ChucK: A Strongly Timed Music Programming Language» из книги «Artful Design: Technology in Search of the Sublime».
Ван Г., PR, Кук и С. Салазар. 2015. «Chuck: строго синхронизированный язык компьютерной музыки» Computer Music Journal 39:4. doi:10.1162/COMJ_a_00324
Документы, не являющиеся исходным кодом (документы, логотипы, звуковые фрагменты, комиксы), были перенесены в репозиторий chuck-media.
Присоединяйтесь к нам! Разногласия в сообществе Чака | Список рассылки пользователей ChucK
Счастливого ЧаКинга!