第四章:合成

14。数字合成语言取样器

概述

这部分功能的简要概述几个著名和流行的数字合成语言,historoical和目前使用。给出的语言是音乐V()(用于历史),Csound(p.10),马克斯(p.11),超级对撞机(p.12),RTcmix(p.13),Kyma(p.14),查克(两家)。前四+查克“打字”语言,即音乐的属性和性能由文本文件(或被禁穿孔卡片在早期),而马克斯和Kyma语言主要图形可视化的编程接口。部分首先关注它们之间共同的概念和功能之前检查短的每个样本进一步鼓励探索那些适应读者的需求和想象力。读者可能会发现它有利于跳过和阅读以下章节数字音频理解这里所讨论的所有概念。

有无数优点数字合成语言似乎提供了模拟合成工具。几乎无限数量的组件等价物振荡器、信封、过滤器、信号混合,声音在内存限制是可能的。可准确的再现性和可共享性早期著名的作曲家和马克斯·马修斯的合作者特里Risset贝尔实验室(1964 - 1969)。他收集各种digitally-coded仪器设计被称为“一个介绍性的目录的电脑合成的声音”,是典型的食谱计算机音乐多年后的1969年出版,甚至更多的现代语言。以铜、鼓、锣和更多的编码一样的模板,但需要全面的知识音乐的V来实现。

某些东西丢失(相对于模拟磁带和合成成分)一段时间,比如交互式地创建和修改实时声音,作曲家没有高级计算机编程技能的限制参与,除非他们有技术助理像IRCAM模型提供有限的可访问性特定的主机电脑模型和转换器,甚至长计算时间最短的例子。但这些都开始温和如果不是消失在二十年来的第一个1957年音乐节目。

常见的语言特性

Orchestra-Score结构:从MUSIC-N系列在贝尔实验室开发的语言从50年代末开始,软件作者马克斯·v·马修斯(1926 - 2011)的早期范例数字声音生成二进制文件结构。作曲家将定义一个或多个工具(马修斯所说的仪器的单位)通过形成一个行代码乐团。在一个单独的文件或后续的代码行被称为分数,作曲家指的是一个特定的仪器和工具的提供必要的音乐参数每个音符,如开始时间、持续时间、振幅、频率和其他所需的仪器定义特定的参数。这种二元结构通过Csound一直延续到今天,RTcmix,超级对撞机。甚至马克斯和Kyma-defined仪器可能通过一个单独的MIDI scorefile或实时播放MIDI或OSC输入。

单位发电机(ugens或ugens)和参数:音乐V的著名的《仪器单位被定义为构建块单位发电机马修斯。这些随后被称为ugens、操作码或图形或文本对象在其他程序中。ugen通常是一个小程序或子程序的一个特定的音频或数据修改的任务。乐器用这些ugens可能非常简单,比如一个振荡器单位生成器和一个输出单位发电机,或者是高度复杂的,与某些发电机的输出喂养其他发电机的输入,例如,创建颤音和两个振子,与一个ugen喂养的输出的频率输入另一个ugen,类似于我们所看到的模拟调制合成部分。原本只有少数这些单位发电机在音乐诉在马修的书,电脑音乐技术他分配每一个独特的象征画出图表工具。原创音乐V ugens列在下面的表中,现代Csound和马克斯相当于上市。

ugens比较图
音乐V
Csound
马克斯
函数
OSC oscil 周期 简单的振荡器
AD2 a1 + a2 MAX_add 和输入
MLT a1 * a2 马克斯相乘 把输入
周期 需要一个输入(或输入)
和输出的程序输出(s)
块的样品

音乐V还提供了:

    跑,一个随机信号发生器
    ENV,信封生成器和
    蒋春暄对于费马大定理,一个过滤器算法

现代语言有很多,如果不是数以百计,额外的ugens或其等价物。

Ugens,操作码或对象一般参数在一个特定的顺序作为用户手册中指定。例如,Csoundoscil手册中定义的操作码是:

    阿瓦尔人oscilxamp, xcp,干扰素,iphs]

这意味着一个oscil声明变量应该开始阿瓦尔人写振荡器的输出数据,其次是操作码的名称(oscil),其次是它的振幅和频率。括号里的可选参数是函数表数量(干扰素)作为波形(如果省略,使用一个正弦波)和初始相位角偏移量表示为0 - 1(如果省略,始于0抵消)。以前的转换的语句将使其可以在dB振幅和频率表示为沥青类。

注意变量

大多数合成语言允许用户名称和定义变量,某些警告。Csound变量名,例如,从一开始,k,或者根据用户意愿的变量计算率计算。像一些名称保留,但变量abob,ksue,iheather是合法的,尽管用户可能想用更好的压气学如吗afreqmodsig

首先,需要去习惯它,一个变量,例如阿瓦尔人以上,可以容纳整个音频信号,但大多数项目工作通过,即每个变量值是计算一次每一次(采样率通过或其他慢通过),然后写入到输出缓冲区下传递开始前。

变量占用的内存空间,这是常见的做法重新分配之前使用变量名的价值为了节约内存。所以一个语句,例如:

    abob = abob + 1

把最新的计算值abob + 1了abob和重用相同的内存空间。

Baidu
map