This action might not be possible to undo. Are you sure you want to continue?
Mikael Laurson Sibelius Academy CMT Mika Kuuskankare Sibelius Academy DocMus
ABSTRACT Viuhka is a compositional tool situated in PWGL. The system has been recently adapted in order to enhance our notation package. This paper contains a new notational short-hand, called macro-note, that can be used to realize short musical segments that have their lifespan within a macro-note. The system allows to generate various ornaments in the traditional sense, such as tremolos, trills, and arpeggios. More complex textures are possible using overlapping and recursive macro-note definitions. 1. INTRODUCTION
about the current instrument and how it should react to various playing techniques; and so on. The idea of macro-notes is based on a compositional environment called Viuhka . Viuhka (Finnish, in English ‘Fan’, in French ‘Éventail’) is a PWGL  user-library designed for and based on ideas by Paavo Heininen (a well known Finnish composer, currently the emeritus composition professor at Sibelius Academy). PWGL, in turn, is a visual programming environment with a strong emphasis on computer assisted composition. Viuhka has mainly been used for compositional work. One example is a composition by Professor Paavo Heininen, called “The Blue Exposure”, a 15-part piece for computer generated tape, premiered at the Musica nova festival in 2002, that was realized using Viuhka and PWCollider . This paper is organized as follows. First we give a brief overview of the underlying Viuhka system which is used to generate the final musical textures. After this we explain the macro-note definition protocol and how it is interfaced with ENP and PWGL. The final section consists of several case studies which aim to demonstrate the system in practice. 2. VIUHKA
Our research group has used music notation for sound synthesis control for several years. Our main focus has been in the control of instrument models [1, 2, 3]. For this purpose our notation software, called Expressive Notation Package or ENP , has many extra additions and tools that are not typically found in notation programs such as score-BPFs, specialized note property editors and tempo functions . One of the main challenges in using music notation as a starting point for synthesis control is to modify the basic musical information provided by the score, such as pitch information and rhythm, so that the system is able to produce convincing results in a musical context. In this paper we present a new concept, called macronote, that allows to use notational short-hands which are translated by the control system to short musical textures. Obviously, similar kind of notational shorthands have been used already in musical scores for centuries. For instance, tremolo-, trill- and arpeggiomarkings are convenient as they allow to produce more economic scores. Performers, who are accustomed to a given musical style, are given more freedom for their interpretation. For instance during the baroque period the performer was expected to improvise various embellishments and ornaments, occasionally even if the score had no expression markings. The use of notational short-hands when dealing with sound synthesis control is interesting partly due to same reasons. To realize an ornament—say a baroque trill in a dance movement— just by using metrical notation without any abstraction mechanism can be an awkward and frustrating experience. What is worse, the result is typically ruined if the user changes the tempo. Thus, in order to capture the free–flowing accelerandi/ritardandi gestures typically associated with these kinds of ornaments we need better abstraction mechanisms: the system should respond gracefully to tempo changes or to changes in note duration; the system should know about the current musical context such as dynamics, harmony, number of notes in a chord; the system should have knowledge
Viuhka is used to create complex, multi-layered musical textures. These can be used to produce scores for instrumental music and to provide material for sound synthesis. The end result of a Viuhka patch can either be displayed in a PWGL 2D-editor or in a PWGL scoreeditor. The starting point is a group of break-point functions (Viuhka bpfs) that constitute the pitch field (harmonic skeleton) of the result. Viuhka bpfs provide the main pitch material which can further be elaborated by different sorts of Viuhka ornaments. Besides “typical” ornaments (like grace notes, trills, etc.), the Viuhka ornaments can also be runs, repetitions, chords, clusters, clouds or even complete Viuhka patches (i.e. a Viuhka patch can contain other Viuhka patches). The user typically divides a Viuhka patch into musical time slices or segments. The duration of the segments are given as a list of delta-times (or time intervals). The structure of each segment (i.e. number of layers, rhythmic structure, time modification, ornaments and synthesis information) is normally given inside a PWGL abstraction. where the user defines the Viuhka parameter values. The output of the main Viuhka box is the final score. In the following, when discussing the macro-notes, we concentrate only to a subset of concepts provided by Viuhka (for a more complete discussion see ).
Perhaps the most obvious difference between Viuhka and our new macro-note scheme is that in the latter one we produce musical textures that typically last only a few seconds, whereas Viuhka has been used to produce pieces lasting several minutes. Another important difference is that when working with macro-notes the system must access musical information from the current macro-note such as pitch, dynamics and duration. 3. MACRO-NOTE DEFINITION
other ‘mk-macro-note’ boxes as input. The result of an incoming texture is merged with the result of the current macro-note texture. The third row affects the global timing, duration and length of the resulting sequence. It contains the input ‘offsets’ which allows to define a time delay before the resulting texture begins. If this parameter is a list of offsets, the ‘mk-macro-note’ box generates a delayed texture for each offset. This allows to create complex, densely overlapping textures using only a single macronote definition (Figure 5 gives such an example). ‘dursc’ allows to scale the duration of the resulting texture relative to the duration of the macro-note. ‘lenfunction’ can be given to constrain the length of the resulting sequence. This parameter guarantees that the result length (i.e. number of notes) will fulfil a userdefinable pattern. Typically this parameter is used in conjunction with ornaments that must always end with a certain note (see for instance Figure 3). If ‘lenfunction’ is () then notes are simply generated until the duration of the sequence exceeds the duration of the macro-note. The rest of the inputs from ‘pitch’ onwards (rows 4-7) are quite close to the ones found in the Viuhka system. These refer mostly to ‘ordinary’ note parameters, such as pitch, timing, dynamics, articulation, etc. Row 4 deals with pitch: ‘pitch’ input is used to build the pitch field consisting of break-point functions. ‘indexes’ defines indexes that are used to read these break-point functions. Thus an index equal to 1 refers to the first break-point function, 2 to the second one, and so on. Row 5 handles the timing of the notes: ‘dtimes’ is a list of delta-times between successive notes and ‘tmodif’ is used to define tempo modifications with the help of tempo functions. In the next row ‘ornaments’ allows to define the note-types of the notes (‘n’ stands for a normal note). Finally, in row 7 ‘amp’ is a list of MIDI velocity values and ‘artic’ is a list of articulation values given in percentage. Most of the ordinary note inputs discussed above accept arguments as circ-lists . Circ-lists are like ordinary Lisp lists except that the items are read in a circular fashion (i.e. after reading the last item, the next item is accessed from the beginning of the list). A circ-list can contain: (1) a single item (number, symbol, break-point function, etc.); (2) lists of items; or (3) special forms that are evaluated when they are being read. Thus an argument ‘60’, a short-hand for ‘(60)’, will result in (60 60 60 …), ‘(1 2 3)’ will result in (1 2 3 1 2 3 1 2 ….), ‘(1 3* 2)’—this a special form where 2 is repeated 3 times— will return (1 2 2 2 1 2 2 2 1 2…). The inputs can contain reserved symbols that refer to the possible state of the current macro-note or the current chord owning the macro-note, such as: ‘midi’ (the current pitch-value of the macro-note); ‘aux-midi’ (the pitch-value of an optional auxiliary note belonging to a trill or a glissando expression), ‘midis’ (a list of pitchvalues of all notes belonging to the current chord); ‘string’ (the string number of the macro-note), and so on. Some state symbols have meaningful values only
Next we discuss how to define macro-notes in PWGL. These definitions can be quite general so a single macronote definition can often be used in many musical contexts. After the user has defined a macro-note having a unique name, it can be used in our notation program by attaching an expression—containing the name string of the macro-note—to a note. When the score is calculated, any macro-note encountered in the score will trigger the appropriate macro-note definition which results in a sequence of note events. Several examples of macro-note definitions will be discussed in Section 4. A macro-note is defined visually using a specialized box, called ‘mk-macro-note’, containing 14 required inputs (Figure 1). The first 7 inputs are shown in a light-grey colour and they are organized in 3 rows. These inputs define some general parameters which affect the box and its behaviour in general. The last 7 inputs—grouped in 4 rows—are shown in dark-grey colour and they affect each individual note in the resulting sequence. The number of inputs can vary depending on the first menu-box input, ‘class’ (row 1). This input defines the instrument class for which the macro-note should be specialized for. The ‘class’ input should belong to the ENP instrument class hierarchy . Figure 1 shows a ‘mk-macro-note’ box that is specialized for the abstract ‘instrument’ class. ‘instrument’ is the root class of the ENP instrument class hierarchy and it has direct subclasses such as ‘aerophones’, ‘strings’, ‘keyboard’ and ‘percussion’. The ‘strings’ class has in turn two subclasses: ‘plucked-strings’ and ‘bowed-strings’. By changing the class definition the user can change the behaviour and the input scheme of the box. For instance Figure 3 (given in the next section) shows a ‘mk-macronote’ box where the user has changed the ‘class’ input to ‘plucked-strings’. This operation can change the number of inputs depending on the ‘class’ input. Our system contains a database that allows to define extra inputs for specific instrument classes. In our example the ‘pluckedstrings’ has optional inputs for ‘string’, ‘slur?’ and ‘pluckpos’. These parameters can be used to define instrument specific behaviour for macro-note definitions. In row 2 the next two inputs ‘name’ and ‘remove’ inputs define the name of the macro-note and whether original score notes belonging to the chord of the macro-note should be removed from the final result or not. The third input in row 2, ‘macro-notes’, allows a kind of ‘recursive’ macro-note definition as it accepts
when used in a correct context. For instance, ‘string’ can have a value only when dealing with string instruments.
Figure 1. A ‘mk-macro-note’ box specialized for the ‘instrument’ class with default values (to the left) and documentation strings (to the right).
note’ box in Figure 3 contains also two optional arguments, which allow to define fingering patterns for plucked-string instruments. Here both notes in the pattern will share the string number of the macro-note, ‘(list string)’. (Note that the score is automatically fingered by the system before the macro-note calculation.) The ‘slur?’ parameter states that only the first note will be plucked while the rest will utilize a left-hand slurring technique (i.e. the input ‘(nil 20* t)’ results in a circ-list that starts with a ‘nil’ followed by 20 ‘t’s—‘t’ stands for ‘true’).
In this section we present some case studies in order to show how our system can be used to define macronotes. Under each example there is a musical score that contains one or several macro-note realizations. The note sequences generated by the macro-notes are shown in the notation with light-grey note heads without stems. We start with a simple macro-note example specialized for ‘plucked-strings’, called ‘tremolo’ (Figure 2). It generates note repetitions using a tempo function and a amplitude contour (see the respective break-point functions connected to the ‘tmodif’ and ‘amp’ inputs). ‘dursc’ is 0.5 which means that the tremolo texture occupies only half of the duration of the macro-note. Other parameters are defined as follows: ‘pitch’ = ‘midi’, which refers to the pitch-value of the macro-note (the resulting pitch field consists of only one breakpoint function); ‘indexes’ = (1), i.e. we always refer to the first break-point function of the pitch field (this results in a repetition pattern); ‘d-times’ is 0.15s (this value is continuously modified by the ‘tmodif’ parameter); ‘ornaments’ = (n), i.e. we use only ordinary notes in the result; ‘artic’ = 100%, all notes are articulated as full ‘legato’.
Figure 3. A left-hand trill definition for pluckedstring instruments (top) and its use in ENP (bottom). Note that the score gives the auxiliary notes i n parenthesis
Our next example is more complex, and it aims to demonstrate two important features in the system. First, the macro-note can belong to a chord that contains several notes (see Figure 4). This allows to define more interesting pitch fields. Second, the boxes connected to the inputs are always re-evaluated when the macro-note calculation begins. Thus the system is dynamic as each input evaluation may produce different input values. In our case the score contains multi-note chords that provide a rich pitch field which can be referred to by the ‘indexes’ input. The pitch field is constructed using the expression ‘(mapcar ‘list midis midis)’. This translates each pitch-value in the current chord to a break-point function. The ‘indexes’ input is connected to a ‘textbox’. This box contains a Lisp expression that is evaluated each time a new macro-note is calculated. The ‘indexes’ input receives varying index patterns, which manifest themselves in complex arpeggio patterns in the final score. The ‘artic’ parameter is 250% which means that all notes in the result are overlapping.
Figure 2. A macro-note definition to generate tremolos (top) and its use in ENP (bottom).
Our second example is quite similar. Now a trill gesture occupies almost the whole duration of the macro-note (‘dursc’ = 0.9). Instead of generating a plain repetition, we have a pattern that alternates between the ‘midi’ and the ‘aux-midi’ values (see the ‘pitch’ input and the ‘indexes’ input containing ‘(1 2)’). ‘len-function’ checks that the last note of the sequence will always be the ‘main-note’ of the ornament (= ‘midi’). The ‘mk-macro-
The work of Mikael Laurson has been supported by the Academy of Finland (SA 105557). 7. REFERENCES
 Laurson, M., C. Erkut, V. Välimäki, and M. Kuuskankare. “Methods for Modeling Realistic Playing in Acoustic Guitar Synthesis”, Computer Music Journal, 25(3): 38–49, 2001.  Välimäki, V., M. Laurson, and C. Erkut. “Commuted Waveguide Synthesis of the Clavichord”, Computer Music Journal, 27(1): 71-82, 2003.
Figure 4. A complex arpeggio, ‘carp’, definition.
Our final example (Figure 5) is elaborated from the previous one. Here we aim to produce a complex strumming technique that is used by flamenco guitarists, called rasgueado. This technique can be approximated by generating several rapid and complex arpeggios with a small and varying delay between each arpeggio gesture. To achieve this we use the ‘offsets’ input (this input has been = 0 in all previous examples) and connect it to a patch that returns small random deltavalues—in the range 0.05s and 0.12s—that form a dynamic list of offset values.
 Välimäki, V., H. Penttinen, J. Knif, M. Laurson, and C. Erkut. “Sound Synthesis of the Harpsichord Using a Computationally Efficient Physical Model”, EURASIP Journal on Applied Signal Processing, 2004(7): 934948, 2004.  Kuuskankare, M., and M. Laurson. “ENP2.0 A Music Notation Program Implemented in Common Lisp and OpenGL”, Proceedings of the International Computer Music Conference. Gothenburg, Sweden, pp. 463-466, 2002.  Laurson, M., and M. Kuuskankare. “Aspects on Time Modification in Score-based Performance Control”, Proceedings of the 2003 SMAC. Stockholm, Sweden, pp. 545-548, 2003.  Laurson, M. “Viuhka: A Compositional Environment for Musical Textures”, VII Brazilian Symposium on Computer Music, Curitiba, Brasil, 2000.  Laurson, M., and M. Kuuskankare. “PWGL: A Novel Visual Language based on Common Lisp, CLOS and OpenGL”, Proceedings of the International Computer Music Conference. Gothenburg, Sweden, pp. 142–145, 2002.  Laurson, M. “PWCollider: A Visual Composition Tool for Software Synthesis”, Proceedings of the International Computer Music Conference. Beijing, China, pp. 20-23, 1999.  Laurson, M., and M. Kuuskankare. “Instrument Concept in ENP and Sound Synthesis Control”, Proceedings of the 2002 Journées d'Informatique Musicale. Marseille, France, 2002.
Figure 5. A rasgueado technique simulation resulting in a dense, overlapping texture. Each arpeggio pattern is delayed by a small random value.
This paper presents a new tool that allows to generate in a flexible manner small-scale textures within a music notation system. Visual macro-note definitions can be used to realize both conventional ornaments and more experimental textures such as densely overlapping multi-textures. Macro-notes are able to react to tempo changes and changes in macro-note duration. The user can specify the used pitch material directly in the score. The inputs are evaluated dynamically in order to get varied and lively results.