HYBRIDIZING the FAUST and CHUCK AUDIO PROGRAMMING LANGUAGES Ge Wang, Romain Michon

Total Page:16

File Type:pdf, Size:1020Kb

HYBRIDIZING the FAUST and CHUCK AUDIO PROGRAMMING LANGUAGES Ge Wang, Romain Michon FAUCK!! HYBRIDIZING THE FAUST AND CHUCK AUDIO PROGRAMMING LANGUAGES Ge Wang, Romain Michon To cite this version: Ge Wang, Romain Michon. FAUCK!! HYBRIDIZING THE FAUST AND CHUCK AUDIO PRO- GRAMMING LANGUAGES. Sound and Music Computing Conference (SMC-16), Aug 2016, Ham- burg, Germany. pp.310-313. hal-03162895 HAL Id: hal-03162895 https://hal.archives-ouvertes.fr/hal-03162895 Submitted on 8 Mar 2021 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. FAUCK!! HYBRIDIZING THE FAUST AND CHUCK AUDIO PROGRAMMING LANGUAGES Ge Wang Romain Michon CCRMA, Stanford University CCRMA, Stanford University [email protected] [email protected] ABSTRACT two things are already similar?). Might their profound dif- ferences give rise to something different from either alone? This paper presents a hybrid audio programming environ- Such curiosities provide the primary motivation for our ex- ment, called FAUCK, which combines the powerful, suc- ploration in hybridizing FAUST and CHUCK. cinct Functional AUdio STream (FAUST) language with the strongly-timed CHUCK audio programming language. dynamically FAUCK allows programmers to on-the-fly evaluate FAUST evaluates, runs code directly from CHUCK code and control FAUST sig- nal processors using CHUCK’s sample-precise timing and FAUST on-the-fly ChucK code rapid code concurrency mechanisms. The goal is to create an amal- iteration gam that plays to the strengths of each language, giving rise to new possibilities for rapid prototyping, interaction design and controller mapping, pedagogy, and new ways controls of working with both FAUST and CHUCK. We present our motivations, approach, implementation, and preliminary Figure 1. New FAUCK model. evaluation. FAUCK is open-source and freely available. FAUCK is a tight integration between FAUST and CHUCK that attempts to infuse their respective characteristics, re- 1. INTRODUCTION inforcing and even augmenting each language with aspects A variety of computer music programming languages exist of the other (Figure1). It is designed such that program- for the same reason there are many different types of tools: mers can embed and evaluate FAUST code directly from each is well-suited to different types of tasks, and speaks within a CHUCK program, take full advantage of CHUCK’s to different aesthetic and pragmatic preferences of the pro- sample-synchronous time-based control and concurrency, grammer. FAUST and CHUCK are two audio program- and do all of this on-the-fly. At the same time, this makes ming languages that effectively illustrate this point. FAUST available to CHUCK the entire existing body of FAUST (Functional AUdio STream) [1–4] embraces a declarative programs, ready to be used for synthesis and interaction and functional paradigm, is succinct, tailored to expres- design. In combination, FAUCK provides a different hy- sively describe low-level digital signal processing (DSP) bridized way to rapidly prototype sample-precise audio syn- algorithm, and generates optimized, efficient synthesis mod- thesis code in FAUST and control it precisely using CHUCK. ules. CHUCK, [5,6], on the other hand, is imperative, de- signed around a notion of temporal determinism that in- 2. RELATED WORK cludes sample-synchronous timing and concurrency (called strongly-timed), tailored for precise control, readability, and 2.1 Existing Paradigm an on-the-fly rapid-prototyping mentality [7]. Yet, they Thanks to its architecture system [8], FAUST can be used to share the general goal of sound synthesis for musical appli- easily build custom DSP modules that generate or process cations and both are text-based languages (e.g., not graph- samples as part of a larger host. The traditional paradigm ical patching). of incorporating FAUST into computer music systems in- What happens when one combines these two languages? volves a pipeline that 1) generates C++ code from FAUST More to the point, can these languages be combined in such code, 2) compiles into a plug-in, and 3) runs as part of a a way to take advantage of the respective strengths of both? host software system 1 (e.g., PureData 2 , Max/MSP 3 , Su- Furthermore, that the two languages seem vastly different perCollider 4 , etc.). In this regime, there is a new plug-in in syntax, semantics, and personality is all the more rea- created from any given FAUST program (Figure2). Such a son to explore their intersections (i.e., why try to combine system currently exists for compiling a given FAUST pro- gram into a CHUCK chug-in [9]. Copyright: c 2016 Ge Wang et al. This is an open-access article distributed 1 http://faust.grame.fr/Documentation/ contains an under the terms of the Creative Commons Attribution 3.0 Unported License, which exhaustive list of the FAUST architectures. 2 https://puredata.info/. permits unrestricted use, distribution, and reproduction in any medium, provided 3 https://cycling74.com/products/max/. the original author and source are credited. 4 http://supercollider.github.io/. effect.lib, math.lib) are, by default, automatically FAUST C++ Plug-in Host imported by FAUCK. Furthermore, note the use of the back- program code tick (‘) to delineate the inline FAUST code – this removes the need to manually escape single and double quotation marks used in the FAUST code. Figure 2. Traditional FAUST code to plug-in model. Alternately, the same object can load a FAUST program from the file system by invoking compile and providing 2.2 Dynamic FAUST Extensions a path to a FAUST .dsp file: Modules created using the technique described in §2.1 are foo.compile("osc.dsp"); static and cannot be modified once they are compiled. libfaustNext, the v method can be called at anytime to change the 5 [10] which is part of the FAUST2 distribution allows to value of a specific parameter defined on the FAUST object embed the FAUST compiler in any program written in C++ that is specified by its path (v stands for "value"; we chose to dynamically generate DSP modules on the fly (see §4). this abbreviation in anticipation that most program will in- Since its introduction in 2012 libfaust has been used voke this method often). For example, here we create a in various projects to integrate the FAUST compiler to ex- sine wave oscillator whose only parameter is its frequency isting platforms or to create new one. The FAUST back- (freq) and we set it to 440Hz: end [11] of the Pure programming language [12] that pre- dates the creation of libfaust was used as the basis for foo.eval(‘ frequency = nentry("freq", the design of this tool. 200,50,1000,0.01); libfaust was used for the first time in PureData within process = osc(frequency); a dynamic external that can be turned into any DSP ob- ‘); ject by modifying the FAUST code linked to it [13]. Simi- foo.v("freq",440); larly faustgen [14] is a dynamic MaxMSP external bor- Finally, the dump method can be called at any time to rowing the paradigm used in gen [15] to create custom print a list of the parameters of the FAUST object as well as unit generators. CSound 6 now hosts a dynamic opcode their current value. This is useful to observe large FAUST functioning the same way than the two previous exam- programs that have a large number of parameters in com- ples [16]. libfaust has also been used under different plex grouping paths. Programmers can also directly copy forms within the Web Audio API [17] to create custom dy- the path of any parameter to control for use with the v namic nodes [18, 19]. More recently, FAUST has been in- method. tegrated to the JUCE 7 platform [20] and the Processing 8 programming language. 3.2 Examples Finally, libfaust is at the core of the FAUSTLIVE "just in time" FAUST compiler [21] allowing to write FAUST 3.2.1 A Simple Example code in a text file and generating the corresponding stan- dalone audio application almost instantly. The following example puts together the different elements given in §3.1 by implementing a simple sine wave oscil- lator (specified in FAUST) whose frequency and gain are 3. THE FAUCK APPROACH randomly changed every 100ms (controlled in CHUCK). 3.1 Using FAUCK // connect a Faust object to ChucK dac FAUST objects can be used easily in any CHUCK code Faust foo => dac; Faust // evaluate through a chugin called . For example, a new FAUST foo.eval(‘ unit generator (e.g., an audio DSP effect that takes an input frequency = nentry("freq", from CHUCK) can be declared as follow: 200,50,1000,0.01) : smooth(0.999); gain = nentry("gain", adc => Faust foo => dac; 1,0,1,0.01) : smooth(0.999); In the case where foo would be a synthesizer, the adc process = osc(frequency)*gain; ‘); would be ignored and we could simply write: // ChucK time loop Faust foo => dac; while( true ){ // control frequency Any FAUST program can be associated with foo and dy- foo.v("frequency", Math.random2f(50,800)); namically evaluated by calling the eval method. // control gain foo.v("gain", Math.random2f(0,1)); foo.eval(‘process=osc(440);‘); // advance time For brevity and convenience, several common libraries 100::ms => now; } (music.lib, filter.lib, oscillator.lib, 5 https://sourceforge.net/p/faudiostream/code/ ci/faust2/tree/. 3.2.2 An Advanced Example 6 http://www.csounds.com/.
Recommended publications
  • Synchronous Programming in Audio Processing Karim Barkati, Pierre Jouvelot
    Synchronous programming in audio processing Karim Barkati, Pierre Jouvelot To cite this version: Karim Barkati, Pierre Jouvelot. Synchronous programming in audio processing. ACM Computing Surveys, Association for Computing Machinery, 2013, 46 (2), pp.24. 10.1145/2543581.2543591. hal- 01540047 HAL Id: hal-01540047 https://hal-mines-paristech.archives-ouvertes.fr/hal-01540047 Submitted on 15 Jun 2017 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. A Synchronous Programming in Audio Processing: A Lookup Table Oscillator Case Study KARIM BARKATI and PIERRE JOUVELOT, CRI, Mathématiques et systèmes, MINES ParisTech, France The adequacy of a programming language to a given software project or application domain is often con- sidered a key factor of success in software development and engineering, even though little theoretical or practical information is readily available to help make an informed decision. In this paper, we address a particular version of this issue by comparing the adequacy of general-purpose synchronous programming languages to more domain-specific
    [Show full text]
  • Chuck: a Strongly Timed Computer Music Language
    Ge Wang,∗ Perry R. Cook,† ChucK: A Strongly Timed and Spencer Salazar∗ ∗Center for Computer Research in Music Computer Music Language and Acoustics (CCRMA) Stanford University 660 Lomita Drive, Stanford, California 94306, USA {ge, spencer}@ccrma.stanford.edu †Department of Computer Science Princeton University 35 Olden Street, Princeton, New Jersey 08540, USA [email protected] Abstract: ChucK is a programming language designed for computer music. It aims to be expressive and straightforward to read and write with respect to time and concurrency, and to provide a platform for precise audio synthesis and analysis and for rapid experimentation in computer music. In particular, ChucK defines the notion of a strongly timed audio programming language, comprising a versatile time-based programming model that allows programmers to flexibly and precisely control the flow of time in code and use the keyword now as a time-aware control construct, and gives programmers the ability to use the timing mechanism to realize sample-accurate concurrent programming. Several case studies are presented that illustrate the workings, properties, and personality of the language. We also discuss applications of ChucK in laptop orchestras, computer music pedagogy, and mobile music instruments. Properties and affordances of the language and its future directions are outlined. What Is ChucK? form the notion of a strongly timed computer music programming language. ChucK (Wang 2008) is a computer music program- ming language. First released in 2003, it is designed to support a wide array of real-time and interactive Two Observations about Audio Programming tasks such as sound synthesis, physical modeling, gesture mapping, algorithmic composition, sonifi- Time is intimately connected with sound and is cation, audio analysis, and live performance.
    [Show full text]
  • Flocking: a Framework for Declarative Music-Making on the Web
    Proceedings ICMC|SMC|2014 14-20 September 2014, Athens, Greece Flocking: A Framework for Declarative Music-Making on the Web Colin Clark Adam Tindale OCAD University OCAD University [email protected] [email protected] ABSTRACT JavaScript. As artists and musicians increasingly use net- worked devices, sensors, and collaboration in their work, Flocking 1 is a framework for audio synthesis and mu- these limitations take an increasing toll on the complexity sic composition written in JavaScript. It takes a unique and scalability of creative coding. approach to solving several of the common architectural Flocking is an open source JavaScript framework that problems faced by computer music environments, empha- aims to address some of these concerns by connecting mu- sizing a declarative style that is closely aligned with the sicians and artists with the cross-platform, distributed de- principles of the web. livery model of the web, and with the larger pool of li- Flocking’s goal is to enable the growth of an ecosys- braries, user interface components, and tutorials that are tem of tools that can easily parse and understand the logic available to the web development community. Further, and semantics of digital instruments by representing the it emphasizes an approach to interoperability in which basic building blocks of synthesis declaratively. This is declarative instruments and compositions can be broadly particularly useful for supporting generative composition shared, manipulated, and extended across traditional tech- (where programs generate new instruments and scores al- nical subcultural boundaries. gorithmically), graphical tools (for programmers and non- programmers alike to collaborate), and new modes of so- cial programming that allow musicians to easily adapt, ex- 1.1 Interoperability in Context tend, and rework existing instruments without having to A primary motivating concern for Flocking is that the “fork” their code.
    [Show full text]
  • The Early History of Music Programming and Digital Synthesis, Session 20
    Chapter 20. Meeting 20, Languages: The Early History of Music Programming and Digital Synthesis 20.1. Announcements • Music Technology Case Study Final Draft due Tuesday, 24 November 20.2. Quiz • 10 Minutes 20.3. The Early Computer: History • 1942 to 1946: Atanasoff-Berry Computer, the Colossus, the Harvard Mark I, and the Electrical Numerical Integrator And Calculator (ENIAC) • 1942: Atanasoff-Berry Computer 467 Courtesy of University Archives, Library, Iowa State University of Science and Technology. Used with permission. • 1946: ENIAC unveiled at University of Pennsylvania 468 Source: US Army • Diverse and incomplete computers © Wikimedia Foundation. License CC BY-SA. This content is excluded from our Creative Commons license. For more information, see http://ocw.mit.edu/fairuse. 20.4. The Early Computer: Interface • Punchcards • 1960s: card printed for Bell Labs, for the GE 600 469 Courtesy of Douglas W. Jones. Used with permission. • Fortran cards Courtesy of Douglas W. Jones. Used with permission. 20.5. The Jacquard Loom • 1801: Joseph Jacquard invents a way of storing and recalling loom operations 470 Photo courtesy of Douglas W. Jones at the University of Iowa. 471 Photo by George H. Williams, from Wikipedia (public domain). • Multiple cards could be strung together • Based on technologies of numerous inventors from the 1700s, including the automata of Jacques Vaucanson (Riskin 2003) 20.6. Computer Languages: Then and Now • Low-level languages are closer to machine representation; high-level languages are closer to human abstractions • Low Level • Machine code: direct binary instruction • Assembly: mnemonics to machine codes • High-Level: FORTRAN • 1954: John Backus at IBM design FORmula TRANslator System • 1958: Fortran II 472 • 1977: ANSI Fortran • High-Level: C • 1972: Dennis Ritchie at Bell Laboratories • Based on B • Very High-Level: Lisp, Perl, Python, Ruby • 1958: Lisp by John McCarthy • 1987: Perl by Larry Wall • 1990: Python by Guido van Rossum • 1995: Ruby by Yukihiro “Matz” Matsumoto 20.7.
    [Show full text]
  • A Comparison of Solenoid-Based Strategies for Robotic Drumming
    A COMPARISON OF SOLENOID-BASED STRATEGIES FOR ROBOTIC DRUMMING Ajay Kapur 1,2,3 Trimpin Eric Singer2 Afzal Suleman1 George Tzanetakis1 Music Intelligence and Sound Technology Interdisciplinary Centre (MISTIC) 1 University of Victoria, Victoria, British Columbia, Canada League of Electronic Urban Music Robots (LEMUR) 2 Brooklyn, New York, USA KarmetiK Technology (A Division of KarmetiK LLC) 3 Reno, Nevada, USA ABSTRACT drums gives the students a more realistic paradigm for concentrated rehearsal. Solenoids are important components of robotic A number of different drumming robots have been drumming systems and several designs have been designed in the academic and artistic communities. proposed. In this paper, we compare different designs Researchers at Harvard University struggled to create an in terms of speed and dynamic range and discuss the accurate robotic drum roll [1], while next door tradeoffs involved. The evaluation is performed in the researchers at MIT developed Cog to control the context of MahaDeviBot, a custom built 12-armed MIDI number of times a stick can bounce [2]. Gil Weinberg controlled mechanical device that performs a variety of developed Haile to explore human to robot interaction Indian folk instruments, including frame-drums, bells, [3]. Mitsuo Kawato continues to develop hydraulic and shakers. To measure speed and dynamic range a systems for humanoid drumming [4]. Many artists have haptic robotic feedback system using piezo sensors was presented a number of different pieces including built. The evaluation methods presented are modular Baginsky’s “Thelxiapeia” for modified rototom [5], and can be administered to any hyperinstrument, new MacMurtie’s life size sculptures [6], Gordon Monohans interface or robotic system to inform composers about “Machine Matrix” [7], and Miles van Dorssen’s “Cell the strengths and limitation of different designs to guide Project” including an 8 octave Xylophone, Bamboo composition and performance.
    [Show full text]
  • Boston Symphony Orchestra Concert Programs, Summer, 1990
    FESTIVAL OF CONTE AUGUST 4th - 9th 1990 j:*sT?\€^ S& EDITION PETERS -&B) t*v^v- iT^^ RECENT ADDITIONS TO OUR CONTEMPORARY MUSIC CATALOGUE P66438a John Becker Concerto for Violin and Orchestra. $20.00 Violin and Piano (Edited by Gregory Fulkerson) P67233 Martin Boykan String Quartet no. 3 $40.00 (Score and Parts) (1988 Walter Hinrichsen Award) P66832 George Crumb Apparition $20.00 Elegiac Songs and Vocalises for Soprano and Amplified Piano P67261 Roger Reynolds Whispers Out of Time $35.00 String Orchestra (Score)* (1989 Pulitzer Prize) P67283 Bruce J. Taub Of the Wing of Madness $30.00 Chamber Orchestra (Score)* P67273 Chinary Ung Spiral $15.00 Vc, Pf and Perc (Score) (1989 Grawemeyer and Friedheim Award) P66532 Charles Wuorinen The Blue Bamboula $15.00 Piano Solo * Performance materials availablefrom our rental department C.F. PETERS CORPORATION ^373 Park Avenue So./New York, NY 10016/Phone (212) 686-4l47/Fax (212) 689-9412 1990 FESTIVAL OF CONTEMPORARY MUSIC Oliver Knussen, Festival Coordinator by the sponsored TanglewGDd TANGLEWOOD MUSIC CENTER Music Leon Fleisher, Artistic Director Center Gilbert Kalish, Chairman of the Faculty Lukas Foss, Composer-in-Residence Oliver Knussen, Coordinator of Contemporary Music Activities Bradley Lubman, Assistant to Oliver Knussen Richard Ortner, Administrator Barbara Logue, Assistant to Richard Ortner James E. Whitaker, Chief Coordinator Carol Wood worth, Secretary to the Faculty Harry Shapiro, Orchestra Manager Works presented at this year's Festival were prepared under the guidance of the following Tanglewood Music Center Faculty: Frank Epstein Donald MacCourt Norman Fischer John Oliver Gilbert Kalish Peter Serkin Oliver Knussen Joel Smirnoff loel Krosnick Yehudi Wyner 1990 Visiting Composer/Teachers Elliott Carter John Harbison Tod Machover Donald Martino George Perle Steven Stucky The 1990 Festival of Contemporary Music is supported by a gift from Dr.
    [Show full text]
  • Philharmonia Baroque Orchestra Sunday / July 18 / 4:00Pm / Venetian Theater
    SUMMER 2 0 2 1 Contents 2 Welcome to Caramoor / Letter from the CEO and Chairman 3 Summer 2021 Calendar 8 Eat, Drink, & Listen! 9 Playing to Caramoor’s Strengths by Kathy Schuman 12 Meet Caramoor’s new CEO, Edward J. Lewis III 14 Introducing in“C”, Trimpin’s new sound art sculpture 17 Updating the Rosen House for the 2021 Season by Roanne Wilcox PROGRAM PAGES 20 Highlights from Our Recent Special Events 22 Become a Member 24 Thank You to Our Donors 32 Thank You to Our Volunteers 33 Caramoor Leadership 34 Caramoor Staff Cover Photo: Gabe Palacio ©2021 Caramoor Center for Music & the Arts General Information 914.232.5035 149 Girdle Ridge Road Box Office 914.232.1252 PO Box 816 caramoor.org Katonah, NY 10536 Program Magazine Staff Caramoor Grounds & Performance Photos Laura Schiller, Publications Editor Gabe Palacio Photography, Katonah, NY Adam Neumann, aanstudio.com, Design gabepalacio.com Tahra Delfin,Vice President & Chief Marketing Officer Brittany Laughlin, Director of Marketing & Communications Roslyn Wertheimer, Marketing Manager Sean Jones, Marketing Coordinator Caramoor / 1 Dear Friends, It is with great joy and excitement that we welcome you back to Caramoor for our Summer 2021 season. We are so grateful that you have chosen to join us for the return of live concerts as we reopen our Venetian Theater and beautiful grounds to the public. We are thrilled to present a full summer of 35 live in-person performances – seven weeks of the ‘official’ season followed by two post-season concert series. This season we are proud to showcase our commitment to adventurous programming, including two Caramoor-commissioned world premieres, three U.S.
    [Show full text]
  • Real-Time Multimedia Composition Using
    Real-time Multimedia Composition using Lua W esley Smith Graham W akefield Media Arts and Technology Program Media Arts and Technology Program University of California Santa Barbara University of California Santa Barbara [email protected] [email protected] ABSTRACT 1.2 Lua In this paper, a new interface for programming multimedia compositions in Max/MSP/Jitter using the Lua scripting Lua is a powerful, efficient scripting language based on language is presented. Lua is extensible and efficient making associative tables and functional programming techniques. it an ideal choice for designing a programmatic interface for Lua is ideally suited for real-time multimedia processing multimedia compositions. First, we discuss the distinctions because of its flexible semantics and fast performance; it is of graphical and textual interfaces for composition and the frequently used for game logic programming (e.g. World of requirements for a productive compositional workflow, and Warcraft [24]) and application extension (e.g. Adobe then we describe domain specific implementations of Lua Lightroom) [11]. bindings as Max externals for graphics and audio in that order. 1.3 jit.gl.lua and lua~ Categories and Subject Descriptors H.5.1 [Information Interfaces and Presentation] Multimedia The jit.gl.lua (for OpenGL graphics) and Lua~ (for audio DSP) Information Systems - animations; H.5.5 [Information extensions allow a new range of expressive control in which Interfaces and Presentation] Sound and Music Computing - arbitrary, dynamic data structures and behaviors can be methodologies & techniques, modeling, signal synthesis and generated, whilst interfacing with the convenient graphical processing; I.3.7 [Computer Graphics] Three-Dimensional interface and libraries of Max/MSP/Jitter.
    [Show full text]
  • Chunity: Integrated Audiovisual Programming in Unity
    Chunity: Integrated Audiovisual Programming in Unity Jack Atherton Ge Wang CCRMA, Stanford University CCRMA, Stanford University Stanford, CA, United States Stanford, CA, United States [email protected] [email protected] Figure 1: Chunity is a programming environment for the creation of interactive audiovisual software. It combines the strongly-timed audio synthesis of the ChucK language with the high-performance graphics of the Unity game engine. ABSTRACT 1. INTRODUCTION Chunity is a programming environment for the design of in- This paper describes the Chunity project, which combines teractive audiovisual games, instruments, and experiences. the audio programming language ChucK with the game en- It embodies an audio-driven, sound-first approach that inte- gine Unity for the creation of artful and interactive audiovi- grates audio programming and graphics programming in the sual applications. Chunity is both a tool and a workflow for same workflow, taking advantage of strongly-timed audio creating tools, games, toys, instruments, and experiences. programming features of the ChucK programming language As music researchers who work with the interplay be- and the state-of-the-art real-time graphics engine found in tween sound and graphics, we seek to create tools that pri- Unity. We describe both the system and its intended work- oritize audio and allow systems to be audio-driven when flow for the creation of expressive audiovisual works. Chu- helpful (e.g. for precise, musically-timed graphics). nity was evaluated as the primary software platform in a We chose to work with ChucK and Unity to combine computer music and design course, where students created the respective affordances of each.
    [Show full text]
  • SAOL: the MPEG-4 Structured Audio Orchestra Language
    Eric D. Scheirer and Barry L. Vercoe Machine Listening Group SAOL: The MPEG-4 E15-401D MIT Media Laboratory Cambridge, Massachusetts 02139-4307, USA Structured Audio [email protected] [email protected] Orchestra Language Since the beginning of the computer music era, The Motion Pictures Experts Group (MPEG), tools have been created that allow the description part of the International Standardization Organiza- of music and other organized sound as concise net- tion (ISO) finished the MPEG-4 standard, formally works of interacting oscillators and envelope func- ISO 14496, in October 1998; MPEG-4 will be des- tions. Originated by Max Mathews with his series ignated as an international standard and published of “Music N” languages (Mathews 1969), this unit in 1999. The work plan and technology of MPEG-4 generator paradigm for the creation of musical represent a departure from the previous MPEG-1 sound has proven highly effective for the creative (ISO 11172) and MPEG-2 (ISO 13818) standards. description of sound and widely useful for musi- While MPEG-4 contains capabilities similar to cians. Languages such as Csound (Vercoe 1995), MPEG-1 and MPEG-2 for the coding and compres- Nyquist (Dannenberg 1997a), CLM (Schottstaedt sion of audiovisual data, it additionally specifies 1994), and SuperCollider (McCartney 1996b) are methods for the compressed transmission of syn- widely used in academic and production studios thetic sound and computer graphics, and for the today. juxtaposition of synthetic and “natural” (com- As well as being an effective tool for marshalling pressed audio/video) material. a composer’s creative resources, these languages Within the MPEG-4 standard, there is a set of represent an unusual form of digital audio com- tools of particular interest to computer musicians pression (Vercoe, Gardner, and Scheirer 1998).
    [Show full text]
  • Computer Music (So Far)
    Computer Music (So Far) Part I. Mainframes Computers have made noises since Eniac was rolled out in 1947. It seems one of the problems with programming the early systems was knowing that everything was operating properly. That's why you see computers in 50s science fiction movies covered in lights. A common trick was to connect a loudspeaker to a key component in the main processor -- this would give tones of various pitches as data moved in and out of the accumulator. As long as a program was running, the tones would change in a random sort of way. A steady pitch meant the program was caught in a loop and needed to be shut down. That's how beedle beep became the signifier of computer operation. The first real music program was written by Max Mathews in the early 1960s. He was working at Bell labs, a research center run by AT&T when they were the phone company. Max was primarily developing more practical things for the phone company (he invented the little square plug, for instance). But he worked on music software in his spare time. He called his software MUSIC, with the different versions indicated by Roman numerals. MUSIC made its first sound in 1957, playing single line tunes. MUSIC II, a year later, had four part polyphony. These ran on the most powerful computer of the day, and took something like an hour of computing time to generate a minute of music. The sound was similar to the tunes played by some wristwatches today. In 1960, MUSIC III introduced the concept of a "unit generator", a subroutine that would create a specific kind of sound and only needed a few numbers from the composer.
    [Show full text]
  • Designing and Implementing the Chuck Programming Language
    DESIGNING AND IMPLEMENTING THE CHUCK PROGRAMMING LANGUAGE Ge Wang Perry R. Cook† Ananya Misra Princeton University Department of Computer Science (†also Music) ABSTRACT ChucK re-factors the idea of a computer music lan- guage into three orthogonal basis components: unit gen- erator connections that are data-flow only, globally con- ChucK sistent ”first-class” time control, and sample-synchronous chuck vm status: while( 1 ) speaker --- 1::second +=> now; shred 'foo' : active : 3m5s --- concurrency. The syntax, semantic, and usage have been shred 'bar' : suspended : 10m20s chuck vm %> sporking shred 'foo' discussed in previous works. The focus and contributions projection projector of this paper are (1) to examine the philosophies and deci- computer sions in the language design (2) to describe ChucK’s im- On-the-fly Audicle plementation and runtime model, and (3) to outline poten- Programming tial applications enabled by this framework. We present an experiment in designing a computer music language ”from scratch” and show how things work. We hope these ideas may provides an interesting reference for future com- puter music systems. Figure 1. A short history of ChucK (2003), on-the-fly programming (2004), and the Audicle (2004). 1. INTRODUCTION 2. LANGUAGE DESIGN GOALS ”The old computing is about what computers can do, ChucK continues to be an open-source research experi- the new computing is about what people can do.” ment in designing a computer music language from the - Ben Shneiderman, HCI Researcher. ”ground up”. While it draws ideas from many sources (C, Java, Max, SuperCollider), it isn’t based on a single If Human Computer Interaction (HCI) research strives existing language; hence we were free (and doomed) to to give people greater and better access to using the com- make language design decisions at nearly every stage.
    [Show full text]