Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hiding What from Whom? A Critical Review of the...

Hiding What from Whom? A Critical Review of the History of Programming languages for Music

https://matsuuratomoya.com/en/research/icmc-2025/

This paper critically reviews the history of programming languages for music, distinct from computer music as a genre, by drawing on discussions from sound studies. The paper focuses on the universalist assumptions around pulse-code modulation and the Unit Generator concept established by the MUSIC-N family, which established a lineage of role between composers and scientists which tends to turn composers into consumers. The paper concludes that programming languages for music developed after the 2000s present alternatives to the often-invisible technological infrastructures surrounding music, such as formats and protocols, rather than solely aiming to create novel musical styles.

Avatar for Tomoya Matsuura

Tomoya Matsuura

June 11, 2025
Tweet

More Decks by Tomoya Matsuura

Other Decks in Research

Transcript

  1. Tomoya MATSUURA/ দӜ஌໵ - International Computer Music Conference 2025 Art

    Media Center, Tokyo University of the Arts / [email protected] Hiding What from Whom? A critical review of programming-languages for music matsuuratomoya.com/en/ research/icmc-2025/
  2. Personal Motivation and Context https://mimium.org/ T. Matsuura and K. Jo,

    “Mimium: A Self-Extensible Programming Language for Sound and Music(2021) T. Matsuura, “Lambda-mmm: The Intermediate Representation for Synchronous Signal Processing Language Based on Lambda Calculus(2024) Why do you make a new language in 2020?
  3. 1960 1970 1980 1990 2000 2010 2020 1950 MUSIC I

    Mathews MUSIC III (UGen) IRCAM 4X Realtime-Variable DSP Pure Data SuperCollider ChucK Faust mimium Innis MUSIGOL Max/FTS UNIVAC/BINAC/ACE
 the early attempts of sound generation with a computer FORTRAN Csound TidalCycles Sonic Pi Kronos MUSIC V Soul/Cmajor Is the PCM truly universal? How the MUSIC-N evolved with hiding its internal structure with Unit Generator What are the values of the programming language for music, developed after 2000?
  4. 1960 1970 1980 1990 2000 2010 2020 1950 MUSIC I

    Mathews MUSIC III (UGen) IRCAM 4X Realtime-Variable DSP Pure Data SuperCollider ChucK Faust mimium Innis MUSIGOL Max/FTS UNIVAC/BINAC/ACE
 the early attempts of sound generation with a computer FORTRAN Csound TidalCycles Sonic Pi Kronos MUSIC V Soul/Cmajor Is the PCM truly universal? How the MUSIC-N evolved with hiding its internal structure with Unit Generator What are the values of the programming language for music, developed after 2000?
  5. Algo“rhythmic” Listening Practices using sound in the early days of

    computer • Using the speaker to listen to the logic signal for debugging (Miyazaki, 2012) • By controlling the frequency of the logic, engineers produced melodies Photo of Pllot ACE from (Doornbusch 2017) • Most of the attempts were just playing famous melody but in the case of Pilot ACE(UK), accidentally, the engineers could get unique sound (Doornbusch 2017) due to the structure of the acoustic-delay memory
  6. "Very Early Computer Music", Donald Davis, Resurrection The Bulletin of

    the Computer Conservation Society, vol. 10 pp.19-20 (1994) "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."
  7. Non-PCM Representation? (from Miller Puckette's Keynote in ICMC 2015) If

    there was a DAC for this linear-segments sound representation, what the language for it like?
  8. "Almost Any Sound" and PCM from (Mathews 1963) MUSIC I

    could produce 1 triangular wave with envelope. Could it produce... "any" sound?
  9. 1960 1970 1980 1990 2000 2010 2020 1950 MUSIC I

    Mathews MUSIC III (UGen) IRCAM 4X Realtime-Variable DSP Pure Data SuperCollider ChucK Faust mimium Innis MUSIGOL Max/FTS UNIVAC/BINAC/ACE
 the early attempts of sound generation with a computer FORTRAN Csound TidalCycles Sonic Pi Kronos MUSIC V Soul/Cmajor Is the PCM truly universal? How the MUSIC-N evolved with hiding its internal structure with Unit Generator What are the values of the programming language for music, developed after 2000?
  10. Unit Generator Concept (1963) by Max Mathews • Connecting "Unit"

    of the signal processing • e.g. Sinewave Oscillator, Filter, etc... • Drawing a diagram on the paper, translating it into a textual format, and then punchcard holes, were the "programming".
  11. Example:IIR Bandpass Filter FLT I1 O I2 I3 P29 P30;

    On = I1 ⋅ Sn + I2 ⋅ On−1 − I3 ⋅ On−2 Z-1 Z-1 I1 I2 I3 + + In MUSIC V: Using surplus memory spaces for time-varying parameters coming from the score, to store signal histories. (Any indexes can be used if they weren't used in the score) S O
  12. In MUSIC 11/Csound: instr 1 ; instrument with fabricated reson:

    la1 init 0 ; clear feedbacks la2 init 0 ; at start only i3 = exp(-6.28 * p6 / 10000) ; set coef 3 i2 = 4*i3*cos(6.283185 * p5/10000) / (1+i3); set coef 2 i1 = (1-i3) * sqrt(1-1 - i2*i2/(4*i3)) ; set coef 1 a1 rand p4 ; source signal la3 = la2 ; feedback 2 la2 = la1 ; feedback 1 la1 = ɹɹi1*a1 + i2 * la2 - i3 * la3 ; 2nd order difference eqn out ɹla1 endin instr 2 ; this instr does same as above a1 rand p4 ; source signal a1 reson a1,p5,p6,1 ; 2nd order recursicve filter endin You can use pre-built "reson" opcode(UGen), but also de fi ne an equivalent by yourself. (User De fi ned OpCode) ʢno temporary variables required for feedbackʣ
  13. In MUSIC 11/Csound: instr 1 ; instrument with fabricated reson:

    la1 init 0 ; clear feedbacks la2 init 0 ; at start only i3 = exp(-6.28 * p6 / 10000) ; set coef 3 i2 = 4*i3*cos(6.283185 * p5/10000) / (1+i3); set coef 2 i1 = (1-i3) * sqrt(1-1 - i2*i2/(4*i3)) ; set coef 1 a1 rand p4 ; source signal la3 = la2 ; feedback 2 la2 = la1 ; feedback 1 la1 = ɹɹi1*a1 + i2 * la2 - i3 * la3 ; 2nd order difference eqn out ɹla1 endin instr 2 ; this instr does same as above a1 rand p4 ; source signal a1 reson a1,p5,p6,1 ; 2nd order recursicve filter endin You can use pre-built "reson" opcode(UGen), but also de fi ne an equivalent by yourself. (User De fi ned OpCode) "You no longer need to learn how the fi lter works internally."
  14. In MUSIC 11/Csound: instr 1 ; instrument with fabricated reson:

    la1 init 0 ; clear feedbacks la2 init 0 ; at start only i3 = exp(-6.28 * p6 / 10000) ; set coef 3 i2 = 4*i3*cos(6.283185 * p5/10000) / (1+i3); set coef 2 i1 = (1-i3) * sqrt(1-1 - i2*i2/(4*i3)) ; set coef 1 a1 rand p4 ; source signal la3 = la2 ; feedback 2 la2 = la1 ; feedback 1 la1 = ɹɹi1*a1 + i2 * la2 - i3 * la3 ; 2nd order difference eqn out ɹla1 endin instr 2 ; this instr does same as above a1 rand p4 ; source signal a1 reson a1,p5,p6,1 ; 2nd order recursicve filter endin You can use pre-built "reson" opcode(UGen), but also de fi ne an equivalent by yourself. (User De fi ned OpCode) Does it mean, "congratulation! you can now focus on composing"? "You no longer need to learn how the fi lter works internally." Or, does it mean that the composer have lost the opportunity to learn the internal working?
  15. Composer Realizer (Musical Assistants) Researcher Engineer Make Max/Pd Patches Make

    Max/Pd Objects with C/C++ Make Max/Pd Itself Division of labor embedded in Max/Pd • Today’s layered ecosystem of Max and Puredata directly came from the division of labor in IRCAM (Reese and Puckette, 2020) Compose with DAW Make VST Plugins w/ C/C++ Develop DAWs
  16. "Any Sound You Can Imagine: Making Music/Consuming Technology", Paul Théberge,

    Wesleyan University Press, p.89 (1997) "Lacking adequate knowledge of the technical system, musicians increasingly found themselves drawn to prefabricated programs as a source of new sound material. (. . . ) it also suggests a reconceptualization on the part of the industry of the musician as a particular type of consumer." ...does this situation even happen in open-source sound programming tools, right?
  17. 1960 1970 1980 1990 2000 2010 2020 1950 MUSIC I

    Mathews MUSIC III (UGen) IRCAM 4X Realtime-Variable DSP Pure Data SuperCollider ChucK Faust mimium Innis MUSIGOL Max/FTS UNIVAC/BINAC/ACE
 the early attempts of sound generation with a computer FORTRAN Csound TidalCycles Sonic Pi Kronos MUSIC V Soul/Cmajor Is the PCM truly universal? How the MUSIC-N evolved with hiding its internal structure with Unit Generator What are the values of the programming language for music, developed after 2000?
  18. More General & Formalized, Less Blackbox Extempore FoxDot TidalCycles Sonic

    Pi Overtone FAUST Kronos mimium Alternative Abstraction & Live Modi fi cation (Typically on top of SuperCollider) higher layer lower layer
  19. Openness as an attitude & aesthetics from TOPLAP manifesto(2004) •

    We demand: • Give us access to the performer's mind, to the whole human instrument. • Obscurantism is dangerous. Show us your screens. • Programs are instruments that can change themselves • The program is to be transcended - Arti fi cial language is the way. • Code should be seen as well as heard, underlying algorithms viewed as well as their visual outcome. • Live coding is not about tools. Algorithms are thoughts. Chainsaws are tools. That's why algorithms are sometimes harder to notice than chainsaws. https://toplap.org/wiki/ManifestoDraft (emphasis by Tomoya)
  20. whenmod 8 4 (slow 4) $ every 2 ((1=2) <

    ) $ 
 every 3 (density 4) $ iter 4 "grey darkgrey green black" (Mclean 2014) Some SC-parasite languages do not depend on PCM sound generation
  21. More General & Formalized, Less Blackbox Extempore FoxDot TidalCycles Sonic

    Pi Overtone FAUST Kronos mimium Alternative Abstraction & Live Modi fi cation (Typically on top of SuperCollider) higher layer lower layer
  22. Division of the labor in the DSL From "narrow and

    many step stair" to "one continuous steep slope" If there is a language that is general, e ff i cient and expressive enough, the division of labor will be gone? Engineer(Language Designer) Realizer(External UGen Designer) Language User(Composer)
  23. Division of the labor in the DSL From "narrow and

    many step stair" to "one continuous steep slope" Engineer(Host Language Designer) Language User(Composer/Library Developer) ...or will it introduce even deeper division of labor between the language designer and the user? Maybe... a self-hostable language for music could solve this? If there is a language that is general, e ff i cient and expressive enough, the division of labor will be gone?
  24. "Of Epistemic Tools: musical instruments as cognitive extensions", Thor Magnusson,

    Organized Sound 14-2, p173 (2009) "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."
  25. • Why you make the new music language in 2020?

    • To make more interesting sound/music? • To make more e ffi cient/productive/useful tool? • Neither, designing a language involves extracting the form of music at the era and enabling them shareable • which sometimes present alternatives or even solidify/ fi x existing musical styles conversely. • programming language as a cultural infrastructure
  26. Limitations and future works • My research re-contextualized existing literatures

    but more primary resources are needed • Archaeological practices programming languages for music/computer music(I have never tried the real systems developed before 2000!!) • We need to incorporate practices by non-academic language designer more • What is... "good" language? • How are we using the evaluation terms like "expressive" "e ff i cient" "general"? Are they shared between researchers?
  27. 4PVSDF %PDVNFOUBUJPO $PNNVOJUZ 4ZOUBY %FWFMPQJOH &OWJSPONFOU 3VOOJOH &OWJSPONFOU 4FNBOUJDT Compilation

    Cost Platform Independency Coding Cost Generality (Possible Expressions ) Execution Cost 'SPOUFOE *OUFSNFEJBUF 3FQSFTFOUBUJPO $PNQJMFS 3VOUJNF 7JTVBM 3FQSFTFOUBUJPO &EJU $PNQJMF 3FTVMU  &SSPS 3VOUJNF &SSPS (FOFSBUFE 4PVOE &BTF PG *UFSBUJPO Live Modification +Developing Cost Learnability
  28. MUSIGOL(Innis 1968) First "DSL as a Library" for MUSIC real

    procedure Sinoscil(Time, Frequency, Amplitude); value Time, Frequency, Amplitude; real Time, Frequency, Amplitude; begin real X, XX; X := (6.2831853072 * Frequency * Time) MOD 6.2831853072; if abs(X - 3.1415926536) < 0.0315 then Sinoscil := Amplitude * (3.1415926536 - X) else if abs(X - 6.283185307) < 0.0315 then Sinoscil := Amplitude * (X - 6.2831853072) else begin if X > 3.1415926536 then X := X - 6.28318503072; XX := sign(X); X := abs(X); X := if X > 1.5707963268 then XX * 0.636619772 * (3.1415926536 - X) else X * XX * 0.636619772; XX := X * X; Sinoscil := X * (1.570794852 + XX * (-0.645920978 + XX * (0.079487663 - 0.004362476 * XX))) * Amplitude; end; end Sinoscil; Both the system and the user codes are entirely written in ALGOL 60. procedure Score; begin Boing(-3, -1.5, 20, E4); Boing(-3.5, -4, 15, Slope(-3.5, -4, CS4, C9)); ... Speaker(OUTS, 100); end of Score;