Programming languages

With block computation, we compute block-by-block instead of sample-by-sample. Thus, much of the computational overhead can be amortized over multiple samples. While this is a seemingly small detail, it can result in a factor of two speedup.

Functional programming, especially for real-time systems, is not very popular. Another way to model audio computation graphs is with objects and object-oriented programming. In this approach, we do not view sounds as “values” and we do not rely on the language and runtime system to implement them efficiently using lazy evaluation.

Python is easy to learn because there are so many different learning resources that make the acquisition process easier than previously expected. Faust also differs from most other languages because it does not rely on a limited set of built-in unit generators. Instead, Faust programs operate at the audio sample level and can express unit generators. In fact, Faust can output code that compiles into unit generators for a variety of languages such as Csound, described earlier.

Languages, compilers, operating systems for parallel computing. Applying a broad range of mathematical and theoretical ideas to computer systems problems. Caching, combining and randomisation in processors, multiprocessors, operating systems and wide-area networks and Language, linguistics, literature, literary theory. Research falling under this theme includes our work in programming language design and implementation, a long-established research strength of the Department. We have two research groups in this area, one focussed upon programming tools, the other upon the algebra of programming.

Objects and Updates

• Explicit “out-of-time” systems do not run in real time and instead keep track of musical time as part of the computation. Their main interest is not to develop new software, but to explore musical ideas. Ready-made modules often facilitate exploration or even inspire new musical directions; thus, libraries of reusable program modules are important for most computer musicians. This sometimes inhibits the adoption of new languages, which do not emerge with a mature set of ready-made capabilities and examples. One trend in computer music software is “plug-in” architectures, allowing libraries to be used by multiple languages and software systems.

  • All binary code-running software is written entirely in 0s and 1s, and there are unlimited permutations of these two numbers.
  • This programming language views the world as a group of objects that have internal data and external accessing parts of that data.
  • Figure 7 contains a very short SuperCollider program to play a sequence of chords transposed by a random amount.
  • Perhaps music will help to expand thinking about computer languages in general.

Java is slightly based on C and C++ and is quite extensive in reach and likeability. After Java has been learned by the beginner programmer, they establish a solid foundation that helps computer programmers to easily acquire more complex topics of computer science. It’s important to state that Java is one of the most widely-used programming languages that will be consistently be used for years to come.


Music making is often a collaborative process, while computation is often viewed as discrete operations where input is provided at the beginning and output occurs at the end. Perhaps music will help to expand thinking about computer languages in general. # is Microsoft’s extremely popular programming language that is commonly used for developing desktop/web applications, web services and game development. The programming language C# is predominantly used on the Windows .NET framework however it can easily be implemented within an open-source platform.

Create new collection

Yet its simplicity inspired a small company called Microsoft to develop the high-level Microsoft BASIC language in the mid-1970s, using a tiny amount of RAM at a time when 4KB was often as much memory as a device could offer. Before embarking on a broad discussion of languages for computer music, it will be useful to survey the landscape. To begin, the timeline in Figure 1 shows a number of computer music languages and their date of introduction or development.

Since the score language simply presented a static list of events, their times, and parameters, Music V was not a very general language in terms of computation. Faust is specialized to describe audio signal processing algorithms. For example, it would be difficult to use Faust to compose a melody. Nevertheless, Faust has become quite popular for creating unit generators and signal processing plug-ins that can be used in other languages and systems. There are substantial libraries of Faust functions, Faust is able to generate ready-to-use modules for a number of different systems, and Faust helps developers avoid many low-level details of programming directly in C or C++. Just as there are many styles of music, there are many ways to approach music computationally.