curvePainter: A New Compositional ToolSkip other details (including permanent urls, DOI, citation information)
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 3.0 License. Please contact email@example.com to use this work in a way not covered by the license. :
For more information, read Michigan Publishing's access and usage policy.
Page 00000001 CURVEPAINTER: A NEW COMPOSITIONAL TOOL Colby N. Leider Department of Music, Princeton University Princeton NJ 08544 http://music.princeton.edu/~colby firstname.lastname@example.org ABSTRACT A new compositional tool for drawing control curves and function tables for software synthesis languages is described. The program, curvePainter, allows users to graphically create and modify curves using a variety of techniques. Furthermore, the program can generate curves from spectral features of sound files for use with other compositional programs. BACKGROUND With the advent of software synthesis languages came the notion of control functions or control curves-a paradigm that enabled composing within a continuum. Xenakis' seminal book Formalized Music (1971) and other writings (e.g., 1986), the UPIC system (1977), the work of Estrada (e.g., Estrada 1994) and the gen functions of Music-Nstyle languages all illustrate applications of composing with control curves in a continuous space. Furthermore, recent programs like Cecelia (Piche and Burton 1998), CurveControl (Bencina 1995), and StochGran (Helmuth 1998) supplement the notion of graphical generation of control functions with robust interfaces to a target software synthesis environment. MOTIVATION AND OVERVIEW Although most software synthesis languages provide facilities for generating control functions-some of them graphically-many do not offer a robust means of generating, editing, and graphically viewing multiple control curves simultaneously for arbitrary parameters. curvePainter is a new graphical compositional tool that generates control functions and score files for use with software synthesis languages. curvePainter is not bound to any particular synthesis language, synthesis method, instrument, or platform. The program does not produce sound itself; rather, it creates files of numbers for use in environments like SuperCollider, Max/MSP, cmix, OpenMusic, and Csound. It allows the user to create and view up to twenty-four independent vectors of floating-point numbers ("curves") using a variety of techniques. Additionally, curves may be extracted from various characteristics of sound files, such as the spectral centroid, pitch, amplitude envelope, and spectral peaks. Graphical interfaces to the legacy gen functions are also provided. Many processing functions are supplied for shaping individual curves, including filters, a compander, and a phase shifter. Furthermore, individual curves may be used to warp the shape of other curves. For example, one curve may "morph" into another to create a third curve, or several curves may be averaged over time to create another curve. Because the program makes no assumptions about the target environment, files generated with curvePainter can be used to control any parameter in any kind of synthesis model. Curves might be used to control the time-varying amplitudes of harmonics in an additive synthesis instrument; the density, duration, and frequency of grains in a granular synthesis instrument; the trajectories of point sources in a spatialization instrument; or the breath pressure, embouchure, pitch, and vibrato of a flute physical model. The curves may also of course be used to create deterministic or stochastic score files. Figure 1 illustrates the main window of curvePainter. The program draws each of up to 24 curves in separate colors.
Page 00000002 File Edit DSP Generate Transform Graph Hlp When a user opens a sound file, a spectrogram S immediately appears, along with a time-domain representation. The user then may select an operation to perform from the DSP menu that will extract a particular feature as a curve. Once the spectral feature has been turned into a curve, it may be modified and used just as any other curve. Figure 1: The curvePainter main window. THE GENERATE MENU Users may begin generating curves using the basic tools provided under the Generate menu. The primary curve generation techniques currently available are Gaussian, Impulse, Ramp, Random, Sinc, Sinusoid, Square, Triangle, Average, Arbitrary Function, and FM. When the user selects one of these from the Generate menu, a window of options is immediately presented. Most of the functions simply require data such as frequency, amplitude, phase, etc., to generate a new curve, as required by that particular function. The Average method, however, is unique in that other curves must be currently active. It simply creates a curve whose values represent the arithmetic mean of the curves selected to average. Also, users may enter a mathematical formula in two dimensions to generate a curve by selecting Arbitrary Function. The curves generated using these techniques are by nature often quite simple. They serve as source material to create more complex curves via warping and modification in the transform menu. THE TRANSFORM MENU Once basic curves have been created, they may be modified using various techniques. The Transform menu, shown in Figure 2, allows users to directly operate on previously drawn curves. THE DSP MENU curvePainter can extract curves from spectral features of sound files, such as the spectral centroid, pitch, amplitude envelope (derived from the frameby-frame power spectral density), and spectral peaks. Figure 2: The Transform menu. THE GRAPH MENU The Graph menu features controls for the physical appearance of the curves. The user may toggle a grid overlay and choose between logarithmic and linear axes. Controls are also provided for choosing the colors of the graph. THE FILE MENU The File menu allows users to save sets of curves for future modification. The Export function presents the user with various options for creating ASCII text files of floating-point numbers derived from the curves. Controls over the layout of the text file and the sampling frequency of the curves are also available. FUTURE WORK curvePainter was developed in Tcl/Tk and C and uses Kaire Sjolander's Snack sound extension and the Tcl/Tk BLT extension. It runs under Linux and
Page 00000003 can also run under Irix and Windows 98/NT. A version for MacOS X is planned. Future work on the program might include a World Wide Web-based version. A freehand drawing tool should be added to allow users to intuitively create arbitrarily shaped curves. Currently, users are bound to the built-in curve generation and transformation techniques, although it would be fairly straightforward to write plug-ins that provide new functionality. The program currently provides a "Show Statistics" feature, available under the Edit menu, that calculates the average deviation, skew, kurtosis, maximum value, minimum value, mean, median, standard deviation, and variance of the selected curve. The window is shown in Figure 3 below. WORKS CITED Bencina, R. 1995. Curve Control. Available online at http://www.audiomulch.com/~rossb/. Estrada, J. 1994. "Le continuum en musique: Structure et ouvertures en composition, ses derivations esthetiques." In Asthetik und Komposition. Zur Aktualitat der Darmstadter Ferienkursarbeit. Mainz, Germany: Schott, 50-65. Helmuth, M. 1998. "StochGran on Silicon Graphics IRIX." In Proceedings of the 1998 International Computer Music Conference. San Francisco: International Computer Music Association, 467-470. Piche, J., and A. Burton. 1998. "Cecilia: A production interface to Csound." Computer Music Journal 22(2):52-55. Sjolander, K. The Snack Home Page. http://www.speech.kth.se/snack/. Xenakis, I. 1971. Formalized Music. Bloomington, IN: Indiana University Press. Xenakis, I. 1986. "Arhitektura, informatika, originalnost / L'architecture, l'informatique, l'originalite." In Skladateljske sinteze osamdesetih. Zagreb: Muzicki Biennale; Muzicki Informativni Centar KDZ, 85-90, 201-06. Figure 3: The Statistics window. A helpful feature of the program would be the ability to warp curves so that they exhibit specified statistical values. For example, the user might want to increase the standard deviation of a curve's values over time. Although there is of course no single method of uniquely changing a curve's statistics, selected options might be computed and displayed.