Rethinking the Computer Music Language: SuperCollider

Rethinking the Computer Music Language: SuperCollider
复制标题

重新思考计算机音乐语言:SuperCollider

DOI:
--
复制
发表时间:
2002
影响因子:
--
通讯作者:
J. McCartney
J. McCartney
中科院分区:
计算机科学4区
文献类型:
--
作者:
J. McCartney

文献摘要

被引文献

相似文献

离子描述和目的变量名称为数据地址提供人类可读名称函数名称名称提供了人类可读名称来函数地址控制结构消除了“意大利面”''代码(“''goto''语句是不再需要的。)参数传递默认参数值值,参数的关键字规范,可变长度参数列表等。数据结构允许概念化数据数据键入数据的类型对于变量的类型,静态的程序是正确的,牺牲了更大的通用性,牺牲了保证的正确性。基于一个参数的运行时类型多重调度分配到一个基于多个运行时类型的函数的一个参数的运行时类型,将单个调度分配到一个函数参数。根据参数的运行时间状态垃圾收集自动内存管理封闭允许创建,组合和使用功能作为一流的值动态绑定提供了在调用上下文中对值的访问(.SC中的Valueenvir)共同路由同步合作过程线程线程异步过程懒评估允许指定操作的顺序。 - 赋予单一词汇调度,垃圾收集,面向对象的语言类似于Smalltalk(www.smalltalk.org)超级费用是一个对象,包括字母和数字等基本类型。一个仪器是在功能上构造的。生成器。通过更改指定尺寸的变量的值(兴奋剂的数量,梳子延迟的数量,Allpass延迟数)诸如csound或``电线上的''环境之类的语言,例如max,必须为补丁的尺寸的不同值创建不同的补丁。
ion Description and Purpose Variable names Provide human readable names to data addresses Function names Provide human readable names to function addresses Control structures Eliminate ‘‘spaghetti’’ code (The ‘‘goto’’ statement is no longer necessary.) Argument passing Default argument values, keyword specification of arguments, variable length argument lists, etc. Data structures Allow conceptual organization of data Data typing Binds the type of the data to the type of the variable Static Insures program correctness, sacrificing generality. Dynamic Greater generality, sacrificing guaranteed correctness. Inheritance Allows creation of families of related types and easy re-use of common functionality Message dispatch Providing one name to multiple implementations of the same concept Single dispatch Dispatching to a function based on the run-time type of one argument Multiple dispatch Dispatching to a function based on the run-time type of multiple arguments. Predicate dispatch Dispatching to a function based on run-time state of arguments Garbage collection Automated memory management Closures Allow creation, combination, and use of functions as first-class values Lexical binding Provides access to values in the defining context Dynamic binding Provides access to values in the calling context (.valueEnvir in SC) Co-routines Synchronous cooperating processes Threads Asynchronous processes Lazy evaluation Allows the order of operations not to be specified. Infinitely long processes and infinitely large data structures can be specified and used as needed. Applying Language Abstractions to Computer Music The SuperCollider language provides many of the abstractions listed above. SuperCollider is a dynamically typed, single-inheritance, single-argument dispatch, garbage-collected, object-oriented language similar to Smalltalk (www.smalltalk.org). In SuperCollider, everything is an object, including basic types like letters and numbers. Objects in SuperCollider are organized into classes. The UGen class provides the abstraction of a unit generator, and the Synth class represents a group of UGens operating as a group to generate output. An instrument is constructed functionally. That is, when one writes a sound-processing function, one is actually writing a function that creates and connects unit generators. This is different from a procedural or static object specification of a network of unit generators. Instrument functions in SuperCollider can generate the network of unit generators using the full algorithmic capability of the language. For example, the following code can easily generate multiple versions of a patch by changing the values of the variables that specify the dimensions (number of exciters, number of comb delays, number of allpass delays). In a procedural language like Csound or a ‘‘wire-up’’ environment like Max, a different patch would have to be created for different values for the dimensions of the patch.