Open Source Software and Electroacoustic Music Creation
An overview and personal practices
Electronic or digital art can be strongly limited or influenced by the commercial agendas of computer software companies that develop the everyday tools used by artists. The Open Source model of software development can provide a framework that allows the electroacoustic composer to explore and develop a personal aesthetic outside of the possible influence of commercial trends, and without having to tie his/her creative exercise to a financial budget. Community- and socially-oriented, Open Source software can also create a context for the electronic artist that influences her/him, in a positive way, towards a global consciousness. Here I recount some characteristics of Open Source tools and by showing a concrete, personal example I will illustrate some of their technical and creative possibilities.
This paper aspires to be an introduction to Open Source software and its use for electroacoustic music composition. It’s aimed mainly at students, amateurs or professionals who haven’t been in contact with such software. It contains specific information as well as my own personal reflections. In the first section I'll explain some basic concepts, definitions and personal ideas about it, and in the second section I'll demonstrate its use through an example from my own work, What is it? (1).
2. Open Source Software and Proprietary software
The term Open Source is applied to all those activities involved in the production or design of goods and knowledge that are done in a way that does not restrict free access to such activities. It is a term well-known when it comes to computer software, for which it means that the entire process of design, creation, programming and distribution should be accessible to anyone. Thanks to the Internet, the principles of Open Source Software have been empowered, allowing the emergence of world-wide collaborative groups of individuals who share ideas, knowledge and skills.
According to the Open Source Initiative, to apply the term Open Source Software (OSS) the software must comply with these criteria:
- Free Redistribution. The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
- Source Code. The program must include its source code, and must allow free distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost, preferably an Internet download without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.
- Derived Works. The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
- Integrity of The Author’s Source Code: The license may restrict source-code from being distributed in modified form only if the license allows the distribution of “patch files” with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.
- No Discrimination Against Persons or Groups. The license must not discriminate against any person or group of persons.
- No Discrimination Against Fields of Endeavor. The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
- Distribution of License. The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.
- License Must Not Be Specific to a Product. The rights attached to the program must not depend on the program’s being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program’s license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.
- License Must Not Restrict Other Software. The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.
- License Must Be Technology-Neutral. No provision of the license may be predicated on any individual technology or style of interface.
From these guidelines we can see that OSS is not only about the technical side of software (the code itself and its development) but also covers socio-cultural aspects such as diversity inclusiveness and freedom of use (as stated in points 5 and 6). The OSS principles allow the users to openly participate in the design and development of the software knowing that whatever work is done will be beneficial to all the users. These principals allow human knowledge to become a property of everyone without restrictions.
The development of closed, copyrighted proprietary software (PS) follows commercial for-profit guidelines. PS software is designed and developed in a secret and restricted way based on commercial strategies which are targeted to a specific group of consumers (the ones who will allow the largest profit). Legal and technical means are enforced to restrict its use, modification and distribution. Software production becomes an isolated process whereas in the OSS the knowledge of a much bigger and freer group of people can contribute with their ideas, skills and criticisms to produce technological tools that can become useful and accessible to everyone.
The PS model has allowed the existence of imposed standards regarding the way the user interacts with computer systems. When a commercial company that produces PS achieves market domination, the lack of competition, in addition to the limited group of people involved in the production of the software, seems to cause an imposition of ways the software should be used for its intended tasks. There are cases of audio, music and visual creation PS where the users are forced to learn imposed “standards” in order to be able to interact at a professional level (e.g Digidesign ProTools, Adobe Illustrator, Adobe Photoshop). Also, as their main purpose is commercial profit, PS companies will invest only in implementing software functionalities that are appealing to their main group of consumers which, in the case of visual and music/sound creation software, is mainly those involved in mass, for-profit production of music/sound and visual content.
Another inconvenience about PS is the lack of open standards for archiving. The way the project files are stored by this kind of software is usually done in a closed, codified way that makes such files completely inaccessible to other software and to the user’s understanding. The purpose of such behavior seems to ensure exclusivity and to force the user to stick to a software package from the moment the first projects are created (again a purely market-oriented strategy). If the company that produces a specific software package goes out of business then the user is left with projects that can’t be continued with other software or that, on the long term, can become completely inaccessible (i.e. when the last version produced becomes obsolete because of operating system/hardware incompatibilities).
In the case of OSS, archiving is done following conventions or standards that are accessible to everyone. Even in the case of a software package not being developed any more, there is always the possibility for other programmers or users to examine the structure of the files created by such software and then convert them to a new standard or at least use them as a guide to recreate the project in a different software environment.
3. Open Source Software and Electroacoustic Music
When computer software is used for electroacoustic (EA) music or sound art creation, to restrict the composer or sound artist to the use of PS creates a risk that the artist will be influenced and limited by the commercial agendas behind the production of such software. This risk becomes bigger when the composer/artist does not have deeper technological skills in his/her formation and relies only on the tools that are commercially available. Such commercial tools usually favor, as stated before, the creation of music intended for mainstream commercial profit. Without falling into an analysis or judgment of the value and intentions of commercial music, it is obvious that an EA creator should have access to tools that provide him/her with a free, unrestricted and rich environment for the development of his/her creativity.
When the EA composer uses an audio/music proprietary software package, she/he will find plenty of tools that are intended to facilitate certain creative processes that belong to specific music styles. In these music styles its quite common to find the use of literal or quasi literal repetition of structures as a predominant compositional procedure (repetitive rhythmic patterns, melodic motives, sections, harmony). This software also has a tendency to favor the creation of a spectral color (timbres) common to these styles; the PS sound processing tools or plug-ins contain processing algorithms and parameter presets that allow easy reproduction of this timbres.
The possible stylistic bias present in the PS doesn’t make it necessarily unusable for EA music creation. The software contains many standard tools that are basic for any audio work (multi-tracking, wave-form editors, equalizers, etc.). And in the end it always depends, as in any art, on the creative potential and technical skills of the artist. But for an artist who is in their formative stages or someone who hasn’t been presented with an alternative, it could be tempting to fall into the easy availability of resources offered by this type of software and let it limit his/her creative potential.
Beside the technical implications of the OSS that favor the artistic creation, other important characteristics of the OSS software is it’s social inclusiveness. By interacting with international communities of programmers and users, mainly trough the Internet, OSS brings a level of collaboration that could enrich the creative process of the EA community. OSS software allows EA composers to interact directly with the programmers and users of such software, creating a direct flow that goes from the artist’s creative process and needs to the programmer and then back to the artist and members of the community. This brings a feeling of social inclusiveness and connection that PS doesn’t frequently attain.
In order to fully realize the potential of OSS as a tool for EA creation, the composer will ideally possess a medium-to-advanced knowledge of computer programming. This knowledge is beneficial independently of the type of software the artist chooses to use. By using OSS many users have realized that proprietary software has been making the user rely heavily on graphical user interfaces (GUI) designed with oversimplification in mind and targeted mainly at home or office users, this being the main market of the PS companies (this is particularly noticeable in the operating systems). Users begin to think that there is no reason why a computer experience should include “outdated” things like coding, configuration text files or command line terminals, because of the overemphasis on visual “eye-candy” and GUI simplification in the marketing strategies of the PS producers.
In my personal opinion, a combination of Open Source Software, digital signal processing theory and computer programming knowledge would give the EA composer or sound artist an excellent framework for developing personal creativity while at the same time benefiting their community of fellow creators.
The Open Source Operating Systems which at the present moment provide an excellent platform for music and audio creation, are the ones based on the Linux Kernel. These come in the form of what is called a distribution (2), which are collections of OSS software (with many of the core system components based on the GNU OSS project (3)) put together in different ways and with different goals and intentions. Over the last decade, and particularly within the last five years, the development of GNU/Linux distributions designed specifically for music and audio creation has been growing. Such distributions include complete pre-configured systems that include an operating system and audio/music production software. All of this almost always totally free of charge and with a growing community of users and developers that provide support and contribute improvements or creation of new software.
At the DistroWatch website there is an up-to-date list and review of all the existing Linux distributions including those not specific to audio and music. For specific information about OSS audio and music software for GNU/Linux, the websites www.linux-sound.org and apps.linuxaudio.org, without being completely exhaustive, provide an extensive list of what is available.
4. Personal Practices
In this section I will demonstrate how Open Source software can be used for EA music composition. I will explain how I use Audacity (well known Open Source audio editor), Ardour (multitrack audio recorder/editor), Csound and Blue (Csound environment) in conjunction with JACK (audio server), on a Fedora Linux system with Planet CCRMA applications and kernel. A brief description of each of these software pieces follows:
Ardour: As stated on the official website:
Ardour is a digital audio workstation. You can use it to record, edit and mix multi-track audio. You can produce your own CDs, mix video soundtracks, or just experiment with new ideas about music and sound.
Ardour capabilities include: multichannel recording, non-destructive editing with unlimited undo/redo, full automation support, a powerful mixer, unlimited tracks/busses/plugins, timecode synchronization, and hardware control from surfaces like the Mackie Control Universal. If you've been looking for a tool similar to ProTools, Nuendo, Pyramix, or Sequoia, you might have found it.
Csound: This sound processing and synthesis tool is very well known for electroacoustic music creation and also happens to be Open Source. For those not familiar with it, here is a definition from the official Csound website:
Csound is a programming language designed and optimized for sound rendering and signal processing. The language consists of over 1300 opcodes — the operational codes that the sound designer uses to build “instruments” or patches. Although there are an increasing number of graphical “front-ends” for the language, you typically design and modify your patches using a word processor.
Blue: Functions as a Csound graphical environment or front-end. Programmed in Java, mainly by Steven Yi. Quoting from the blue website:
blue is a java program for use with Csound. Its interface is much like a digital multitrack, but differs in that there time-lines within timelines (polyObjects). This allows for a compositional organization in time that seems to me to be very intuitive, informative, and flexible.
It also has seen the recent addition of a mixer with the possibility of effects inserts programmed in Csound.
JACK: Again quoting from the official website:
JACK is a low-latency audio server, written for POSIX-conformant operating systems such as GNU/Linux and Apple’s OS X. It can connect a number of different applications to an audio device, as well as allowing them to share audio between themselves. Its clients can run in their own processes (i.e as normal applications), or can they can run within the JACK server (i.e. as a “plugin”).
JACK was designed from the ground up for professional audio work, and its design focuses on two key areas: synchronous execution of all clients, and low latency operation.
Besides being able to stream audio with low latencies, another great feature of JACK is the possibility of routing MIDI and audio between different applications. This can be very easily done using QjackCtl, a GUI front end for JACK (Fig. 1).
In composing What is it?, I developed a realtime, phase vocoder analysis/transformation/synthesis instrument using Csound, including a graphic interface (Figs. 2 and 3) and the possibility of controlling parameters using a MIDI controller. The instrument consists of a collection of chained processes that include almost all of the PVS Csound opcodes (4). In this instrument there are three simultaneous streaming sources of sound: two PVOC-EX analysis files (identified in the GUI as A and B) and one stereo audio file (identified, for personal convenience, as soundscape). The PVOC-EX files I used are standard fixed-overlap frequency/amplitude analysis files, produced by Csound’s external utility pvanal (5). The source material for all of them, in this particular piece, came from semi-binaural soundscape recordings.
The playback section of the instrument functions as follows: the two PVOC-EX files are triggered by a MIDI keyboard and will continue streaming for as long as the key is held. The point in time where the analysis file is started depends on the point in time where the audio file is. This audio file can be started and stopped by using two buttons in the GUI and it will play in a loop at normal speed . If the sound file is stopped, the PVOC files will start streaming from the beginning. The sound file being played can be chosen from four predefined options accessible through the numbered buttons in the soundscape control section of the GUI (Fig. 3).
The speed at which the two PVOC files are streamed is set by two independent sliders in the GUI labeled speed. This allows for time stretch, compression, and change of direction. The position can also be enveloped by using the two sets of sliders labeled time path A and time path B. These sliders can be understood as if they were interpolated points in a breakpoint graphic where the Y-axis represents the position in the analysis file, and the X-axis the total duration of the file (after being scaled by the speed parameter). The position envelope is re-triggered at each key press.
After the playback stage, the two PVOC streams pass through a series of seven transformations:
- Over-ridable pitch shifting according to the MIDI note pressed and a user defined scale, using three different modes of formant processing (selectable through the GUI);
- Variable gain;
- Variable levels of frequency masking (filtering). The levels are set by a group of 50 sliders (available in the section accessible by clicking the Mask2 tab) representing the total frequency spectrum divided in 50 bands;
- Pitch modulation with variable depth and frequency;
- Variable smoothing (analysis channels frequency/amplitude averaging);
- Frequency and/or amplitude freezing;
- Variable cross-synthesis between both by applying the amplitudes of A to the frequencies of B.
The cross-synthesis can also be enveloped using the set of sliders named cross AB envel where the Y-axis represents the PVOC stream A at the top and the stream B at the bottom, and the X-axis represent the total duration of the envelope. The duration is determined by the speed knob on the right. The envelope is also triggered with each key press and will sustain on the setting of the last slider if the note is sustained longer than the total duration. Any point in between A and B is a different level of cross-synthesis between the two streams.
After this chain of PVS processes, the resulting single PVOC stream (product of the cross-synthesis) is re-synthesized into an audio stream and then passed through a convolution processor, reverberation and a granular shuffler processor (Fig. 3). This last one receives a stereo input and puts it into a delay line max delay in size. Then it takes grains grain size size from random time positions in the delay line, from both channels, and with a grain envelope determined by the envelope slider. The grains are spaced randomly using the value in gap as the maximum gap size (the general behavior of the shuffler is similar to the GRM Tools Shuffling plug-in). The convolution section in the GUI allows to choose, in real-time, between five different impulse response files and also allows the user to set the level of convolution. The reverb can be adjusted in its feedback amount, cut-off frequency, level of random delay variation and the dry/wet mix.
The final output of the instrument consists of the wave stream (soundscape) and the transformed and re-synthesized PVOC stream. The level of both can be independently set by a pair of sliders labeled soundscape level and main synth level. All the settings in the GUI can be saved and recalled using the numbered buttons under the load and store labels.
The source material of the piece was first edited (basic trimming) using Audacity. Then the final material generated by real-time manipulations using the Csound instrument. The output from Csound was recorded and layered in different tracks inside Ardour by connecting both using the JACK server and QjackCtl graphic interface. After this stage, the material was mixed, rearranged and combined with other unprocessed soundscapes inside the same multitrack environment. The resulting stereo piece was also remixed for 8 channel diffusion.
It is true that the development of the Open Source software for music and audio production is still in its initial phase and the user will require some time/expertise to be able to fully unveil its power. Nevertheless very accessible tools are already available that can help the composer move from the limitations of Proprietary Software to a medium where not only does individual creativity become freer but one also contributes to the creative freedom of the wider community. It is also true that to attain this creative freedom something else beyond software is required, and that is the composer/sound artist’s cultivation of a good level of DSP theory, computer programming and a disciplined practice. In our present time, where excessive commercialization of “instant gratification experiences” prevails, the value of a long term, lifetime, deep cultivation of an art has to be recovered in order to not allow the art to die into the “presets” of mass consumerism… but that is a subject for a longer discussion.
- What is it? can be heard on the composer’s personal website at http://ea.hcenteno.net/listen.html
- An explanation of a Linux distribution can be found at: http://www.linux.org/dist.
- More on the Linux and the GNU project is available at http://www.gnu.org/gnu/linux-and-gnu.html.
- Csound manual page on PVS opcodes: http://www.csounds.com/manual/html/SpectralRealTime.html.
- Csound manual page on pvanal: http://www.csounds.com/manual/html/pvanal.html.