Page  00000127 Amber: A Granular Sampling Application for Mac OS X Jennifer Bernard, Matthew McCabe, and Kenneth Hoffmann College-Conservatory of Music, University of Cincinnati - Music Department, University of Florida-Gainesville - Waveform Software Design - Abstract Amber is an easy-to-use, multi-faceted granular sampling tool for composers wishing to construct timbrally complex sounds. This application creates opportunities for rich, musically interesting sounds by implementing several features unavailable in other granular sampling software. More specifically, Amber allows for a variety of grain generation techniques involving multiple source sound files, and the ability to change the envelope of the grains over the course of the output sound. Originally developed as a command-line tool for Linux-similar operating systems, Amber is now available with a wrapper in Cocoa that runs natively on Macintosh OS X systems. 1 Introduction Granular sampling and synthesis techniques provide a colorful palate of possibilities for composers and sound artists. While many implementation approaches exist in this type of software, there remain few available open-source granular applications. One initial impetus for designing Amber was to fill part of that void. It is intended to be a straightforward tool to allow the composer maximum control over the resulting sounds, while still including a wide variety of techniques and parameters. Jennifer Bernard and Matthew McCabe, both composers, first developed Amber as a command-line tool coded in C++, which took in a parameter list through command-line flags or a text file. This version has been shown to run on several operating systems, including Linux, FreeBSD, IRIX, and Mac OS X, and is intended to run on any platform capable of compiling Erik de Castro Lopo's libsndfile library'. In 2005, Kenneth Hoffmann designed a wrapper in Cocoa so that the software could be run easily on Macintosh OS X.2 SThis version is downloadable from the Sourceforge project page at 2 This version can be downloaded from Kenneth Hoffmann's site at 2 Background The concept of granular synthesis was first inspired by the work of Hungarian physicist Dennis Gabor, who described sound in terms of "acoustical quanta" (1947). lannis Xenakis, in his book Formalized Music, applied Gabor's theories to his own stochastic music theory, calling these sonic quanta "grains" and assigning them properties: duration, frequency, and intensity (1971). He pointed to the musical power of harnessing grains of sound, because of their ability to parallel such compelling natural phenomena as waterfalls and crowds of individuals. By this analogy, small, simple components can be combined to create complexities that are otherwise untenable. The sonic material of a grain may be as simple as a sine wave, or as complex as a segment of a sound file. In the latter case, the technique is referred to as granular sampling, since there is no synthesis involved. Several software packages have explored the technique of granular sampling, such as Curtis Roads and John Alexander's Cloud Generator (1996) and Mara Helmuth's StochGran (2002). In general, these programs allow the composer to specify parameters that control the length of the grains, their frequency (if they are synthesized), the density (or overlap) of the grains, and their envelopes. While the above packages are not capable of functioning in real-time, Barry Truax (1993) and Cort Lippe (1994), among others, have worked with real-time granular sampling. Truax's work involves granulation as a method for pitch-consistent time compression and expansion, achieving these effects through slicing the sound into grains and contracting their time scale or repeating them. More recently, Nathan Wolek has developed a Granular Toolkit for real-time use in Max/MSP (2002). Curtis Roads describes granular sampling as a technique that "feeds acoustic material into a kind of logical thrashing machine -delivering grains in a new ordering with a new microrhythm" (1996). In all cases, a unifying algorithm is present, which is responsible for deciding the individual parameters of each small grain and processing hundreds or thousands per second. Roads and Alexander took a more controlled approach, allowing the user to enter only initial and final values for a linear progression of parameters, 127

Page  00000128 while Helmuth uses stochastic processes and probability distributions to determine the parameters of the grains. 2 Overview of Amber's Approach In 1994, Cort Lippe described a detailed model of granular sampling in which the content, envelope and size of the grain, as well as the density of the outgoing stream, were all compositional variables. Eduardo Reck Miranda and John Matthias also identified a particular challenge to the technique of granular sampling: to find new, interesting, and controllable ways to play back the grains of the input sound file (2005). Their solution was to drive a granular sampler with the firing of pulse-coupled artificial neurons. Amber allows for the controlling of all of the above variables over the course of the output sound file. Because it does not run in real time, Amber has greater flexibility in the manipulation of the collected input sound files before granulation, allowing for a richer palette from which to draw samples. Many of Amber's input manipulation techniques were inspired by Cloud Generator, and the authors' desire for greater flexibility in the control of grain size, density, and envelope parameters. This greater degree of control allows a composer to enter the desired parameters based on the general characteristics of the sound he or she desires. This approach contrasts with software packages that use stochastic techniques for writing grains, such as StochGran. In this way, Amber complements existing programs, enabling the composer to create sounds with more musical flexibility in contrast to Cloud Generator's all-linear progressions, and to create more sustained granular textures in contrast to StochGran's more quicklytransforming timbres. For example, Helmuth used sounds from both Amber and StochGran in her recent piece Primary Materials (2005). 3 Amber's Granular Techniques Amber accepts parameters for sample content, envelope, grain size, and grain density. The user may specify the desired length of the output file, and the window size from which to draw samples as a percentage of the file (100 indicates grains chosen completely randomly, while 1 indicates an output sound whose grains move in a deterministic progression from the beginning to the end of the input file(s)). A wide array of output file bit-depths is also available (currently 16, 24, and 32 using libsndfile's capabilities). In the graphical application, all numeric parameters are controllable via number boxes, sliders and graphs (see Section 4). The user may also choose to scale (normalize) the output to avoid clipping or to increase the gain with no additional processing. For an overview of Amber's logic, see Figure 1. iedi. oi ngýC11 so-lund datua. *lset ul nv pe. e n. *Set Iup ouPtpIu -t bft.................................................t.................A......... soun-d dat-a. ~_ _~ ~ V preproCcSS if nc. vces tr t (inix, ae l oin.~fvom at intC 11<"-r selectap ):I ra n eni ~pe add to rr peatd. Figure 1. An overview of Amber's process. The user may also specify the method of grain generation and whether to use "envelope morphing" over the course of the output. Since these are two of Amber's key features, they are discussed in more detail below. 3.1 Grain Generation Methods Other implementations of granular sampling most commonly use one input file as a data source. Amber allows for unlimited input sounds simultaneously, dependent only on the method of grain generation used. By combining diverse sound sources in different ways, the composer has access to a wide variety of possible output sounds. Standard Grain Generation. Standard grain generation is the simplest generation method in Amber and is the one most similar to currently existing tools. It takes one sound file as input, and draws samples from that file according to the other parameters specified. Some of the more complex grain generation methods pre-process several input files, which are then granulated with Standard Grain Generation. 128

Page  00000129 Alternating Grain Generation. This method alternates its grain selection using a round-robin procedure on all of the specified input files. Depending on the parameters, this alternation could be audible, or it could contribute to a new hybrid timbre. Mixing Grain Generation does as the name implies: before selecting grains, Amber mixes all input files together into a single source, and applies Standard Grain Generation to that sound. This technique is audible in McCabe's recent work Prison Songs (2006). Convolution Grain Generation. This method convolves exactly two input files together, and uses the result as the sample source for Standard Grain Generation. This technique was used extensively in Bernard's recent composition Euphantasy (2005). 3.2 Grain Envelopes Most granular synthesizers and samplers permit the user to specify a single grain envelope. Amber improves upon this by allowing for the transformation from one envelope type to another over the course of the output sound. There are nine available envelopes: Gaussian, triangle, square, plateau, simple attack, sine curve, reverse attack, hexagon, and M-shaped. The user may choose to keep one envelope for the entire output sound, or may choose to "morph" from one available envelope to another (Figure 2). Figure 2. Envelopes morphing from "square" to "simple Fading Grain Generation creates a sample source that Figure 2. Envelopes morphing from "square" to "simple attack" in Amber. fades from one input file to another, using the resulting data as a source for Standard Grain Generation. Coupled with other transforming parameters, this method presents the possibility of a sound that truly evolves over time. 129

Page  00000130 4 Amber's Interface The most recent work on Amber has been the development of a graphical user interface written in Cocoa that runs natively in Mac OS X. This version, Amber-X, may be downloaded from The screen shot above shows the visual controls currently implemented (Figure 3). As a wrapper for the command-line version of Amber, Amber-X offers a more intuitive way of entering the granulator's parameters. An Input File window enables the user to manage his or her list of input files, and the Choose Output File button opens a file browser. The large white window to the bottom right of the controls allows the user to see the verbose output of the command-line version that is called upon pressing Run Amber. The progress of the granulation appears both textually in the window and graphically in a task bar below the window. 4.1 Graphical Control of Parameters The user has basic linear control (initial value and final value) of the grain size and grain density parameters using the number boxes and sliders on the main window. A higher degree of control over the evolution of grain size and grain density is also available through graphical control over these parameters (see Figure 3). Graphs may be linear, exponential, or logarithmic. In addition, the user can specify the amount of breakpoints desired and the resolution of the graph. leaving the program. This allows the user to eliminate extra steps caused by sifting through large amounts of files for a diamond in the rough. 5 Future Directions Amber is a work in progress. At this point, most of the features slated for future implementation are refinements of the user interface. The authors are continuing to refine the graphical tool for grain size and grain density. They also hope to streamline the interface for greater comprehensibility and ease of use. As it stands, however, Amber is already a powerful tool with which to make timbrally-rich granular gestures that draw from a combination of sound sources and develop musically over time. References Gabor, Dennis, 1947. Acoustical Quanta and the Theory of Hearing. Nature 159(4044), 591-94. Helmuth, Mara, 2002. StochGran on OSX. In Proceedings of the International Computer Music Conference. San Francisco: International Computer Music Association. Lippe, Cort, 1994. Real-Time Granular Sampling Using the IRCAM Signal Processing Workstation. Contemporary Music Review 10(2), 149-55. Miranda, Eduardo Reck, and John Matthias, 2005. Granular Sampling Using a Pulse-Coupled Network of Spiking Neurons. In F. Rothlauf et al. (Eds.) EvoWorkshops 2005, Lecture Notes in Computer Science 3449, pp. 539-44. Berlin: SpringerVerlag. Roads, Curtis, 1996. The Computer Music Tutorial. Cambridge, Massachusetts: MIT Press. Truax, Barry, 1993. Time-shifting and transposition of sampled sound with a real-time granulation technique. In Proceedings of the International Computer Music Conference, pp. 82-5. San Francisco: International Computer Music Association. Wolek, Nathan, 2002. A Granular Toolkit for Cycling74's Max/MSP. Presented at the SEAMUS 2002 Conference at the University of Iowa. Xenakis, Iannis, 1971. Formalized Music. Bloomington: Indiana University Press. Figure 4. Grain Size graphical control window. 4.2 Preview Sound Files The Preview Sound button will cause another window to appear below Amber's main window, allowing the user to hear the sound that has just been created. If it is not a desirable sound, it may be deleted on the spot without 130