第1章 初识Csound 1
1.1 Csound的发展及特点 1
1.1.1 计算机声音合成的发展 1
1.1.2 什么是Csound 5
1.1.3 音乐家为什么要编程 7
1.1.4 为什么要用Csound 10
1.2 Csound的授权方式 11
1.2.1 什么是GPL 11
1.2.2 Csound的授权方式 12
1.3 Csound的获得 13
1.3.1 Csound的版本 13
1.3.2 Csound的获得 21
1.4 Csound的安装 23
1.4.1 Csound在Windows下的安装 23
1.4.2 Csound在Mac OS X下的安装 29
1.4.3 Csound在Linux下的安装 30
1.4.4 Csound在移动平台下的安装 32
1.5 在Csound中获得帮助 36
1.5.1 在线帮助 36
1.5.2 网络教程 37
1.5.3 社区交流 38
第2章 Csound使用基础 40
2.1 Csound的基本概念 40
2.1.1 Csound的工作原理 40
2.1.2 Csound的执行缓冲区 40
2.1.3 Csound中振幅值的表示 41
2.2 初次使用Csound 43
2.2.1 如何设置Csound的声音 43
2.2.2 Csound的使用 44
2.2.3 Gsound的控制台输出 45
2.2.4 运行第一个Csound程序 47
2.3 Csound命令行 50
2.3.1 Csound命令行 50
2.3.2 通过终端执行Csound 52
2.4 Csound前端程序 54
2.4.1 Csound前端程序 54
2.4.2 CsoundQt简介 55
2.4.3 CsoundQt的配置 58
第3章 Csound的设置 73
3.1 Csound环境变量 73
3.1.1 Csound环境变量 73
3.1.2 环境变量的设置 75
3.1.3 Python的设置 77
3.2 音频配置与音频处理性能的调试 79
3.2.1 音频设备及驱动类型的选择 79
3.2.2 性能调试与延迟 81
3.2.3 CsoundQt音频设置 82
3.2.4 实时音频输入与输出 83
3.3 实时音频处理 84
3.3.1 实时音频 84
3.3.2 周期和缓冲区大小(Period&BufferSizes) 85
3.3.3 控制率(Control Rate) 85
3.3.4 PulseAudio的使用 85
3.3.5 优化音频I/O延迟 87
3.4 渲染为音频文件 88
3.4.1 需要渲染为音频文件的场合 88
3.4.2 渲染为音频文件的操作 89
3.4.3 渲染选项 90
3.4.4 同时进行实时音频输出与音频文件渲染 90
3.4.5 CsoundQt中的设置 92
3.5 MIDI配置 93
3.5.1 Csound的MIDI模块 93
3.5.2 不同操作系统下的MIDI模块 93
3.5.3 CsoundQt下的MIDI I/O设置 94
3.5.4 MIDI键盘的使用 94
3.5.5 MIDI控制器的使用 96
3.5.6 其他类型MIDI数据的操作 97
第4章 Csound的语法结构 99
4.1 Csound的语法规范 99
4.1.1 Orchestra和Score 99
4.1.2 Csound文档结构 101
4.1.3 操作码(Opcode) 102
4.1.4 变量(Variable) 103
4.2 Orchestra和Score的标准化文件格式 104
4.2.1 结构化数据文件格式 104
4.2.2 Score文件预处理 108
4.3 Orchestra的语法结构 109
4.3.1 Orchestra的语法结构 109
4.3.2 标准数字Score 121
4.4 Score Statements 131
4.4.1 e Statement 132
4.4.2 fStatement 134
4.4.3 i Statement 136
4.5 局部变量与全局变量 141
4.5.1 变量类型 141
4.5.2 局部作用域(Local Scope) 144
4.5.3 全局作用域(Global Scope) 147
4.5.4 全局音频变量的使用 150
4.5.5 用于全局变量的操作码chn 160
第5章 Csound的过程控制 163
5.1 初始化进程和执行进程 163
5.1.1 初始化进程(Init Pass) 163
5.1.2 执行进程(Performance Pass) 164
5.1.3 隐式增量 165
5.1.4 初始化与赋值的差异 168
5.1.5 Audio Vector简析 170
5.1.6 综合应用实例 171
5.2 i变量与k变量的应用 172
5.2.1 存取k变量的初始值 172
5.2.2 reinit重新初始化 174
5.2.3 Instruument的执行顺序 176
5.2.4 Instrument的命名 178
5.3 i-time与k-rate 180
5.3.1 i-time和k-rate相关的操作码 180
5.3.2 与k-rate周期大小有关的问题 183
5.3.3 时钟周期使用限制 185
5.3.4 何时使用i-rate或k-rate 186
第6章 流程控制 187
6.1 条件表达式与流程控制 187
6.1.1 流程控制的类型 187
6.1.2 常见循环类型 189
6.1.3 条件表达式中的i-time与k-time 189
6.2 if-then-else 190
6.2.1 if-then-else 190
6.2.2 i-rate的例子 191
6.2.3 k-rate的例子 192
6.2.4 条件判断的简写形式 193
6.3 if-goto 195
6.3.1 if-goto 195
6.3.2 i-rate的例子 195
6.3.3 k-rate的例子 198
6.4 1oop 199
6.4.1 loop循环 199
6.4.2 i-rate的例子 201
6.4.3 k-rate的例子 204
6.5 Time Loop 205
6.5.1 Time Loop 205
6.5.2 timeout基础 206
6.5.3 timeout应用 209
6.5.4 使用操作码metro实现Time Loop 214
第7章 Function Table 218
7.1 Function Table的定义 218
7.1.1 Function Table的生成 218
7.1.2 GEN01:导入音频文件 225
7.1.3 GEN10:生成波形 226
7.2 Function Table的读写操作 229
7.2.1 向Function Table中写入数值 229
7.2.2 从Function Table中读取数据 236
7.3 Function Table的文件操作 239
7.3.1 将FunctionTable中的内容保存到文件 239
7.3.2 将录制好的FunctionTable写入声音文件 240
7.4 Function Table相关操作码小结 242
第8章 数组 244
8.1 数组的分类与创建 244
8.1.1 数组的类型 244
8.1.2 数组的命名规则 257
8.1.3 数组的创建 257
8.2 数组的操作 259
8.2.1 数组的基本操作 259
8.2.2 数组与Table间的操作 263
8.2.3 数组与FFT数据间的操作 266
8.2.4 数组的数学运算 270
8.2.5 在UDO中使用数组 283
第9章 自定义扩展 289
9.1 用户自定义操作码(UDO) 289
9.1.1 用户自定义操作码 289
9.1.2 将Csound Instrument代码转换为UDO 290
9.1.3 基本范例 291
9.1.4 对UDO进行优化设计 295
9.2 使用setksmps对ksmps进行自定义 299
9.2.1 setksmps特性 299
9.2.2 setksmps的默认参数 300
9.3 UDO应用实例 302
9.3.1 使用#include文件加载UDO 302
9.3.2 递归调用UDO 303
9.3.3 播放单声道或立体声音频文件 304
9.3.4 修改FunctionTable中的数据 306
9.3.5 打印输出FunctionTable中的内容 310
9.3.6 实现加法合成的递归调用型UDO 312
9.3.7 字符串实现数组功能 315
9.3.8 相关链接与操作码 316
9.4 宏(MACRO) 317
9.4.1 Orchestra宏 317
9.4.2 Score宏 321
第10章 实时事件 324
10.1 常规事件处理 324
10.1.1 执行顺序的重新安排 324
10.1.2 Score中的InstrumentEvent 328
10.2 实时事件类型 331
10.2.1 MIDI Note-On Event的使用 331
10.2.2 Widget的使用 332
10.2.3 Realtime Score(Live Event Sheet)的使用 335
10.3 使用流程控制实现实时事件 339
10.3.1 条件语句的使用 339
10.3.2 利用i-rate loop计算Instrument Event Pool 341
10.3.3 使用Time Loop 346
10.3.4 重编译 349
10.4 相关链接与操作码 354
10.4.1 相关链接 354
10.4.2 相关操作码 354
第11章 Score编写技巧 356
11.1 Csound Score的编写技巧 356
11.1.1 手工输入代码编写Score 356
11.1.2 Score语言的扩展:bin=“…” 359
11.1.3 使用Csbeats 361
11.1.4 使用Perl语言进行扩展 365
附录 常用Csound操作码 367
Ⅰ.Ⅰ基本信号处理类操作码 367
Ⅰ.Ⅰ.Ⅰ振荡器及相量相关操作码 367
Ⅰ.Ⅰ.Ⅱ随机信号及噪声信号发生器 368
Ⅰ.Ⅰ.Ⅲ包络控制 369
Ⅰ.Ⅰ.Ⅳ延迟 370
Ⅰ.Ⅰ.Ⅴ滤波器 370
Ⅰ.Ⅰ.Ⅵ混响 371
Ⅰ.Ⅰ.Ⅶ信号测量、动态处理、采样电平操作 372
Ⅰ.Ⅰ.Ⅷ空间效果 372
Ⅰ.Ⅱ高级信号处理类操作码 373
Ⅰ.Ⅱ.Ⅰ调制与失真 373
Ⅰ.Ⅱ.Ⅱ粒子合成 374
Ⅰ.Ⅱ.Ⅲ卷积运算 374
Ⅰ.Ⅱ.Ⅳ FFT和频谱处理 374
Ⅰ.Ⅱ.Ⅴ物理建模与FM Instrument 376
Ⅰ.Ⅲ数据相关类操作码 376
Ⅰ.Ⅲ.Ⅰ Buffer与FunctionTable 376
Ⅰ.Ⅲ.Ⅱ信号输入和输出、采样和循环回放、Soundfont 377
Ⅰ.Ⅲ.Ⅲ文件输入与输出 379
Ⅰ.Ⅲ.Ⅳ转换器与数据类型 380
Ⅰ.Ⅲ.Ⅴ打印输出和字符串 380
Ⅰ.Ⅳ实时交互类操作码 381
Ⅰ.Ⅳ.Ⅰ MIDI相关 381
Ⅰ.Ⅳ.ⅡOSC和网络 382
Ⅰ.Ⅳ.Ⅲ人机交互界面 383
Ⅰ.Ⅴ Instrument控制类操作码 384
Ⅰ.Ⅴ.Ⅰ Score参数访问 384
Ⅰ.Ⅴ.Ⅱ时间和节拍 384
Ⅰ.Ⅴ.Ⅲ条件与循环 385
Ⅰ.Ⅴ.Ⅳ程序流程控制 385
Ⅰ.Ⅴ.Ⅴ Event触发 385
Ⅰ.Ⅴ.Ⅵ Instrument管理 386
Ⅰ.Ⅴ.Ⅶ信号交换和混音相关 386
Ⅰ.Ⅵ其他类别的操作码 387
Ⅰ.Ⅵ.Ⅰ数学相关 387
Ⅰ.Ⅵ.Ⅱ信号转换 388
Ⅰ.Ⅵ.Ⅲ与Python及系统相关 389
Ⅰ.Ⅵ.Ⅳ插件相关 389
参考文献 391
致谢 392
后记 393
作者简介 394
- 《HTML5从入门到精通 第3版》(中国)明日科技 2019
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《北方曲艺音乐初探 下》萧作如著 2020
- 《Python3从入门到实战》董洪伟 2019
- 《广西近代专业音乐研究》李昂责任编辑;(中国)杨柳成 2019
- 《北方曲艺音乐初探 上》萧作如著 2020
- 《孩子们的音乐之旅 1 宝宝睡觉 幼儿版》包菊英主编 2016
- 《家庭音乐素养教育》刘畅 2018
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《流体力学》张扬军,彭杰,诸葛伟林编著 2019