ChucK是一种用于实时声音合成和音乐创作的编程语言。它是开源的,可在 macOS、Windows 和 Linux 上免费使用。 ChucK 提出了一种独特的基于时间的并发编程模型,该模型精确且富有表现力(我们称之为强定时),具有动态控制率以及即时添加和修改代码的能力。此外,ChucK 支持 MIDI、OpenSoundControl、HID 设备和多通道音频。它有趣且易于学习,为作曲家、研究人员和表演者提供了强大的编程工具,用于构建和试验复杂的音频合成/分析程序以及实时交互式音乐。
欢迎来到查克!
要下载并安装 ChucK,请访问官方 ChucK 发布页面。
有关更多信息,包括文档、示例、研究出版物和社区资源,请访问ChucK 主页或其Princeton 镜像。
brew install chuck
要从源代码构建最新的 ChucK,请从 GitHub 克隆chuck
存储库:
git clone https://github.com/ccrma/chuck.git
导航到chuck/src
目录,然后运行make
:
cd chuck/src
make mac
或者构建通用二进制文件(英特尔+苹果芯片):
make mac-ub
这应该在chuck/src
中构建一个chuck
可执行文件。
依赖项:gcc、g++、make、bison、flex、libsndfile、ALSA(用于 linux-alsa 构建)、PulseAudio(用于 linux-pulse 构建)、JACK(用于 linux-jack 构建)
要在 Debian 或 Ubuntu 上为chuck设置构建环境:
sudo apt install build-essential bison flex libsndfile1-dev
libasound2-dev libpulse-dev libjack-jackd2-dev
对于其他 Linux 发行版,尽管软件包安装工具和软件包名称可能略有不同,但设置应该类似。 (注意:不需要 JACK 或 PulseAudio 的设置可以省略这两个包中的一个或两个。Linux 上的 MIDI 支持需要 ALSA。 )
要构建chuck (使用所有支持的驱动程序: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/src
中构建一个chuck
可执行文件。
要使用 Visual Studio(推荐 2019 或更高版本)构建 chuck,请导航到chucksrcvisual-studio
,打开chuck.sln
并构建。
将 ChucK 编译为 WebAssembly (WASM):
emsdk
目录): source ./emsdk_env.sh
chuck/src/
目录,然后运行make web
: cd chuck/src
make web
这应该在chuck/src/host-web/webchuck/js
目录中创建webchuck.wasm
和webchuck.js
。 (另请参阅:WebChucK)
以下是 ChucK 团队维护的源存储库。开发商想要!
卡盘|核心语言、虚拟机和合成引擎
楚金斯|用插件扩展卡盘!一个开始贡献的好地方
迷你Audicle |卡盘的 IDE
网络卡盘|在网络浏览器中运行的 chuck(适用于台式机和手机!)
webchuck IDE |一个基于浏览器的 Chuck IDE
社区|查克统一
春瑞尔|虚幻引擎中的 ChucK(新!)
楚格| ChucK 图形库(新!)
可以将 ChucK核心(编译器、虚拟机、综合引擎)合并为其他 C++ 软件主机中的组件/库。这对于将 ChucK 功能添加到您的软件系统或创建新插件非常有用。仅供参考,上一节列出的各种工具都将 ChucK 纳入此核心/主机模型中:包括命令行、miniAudicle、Unity、Unreal Engine、WebAssembly;此外ChucK还与openFrameworks、iOS/Android应用程序、嵌入式系统以及混合语言系统集成,例如FaucK(FAUST + ChucK)、ChucKDesigner(TouchDesigner中的ChucK)、chuck~(纯数据中的ChucK)、chuck~( ChuckK 在 Max/MSP)。
为了展示如何完成这种集成,我们创建了一系列 C++ 示例来展示如何将 ChucK 集成到任何 C++ 主机中。这些示例中最简单的 example-1-minimal.cpp 用大约 20 行代码用 C++ 创建了一个最小的 ChucK 主机。随后的示例分别展示了添加实时音频、使用 ChucK 全局变量的 C++/ChucK 通信以及来自 C++ 的 ChucK 粉碎控制。这些主机示例可以在此存储库的 src/host-examples/ 文件夹中找到。如需更高级的使用,请查看上一节中列出的 ChucK 生态系统中的各种工具。要开始构建这些主机示例:
cd src/host-examples
make
也可以仅构建 ChucK核心(编译器、虚拟机和合成引擎),无需主机,也无需任何特定于平台的实时音频 I/O。这对于将 ChucK 内核集成到已有音频 I/O 的现有主机系统中来说是一个有用的起点。要以“vanilla”模式构建 ChucK 核心:
cd src/core
make vanilla
ChucK 源代码根据 MIT 许可证和 GNU 通用公共许可证 2.0(或任何更高版本)获得双重许可。如果您使用本作品,您可以选择任一许可证。
ChucK 于 2000 年代初由 Ge Wang 和 Perry R. Cook 在普林斯顿大学创建,而 Ge 是普林斯顿大学的博士。计算机科学系佩里指导的学生。 ChucK 的第一个版本于 2003 年在 GPL 许可下发布。多年来,许多研究人员、教师和艺术家为 ChucK 的发展做出了贡献。 Spencer Salazar 在 2004 年创建了 miniAudicle,这是一个基于 GUI 的 ChucK 集成开发环境(这个 IDE,除了 ChucK 的命令行版本之外,很大程度上仍然保留了今天 ChucK 的分发和使用方式)。普林斯顿笔记本电脑乐团 (PLORk) 由 Dan Trueman 和 Perry Cook 于 2005 年创立,开始使用 ChucK 进行教学以及乐器和声音设计。 2006 年,Rebecca Fiebrink 和 Ge Wang 创建了 ChucK 的音频分析框架,通过单元分析器(单元生成器的分析对应部分)来表达。 Ge 于 2007 年加入斯坦福大学 CCRMA 任教,ChucK 的研究和开发开始分散,开发人员来自普林斯顿大学、斯坦福大学和其他地方。斯坦福笔记本电脑乐团 (SLOrk) 于 2008 年在 CCRMA 成立,ChucK 继续成为乐器设计和教学的工具。同年,与他人共同创立了移动音乐初创公司 Smule,该公司使用 iPhone 上的 ChucK(代号“ChiP”)作为其早期应用程序(Ocarina、Sonic Lighter、Zephyr 和 Leaf Trombone)的实时音频引擎:世界舞台。与此同时,ChucK 继续进入计算机音乐课程,包括斯坦福大学、普林斯顿大学、加州艺术学院。 2015 年,Ajay Kapur、Perry Cook、Spencer Salazar 和 Ge Wang 合着的《音乐家和数字艺术家编程:用 ChucK 创作音乐》一书出版。大约在同一时间,Kadenze 在 ChucK 中推出了在线课程“实时音频编程简介”。 Romain Michon 和 Ge Wang 将 FAUST 和 ChucK 结合起来创建了 FaucK。 2017 年,Jack Atherton 创建了 Chunity,它使人们能够在 Unity 游戏开发框架内对 ChucK 进行编程。 2018 年,葛在《艺术设计:追寻崇高的技术》中写了关于 ChucK 的文章,这是一本关于文化意识在技术塑造中的重要性的漫画书。 ChucK 现在在 Web 浏览器 (WebChucK) 中本地运行,并且可以直接在 WebChucK IDE 中进行编程。
ChucK 在已发表的文章和书籍中得到了广泛的记录(见列表)。有关概述,请查看:
“ChucK:一种强定时音乐编程语言”漫画书摘自《艺术设计:追求崇高的技术》
Wang, G.、PR、Cook 和 S. Salazar。 2015.“ChucK:一种强定时计算机音乐语言”计算机音乐杂志39:4。号码:10.1162/COMJ_a_00324
非源代码文档(论文、徽标、原声片段、漫画)已迁移到 chuck-media 存储库。
加入我们! ChuckK 社区不和谐 | ChucK-用户邮件列表
查金快乐!