Files
icmc-2025/content.tex

663 lines
36 KiB
TeX

\section{Introduction}\label{introduction}
Programming languages and environments for music such as Max, Pure Data,
Csound, and SuperCollider, have been referred to as ``computer music
language''\citep{McCartney2002, Nishino2016, McPherson2020}, ``language
for computer music''\citep{Dannenberg2018}, and ``computer music
programming systems''\citep{Lazzarini2013}, though there is no clear
consensus on the use of these terms. However, as the shared term
``computer music'' implies, these programming languages are deeply
intertwined with the history of technology-driven music, which developed
under the premise that ``almost any sound can be
produced''\citep[p557]{mathews1963} through the use of computers.
In the early days, when computers existed only in research laboratories
and neither displays nor mice existed, creating sound or music with
computers was inevitably equivalent to programming. Today, however,
programming as a means to produce sound on a computer---rather than
employing digital audio workstation (DAW) software, such as Pro Tools is
not popular. In other words, programming languages for music developed
after the proliferation of personal computers are the software tools
that intentionally chose programming (whether textual or graphical) as
their frontend for making sound.
Since the 1990s, the theoretical development of programming languages
and the various constraints required for real-time audio processing have
significantly increased the specialized knowledge necessary for
developing programming languages for music today. Furthermore, some
languages developed after the 2000s are not necessarily aimed at
pursuing new forms of musical expression, and there is still no unified
perspective on how their values should be evaluated.
This paper is a critical historical review that draws on discussions
from sound studies and existing surveys to examine programming languages
for music as distinct from computer music as the specific genre.
\subsection{Use of the Term ``Computer
Music''}\label{use-of-the-term-computer-music}
Since the 1990s, the term ``computer music,'' despite its literal and
potentially broad meaning, has been noted for being used within a
narrowly defined framework tied to specific styles or communities, as
explored in Ostertag's \emph{Why Computer Music
Sucks}\citep{ostertag1998}.
As Lyon observed nearly two decades ago, it is now nearly impossible to
imagine a situation in which computers are not involved at any stage
from the production to experience of music\citep[p1]{lyon_we_2006}. The
necessity of using the term ``computer music'' in academic contexts has
consequently diminished.
Holbrook and Rudi extended Lyon's discussion by proposing the use of
frameworks such as post-acoutmatic\citep{adkins2016} to redefine
computer music. Their approach situates the tradition of pre-computer
experimental/electronic music as part of the broader continuum of
technology-based or technology-driven music\citep{holbrook2022}.
Although the strict definition of post-acousmatic music is deliberately
left open, one of its key aspects is the expansion of music production
from institutional settings to individuals and as well as the
diversification of technological usage\citep[p113]{adkins2016}. However,
despite integrating the historical fact that declining computer costs
and increasing accessibility beyond laboratories have enabled diverse
musical expressions, the post-acousmatic discourse still marginalizes
much of the music that is ``just using computers'' and fails to provide
insights into this divided landscape.
Lyon argues that the term ``computer music'' is a style-agnostic
definition, almost like ``piano music,'' implying that it ignores the
style and form of music produced by the instrument. However, one of the
defining characteristics of computers as a medium lies in their ability
to treat musical styles themselves as subjects of meta-manipulation
through simulation and modeling. When creating instruments with
computers or using such instruments, sound production involves
programming---manipulating symbols embedded in a particular musical
culture. This recursive embedding of language and recognition, which
construct that musical culture, into the resulting music is a process
that exceeds what is possible with acoustic instruments or analog
instruments. Magnusson refers to this characteristic of digital
instruments as ``epistemic tools'' and points out that the computer
serves to ``create a snapshot of musical theory, freezing musical
culture in time'' \citep[p.173]{Magnusson2009} through formalization.
Today, many people use computers for music production not because they
consciously leverage the uniqueness of the meta-medium, but simply
because there are no quicker or more convenient alternatives available.
Even so, within a musical culture where computers are used out of
necessity rather than preference, musicians are inevitably influenced by
the underlying infrastructures such as software, protocols, and formats.
As long as the history of programming languages for music remains
intertwined with the history of computer music as it relates to specific
genres or communities, it will be difficult to analyze music created
with computers as merely a passive means.
In this paper, the history of programming languages for music is
reexamined with an approach that, unlike Lyon's, adopts a radically
style-agnostic perspective. Rather than focusing on what has been
created with these tools, the emphasis is placed on how these tools
themselves have been constructed. The paper centers on the following two
topics: 1. A critique of the universality of sound representation using
pulse-code modulation (PCM)---the foundational concept underlying most
of today's sound programming, by referencing early attempts at sound
generation using electronic computers. 2. An examination of the MUSIC-N
family, the origin of PCM-based sound programming, to highlight that its
design varies significantly across systems from the perspective of
today's programming language design and that it has evolved over time
into a black box, eliminating the need for users to understand its
internal workings.
Ultimately, the paper concludes that programming languages for music
developed since the 2000s are not solely aimed at creating new music but
also serve as alternatives to the often-invisible technological
infrastructures surrounding music such as formats and protocols. Thus,
the paper proposes new perspectives for the historical study of music
created with computers.
\section{PCM and Early Computer
Music}\label{pcm-and-early-computer-music}
The MUSIC I (1957) in Bell Labs\citep{Mathews1980} and succeeding
MUSIC-N family are highlighted as the earliest examples of computer
music research. However, attempts to create music with computers in the
UK and Australia prior to MUSIC have also been
documented\citep{doornbusch2017}.
The earliest experiments with sound generation on computers in the 1950s
involved controlling the intervals of one-bit pulses to control pitch.
This was partly because the operational clock frequencies of early
computers fell within the audible range, making the sonification of
electrical signals a practical and cost-effective debugging method
compared to visualizing them on displays or oscilloscopes.
For instance, Louis Wilson, who was an engineer of the BINAC in the UK,
noticed that an AM radio placed near the computer could pick up weak
electromagnetic waves generated during the switching of vacuum tubes,
producing sounds. He leveraged this phenomenon by connecting a speaker
and a power amplifier to the computer's circuit to assist with
debugging. Frances Elizabeth Holberton took this a step further by
programming the computer to generate pulses at desired intervals,
creating melodies in 1949\citep{woltman1990}.
Further, some computers at this time, such as the CSIR Mark I (CSIRAC)
in Australia often had primitive ``hoot'' instructions that emitted a
single pulse to a speaker. Early sound generation using computers,
including the BINAC and CSIR Mark I, primarily involved playing melodies
of existing music.
However, not all sound generation at this time was merely the
reproduction of existing music. Doornbusch highlights experiments on the
Pilot ACE (the Prototype for Automatic Computing Engine) in the UK,
which utilized acoustic delay line memory to produce unique
sounds\citep[pp.303-304]{doornbusch2017}. Acoustic delay line memory,
used as the main memory in early computers, such as the BINAC and the
CSIR Mark I, employed the feedback of pulses traveling through mercury
via a speaker and microphone setup to retain data. Donald Davis, an
engineer on the ACE project, described the sounds it produced as
follows\citep[pp.19-20]{davis_very_1994}:
\begin{quote}
The Ace Pilot Model and its successor, the Ace proper, were both capable
of composing their own music and playing it on a little speaker built
into the control desk. I say composing because no human had any
intentional part in choosing the notes. The music was very interesting,
though atonal, and began by playing rising arpeggios: these gradually
became more complex and faster, like a developing fugue. They dissolved
into colored noise as the complexity went beyond human understanding.
\end{quote}
This music arose unintentionally during program optimization and was
made possible by the ``misuse'' of switches installed for debugging
delay line memory. Media scholar, Miyazaki, described the practice of
listening to sounds generated by algorithms and their bit patterns,
integrated into programming, as ``Algo-\emph{rhythmic}
Listening''\citep{miyazaki2012}.
Doornbusch warns against ignoring these early computer music practices
simply because they did not directly influence subsequent
research\citep[p.305]{doornbusch2017}. Indeed, the sounds produced by
the Pilot ACE challenge the post-acousmatic historical narrative, which
suggests that computer music transitioned from being democratized in
closed electro-\\acoustic music laboratories to being embraced by
individual musicians.
This is because the sounds generated by the Pilot ACE were not created
by musical experts, nor were they solely intended for debugging
purposes. Instead, they were programmed with the goal of producing
interesting sounds. Moreover, these sounds were tied to the hardware of
the acoustic delay line memory---a feature that is likely difficult to
replicate, even in today's sound programming environments.
Similarly, in the 1960s at the Massachusetts Institute of Technology
(MIT), Peter Samson exploited the debugging speaker on the TX-0, a
machine that had become outdated and was freely available for students
to use. He conducted experiments in which he played melodies, such as
Bach fugues, using ``hoot'' instruction\citep{levy_hackers_2010}.
Building on this, Samson developed a program called the Harmony Compiler
for the DEC PDP-1, which was derived from the TX-0. This program gained
significant popularity among MIT students. Around 1972, Samson began
surveying various digital synthesizers that were under development at
the time and went on to create a system specialized for computer music.
The resulting Samson Box was used at Stanford University's CCRMA (Center
for Computer Research in Music and Acoustics) for over a decade until
the early 1990s and became a tool for many composers to create their
works \citep{loy_life_2013}. Considering his example, it is not
appropriate to separate the early experiments in sound generation by
computers from the history of computer music solely because their
initial purpose was debugging.
\subsection{Acousmatic Listening, the premise of the Universality of
PCM}\label{acousmatic-listening-the-premise-of-the-universality-of-pcm}
One of the reasons why MUSIC led to subsequent advancements in research
was not simply that it was developed early, but because it was the first
to implement sound representation on a computer based on PCM, which
theoretically can generate ``almost any sound''.
PCM, the foundational digital sound representation today, involves
sampling audio waveforms at discrete intervals and quantizing the sound
pressure at each interval as discrete numerical values.
The problem with the universalism of PCM in the history of computer
music is inherent in the concept of acousmatic listening, which serves
as a premise for post-acousmatic. Acousmatic listening, introduced by
Piegnot as a listening style for tape music, such as musique concrète,
and later theorized by Schaeffer\citep[p106]{adkins2016}, refers to a
mode of listening in which the listener refrains from imagining a
specific sound source. This concept has been widely applied in theories
of listening to recorded sound, including Michel Chion's analysis of
sound design in film.
However, as sound studies scholar, Jonathan Sterne, has observed,
discourses surrounding acousmatic listening often work to delineate
pre-recording auditory experiences as ``natural'' by
contrast\footnote{Sterne later critiques the phenomenological basis of
acousmatic listening, which presupposes an idealized, intact body as
the listening subject. He proposes a methodology of political
phenomenology centered on impairment, challenging these normative
assumptions \citep{sterne_diminished_2022}. Discussions of
universality in computer music should also address ableism,
particularly in relation to recording technologies and auditory
disabilities.}. This implies that prior to the advent of sound
reproduction technologies, listening was unmediated and holistic---a
narrative that obscures the constructed nature of these assumptions.
\begin{quote}
For instance, the claim that sound reproduction has ``alienated'' the
voice from the human body implies that the voice and the body existed in
some prior holistic, unalienated, and self present relation.
\citep[p20-21]{sterne_audible_2003}
\end{quote}
The claim that PCM-based sound synthesis can produce ``almost any
sound'' is underpinned by an ideology associated with sound reproduction
technologies. This ideology assumes that recorded sound contains an
``original'' source and that listeners can distinguish distortions or
noise from it. Sampling theory builds on this premise through Shannon's
information theory by statistically modeling human auditory
characteristics: it assumes that humans cannot discern volume
differences below certain thresholds or perceive vibrations outside
specific frequency ranges. By limiting representation to the reconizable
range, sampling theory ensures that all audible sounds can be
effectively encoded.
Incidentally, the actual implementation of PCM in MUSIC I only allowed
for monophonic triangle waves with controllable volume, pitch, and
timing\citep{Mathews1980}. Would anyone today describe such a system as
capable of producing ``almost any sound''?
Even when considering more contemporary applications, processes like
ring modulation and amplitude modulation, or distortion often cause
aliasing artifacts unless proper oversampling is applied. These
artifacts occur because PCM, while universally suitable for reproducing
recorded sound, is not inherently versatile as a medium for generating
new sounds. As Puckette argues, alternative representations, for
instance, representation by a sequence of linear segments or physical
modeling synthesis, offer other possibilities\citep{puckette2015}.
Therefore, PCM is not a completely universal tool for creating sound.
\section{What Does the Unit Generator
Hide?}\label{what-does-the-unit-generator-hide}
Beginning with Version III, MUSIC took the form of a block diagram
compiler that processes two input sources: a score language, which
represents a list of time-varying parameters, and an orchestra language,
which describes the connections between \textbf{unit generator (UGen)}
such as oscillators and filters. In this paper, the term ``UGen'' refers
to a signal processing module whose implementation is either not open or
written in a language different from the one used by the user.
The MUSIC family, in the context of computer music research, achieved
success for performing sound synthesis based on PCM but this success
came with the establishment of a division of labor between professional
musicians and computer engineers through the development of
domain-specific languages. Mathews explained that he developed a
compiler for MUSIC III in response to requests from many composers for
additional features in MUSIC II, such as envelopes and vibrato, while
also ensuring that the program would not be restricted to a specialized
form of musical expression\citep[13:10-17:50]{mathews_max_2007}. He
repeatedly stated that his role was that of a scientist rather than a
musician:
\begin{quote}
When we first made these music programs the original users were not
composers; they were the psychologist Guttman, John Pierce, and myself,
who are fundamentally scientists. We wanted to have musicians try the
system to see if they could learn the language and express themselves
with it. So we looked for adventurous musicians and composers who were
willing to experiment.\citep[p17]{Mathews1980}
\end{quote}
This clear delineation of roles between musicians and scientists became
one of the defining characteristics of post-MUSIC computer music
research. Paradoxically, although computer music research aimed to
create sounds never heard before, it also paved the way for further
research by allowing musicians to focus on composition without having to
understand the cumbersome work of programming.
\subsection{Example: Hiding Internal State Variables in Signal
Processing}\label{example-hiding-internal-state-variables-in-signal-processing}
Although the MUSIC N series shares a common workflow of using a score
language and an orchestra language, the actual implementation of each
programming language varies significantly, even within the series.
One notable but often overlooked example is MUSIGOL, a derivative of
MUSIC IV \citep{innis_sound_1968}. In MUSIGOL, the system, the score and
orchestra defined by user were written entirely as ALGOL 60 language.
Similar to today's Processing or Arduino, MUSIGOL is one of the earliest
internal domain-specific languages (DSL) for music; thus, it is
implemented as an library\footnote{While MUS10, used at Stanford
University, was not an internal DSL, it was created by modifying an
existing ALGOL parser \citep[p.248]{loy1985}.}. (According to the
definition in this paper, MUSIGOL does not qualify as a language that
uses UGen.)
The level of abstraction deemed intuitive for musicians varied across
different iterations of the MUSIC N series. This can be illustrated by
examining the description of a second-order band-pass filter. The filter
mixes the current input signal \(S_n\), the output signal from \(t\)
time steps prior \(O_{n-t}\), and an arbitrary amplitude parameter
\(I_1\), as shown in the following equation:
\[O_n = I_1 \cdot S_n + I_2 \cdot O_{n-1} - I_3 \cdot O_{n-2}\]
In MUSIC V, this band-pass filter can be used as shown in Listing
\ref{lst:musicv} \citep[p.78]{mathews_technology_1969}. Here,
\passthrough{\lstinline!I1!} represents the input bus, and
\passthrough{\lstinline!O!} is the output bus. The parameters
\passthrough{\lstinline!I2!} and \passthrough{\lstinline!I3!} correspond
to the normalized values of the coefficients \(I_2\) and \(I_3\),
divided by \(I_1\) (as a result, the overall gain of the filter can be
greater or less than 1). The parameters \passthrough{\lstinline!Pi!} and
\passthrough{\lstinline!Pj!} are normally used to receive parameters
from the score, specifically among the available
\passthrough{\lstinline!P0!} to \passthrough{\lstinline!P30!}. In this
case, however, these parameters are repurposed as general-purpose memory
to temporarily store feedback signals. Similarly, other UGens, such as
oscillators, reuse note parameters to handle operations like phase
accumulation. As a result, users needed to manually calculate feedback
gains based on the desired frequency characteristics\footnote{It is said
that a preprocessing feature called \passthrough{\lstinline!CONVT!}
could be used to transform frequency characteristics into coefficients
\citep[p77]{mathews_technology_1969}.}, and they also had to considder
at least two sample memory spaces.
On the other hand, in newer MUSIC 11, and its successor, Csound, by
Barry Vercoe, the band-pass filter is defined as a UGen named
\passthrough{\lstinline!reson!}. This UGen takes four parameters: the
input signal, center cutoff frequency, bandwidth, and Q
factor\citep[p248]{vercoe_computer_1983}. Unlike previous
implementations, users no longer need to calculate coefficients
manually, nor do they need to be aware of the two-sample memory space.
However, in MUSIC 11 and Csound, it is possible to implement this
band-pass filter from scratch as a user-defined opcode (UDO) as shown in
Listing \ref{lst:reson}. Vercoe emphasized that while signal processing
primitives should allow for low-level operations, such as single-sample
feedback, and eliminate black boxes, it is equally important to provide
high-level modules that avoid unnecessary complexity (``avoid the
clutter'') when users do not need to understand the internal details
\citep[p.247]{vercoe_computer_1983}.
\begin{lstlisting}[caption={Example of the use of FLT UGen in MUSIC V.}, label=lst:musicv]
FLT I1 O I2 I3 Pi Pj;
\end{lstlisting}
\begin{lstlisting}[caption={Example of scratch implementation and built-in operation of RESON UGen respectively, in MUSIC11. Retrieved from the original paper. (Comments are omitted owing to space restriction.)}, label=lst:reson]
instr 1
la1 init 0
la2 init 0
i3 = exp(-6.28 * p6 / 10000)
i2 = 4*i3*cos(6.283185 * p5/10000) / (1+i3)
i1 = (1-i3) * sqrt(1-1 - i2*i2/(4*i3))
a1 rand p4
la3 = la2
la2 = la1
la1 = i1*a1 + i2 * la2 - i3 * la3
out la1
endin
instr 2
a1 rand p4
a1 reson a1,p5,p6,1
endin
\end{lstlisting}
On the other hand, in succeeding environments that inherit the UGen
paradigm, such as Pure Data \citep{puckette_pure_1997}, Max (whose
signal processing functionalities were ported from Pure Data as MSP),
SuperCollider \citep{mccartney_supercollider_1996}, and ChucK
\citep{wang_chuck_2015}, primitive UGens are implemented in
general-purpose languages such as C or C++\footnote{ChucK later
introduced ChuGen, which is similar extension to Csound's UDO,
allowing users to define UGens within the ChucK language itself
\citep{Salazar2012}. However, not all existing UGens are replaced by
UDOs by default both in Csound and ChucK, which remain supplemental
features possibly because the runtime performance of UDO is inferior
to natively implemented UGens.}. If users wish to define low-level
UGens (called external objects in Max and Pd), they need to set up a
development environment for C or C++.
When UGens are implemented in low-level languages like C, even if the
implementation is open-source, the division of knowledge effectively
forces users (composers) to treat UGens as black boxes. This reliance on
UGens as black boxes reflects and deepens the division of labor between
musicians and scientists that was established in MUSIC, though it can be
interpreted as both a cause and a result.
For example, Puckette, the developer of Max and Pure Data, notes that
the division of labor at IRCAM between researchers, musical assistants
(realizers), and composers has parallels in the current Max ecosystem,
where roles are divided among Max developers themselves, developers of
external objects, and Max users \citep{puckette_47_2020}. As described
in the ethnography of 1980s IRCAM by anthropologist Georgina Born, the
division of labor between fundamental research scientists and composers
at IRCAM was extremely clear. This structure was also tied to the
exclusion of popular music and its associated technologies from IRCAM's
research focus \citep{Born1995}.
However, such divisions are not necessarily the result of differences in
values along the axes analyzed by Born, such as
modernist/postmodernist/populist or low-tech/high-tech
distinctions\footnote{David Wessel revealed that the individual referred
to as RIG in Born's ethnography was himself and commented that Born
oversimplified her portrayal of Pierre Boulez, then director of IRCAM,
as a modernist. \citep{taylor_article_1999}}. This is because the
black-boxing of technology through the division of knowledge occurs in
popular music as well. Paul Théberge pointed out that the
``democratization'' of synthesizers in the 1980s was achieved through
the concealment of technology, which transformed musicians as creators
into consumers.
\begin{quote}
Lacking adequate knowledge of the technical system, musicians
increasingly found themselves drawn to prefabricated programs as a
source of new sound material. (\ldots)it also suggests a
reconceptualization on the part of the industry of the musician as a
particular type of consumer. \citep[p.89]{theberge_any_1997}
\end{quote}
This argument can be extended beyond electronic music to encompass
computer-based music in general. For example, media researcher Lori
Emerson noted that although the proliferation of personal computers
began with the vision of a ``metamedium''---tools that users could
modify themselves, as exemplified by Xerox PARC's Dynabook---the vision
was ultimately realized in an incomplete form through devices such as
the Macintosh and iPad, which distanced users from programming by
black-boxing functionality \citep{emerson2014}. In fact, Alan Kay, the
architect behind the Dynabook concept, remarked that while the iPad's
appearance may resemble the ideal he originally envisioned, its lack of
extensibility through programming rendered it merely a device for media
consumption \citep{kay2019}.
Musicians have attempted to resist the consumeristic use of those tools
through appropriation and exploitation \citep{kelly_cracked_2009}.
However, just as circuit bending has been narrowed down to its potential
by a literal black box - one big closed IC of aggregated functions
\citep[p225]{inglizian_beyond_2020}, and glitching has shifted from
methodology to a superficial auditory style
\citep{casconeErrormancyGlitchDivination2011}, capitalism-based
technology expands in a direction that prevents users from misusing it.
Under these circumstances, designing a new programming language does not
merely provide musicians with the means to create new music, but is
itself contextualized as a musicking practice following hacking, an
active reconstruction of the technological infrastructure that is
allowed to be hacked.
\section{Context of Programming Languages for Music After
2000}\label{context-of-programming-languages-for-music-after-2000}
Under this premise, music programming languages developed after the
2000s can be categorized into two distinct directions: those that narrow
the scope of the language's role by introducing alternative abstractions
at a higher-level, distinct from the UGen paradigm, and those that
expand the general-purpose capabilities of the language, reducing
black-boxing.
Languages that pursued alternative higher-level abstractions have
evolved alongside the culture of live coding, where performances are
conducted by rewriting code in real time. The activities of the live
coding community, including groups, such as TOPLAP, since the 2000s,
were not only about turning coding itself into a performance but also
served as a resistance against laptop performances that relied on
black-boxed music software. This is evident in the community's
manifesto, which states, ``Obscurantism is dangerous''
\citep{toplap_manifestodraft_2004}.
Languages implemented as clients for SuperCollider, such as \textbf{IXI}
(on Ruby) \citep{Magnusson2011}, \textbf{Sonic Pi} (on Ruby),
\textbf{Overtone} (on Clojure) \citep{Aaron2013}, \textbf{TidalCycles}
(on Haskell) \citep{McLean2014}, and \textbf{FoxDot} (on Python)
\citep{kirkbride2016foxdot}, leverage the expressive power of more
general-purpose programming languages. While embracing the UGen
paradigm, they enable high-level abstractions for previously
difficult-to-express elements like note values and rhythm. For example,
the abstraction of patterns in TidalCycles is not limited to music but
can also be applied to visual patterns and other outputs, meaning it is
not inherently tied to PCM-based waveform output as the final result.
On the other hand, owing to their high-level design, these languages
often rely on ad-hoc implementations for tasks like sound manipulation
and low-level signal processing, such as effects. McCartney, the
developer of SuperCollider, stated that if general-purpose programming
languages were sufficiently expressive, there would be no need to create
specialized languages \citep{McCartney2002}, which appears reasonable
when considering examples like MUSIGOL. However, in practice, scripting
languages that excel in dynamic program modification face challenges in
modern preemptive operating system (OS) environments. For instance,
dynamic memory management techniques such as garbage collection can
hinder deterministic execution timing required for real-time processing
\citep{Dannenberg2005}.
Historically, programming languages, such as FORTRAN or C, served as a
portable way for implementing programs across different architectures.
However, with the proliferation of higher-level languages, programming
in C or C++ has become relatively more difficult, akin to assembly
language in earlier times. Furthermore, considering the challenges of
portability not only across different CPUs but also diverse host
environments such as OSs and the Web, these languages are no longer as
portable as they once were. Consequently, internal DSL for music,
including signal processing, have become exceedingly rare, with only a
few examples such as LuaAV\citep{wakefield2010}.
Instead, an approach has emerged to create general-purpose languages
specifically designed for use in music from the ground up. One prominent
example is \textbf{Extempore}, a live programming environment developed
by Sorensen \citep{sorensen_extempore_2018}. Extempore consists of
Scheme, a Lisp-based language, and xtlang, a meta-implementation on top
of Scheme. While xtlang requires users to write hardware-oriented type
signatures similar to those in C, it leverages the compiler
infrastructure, LLVM\citep{Lattner}, to just-in-time (JIT) compile
signal processing code, including sound manipulation, into machine code
for high-speed execution.
The expressive power of general-purpose languages and compiler
infrastructures, such as LLVM, has given rise to an approach focused on
designing languages with mathematical formalization that reduces
black-boxing. \textbf{Faust} \citep{Orlarey2009}, for instance, is a
language that retains a graph-based structure akin to UGens but is built
on a formal system called Block Diagram Algebra. Thanks to its
formalization, Faust can be transpiled into various low-level languages,
such as C, C++, or Rust, and can also be used as external objects in Max
or Pure Data.
Languages like \textbf{Kronos} \citep{norilo2015} and \textbf{mimium}
\citep{matsuura_mimium_2021}, which are based on the more general
computational model of lambda calculus, focus on PCM-based signal
processing while exploring interactive meta-operations on programs
\citep{Norilo2016} and balancing self-contained semantics with
interoperability with other general-purpose languages
\citep{matsuura_lambda-mmm_2024}.
DSLs are constructed within a double bind; they aim to specialize in a
particular purpose while still providing a certain degree of expressive
freedom through coding. In this context, efforts like Extempore, Kronos,
and mimium are not merely programming languages for music but are also
situated within the broader research context of functional reactive
programming, which focuses on representing time-varying values in
computation. Most computing models lack an inherent concept of
real-time, operating instead based on discrete computational steps.
Similarly, low-level general-purpose programming languages do not
natively include primitives for real-time concepts. Consequently, the
exploration of computational models tied to time ---a domain inseparable
from music--- remains vital and has the potential to contribute to the
theoretical foundations of general-purpose programming languages.
However, strongly formalized languages come with another trade-off.
Although they allow UGens to be defined without black-boxing,
understanding the design and implementation of these languages often
requires expert knowledge. This can create a deeper division between
language developers and users, in contrast to the many but small and
shallow divisions seen in the multi-language paradigm, such as
SuperCollider developers, external UGen developers, client language
developers (e.g., TidalCycles), SuperCollider users, and client language
users.
Although there is no clear solution to this trade-off, one intriguing
idea is the development of self-hosting languages for music---that is,
languages whose compilers are written in the language itself. At first
glance, this may seem impractical. However, by enabling users to learn
and modify the language's mechanisms spontaneously, this approach could
create an environment that fosters deeper engagement and understanding
among users.
\section{Conclusion}\label{conclusion}
This paper has reexamined the history of computer music and music
programming languages with a focus on the universalism of PCM and the
black-boxing tendencies of the UGen paradigm. Historically, it was
expected that the clear division of roles between engineers and
composers would enable the creation of new forms of expression using
computers. Indeed, from the perspective of post-acousmatic discourse,
some scholars, such as Holbrook and Rudi, still consider this division
to be a positive development:
\begin{quote}
Most newer tools abstract the signal processing routines and variables,
making them easier to use while removing the need for understanding the
underlying processes in order to create meaningful results. Composers no
longer necessarily need mathematical and programming skills to use the
technologies.\citep[p2]{holbrook2022}
\end{quote}
However, this division of labor also creates a shared vocabulary (as
exemplified in the UGen by Mathews) and serves to perpetuate it. By
portraying new technologies as something externally introduced, and by
focusing on the agency of those who create music with computers, the
individuals responsible for building programming environments, software,
protocols, and formats are rendered invisible \citep{sterne_there_2014}.
This leads to an oversight of the indirect power relationships produced
by these infrastructures.
For this reason, future research on programming languages for music must
address how the tools, including the languages themselves, contribute
aesthetic value within musical culture (and what forms of musical
practice they enable), as well as the social (im)balances of power they
produce.
The academic value of the research on programming languages for music is
often vaguely asserted, using terms such as ``general,'' ``expressive,''
and ``efficient.'' However, it is difficult to argue these claims when
processing speed is no longer the primary concern. Thus, as with
idiomaticity \citep{McPherson2020} by McPherson et al., we need to
develop and share a vocabulary for understanding the value judgments we
make about music languages.
In a broader sense, the development of programming languages for music
has also expanded to the individual level. Examples include
\textbf{Gwion} by Astor, which is inspired by ChucK and enhances its
abstraction through features, such as lambda functions
\citep{astor_gwion_2017}; \textbf{Vult}, a DSP transpiler language
created by Ruiz for his modular synthesizer hardware \citep{Ruiz2020};
and a UGen-based live coding environment designed for web,
\textbf{Glicol} \citep{lan_glicol_2020}. However, these efforts have not
yet been incorporated into academic discourse.
Conversely, practical knowledge of past languages in 1960s, as well as
real-time hardware-oriented systems from the 1980s, is gradually being
lost. Although research efforts such as \emph{Inside Computer Music},
which analyzes historical works of computer music, have begun
\citep{clarke_inside_2020}, an archaeological practice focused on the
construction of computer music systems themselves will also be
necessary.