ChucK é uma linguagem de programação para síntese sonora e criação musical em tempo real. É de código aberto e está disponível gratuitamente em macOS, Windows e Linux. ChucK apresenta um modelo de programação concorrente baseado em tempo exclusivo que é preciso e expressivo (chamamos isso de tempo forte ), com taxas de controle dinâmicas e a capacidade de adicionar e modificar código dinamicamente. Além disso, o ChucK oferece suporte a dispositivos MIDI, OpenSoundControl, HID e áudio multicanal. É divertido e fácil de aprender e oferece a compositores, pesquisadores e intérpretes uma poderosa ferramenta de programação para construir e experimentar programas complexos de síntese/análise de áudio e música interativa em tempo real.
Bem-vindo ao Chuck!
Para baixar e instalar o ChucK, visite a página oficial de lançamento do ChucK .
Para obter mais informações, incluindo documentação, exemplos, publicações de pesquisa e recursos da comunidade, visite a página inicial do ChucK ou seu espelho de Princeton .
brew install chuck
Para construir o Chuck mais recente a partir do código-fonte, clone o repositório chuck
do GitHub:
git clone https://github.com/ccrma/chuck.git
navegue até o diretório chuck/src
e execute make
:
cd chuck/src
make mac
OU para construir um binário universal (Intel + Apple Silicon):
make mac-ub
Isso deve criar um executável chuck
em chuck/src
.
Dependências: gcc, g++, make, bison, flex, libsndfile, ALSA (para compilações linux-alsa), PulseAudio (para compilações linux-pulse), JACK (para compilações linux-jack)
Para configurar um ambiente de construção para chuck no Debian ou Ubuntu:
sudo apt install build-essential bison flex libsndfile1-dev
libasound2-dev libpulse-dev libjack-jackd2-dev
Para outras distribuições Linux, a configuração deve ser semelhante, embora as ferramentas de instalação de pacotes e os nomes dos pacotes possam ser ligeiramente diferentes. ( NOTA: configurações que não precisam de JACK ou PulseAudio podem omitir um ou ambos os pacotes. ALSA é necessário para suporte MIDI no Linux. )
Para construir o chuck (com todos os drivers suportados: ALSA, PulseAudio, JACK), navegue até o diretório chuck/src
e execute make
:
cd chuck/src
make linux-all
Para sua informação, make linux-all
é equivalente em resultado à combinação de drivers individuais:
make linux-alsa linux-pulse linux-jack
Para construir o chuck para um subconjunto de ALSA, PulseAudio ou JACK, execute make
com o(s) driver(s) desejado(s). Por exemplo, para construir apenas para ALSA e PulseAudio:
make linux-alsa linux-pulse
Ou, para construir apenas para ALSA:
make linux-alsa
Este processo deve construir um chuck
executável em chuck/src
.
Para construir o chuck usando o Visual Studio (recomendado 2019 ou posterior), navegue até chucksrcvisual-studio
, abra chuck.sln
e build.
Para compilar o Chuck para WebAssembly (WASM):
emsdk
): source ./emsdk_env.sh
chuck/src/
e execute make web
: cd chuck/src
make web
Isso deve criar webchuck.wasm
e webchuck.js
no diretório chuck/src/host-web/webchuck/js
. (Veja também: WebChuck)
Aqui estão os repositórios de origem mantidos pela equipe ChucK. Os desenvolvedores queriam!
mandril | linguagem principal, máquina virtual e mecanismo de síntese
chugins | estenda o chuck com plug-ins! um ótimo lugar para começar a contribuir
miniAudicle | um IDE para chuck
webchuck | chuck rodando em navegadores da web (funciona em desktops e telefones!)
IDE webchuck | um IDE baseado em navegador para chuck
unidade | Chuck na Unidade
chunreal | Chuck no Unreal Engine (novo!)
chugl | Biblioteca gráfica Chuck (nova!)
É possível incorporar o núcleo ChucK (compilador, máquina virtual, mecanismo de síntese) como um componente/biblioteca dentro de outros hosts de software c++. Isso pode ser útil para adicionar funcionalidades do ChucK aos seus sistemas de software ou para criar novos plugins. Para sua informação, todas as várias ferramentas listadas na seção anterior incorporam o ChucK neste modelo de núcleo/host: incluindo linha de comando, miniAudicle, Unity, Unreal Engine, WebAssembly; além disso, o ChucK foi integrado com openFrameworks, aplicativos iOS/Android, sistemas embarcados e em sistemas de linguagem híbrida, por exemplo, FaucK (FAUST + ChucK), ChucKDesigner (ChucK no TouchDesigner), chuck~ (ChucK em Pure Data), chuck~ ( Chuck em Max/MSP).
Para mostrar como essa integração pode ser feita, criamos uma série de exemplos em C++ para mostrar como integrar o ChucK em qualquer host C++. O mais simples desses exemplos, example-1-minimal.cpp, cria um host ChucK mínimo em C++ em cerca de 20 linhas de código. Os exemplos a seguir mostram a adição de áudio em tempo real, comunicação C++/ChuckK usando globais ChucK e controle de fragmentação ChucK de C++, respectivamente. Esses exemplos de host podem ser encontrados na pasta src/host-examples/ deste repositório. Para um uso mais avançado, verifique as várias ferramentas do ecossistema ChucK listadas acima na seção anterior. Para começar a construir estes exemplos de host:
cd src/host-examples
make
Também é possível construir apenas o núcleo ChucK (compilador, máquina virtual e mecanismo de síntese), sem um host e sem qualquer E/S de áudio em tempo real específica da plataforma. Este pode ser um ponto de partida útil para integrar o núcleo do ChucK em sistemas host existentes que já possuem E/S de áudio. Para construir o núcleo do Chuck no modo "vanilla":
cd src/core
make vanilla
O código-fonte do ChucK tem licença dupla sob a licença MIT e a GNU General Public License 2.0 (ou qualquer versão posterior). Você pode escolher qualquer uma das licenças se usar este trabalho.
O ChucK foi criado no início dos anos 2000 na Universidade de Princeton por Ge Wang e Perry R. Cook, enquanto Ge era Ph.D. aluno orientado por Perry no Departamento de Ciência da Computação. A primeira versão do ChucK foi lançada sob licença GPL em 2003. Muitos pesquisadores, professores e artistas contribuíram para a evolução do ChucK ao longo dos anos. Spencer Salazar criou o miniAudicle, um ambiente de desenvolvimento integrado baseado em GUI para o ChucK em 2004 (este IDE, além da versão de linha de comando do ChucK, permanece em grande parte como o ChucK é distribuído e usado hoje). A Princeton Laptop Orchestra (PLOrk), fundada por Dan Trueman e Perry Cook em 2005, começou a usar o ChucK para ensino, bem como para design de instrumentos e som. Em 2006, Rebecca Fiebrink e Ge Wang criaram a estrutura de análise de áudio do ChucK, expressa por meio de analisadores de unidades – a contrapartida de análise dos geradores de unidades. Ge ingressou no corpo docente do CCRMA da Universidade de Stanford em 2007, e a pesquisa e desenvolvimento do ChucK foram distribuídos, com desenvolvedores em Princeton, Stanford e outros lugares. A Stanford Laptop Orchestra (SLOrk) foi fundada em 2008 no CCRMA, onde o ChucK continuou a ser uma ferramenta para design e ensino de instrumentos. Nesse mesmo ano, foi cofundada a startup de música móvel Smule, que usava ChucK no iPhone (codinome "ChiP") como um mecanismo de áudio em tempo real para seus primeiros aplicativos: Ocarina, Sonic Lighter, Zephyr e Leaf Trombone: Palco Mundial. Enquanto isso, ChucK continuou a entrar nos currículos de música computacional, inclusive em Stanford, Princeton, CalArts. Em 2015, foi publicado o livro Programação para Músicos e Artistas Digitais: Criando música com ChucK , de autoria de Ajay Kapur, Perry Cook, Spencer Salazar e Ge Wang. Na mesma época, Kadenze apresentou o curso online Introdução à programação de áudio em tempo real no Chuck. Romain Michon e Ge Wang integraram FAUST e ChucK para criar FaucK. Em 2017, Jack Atherton criou o Chunity, que permite programar o ChucK dentro da estrutura de desenvolvimento de jogos Unity. Em 2018, Ge escreveu sobre ChucK em Artful Design: Technology in Search of the Sublime , uma história em quadrinhos sobre a importância da consciência cultural na formação da tecnologia. O ChucK agora roda nativamente em navegadores web (WebChucK) e pode ser programado diretamente no IDE WebChucK.
ChucK foi amplamente documentado em artigos e livros publicados (ver lista). Para uma visão geral, confira:
“Chuck: A Strongly-Timed Music Programming Language”, trecho de quadrinhos de Artful Design: Technology in Search of the Sublime
Wang, G., PR, Cook e S. Salazar. 2015. "Chuck: uma linguagem de música computacional fortemente cronometrada" Computer Music Journal 39:4. doi:10.1162/COMJ_a_00324
Documentos que não são de código-fonte (artigos, logotipos, frases de efeito, quadrinhos) foram migrados para o repositório chuck-media.
Junte-se a nós! Discórdia da comunidade Chuck | Lista de discussão de usuários do ChucK
Feliz Chucking!