Abstract

This article presents a new framework for unit generator development for Csound, supporting a full object-oriented programming approach. It introduces the concept of unit generators and opcodes, and its centrality with regards to music programming languages in general, and Csound in specific. The layout of an opcode from the perspective of the Csound C-language API is presented, with some outline code examples. This is followed by a discussion which places the unit generator within the object-oriented paradigm and the motivation for a full C++ programming support, which is provided by the Csound Plugin Opcode Framework (CPOF). The design of CPOF is then explored in detail, supported by several opcode examples. The article concludes by discussing two key applications of object-orientation and their respective instances in the Csound code base.

Highlights

  • IntroductionAll modern music programming systems provide means for extending their capabilities [1]

  • All modern music programming systems provide means for extending their capabilities [1].In most cases, this extensibility applies to allowing new unit generators (UGs) to be added to the system.A UG is defined as a component of the system programming language responsible for processing input and/or generating some output [2]

  • Csound UG development relies on the conventions outlined in Section 1.1.1, plus a comprehensive set of application programming interface (API) functions provided in the CSOUND structure

Read more

Summary

Introduction

All modern music programming systems provide means for extending their capabilities [1] In most cases, this extensibility applies to allowing new unit generators (UGs) to be added to the system. A UG is defined as a component of the system programming language responsible for processing input and/or generating some output [2] These may take the form of control or audio signals, messages of some kind, or single values. While some languages allow the user to process signal using only primitive operations, UGs provide in most cases a more convenient and efficient way to implement a given algorithm. UGs are the only means possible to realise a given algorithm, as the language in question is not designed to process signals directly or does not provide the required primitive operations to implement it (on a sample-level basis)

Methods
Results
Discussion
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call