731 lines
40 KiB
TeX
731 lines
40 KiB
TeX
\section{Introduction}\label{introduction}
|
|
|
|
Programming languages and environments for music have developed hand in
|
|
hand with the history of creating music using computers. Software and
|
|
systems like Max, Pure Data, CSound, and SuperCollider has 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{mathews_acoustic_1961} through the use of computers.
|
|
|
|
In the early days, when computers were confined to research laboratories
|
|
and neither displays nor mouse existed, creating sound or music with
|
|
computers was inevitably equal to the work of programming. Today,
|
|
however, programming as a means to produce sound on a computer---rather
|
|
than employing Digital Audio Workstation (DAW) software like Pro Tools
|
|
is not usual. In other words, programming languages for music developed
|
|
after the proliferation of personal computers are the softwares 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. It seems that there is still
|
|
no unified perspective on how the value of such languages should be
|
|
evaluated.
|
|
|
|
In this paper, a critical historical review is conducted by deriving
|
|
discussions from sound studies alongside existing surveys, aiming to
|
|
consider programming languages for music independently from computer
|
|
music as the specific genre. \#\#\# Use of the Term ``Computer Music''
|
|
|
|
The term ``Computer Music,'' despite its literal and potential broad
|
|
meaning, has been noted as being used within a narrowly defined
|
|
framework tied to specific styles or communities, as represented in
|
|
Ostartag's \emph{Why Computer Music Sucks}\citep{ostertag1998} since the
|
|
1990s.
|
|
|
|
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 production to experience of music\citep[p1]{lyon_we_2006}. The
|
|
necessity of using the term ``Computer Music'' to describe academic
|
|
contexts, particularly those centered around the ICMC, has consequently
|
|
diminished.
|
|
|
|
Holbrook and Rudi continued Lyon's discussion by proposing the use of
|
|
frameworks like Post-Acousmatic\citep{adkins2016} to redefine ``Computer
|
|
Music.'' Their approach incorporates the tradition of pre-computer
|
|
experimental/electronic music, situating it as part of the broader
|
|
continuum of technology-based or technology-driven
|
|
music\citep{holbrook2022}.
|
|
|
|
While the strict definition of the Post-Acousmatic music is not given
|
|
deliberately, one of its elements contains the expansion of music
|
|
production from institutional settings to individuals and the use of the
|
|
technology were diversified\citep[p113]{adkins2016}. However, while the
|
|
Post-Acousmatic discourse integrates the historical fact that declining
|
|
computer costs and access beyond laboratories have enabled diverse
|
|
musical expressions, it simultaneously marginalizes much of the music
|
|
that is ``just using computers'' and fails to provide insights into this
|
|
divided landscape.
|
|
|
|
Lyon argues that defining computer music simply as music created with
|
|
computers is too permissive, while defining it as music that could not
|
|
exist without computers is too strict. He highlights the difficulty of
|
|
considering instruments that use digital simulations, such as virtual
|
|
analog synthesizers, within these definitions. Furthermore, he suggests
|
|
that the term ``computer music'' is style-agnostic definition almost
|
|
like ``piano music,'' implying that it ignores the style and form inside
|
|
music produced by the instruments.
|
|
|
|
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 when using such instruments, sound
|
|
production involves programming---manipulating symbols embedded in a
|
|
particular musical culture. This recursive embedding of the language and
|
|
perception constituting that musical culture into the resulting music is
|
|
a process that goes beyond what is possible with acoustic instruments or
|
|
analog electronic instruments. Magnusson refers to this characteristic
|
|
of digital instruments as ``Epistemic Tools'' and points out that they
|
|
tend to work in the direction of reinforcing and solidifying musical
|
|
culture:
|
|
|
|
\begin{quote}
|
|
The act of formalising is therefore always an act of fossilisation. As
|
|
opposed to the acoustic instrument maker, the designer of the composed
|
|
digital instrument frames affordances through symbolic design, thereby
|
|
creating a snapshot of musical theory, freezing musical culture in time.
|
|
\citep[p173]{Magnusson2009}
|
|
\end{quote}
|
|
|
|
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 as a default
|
|
or reluctant choice, musicians are inevitably influenced by the
|
|
underlying infrastructures like 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 becomes difficult to analyze music created
|
|
with computers as a passive means.
|
|
|
|
In this paper, the history of programming languages for music is
|
|
reexamined with an approach that, opposite from Lyon, takes an extremely
|
|
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:
|
|
|
|
\begin{enumerate}
|
|
\def\labelenumi{\arabic{enumi}.}
|
|
\tightlist
|
|
\item
|
|
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 of sound
|
|
generation using electronic computers.
|
|
\item
|
|
An examination of the MUSIC-N family, the origin of PCM-based sound
|
|
synthesis, to highlight that its design varies significantly across
|
|
systems from the perspective of modern programming language design and
|
|
that it has evolved over time into a black box, eliminating the need
|
|
for users to understand its internal workings.
|
|
\end{enumerate}
|
|
|
|
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. By
|
|
doing so, the paper proposes new perspectives for the historical study
|
|
of music created with computers. \#\# PCM and Early Computer Music
|
|
|
|
Among the earliest examples of computer music research, the MUSIC I
|
|
system (1957) from Bell Labs and its derivatives, known as MUSIC-N, are
|
|
frequently highlighted. However, attempts to create music with computers
|
|
in the UK and Australia prior to MUSIC I have also been
|
|
documented\citep{doornbusch2017}. Organizing what was achieved by
|
|
MUSIC-N and earlier efforts can help clarify definitions of computer
|
|
music.
|
|
|
|
The earliest experiments with sound generation on computers in the 1950s
|
|
involved controlling the intervals between one-bit pulses (on or off) 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. Some computers at this time like Australia's CSIR Mark I
|
|
(CSIRAC) often had ``hoot'' primitive instructions that emit a single
|
|
pulse to a speaker.
|
|
|
|
In 1949, the background to music played on the BINAC in UK involved
|
|
engineer Louis Wilson, who noticed that an AM radio placed nearby could
|
|
pick up weak electromagnetic waves generated during the switching of
|
|
vacuum tubes, producing regular sounds. He leveraged this phenomenon by
|
|
connecting a speaker and a power amplifier to the computer's output,
|
|
using the setup to assist in debugging processes. Frances Elizabeth
|
|
Holberton took this a step further by programming the computer to
|
|
generate pulses at arbitrary intervals, creating melodies
|
|
\citep{woltman1990}. The sound generation on BINAC and CSIR Mark I
|
|
represents early instances of using computers to play melodies from
|
|
existing music.
|
|
|
|
However, not all sound generation at this timewas merely the
|
|
reproduction of existing music. Doornbusch highlights experiments on the
|
|
British Pilot ACE (Prototype for Automatic Computing Engine: ACE), which
|
|
utilized acoustic delay line memory to produce unique
|
|
sounds\citep[p303-304]{doornbusch2017}. Acoustic delay line memory, used
|
|
as main memory in early computers like BINAC and 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[p19-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.
|
|
|
|
Loops were always multiples of 32 microseconds long, so notes had
|
|
frequencies which were submultiples of 31.25 KHz. The music was based on
|
|
a very strange scale, which was nothing like equal tempered or harmonic,
|
|
but was quite pleasant.
|
|
\end{quote}
|
|
|
|
This music arose unintentionally during program optimization and was
|
|
made possible by ``misusing'' switches installed for debugging acoustic
|
|
delay line memory (p20). Media scholar Miyazaki described the practice
|
|
of listening to sounds generated by algorithms and their bit patterns,
|
|
integrated into programming and debugging, as ``Algo\emph{rhythmic}
|
|
Listening''\citep{miyazaki2012}.
|
|
|
|
Doornbusch warns against ignoring early computer music practices in
|
|
Australia and the UK simply because they did not directly influence
|
|
subsequent research\citep[p305]{doornbusch2017}. Indeed, the tendency to
|
|
treat pre-MUSIC attempts as hobbyist efforts by engineers and post-MUSIC
|
|
endeavors as ``serious'' research remains common even
|
|
today\citep{tanaka_all_2017}.
|
|
|
|
The sounds produced by the Pilot ACE challenge the post-acousmatic
|
|
historical narrative, which suggests that computer music transitioned
|
|
from being confined to specialized laboratories to becoming accessible
|
|
to individuals, including amateurs.
|
|
|
|
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, the sounds were tied to the hardware of
|
|
the acoustic delay line memory---a feature that was likely difficult to
|
|
replicate, even in modern audio programming environments.
|
|
|
|
Similarly, in the 1960s at MIT, Peter Samson took advantage of the
|
|
debugging speaker on the TX-0, a machine that had become outdated and
|
|
freely available for students to use. He conducted experiments where he
|
|
played melodies, such as Bach fugues, using square waves
|
|
\citep{levy_hackers_2010}. Samson's experiments with the TX-0 later
|
|
evolved into the creation of a program that allowed melodies to be
|
|
described using text strings within MIT.
|
|
|
|
Building on this, Samson developed a program called the Harmony Compiler
|
|
on 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 being developed 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 Samson's 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. \#\#\# Acousmatic Listening, the premise
|
|
of the Universality of PCM
|
|
|
|
One of the reasons why MUSIC led to subsequent advancements in research
|
|
was not simply because it was developed early, but because it was the
|
|
first to implement sound representation on a computer based on
|
|
\textbf{pulse-code modulation (PCM)}, which theoretically enables the
|
|
representation of ``almost any sound.''
|
|
|
|
PCM, the foundational method of sound representation on today's
|
|
computers, involves dividing audio waveforms into discrete intervals
|
|
(sampling) and representing the sound pressure at each interval as
|
|
discrete numerical values (quantization).
|
|
|
|
The issue with the universalism of PCM in the history of computer music
|
|
is inherent in the concept of Acousmatic, which serves as a premise for
|
|
Post-Acousmatic. Acousmatic, introduced by Piegnot as a listening style
|
|
for tape music such as musique concrète and later theorized by
|
|
Schaeffer, refers to a mode of listening where the listener refrains
|
|
from imagining a specific sound source. This concept has been widely
|
|
applied in theories of listening to recorded sound, including Chion's
|
|
analysis of sound design in film.
|
|
|
|
However, as sound studies scholar Jonathan Sterne has pointed out,
|
|
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, as seen in the
|
|
relationship between recording technologies and auditory disabilities.}.
|
|
This implies that prior to the advent of recording 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.
|
|
|
|
They assume that, at some time prior to the invention of sound
|
|
reproduction technologies, the body was whole, undamaged, and
|
|
phenomenologically coherent.\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 recording
|
|
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 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 this range, sampling theory ensures that all audible sounds can be
|
|
effectively encoded.
|
|
|
|
By the way, the actual implementation of PCM in MUSIC I only allowed for
|
|
monophonic triangle waves with controllable volume, pitch, and timing
|
|
(MUSIC II later expanded this to four oscillators)\citep{Mathews1980}.
|
|
Would anyone today describe such a system as capable of producing
|
|
``infinite variations'' in sound synthesis?
|
|
|
|
Even when considering more contemporary applications, processes like
|
|
ring modulation (RM), amplitude modulation (AM), or distortion often
|
|
generate 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 has argued, alternative representations, such as
|
|
collections of linear segments or physical modeling synthesis, present
|
|
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}
|
|
|
|
Starting with version III, MUSIC adopted the form of an acoustic
|
|
compiler (or block diagram compiler) that takes two types of input: a
|
|
score language, which represents a list of time-varying parameters, and
|
|
an orchestra language, which describes the connections between
|
|
\textbf{Unit Generators} such as oscillators and filters. In this paper,
|
|
the term ``Unit Generator'' means a signal processing module used by the
|
|
user, where the internal implementation is either not open or
|
|
implemented in a language different from the one used by the user.
|
|
|
|
Beyond performing sound synthesis based on PCM, one of the defining
|
|
features of the MUSIC family in the context of computer music research
|
|
was 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 for additional features
|
|
such as envelopes and vibrato, while also ensuring that the program
|
|
would not be fixed in a static form
|
|
\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}
|
|
The only answer I could see was not to make the instruments myself---not
|
|
to impose my taste and ideas about instruments on the musicians---but
|
|
rather to make a set of fairly universal building blocks and give the
|
|
musician both the task and the freedom to put these together into his or
|
|
her instruments. \citep[p16]{Mathews1980}\\
|
|
(\ldots) 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. (p17)
|
|
\end{quote}
|
|
|
|
This clear delineation of roles between musicians and scientists became
|
|
one of the defining characteristics of post-MUSIC computer music
|
|
research. Paradoxically, the act of creating sounds never heard before
|
|
using computers paved the way for research by allowing musicians to
|
|
focus on their craft without needing to grapple with the complexities of
|
|
programming.
|
|
|
|
\subsection{Example: Hiding First-Order Variables in Signal
|
|
Processing}\label{example-hiding-first-order-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, not only was the system
|
|
itself implemented differently, but even the user-written Score and
|
|
Orchestra programs were written entirely as ALGOL 60 source code.
|
|
Similar to modern frameworks like Processing or Arduino, MUSIGOL
|
|
represents one of the earliest examples of a domain-specific language
|
|
implemented as an internal DSL within a library\footnote{While MUS10,
|
|
used at Stanford University, was not an internal DSL, it was created
|
|
by modifying an existing ALGOL parser \citep[p248]{loy1985}.}.
|
|
(Therefore, according to the definition of Unit Generator provided in
|
|
this paper, MUSIGOL does not qualify as a language that uses Unit
|
|
Generators.)
|
|
|
|
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 in \ref{lst:musicv}
|
|
\citep[p78]{mathews_technology_1969}.
|
|
|
|
\begin{lstlisting}[label={lst:musicv}, caption={Example of the use of RESON UGen in MUSIC V.}]
|
|
FLT I1 O I2 I3 Pi Pj;
|
|
\end{lstlisting}
|
|
|
|
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 Unit Generators,
|
|
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 account
|
|
for using at least two sample memory spaces.
|
|
|
|
On the other hand, in MUSIC 11, developed by Barry Vercoe, and its later
|
|
iteration, CSound, the band-pass filter is defined as a Unit Generator
|
|
(UGen) named \passthrough{\lstinline!reson!}. This UGen accepts four
|
|
parameters: the input signal, center cutoff frequency, bandwidth, and Q
|
|
factor. Unlike previous implementations, users no longer need to be
|
|
aware of the two-sample feedback memory space for the output
|
|
\citep[p248]{vercoe_computer_1983}. However, in MUSIC 11 and CSound, it
|
|
is still possible to implement this band-pass filter from scratch as a
|
|
User Defined Opcode (UDO) as in \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[p247]{vercoe_computer_1983}.
|
|
|
|
\begin{lstlisting}[label={lst:reson}, caption={Example of scratch implementation and built-in operation of RESON UGen respectively, in MUSIC11. Retrieved from the original paper. (Comments are omitted for the space restriction.)}]
|
|
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 programming environments that inherit the Unit
|
|
Generator 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{wangChucKStronglyTimed2015}, primitive UGens are implemented in
|
|
general-purpose languages like C or C++. If users wish to define
|
|
low-level UGens (External Objects), they need to set up a development
|
|
environment for C or C++.
|
|
|
|
As an extension, ChucK later introduced ChuGen, which is equivalent to
|
|
CSound's UDO, allowing users to define low-level UGens within the ChucK
|
|
language itself \citep{Salazar2012}. However, both CSound and ChucK face
|
|
performance limitations with UDOs during runtime compared to natively
|
|
implemented UGens. Consequently, not all existing UGens are replaced by
|
|
UDOs, which remain supplemental features rather than primary tools.
|
|
|
|
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 Mathews helped establish---a structure
|
|
that can be seen as both a cause and a result of this paradigm.
|
|
|
|
For example, Puckette, the developer of Max and Pure Data, noted that
|
|
the division of labor at IRCAM between researchers, Musical
|
|
Assistants/realizers, and composers has parallels in the current Max
|
|
ecosystem, where the roles are divided into software developers,
|
|
External Objects developers, 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 in
|
|
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. As I have argued, however, this assertion
|
|
is not simply a state ment of fact; it also suggests a
|
|
reconceptualization on the part of the industry of the musician as a
|
|
particular type of consumer. \citep[p89]{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 while the proliferation of personal computers began
|
|
with the vision of ``metamedia''---tools that users could modify
|
|
themselves, as exemplified by Xerox PARC's Dynabook---the vision was
|
|
ultimately realized in an incomplete form through devices like 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 renders it merely a device for media
|
|
consumption \citep{kay2019}.
|
|
|
|
Although programming environments as tools for music production are not
|
|
widely used, the Unit Generator concept, alongside MIDI, serves as a
|
|
foundational paradigm for today's consumer music production software and
|
|
infrastructure, including Web Audio. It is known that the concept of
|
|
Unit Generators emerged either simultaneously with or even slightly
|
|
before modular synthesizers \citep[p20]{park_interview_2009}. However,
|
|
UGen-based languages have actively incorporated the user interface
|
|
metaphors of modular synthesizers, as Vercoe said that the distinction
|
|
between ``ar'' (audio-rate) and ``kr'' (control-rate) processing
|
|
introduced in MUSIC 11 is said to have been inspired by Buchla's
|
|
differentiation between control and audio signals in its plug type
|
|
\citep[1:01:38--1:04:04]{vercoe_barry_2012}.
|
|
|
|
However, adopting visual metaphors comes with the limitation that it
|
|
constrains the complexity of representation to what is visually
|
|
conceivable. In languages with visual patching interfaces like Max and
|
|
Pure Data, meta-operations on UGens are often restricted to simple
|
|
tasks, such as parallel duplication. Consequently, even users of Max or
|
|
Pure Data may not necessarily be engaging in expressions that are only
|
|
possible with computers. Instead, many might simply be using these tools
|
|
as the most convenient software equivalents of modular synthesizers.
|
|
|
|
\section{Context of Programming Languages for Music After
|
|
2000}\label{context-of-programming-languages-for-music-after-2000}
|
|
|
|
Based on the discussions thus far, 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 attempting alternative
|
|
abstractions at a higher level, distinct from the Unit Generator
|
|
paradigm, and those that expand the general-purpose capabilities of the
|
|
language, reducing black-boxing.
|
|
|
|
Languages that pursued alternative abstractions at higher levels 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, due 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, once stated that if
|
|
general-purpose programming languages were sufficiently expressive,
|
|
there would be no need to create specialized languages
|
|
\citep{McCartney2002}. This prediction appears reasonable when
|
|
considering examples like MUSIGOL. However, in practice, scripting
|
|
languages that excel in dynamic program modification face challenges in
|
|
modern preemptive OS environments. For instance, dynamic memory
|
|
management techniques such as garbage collection can hinder the ability
|
|
to guarantee deterministic execution timing required for real-time
|
|
processing \citep{Dannenberg2005}.
|
|
|
|
Historically, programming in languages like FORTRAN or C served as a
|
|
universal method for implementing audio processing on computers,
|
|
independent of architecture. However, with the proliferation of
|
|
general-purpose programming languages, programming in C or C++ has
|
|
become relatively more difficult, akin to programming in assembly
|
|
language in earlier times. Furthermore, considering the challenges of
|
|
portability across not only different CPUs but also diverse host
|
|
environments such as operating systems and the Web, these languages are
|
|
no longer as portable as they once were. Consequently, systems targeting
|
|
signal processing implemented as internal DSLs have become exceedingly
|
|
rare, with only a few examples like 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{sorensenExtemporeDesignImplementation2018}. 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 LLVM compiler infrastructure \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 like LLVM have given rise to an approach focused on
|
|
designing languages with formalized abstractions that reduce
|
|
black-boxing. \textbf{Faust} \citep{Orlarey2009}, for example, is a
|
|
language that retains a graph-based structure akin to UGens but is built
|
|
on a formal system called Block Diagram Algebra. This system integrates
|
|
primitives for reading and writing internal states, which are essential
|
|
for operations like delays and filters. Thanks to its formalization,
|
|
Faust can be transpiled into general-purpose languages such as C, C++,
|
|
or Rust and can also be used as an External Object in environments like
|
|
Max or Pure Data.
|
|
|
|
Languages like \textbf{Kronos}
|
|
\citep{noriloKronosReimaginingMusical2016} and \textbf{mimium}
|
|
\citep{matsuura2021}, 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{matsuura2024}.
|
|
|
|
Domain-specific languages (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 programming. 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 (FRP), which focuses
|
|
on representing time-varying values in computation. Most computer
|
|
hardware lacks an inherent concept of real time and instead operates
|
|
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 their own trade-offs.
|
|
While they allow UGens to be defined without black-boxing, understanding
|
|
the design and implementation of these languages often requires advanced
|
|
knowledge. This can create a significant divide between language
|
|
developers and users, in contrast to the more segmented roles 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 where their own 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 Unit Generator 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, like 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. These abstractions are important, as they hide many of the
|
|
technical details and make the software and processes available to more
|
|
people, and form the basis for what can arguably be seen as a new folk
|
|
music. \citep[p2]{holbrook2022}
|
|
\end{quote}
|
|
|
|
However, this division of labor also creates a shared
|
|
vocabulary---exemplified by the Unit Generator itself, pioneered by
|
|
Mathews---and works 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 the 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.
|
|
|
|
It has been noted in programming language research that evaluation
|
|
criteria such as efficiency, expressiveness, and generality are often
|
|
ambiguous \citep{Markstrum2010}. This issue is even more acute in fields
|
|
like music, where no clear evaluation criteria exist. Thus, as McPherson
|
|
et al.~have proposed with the concept of Idiomaticity
|
|
\citep{McPherson2020}, we need to develop and share a vocabulary for
|
|
understanding the value judgments we make about programming languages in
|
|
general.
|
|
|
|
In a broader sense, the creation of programming languages for music has
|
|
also expanded to the individual level. Examples include \textbf{Gwion}
|
|
by Astor, which builds on ChucK and enhances its abstraction
|
|
capabilities with features like lambda functions \citep{astorGwion2017};
|
|
\textbf{Vult}, a DSP transpiler language created by Ruiz for his modular
|
|
synthesizer hardware \citep{ruizVultLanguage2020}; and a UGen-based live
|
|
coding environment designed for web execution, \textbf{Glicol}
|
|
\citep{lan_glicol_2020}. However, these efforts have not yet been
|
|
adequately integrated into academic discourse.
|
|
|
|
Conversely, practical knowledge of university-researched languages from
|
|
the past, as well as real-time hardware-oriented systems from the 1980s,
|
|
is gradually being lost. While 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 will also be necessary in the
|
|
future. This includes not only collecting primary resources, such as
|
|
oral archives from those involved, but also reconstructing the knowledge
|
|
and practices behind these systems.
|