The Ixiquarks: Merging Code and Gui in One Creative Space
Total Page:16
File Type:pdf, Size:1020Kb
THE IXIQUARKS: MERGING CODE AND GUI IN ONE CREATIVE SPACE Thor Magnusson ixi software Creative Systems Lab Department of Informatics University of Sussex ABSTRACT utilising these tools is characteristic of their nature and important criteria their designers had in mind when This paper reports on ixiQuarks; an environment of designing the environments [11, 16]. Of course, one instruments and effects that is built on top of the audio could argue that these audio programming languages are programming language SuperCollider. The rationale of constraining as well, but this is more on the level of these instruments is to explore alternative ways of software design and rarely on the level of musical designing musical interaction in screen-based software, interaction. As such, the musician or instrument designer and investigate how semiotics in interface design affects always has ways of getting around software engineering the musical output. The ixiQuarks are part of external limitations to reach the goal of the composition or libraries available to SuperCollider through the Quarks instrument design. system. They are software instruments based on a non- In this paper, I will introduce the ixiQuarks: a realist design ideology that rejects the simulation of graphical user interface (GUI) environment of audio acoustic instruments or music hardware and focuses on tools and instruments for live improvisation that allow experimentation at the level of musical interaction. In for user interaction on both the GUI and the code level. this environment we try to merge the graphical with the The ixiQuarks are written in the SuperCollider textual in the same instruments, allowing the user to programming language and are part of the Quarks reprogram and change parts of them in runtime. After a repository (external libraries for the SuperCollider short introduction to SuperCollider and the Quark language). I will commence by outlining the general system, we will describe the ixiQuarks and the SuperCollider/Quarks environment, then introduce the philosophical basis of their design. We conclude by ixiQuarks instruments and finally talk about the looking at how they can be seen as epistemic tools that philosophical and aesthetic implications of this unified influence the musician in a complex hermeneutic circle creative space where code and interface can merge in a of interpretation and signification. continuous performance activity. 1. INTRODUCTION 2. SUPERCOLLIDER, QUARKS AND CODING The question of affordances and constraints in musical software [8] is highly interesting as it is inevitably 2.1. The SuperCollider Environment concerned with aesthetics and musicology. As all SuperCollider 3 (or SC Server) [11] is the state-of-the-art musicians who have worked with digital software know, audio programming environment of today, written by the software itself suggests certain work methods, James McCartney and released as open source software outlining a methodology to be followed. Often this in 2002. Since then it has become ever more means that the musicians have to change their natural sophisticated and powerful, used by musicians, artists ways of composing or playing and subscribe to work and scientists alike that form a strong developer and user patterns that were defined by the designers of the community. SuperCollider is split up in two independent software [10]. Musical software comes in various forms parts, the SC language and the SC server. The former is and includes both production and performance tools. The an interpreted, object orientated language written in difference of such software compared to a word editor, a C/C++ that takes inspiration from the design of browser or a mail program is that the interaction design SmallTalk; the latter is an audio server that supports a of the software itself has much stronger aesthetic powerful C plugin architecture which makes audio implications for the user. Software is never neutral in its digital signal processing effective, fast and easy to expressive scope and the more refined it is, the more it program. The language and the server communicate constrains. through the Open Sound Control (OSC) protocol [17], In order to escape from the expressive constraints which makes it possible for all OSC supporting of commercial or closed source software, musicians are programming languages to talk to the SC server. This increasingly making use of free and open source split between a language and a server, and the usage of programming environments such as SuperCollider, OSC makes SuperCollider an ideal audio programming ChucK, Pure Data and other similar patching environment for networked performances, live-coding, environments that allow for either textual or graphical interface creation (hardware or software) and programming. The word “free” above connotes not only collaborative playing. It also means that the language free as in “free speech”, or “free beer”, but also free as in can perform complex real-time calculations without “free jazz”. The freedom of musical expression when resulting in glitches in the audio as they are two separate SuperCollider has extensive support for creating processes. interfaces on the graphical user interface level, using The SuperCollider language and server are open MIDI, HID (Human Interface Devices), serial or OSC source and anyone can write class extensions for the (Open Sound Control) communication. As such it lends language or plugins (unit generators) for the server. The itself well to all common interface work, instrument environment is compiled into a binary file (the making and installations. But SuperCollider is also one distributed application) with a C compiler, but then runs of the most powerful environments for live-coding as an interpreted language that has source class files that musical performances [12, 13] as it is an interpreted interface with the C primitives. The SuperCollider class language and new code can be evaluated in run-time files are written in the SC-language and are an important without saving or recompiling anything. Programs can way to modularize code and compositional concepts be created that evolve or change according to user input when working with the language. SuperCollider itself is or additional programming. As an example, here is a an extremely broad and flexible language and easily small JITLib [13] program that generates a simple snare extendable by writing one’s own classes. sound every second: ~trig = { Impulse.ar(1) }; // the trigger 2.2. Quarks ~snare = { WhiteNoise.ar(1) * EnvGen.ar( Env.perc, ~trig.ar )}; Authors of 3rd party SuperCollider classes tend to share Say we wanted to add a low pass filter to the sound them with the rest of the community if they have a without interrupting its continuity, we simply run the general scope and are useful in other than a private latter line again where the white noise goes through the capacity. In order to extend SuperCollider with new filter: classes, users can either install them manually into the ~snare={LPF.ar(WhiteNoise.ar * EnvGen.ar(Env.perc,~trig.ar), 2000)}; appropriate ClassLib folder or use the dynamic Quarks system. The Quarks system was introduced for the There are countless ways of doing these things in creators of 3rd party class files to simplify the process of SuperCollider as it is a wide and powerful programming creating, updating and distributing their code but also language whose users have different agenda, emphasis simplifying the updating channel for the users of the and programming styles. Some people prefer writing classes. This is achieved by using a SVN1 (Subversion classes and/or graphical user interfaces to be controlled Control) repository system where the author commits the by sensors or controllers. Others work purely in code latest changes in his/her classes and then the users can composing algorithmic music and yet others enjoy the update their classes with a simple two line command: tense experience of coding in front of the audience in a live situation.3 In contrast to much closed source Quarks.checkout( "ixiQuarks" ); // downloads from svn software, there are as many ways of using SuperCollider Quarks.install( "ixiQuarks" ); // installs in sc-classpath as there are people working with it. There is no rigid methodology as all programmers/musicians have their The repository is online on the SourceForge website and own way of thinking; their own style of writing the Quarks class in SuperCollider takes care of code/music. downloading and installing the chosen classes “under the hood” so to speak. The user only needs the two lines 3. THE IXI QUARKS above to download new class libraries. The SVN system 4 makes it easy for the author to track changes in the code, The ixi software project started in 2000 as an but also for the user to follow development of the class. exploration of how structures of interaction in musical software could be redefined. The aim was to resist the 2.3. Programming and Live Coding with SC imitation of physical hardware or acoustic instruments in the way the interaction and interface design was One of the frustrations for the computer musician who implemented. The ixi instruments are designed from the performs in a live situation with acoustic affordances and premises of the computer itself and not instrumentalists, for example in an improvisation band, those of physical reality. As music is in essence the is the difficulty of carrying out spontaneous and intuitive execution of sonic patterns through time, we change in playing [10]. Musical software is often more concentrated on creating pattern-generating interfaces focused on the score or the textural level of a musical with strong graphical elements implemented in the performance rather than on the note level. This fact tends interaction design. These interfaces were outputting OSC to make software instruments less expressive than their information to sound engines that were written in acoustic counterparts. But there are various ways to get SuperCollider, Pure Data or Max/MSP, but some also around the rigidity of musical software.