Вы находитесь на странице: 1из 6

[15] B. R. Knapp and H. S. Lusted, A bioelectric con- [31] R.

Rowe, Interactive music systems: machine listen-


troller for computer music applications, Computer ing and composing. Cambridge, MA, USA: MIT
Music Journal, vol. 14, no. 1, pp. 4247, 1990. Press, 1993.
BACH: AN ENVIRONMENT FOR COMPUTER-AIDED COMPOSITION
IN MAX
[16] S. Koelsch and W. Siebel, Towards a neural basis [32] S. Russell and P. Norvig, Artificial intelligence: a
of music perception, Trends in Cognitive Sciences, modern approach. Prentice hall, 2009.
vol. 9, no. 12, pp. 578584, 2005. Andrea Agostini Daniele Ghisi
[33] W. Schultz, P. Dayan, and P. Montague, A neu-
[17] C. Krumhansl, An exploratory study of musical ral substrate of prediction and reward, Science, vol. Freelance composer Composer - Casa de Velazquez
emotions and psychophysiology, Canadian journal 275, no. 5306, p. 1593, 1997.
of experimental psychology, vol. 51, no. 4, pp. 336
[34] H. Simon, The science of the artificial, Cam- ABSTRACT environments include tools for sound synthesis and trans-
353, 1997.
bridge, USA, MA, 1981. formation. It should though be remarked that Max and
[18] , Rhythm and pitch in music cognition, Psy- [35] B. Snyder, Music and memory: an introduction. Environments for computer-aided composition (CAC for PureData have very crude native support for sequencing,
chological Bulletin, vol. 126, no. 1, pp. 159179, The MIT Press, 2000. short), allowing generation and transformation of sym- and essentially none for symbolic musical notation.
2000. bolic musical data, are usually counterposed to real-time Another, orthogonal distinction should be made be-
[36] R. S. Sutton and A. G. Barto, Reinforcement Learn- environments or sequencers. The counterposition is deeply tween real-time systems, which immediately react to in-
[19] O. Laske, Composition theory in Koenigs project ing: An Introduction (Adaptive Computation and terface actions (such as Finale, MaxMSP, ProTools...) and
methodological: in traditional CAC environments inter-
one and project two, Computer Music Journal, pp. Machine Learning). The MIT Press, March 1998. non-real-time systems, where these actions have no effect
face changes have no effect until a certain refresh opera-
5465, 1981. until a certain refresh operation is performed (such as
tion is performed, whereas real-time environments imme-
[37] P. F. M. J. Verschure, T. Voegtlin, and R. J. Dou- Lilypond, OpenMusic, PWGL). The latter is the case of
[20] D. Levitin and A. Tirovolas, Current advances in diately react to user input. We shall present in this arti-
glas, Environmentally mediated synergy between typical CAC environments; yet, in some cases this is un-
the cognitive neuroscience of music, Annals of the cle a library for Max, named bach: automatic composers
perception and behaviour in mobile robots, Nature, natural, and it might be argued that there is no deep reason
New York Academy of Sciences, vol. 1156, no. The helper, which adds highly refined capabilities for musical
vol. 425, no. 6958, pp. 6204, Oct 2003. why symbolic processing should not be performed in real-
Year in Cognitive Neuroscience 2009, pp. 211231, notation and symbolic processing to a typically real-time
[38] P. F. Verschure, Synthetic epistemology: The ac- environment, in order to recompose the fracture between time. This does not mean that every compositional pro-
2009.
quisition, retention, and expression of knowledge computer-aided composition and the real-time world. cess should benefit from a real-time data flow, but some
[21] L. B. Meyer, Emotion and Meaning in Music. The in natural and synthetic systems, in Fuzzy Systems might, as we shall exemplify at the end of the paper. Real-
University of Chicago Press, 1956. Proceedings, 1998. IEEE World Congress on Com- time is a resource, rather than an obligation. Yet, the lack
1. INTRODUCTION of this resource has pushed, up to now, the development
putational Intelligence., The 1998 IEEE Interna-
[22] M. Minsky, The society of mind. Simon and Schus- tional Conference on, vol. 1. IEEE, 1998, pp. 147 of CAC techniques only in the off-line direction.
ter, 1988. Since the advent of computers there has been great in- In our own experience, the real-time or non-real time
152.
terest on how to take advantage of their superior preci- nature of an environment for music composition deeply
[23] P. Montague, P. Dayan, C. Person, and T. Sejnowski, [39] M. Wright, Open sound control: an enabling sion, speed and power in music-related activities. The affects the very nature of the compositional process. Com-
Bee foraging in uncertain environments using pre- technology for musical networking, Org. Sound, probably best-known (and commercially successful) di- posers working with sequencers, plug-ins and electronic
dictive hebbian learning, Nature, vol. 377, no. vol. 10, no. 3, pp. 193200, 2005. rection has proven being the generation and transforma- instruments need them to immediately react as they change
6551, pp. 725728, 1995. tion of sound. In recent years, inexpensive personal com- their parameters; likewise, composers working with sym-
[40] D. Zicarelli, How I learned to love a program that puters (and lately even top-end mobile phones) have gained bolic data might want the machine to quickly adapt to
[24] J. Paradiso, Electronic music: new ways to play, does nothing, Computer Music Journal, no. 26, pp. the ability to perform professional-quality audio transfor- new parameter configurations. As composers ourselves,
Spectrum, IEEE, vol. 34, no. 12, pp. 1830, 2002. 4451, 2002. mation and generation in real-time. On the other hand, we believe that the creation and modification of a musi-
several systems have been developed to process symbolic cal score is not an out-of-time activity, but it follows the
[25] I. Peretz and M. Coltheart, Modularity of music data rather than acoustic ones - notes rather than sounds.
processing, Nature Neuroscience, vol. 6, no. 7, pp. composers discovery process and develops accordingly.
These systems can be roughly divided into tools for This issue has been faced by Miller Puckette in [11]:
688691, 2003.
computer-assisted music engraving (such as Finale, Sibelius,
[26] I. Peretz and R. Zatorre, Brain organization for mu- Lilypond...) and tools for computer-aided composition While we have good paradigms for describ-
sic processing, Psychology, vol. 56, 2005. (CAC for short, allowing generation and transformation of ing processes (such as in the Max or Pd pro-
symbolic musical data, such as OpenMusic1 [1], PWGL2 , grams as they stand today), and while much
[27] R. Pfeifer and C. Scheier, Understanding intelli- Common Music3 ...). Moreover, at least two graphical pro- work has been done on representations of mu-
gence. The MIT Press, 2001. gramming environments, the closely related Max and Pure- sical data (ranging from searchable databases
Data, have MIDI control and sound generation and trans- of sound to Patchwork and OpenMusic, and
[28] M. Puckette, Pure data: another integrated com- formation among their main focuses - but at the same including Pds unfinished data editor), we lack
puter music environment, in Proceedings of the 2nd time they are capable to deal with arbitrary set of data, a fluid mechanism for the two worlds to inter-
Intercollege Computer Music Concerts, Tachikawa, input/output devices and video. Indeed, the boundaries operate.
Japan, 1996. between all these categories are fuzzy: music engraving
systems often allow non-trivial data processing; some se- Arshia Cont in [5] adds:
[29] M. Puckette, M. Ucsd, T. Apel et al., Real-time au- quencers also provide high-quality graphical representa-
dio analysis tools for pd and msp, 1998. The performers of computer music have been
tion of musical scores and sound treatment; modern CAC faster to grab ideas in real time manipulations
[30] D. Rosenboom, Biofeedback and the arts: Results 1 http://repmus.ircam.fr/openmusic/home and adopting them to their needs. Today, with
of early experiments, in Computer Music Journal, 2 http://www2.siba.fi/PWGL/ many exceptions, a wide majority of com-
vol. 13, no. 4, 1989, pp. 8688. 3 http://commonmusic.sourceforge.net/ posed mixed instrumental and electronic pieces

_372 _373
are based on simplistic interactive setups that work, OpenMusic, PWGL), are based upon the Lisp pro-
hinder the notion of interactivity. This fact gramming language. Although superficially similar to Max
does not degrade the artistic value of such from the point of view of the user interface (data and func-
works in any sense but underlies the lack of tions are represented by graphical elements connected by
momentum therein for serious considerations lines representing the flow of elaboration), the underlying
of interactivity among the second group. programming paradigm is radically different. Essentially,
the graphical program is indeed a representation of a Lisp
Of course, this dichotomy has already been addressed.
expression, with elements on the top of the patch corre-
Several interesting projects have been developed, linking
sponding to the deepest elements of the expression. The
real-time environments to graphical representations of both
user requests the evaluation of an operator, which in turn
classical and non-classical (and potentially non-musical)
will request evaluation of the operators above it, and so
scores, including OpenTimeLine4 [9] and INscore5 [7].
on. From a lower-level point of view, a call stack is built
In at least one case, namely MaxScore6 [6], this is aug- Figure 2. Semitonal, quartertonal and eighthtonal divi-
in this scenario as well; the difference is that all the func- Figure 1. Any notation object can be edited by both GUI
mented by a very sophisticated editing interface. A more sions are supported via the standard accidental symbols
tions in the stack have a return value, and the final return interaction and Max messages. In this case were clearing
general approach is FTMs [12], which provides a power- (upper example). All other microtonal divisions are sup-
value is returned to the user through a console. Of course, the bach.roll, and then adding two chords.
ful framework for data representation and processing with ported as well, but symbolic accidentals will be replaced
in some cases the side effects of the evaluation (e.g, a
a focus on musical structures, including some facilities for by labels with the explicit fractions of tone (lower exam-
change in an user interface widget, or the production of
graphical display of simple scores. quite advanced, as it allows multiple simultaneous time ple), or with cents differences from the diatonic note.
a MIDI stream) are more important then the result itself.
Resuming the ideas of [2, 3], with the library bach: signatures, tempi and agogics. Besides this fundamental
This paradigm applies a fortiori to textual Lisp-based en-
automatic composers helper we have tried to achieve a difference, the two objects offer a large set of common
vironments such as Common Music or Impromptu.
coherent system explicitly designed for computer-assisted features, among which: tools for working upon lllls, performing basic operations
The difference between the two paradigms is crucial:
composition. bach takes advantage of Maxs facilities for such as retrieval of individual elements, iteration, reversal,
if we assume that parameters are handled at the begin-
sound processing, real-time interaction and graphical pro- editing by both mouse and keyboard interface, and sorting, splicing, merging and so on (see Fig. 3). Some
ning of the process, a bottom-up process (like within the
gramming, combining interactive writing and algorithmic by Max messages (see Fig. 1); subsets of the library are applicable to lllls satisfying cer-
Patchwork paradigm) will ultimately be a non-real-time
control of symbolic musical material. tain given conditions: e.g., it is possible to perform mathe-
process, since parameter changes cannot immediately af- support for microtonal accidentals of arbitrary res- matical operations over lllls solely composed by numbers;
fect anything below them, unless some bottom-up oper- olution (see Fig. 2);
2. PROGRAMMING PARADIGMS a set of operators for matrix calculus only works with ap-
ation is requested on some lower elements. Moreover,
wide possibility of intervention over the graphical propriately structured lllls; and so on. It is important to
bach complies with the graphical data-flow programming the Max paradigm, not having to depend on return values,
parameters of musical notation; stress that all these operators are indeed Max objects, and
paradigm of Max, in which information is represented as easily allow for much more complexly structured patches:
while the kind of operations performed may bear some
a vertical, top-down flow. Data, typically coming from a single action can trigger multiple reactions in differ- ability to associate to each note various types of resemblance with Lisp, the actual implementation and in-
some user interaction, enter the program at its top, are ent operators (a function can call several other functions, meta-data, including text, numbers, files and break- terface are radically different, and as integrated as possi-
acted upon by a chain of specialized operators connected one after another has returned). The Patchwork paradigm, point functions (see Fig. 6); ble with the Max system. On the other hand, at least one
by lines called patch cords and exit the program at its on the other hand, has the advantage of allowing seam-
Common Lisp interpreter designed to run as Max objects
bottom. A simplified model of this mechanism, as seen less integration with textual coding, which can be an ex- variable-speed playback capability: both bach.score has been developed, Brad Gartons maxlispj [8]: it is ex-
from a lower-level point of view, might appear as follows: tremely useful resource whenever conceptually complex and bach.roll can be seen as advanced sequencers, tremely easy to exchange data with this object, in order
each operator is a function, usually written in C or C++, operations must be implemented. Moreover, representing and the whole set of data (such as pitch, velocity to take advantage of the expressive power of Lisp textual
and the data entering it are the arguments of the function musical notation (from single notes to an entire score) re- and duration information) and meta-data associated programming within a Max patch.
call. After performing its work upon the data it has re- quires sufficiently powerful and flexible data structures, to each note is output at the appropriate time during
ceived, each operator calls the function corresponding to which the Lisp lists certainly are. playback, thus making both objects extremely con-
venient for controlling synthesizers and other phys- 3.2. Music representation
the next operator in the chain, passing it the acted-upon
data. In this way a call stack is built, in which the oper- ical or virtual devices. At the intersection between the modules for musical nota-
3. THE BACH ENVIRONMENT
ator at the top of the graphical patch corresponds to the tion and the list operators is a family of objects performing
function at the base of the stack, and the operator at the As already stated, bach is a library of objects and patches operations upon lllls containing musical data.
3.1. Data types
bottom of the graphical patch corresponds to the function for the software Max, the distinction between objects and It is worth noting that different bach objects exchange
at the top of the stack. It is crucial to note that all these patches concerning more the implementation than the ac- bach also provides Max with two new data types: ra- musical scores in the form of specifically-structured lllls,
functions have no return value: the last operator of the tual usage of these modules. At the forefront of the system tional numbers and a nested list structure called llll, an whose contents is entirely readable and editable by the
chain simply passes the data to an arbitrary output device. are the bach.score and bach.roll objects. They both pro- acronym for Lisp-like linked list. Rational numbers are user; this is different from what happens e.g. in Open-
In this way, the perception on the users side is that the vide graphical interfaces for the representation of musical extremely important in music computation, as they ex- Music, where the exchange of musical data often involves
program essentially behaves like a musical instrument, in notation: bach.score expresses time in terms of traditional press traditional temporal units such as 1/2, 3/8 or 1/12 opaque objects.
which an action (e.g., pressing a piano key) triggers a se- musical units, and includes notions such as rests, mea- (that is, a triplet eight note) as well as harmonic ratios. This allows much easier and more transparent manip-
ries of reactions (levers moving, hammers striking) lead- sures, time signature and tempo; bach.roll expresses time The nested list has been chosen for both similarity with ulation of the musical data themselves. As a consequence,
ing, in a measurable but usually negligible time, to the in terms of absolute temporal units (namely milliseconds), the Lisp language, in a way to ease communication with strictly musical operations such as rhythmic quantization
production of a sensible result (sound). and as a consequence has no notion of traditional tempo- the major existing CAC environment, and the need to es- are just extremely specialized operations upon lllls, which
The major graphical computer-aided composition en- ral concepts: this is useful for representing non-measured tablish a data structure powerful enough to represent the of course can be performed only if the llll itself is struc-
vironments, that is the Patchwork family [10, 4] (Patch- music, and also provides a simple way to deal with pitch complexity of a musical score, but flexible enough to be a tured properly, and if its content is consistent from the
4 http://dh7.free.fr material whose temporal information is unknown or irrel- generic data container lending itself to arbitrary manipu- point of view of musical notation.
5 http://inscore.sourceforge.net evant. It should also be noted that the implementation of lations through a relatively small set of primitives. In fact, The structure of a llll representing a bach.score (Fig.
6 http://www.computermusicnotation.com traditional temporality concepts in bach.score is in fact the large majority of the modules of the bach library are 4) might appear quite complex at first sight, but the or-

_374 _375
are based on simplistic interactive setups that work, OpenMusic, PWGL), are based upon the Lisp pro-
hinder the notion of interactivity. This fact gramming language. Although superficially similar to Max
does not degrade the artistic value of such from the point of view of the user interface (data and func-
works in any sense but underlies the lack of tions are represented by graphical elements connected by
momentum therein for serious considerations lines representing the flow of elaboration), the underlying
of interactivity among the second group. programming paradigm is radically different. Essentially,
the graphical program is indeed a representation of a Lisp
Of course, this dichotomy has already been addressed.
expression, with elements on the top of the patch corre-
Several interesting projects have been developed, linking
sponding to the deepest elements of the expression. The
real-time environments to graphical representations of both
user requests the evaluation of an operator, which in turn
classical and non-classical (and potentially non-musical)
will request evaluation of the operators above it, and so
scores, including OpenTimeLine4 [9] and INscore5 [7].
on. From a lower-level point of view, a call stack is built
In at least one case, namely MaxScore6 [6], this is aug- Figure 2. Semitonal, quartertonal and eighthtonal divi-
in this scenario as well; the difference is that all the func- Figure 1. Any notation object can be edited by both GUI
mented by a very sophisticated editing interface. A more sions are supported via the standard accidental symbols
tions in the stack have a return value, and the final return interaction and Max messages. In this case were clearing
general approach is FTMs [12], which provides a power- (upper example). All other microtonal divisions are sup-
value is returned to the user through a console. Of course, the bach.roll, and then adding two chords.
ful framework for data representation and processing with ported as well, but symbolic accidentals will be replaced
in some cases the side effects of the evaluation (e.g, a
a focus on musical structures, including some facilities for by labels with the explicit fractions of tone (lower exam-
change in an user interface widget, or the production of
graphical display of simple scores. quite advanced, as it allows multiple simultaneous time ple), or with cents differences from the diatonic note.
a MIDI stream) are more important then the result itself.
Resuming the ideas of [2, 3], with the library bach: signatures, tempi and agogics. Besides this fundamental
This paradigm applies a fortiori to textual Lisp-based en-
automatic composers helper we have tried to achieve a difference, the two objects offer a large set of common
vironments such as Common Music or Impromptu.
coherent system explicitly designed for computer-assisted features, among which: tools for working upon lllls, performing basic operations
The difference between the two paradigms is crucial:
composition. bach takes advantage of Maxs facilities for such as retrieval of individual elements, iteration, reversal,
if we assume that parameters are handled at the begin-
sound processing, real-time interaction and graphical pro- editing by both mouse and keyboard interface, and sorting, splicing, merging and so on (see Fig. 3). Some
ning of the process, a bottom-up process (like within the
gramming, combining interactive writing and algorithmic by Max messages (see Fig. 1); subsets of the library are applicable to lllls satisfying cer-
Patchwork paradigm) will ultimately be a non-real-time
control of symbolic musical material. tain given conditions: e.g., it is possible to perform mathe-
process, since parameter changes cannot immediately af- support for microtonal accidentals of arbitrary res- matical operations over lllls solely composed by numbers;
fect anything below them, unless some bottom-up oper- olution (see Fig. 2);
2. PROGRAMMING PARADIGMS a set of operators for matrix calculus only works with ap-
ation is requested on some lower elements. Moreover,
wide possibility of intervention over the graphical propriately structured lllls; and so on. It is important to
bach complies with the graphical data-flow programming the Max paradigm, not having to depend on return values,
parameters of musical notation; stress that all these operators are indeed Max objects, and
paradigm of Max, in which information is represented as easily allow for much more complexly structured patches:
while the kind of operations performed may bear some
a vertical, top-down flow. Data, typically coming from a single action can trigger multiple reactions in differ- ability to associate to each note various types of resemblance with Lisp, the actual implementation and in-
some user interaction, enter the program at its top, are ent operators (a function can call several other functions, meta-data, including text, numbers, files and break- terface are radically different, and as integrated as possi-
acted upon by a chain of specialized operators connected one after another has returned). The Patchwork paradigm, point functions (see Fig. 6); ble with the Max system. On the other hand, at least one
by lines called patch cords and exit the program at its on the other hand, has the advantage of allowing seam-
Common Lisp interpreter designed to run as Max objects
bottom. A simplified model of this mechanism, as seen less integration with textual coding, which can be an ex- variable-speed playback capability: both bach.score has been developed, Brad Gartons maxlispj [8]: it is ex-
from a lower-level point of view, might appear as follows: tremely useful resource whenever conceptually complex and bach.roll can be seen as advanced sequencers, tremely easy to exchange data with this object, in order
each operator is a function, usually written in C or C++, operations must be implemented. Moreover, representing and the whole set of data (such as pitch, velocity to take advantage of the expressive power of Lisp textual
and the data entering it are the arguments of the function musical notation (from single notes to an entire score) re- and duration information) and meta-data associated programming within a Max patch.
call. After performing its work upon the data it has re- quires sufficiently powerful and flexible data structures, to each note is output at the appropriate time during
ceived, each operator calls the function corresponding to which the Lisp lists certainly are. playback, thus making both objects extremely con-
venient for controlling synthesizers and other phys- 3.2. Music representation
the next operator in the chain, passing it the acted-upon
data. In this way a call stack is built, in which the oper- ical or virtual devices. At the intersection between the modules for musical nota-
3. THE BACH ENVIRONMENT
ator at the top of the graphical patch corresponds to the tion and the list operators is a family of objects performing
function at the base of the stack, and the operator at the As already stated, bach is a library of objects and patches operations upon lllls containing musical data.
3.1. Data types
bottom of the graphical patch corresponds to the function for the software Max, the distinction between objects and It is worth noting that different bach objects exchange
at the top of the stack. It is crucial to note that all these patches concerning more the implementation than the ac- bach also provides Max with two new data types: ra- musical scores in the form of specifically-structured lllls,
functions have no return value: the last operator of the tual usage of these modules. At the forefront of the system tional numbers and a nested list structure called llll, an whose contents is entirely readable and editable by the
chain simply passes the data to an arbitrary output device. are the bach.score and bach.roll objects. They both pro- acronym for Lisp-like linked list. Rational numbers are user; this is different from what happens e.g. in Open-
In this way, the perception on the users side is that the vide graphical interfaces for the representation of musical extremely important in music computation, as they ex- Music, where the exchange of musical data often involves
program essentially behaves like a musical instrument, in notation: bach.score expresses time in terms of traditional press traditional temporal units such as 1/2, 3/8 or 1/12 opaque objects.
which an action (e.g., pressing a piano key) triggers a se- musical units, and includes notions such as rests, mea- (that is, a triplet eight note) as well as harmonic ratios. This allows much easier and more transparent manip-
ries of reactions (levers moving, hammers striking) lead- sures, time signature and tempo; bach.roll expresses time The nested list has been chosen for both similarity with ulation of the musical data themselves. As a consequence,
ing, in a measurable but usually negligible time, to the in terms of absolute temporal units (namely milliseconds), the Lisp language, in a way to ease communication with strictly musical operations such as rhythmic quantization
production of a sensible result (sound). and as a consequence has no notion of traditional tempo- the major existing CAC environment, and the need to es- are just extremely specialized operations upon lllls, which
The major graphical computer-aided composition en- ral concepts: this is useful for representing non-measured tablish a data structure powerful enough to represent the of course can be performed only if the llll itself is struc-
vironments, that is the Patchwork family [10, 4] (Patch- music, and also provides a simple way to deal with pitch complexity of a musical score, but flexible enough to be a tured properly, and if its content is consistent from the
4 http://dh7.free.fr material whose temporal information is unknown or irrel- generic data container lending itself to arbitrary manipu- point of view of musical notation.
5 http://inscore.sourceforge.net evant. It should also be noted that the implementation of lations through a relatively small set of primitives. In fact, The structure of a llll representing a bach.score (Fig.
6 http://www.computermusicnotation.com traditional temporality concepts in bach.score is in fact the large majority of the modules of the bach library are 4) might appear quite complex at first sight, but the or-

_374 _375
Support for import and export of MIDI, MusicXML
and SDIF files.
A solver for constraint satisfaction problems.
Notice that the software development situation might
have changed at the time of publication, and some or all
of the hereby proposed features might already be partly or
fully implemented.

5. REFERENCES

[1] C. Agon, OpenMusic : Un langage visuel pour la


composition musicale assiste par ordinateur. Ph.D.
dissertation, University of Paris 6, 1998.
Figure 3. bach has a wide range of objects capable to Figure 6. Two examples of slot windows. [2] A. Agostini and D. Ghisi, Gestures, events and
perform standard structure operation on lllls, such as re- symbols in the bach environment, in Proceedings of
versing, slicing, flattening, rotating and so on. In the pic- the Journees dInformatique Musicale, Mons, Bel-
Figure 5. The structure of a non-measured score in llll sentation of musical scores typically belong to music en-
ture, we see the results of reversing, slicing and flattening gium, 2012, pp. 247255.
form, with branches for voices, chords and notes. Notice graving systems - although it should be noted that, in its
a list. Moreover, most operations can be constrained only
the meta-content contained in each note, appearing in the current state, bach lacks some essential features of this
in some levels of depth. [3] , Real-time computer-aided composition with
lllls starting with the slots symbol. The form (type, range, kind of programs, first of all a page view. On the other bach, Contemporary Music Review, 2012, to ap-
domain...) of each slot appears in the header, which has hand, most of its features are conceived in order to make pear.
not been dumped. it a tool for Computer Aided Composition as powerful as
the traditional Lisp-based environments, and able to com- [4] G. Assayag and al., Computer assisted composition
municate with them. It can be used as the core of an ex- at Ircam: From patchwork to OpenMusic, Com-
ture (Fig. 5), except that the measure level is not present. tremely advanced and flexible sequencer, with the ability puter Music Journal, no. 23 (3), pp. 5972, 1999.
With the provided set of list operators, specific pieces of to drive virtually any kind of process and playback sys-
information referring to single elements or sections of the [5] A. Cont, Modeling Musical Anticipation, Ph.D.
tem. Finally, it can of course lend itself to innovative ap-
score are not difficult to locate and manipulate. Moreover, dissertation, University of Paris 6 and University of
plications exploiting the unique convergence of these dif-
both bach.score and bach.roll provide simplified ways to California in San Diego, 2008.
ferent paradigms and its specific real-time behavior (such
retrieve and enter only specific sets of values to operate as the symbolic granulation example shown in Fig. 7). [6] N. Didkovsky and G. Hajdu, Maxscore: Music No-
upon (e.g. pitches or velocities only), which greatly eases
tation in Max/MSP, in Proceedings of the Interna-
the implementation of most algorithmic operations.
4. FUTURE DEVELOPMENTS tional Computer Music Conference, 2008.

3.3. Data handling mechanism [7] Y. Fober, Y. Orlarey, and S. Letz, An Environment
At the time of writing, bach is in its alpha development
for the Design of Live Music Scores, in Proceed-
phase: although the system is usable, not all the intended
As the goal of bach is allowing real-time interaction, a ings of the Linux Audio Conference, 2012.
features have already been implemented. Some of the
great amount of work has been spent to improve the sta-
planned additions are: [8] B. Garton. (2011, Jan.) maxlispj. [Online]. Avail-
bility and efficiency of the system. All the operations in
Figure 4. The structure of a simple score in llll form, with bach are thread-safe in the context of the Max threading able: http://music.columbia.edu/brad/maxlispj/
Support for rhythmic tree representation, which will
branches for voices, measures, chords and notes. (The model, and the passing of lllls between objects happens by allow, for example, nested tuplets to be represented, [9] D. Henry, PTL, a new sequencer dedicated to
header, containing additional information such as clefs, reference, rather than by value, unless the user explicitly whereas now a triplet containing a quintuplet is rep- graphical scores, in Proceedings of the Interna-
keys, types of meta-data, has not been dumped). requests otherwise, which is the case whenever the con- resented as a flat 15-uplet. This feature is cur- tional Computer Music Conference, Miami, USA,
tents of a llll need to be passed to a non-bach Max object rently under development, together with an intuitive 2005, pp. 738741.
(that only accepts data passed by value). Thus, lllls are measure linear editing system for the note insertion.
ganization of its contents is meant to be extremely ra- copied only when strictly necessary, and in all the other The underlying challenge is to keep the tree and lin- [10] M. Laurson and J. Duthen, Patchwork, a graphical
tional: after a header section containing global informa- cases a reference counting mechanism is used to ensure ear representations of durations always compatible, language in preform, in Proceedings of the Inter-
tion such as the clefs or the types of meta-data appear- that the lifetime of data structures and the usage of mem- so that users should concretely deal with the tree national Computer Music Conference, Miami, USA,
ing in the score, we find a sub-tree whose branches cor- ory are correctly managed. On the other hand, all this is representation only when they explicitly ask to (e.g. 1989, pp. 172175.
respond to one voice each; each voice branch contains transparent to the user, who never needs to cope with the when they insert as rhythm a nested rhythmic struc- [11] M. Puckette, A divide between compositional and
branches for each measure; each measure branch contains cloning of lllls, or the distinction between destructive and ture), or when they perform hierarchical operations performative aspects of Pd, in Proceedings of
some measure-specific information (such as time signa- non-destructive operations - as, on the contrary, it is often (e.g. when they split a chord). Users will also be the First Internation Pd Convention, Graz, Austria,
ture) and branches for each chord; each chord branch con- the case with Lisp. able to rebuild a default rhythmic tree from the lin- 2004.
tains some chord-specific information (such as its dura- ear representation at any moment.
tion) and branches for each note; and each note branch 3.4. Practical applications [12] N. Schnell, R. Borghesi, D. Schwarz, F. Bevilacqua,
contains pitch and velocity leaves, as well as possible fur- Implementation of hierarchical structures within a and R. Muller, FTM - Complex Data Structures for
ther specifications, such as glissando lines, enharmonic Taking all this into account, it should be clear that bach is score, allowing the user to group elements by name, Max, in Proceedings of the International Computer
information, articulations and meta-data. The llll repre- somehow placed at the convergence of several categories where an element can be a chord, a note, a marker, Music Conference, 2005.
senting a whole bach.roll has essentially the same struc- of musical software. Its capabilities of graphical repre- or another group.

_376 _377
Support for import and export of MIDI, MusicXML
and SDIF files.
A solver for constraint satisfaction problems.
Notice that the software development situation might
have changed at the time of publication, and some or all
of the hereby proposed features might already be partly or
fully implemented.

5. REFERENCES

[1] C. Agon, OpenMusic : Un langage visuel pour la


composition musicale assiste par ordinateur. Ph.D.
dissertation, University of Paris 6, 1998.
Figure 3. bach has a wide range of objects capable to Figure 6. Two examples of slot windows. [2] A. Agostini and D. Ghisi, Gestures, events and
perform standard structure operation on lllls, such as re- symbols in the bach environment, in Proceedings of
versing, slicing, flattening, rotating and so on. In the pic- the Journees dInformatique Musicale, Mons, Bel-
Figure 5. The structure of a non-measured score in llll sentation of musical scores typically belong to music en-
ture, we see the results of reversing, slicing and flattening gium, 2012, pp. 247255.
form, with branches for voices, chords and notes. Notice graving systems - although it should be noted that, in its
a list. Moreover, most operations can be constrained only
the meta-content contained in each note, appearing in the current state, bach lacks some essential features of this
in some levels of depth. [3] , Real-time computer-aided composition with
lllls starting with the slots symbol. The form (type, range, kind of programs, first of all a page view. On the other bach, Contemporary Music Review, 2012, to ap-
domain...) of each slot appears in the header, which has hand, most of its features are conceived in order to make pear.
not been dumped. it a tool for Computer Aided Composition as powerful as
the traditional Lisp-based environments, and able to com- [4] G. Assayag and al., Computer assisted composition
municate with them. It can be used as the core of an ex- at Ircam: From patchwork to OpenMusic, Com-
ture (Fig. 5), except that the measure level is not present. tremely advanced and flexible sequencer, with the ability puter Music Journal, no. 23 (3), pp. 5972, 1999.
With the provided set of list operators, specific pieces of to drive virtually any kind of process and playback sys-
information referring to single elements or sections of the [5] A. Cont, Modeling Musical Anticipation, Ph.D.
tem. Finally, it can of course lend itself to innovative ap-
score are not difficult to locate and manipulate. Moreover, dissertation, University of Paris 6 and University of
plications exploiting the unique convergence of these dif-
both bach.score and bach.roll provide simplified ways to California in San Diego, 2008.
ferent paradigms and its specific real-time behavior (such
retrieve and enter only specific sets of values to operate as the symbolic granulation example shown in Fig. 7). [6] N. Didkovsky and G. Hajdu, Maxscore: Music No-
upon (e.g. pitches or velocities only), which greatly eases
tation in Max/MSP, in Proceedings of the Interna-
the implementation of most algorithmic operations.
4. FUTURE DEVELOPMENTS tional Computer Music Conference, 2008.

3.3. Data handling mechanism [7] Y. Fober, Y. Orlarey, and S. Letz, An Environment
At the time of writing, bach is in its alpha development
for the Design of Live Music Scores, in Proceed-
phase: although the system is usable, not all the intended
As the goal of bach is allowing real-time interaction, a ings of the Linux Audio Conference, 2012.
features have already been implemented. Some of the
great amount of work has been spent to improve the sta-
planned additions are: [8] B. Garton. (2011, Jan.) maxlispj. [Online]. Avail-
bility and efficiency of the system. All the operations in
Figure 4. The structure of a simple score in llll form, with bach are thread-safe in the context of the Max threading able: http://music.columbia.edu/brad/maxlispj/
Support for rhythmic tree representation, which will
branches for voices, measures, chords and notes. (The model, and the passing of lllls between objects happens by allow, for example, nested tuplets to be represented, [9] D. Henry, PTL, a new sequencer dedicated to
header, containing additional information such as clefs, reference, rather than by value, unless the user explicitly whereas now a triplet containing a quintuplet is rep- graphical scores, in Proceedings of the Interna-
keys, types of meta-data, has not been dumped). requests otherwise, which is the case whenever the con- resented as a flat 15-uplet. This feature is cur- tional Computer Music Conference, Miami, USA,
tents of a llll need to be passed to a non-bach Max object rently under development, together with an intuitive 2005, pp. 738741.
(that only accepts data passed by value). Thus, lllls are measure linear editing system for the note insertion.
ganization of its contents is meant to be extremely ra- copied only when strictly necessary, and in all the other The underlying challenge is to keep the tree and lin- [10] M. Laurson and J. Duthen, Patchwork, a graphical
tional: after a header section containing global informa- cases a reference counting mechanism is used to ensure ear representations of durations always compatible, language in preform, in Proceedings of the Inter-
tion such as the clefs or the types of meta-data appear- that the lifetime of data structures and the usage of mem- so that users should concretely deal with the tree national Computer Music Conference, Miami, USA,
ing in the score, we find a sub-tree whose branches cor- ory are correctly managed. On the other hand, all this is representation only when they explicitly ask to (e.g. 1989, pp. 172175.
respond to one voice each; each voice branch contains transparent to the user, who never needs to cope with the when they insert as rhythm a nested rhythmic struc- [11] M. Puckette, A divide between compositional and
branches for each measure; each measure branch contains cloning of lllls, or the distinction between destructive and ture), or when they perform hierarchical operations performative aspects of Pd, in Proceedings of
some measure-specific information (such as time signa- non-destructive operations - as, on the contrary, it is often (e.g. when they split a chord). Users will also be the First Internation Pd Convention, Graz, Austria,
ture) and branches for each chord; each chord branch con- the case with Lisp. able to rebuild a default rhythmic tree from the lin- 2004.
tains some chord-specific information (such as its dura- ear representation at any moment.
tion) and branches for each note; and each note branch 3.4. Practical applications [12] N. Schnell, R. Borghesi, D. Schwarz, F. Bevilacqua,
contains pitch and velocity leaves, as well as possible fur- Implementation of hierarchical structures within a and R. Muller, FTM - Complex Data Structures for
ther specifications, such as glissando lines, enharmonic Taking all this into account, it should be clear that bach is score, allowing the user to group elements by name, Max, in Proceedings of the International Computer
information, articulations and meta-data. The llll repre- somehow placed at the convergence of several categories where an element can be a chord, a note, a marker, Music Conference, 2005.
senting a whole bach.roll has essentially the same struc- of musical software. Its capabilities of graphical repre- or another group.

_376 _377
OSC-NETLOGO: A TOOL FOR EXPLORING THE SONIFICATION OF
COMPLEX SYSTEMS USING NETLOGO

Rodrigo F. Cadiz, Marco Colasso


Center for Research in Audio Technologies
Music Institute, Pontificia Universidad Catolica de Chile
rcadiz@uc.cl marco.colasso@gmail.com

ABSTRACT Turtle agents and patches are useful to visualize and


study mathematical abstractions, specially non-linear dy-
In this article, we introduce OSC-NETLOGO, a tool that namical systems, to display behavior in graphical ways,
allows the creation of sonic phenomena by taking advan- to make art and even play games. NetLogo comes with
tage of NetLogos power for designing and building mod- a very big library of models, which covers topics such as
els of complex systems. NetLogo is a multi-agent pro- cellular automata, genetic algorithms, positive and nega-
gramming language and modeling environment for simu- tive feedback, evolution and genetic drift, population dy-
lating natural and social phenomena. It is particularly well namics, networks, markets, chaos theory, swarming be-
suited for modeling complex systems that evolve dynam- havior, and molecular physics. All of these models share
ically over time. We provide two examples taken from core concepts such as complex systems, self-organization
NetLogos library of models. These examples provide ev- and emergence.
idence for the capabilities and potential of NetLogo as a Although NetLogo is very powerful for modeling and
sound synthesis tool. We hope that this tool could be of handling complex systems data, and provides some ba-
aid in future efforts of creating new complex sounds and sic audio functionality through MIDI, it lacks more seri-
interesting musical material. ous digital audio generation and processing capabilities.
However, one good thing about NetLogo is that is pro-
1. INTRODUCTION vides an API for programmers to develop extensions to
the program in Java. We took advantage of this feature
NetLogo is a multi-agent programming language and mod- and developed OSC-NETLOGO, an Open Sound Control
eling environment for simulating natural and social phe- (OSC) [9] extension to Netlogo using the JavaOSC library
nomena. It is particularly well suited for modeling com- [2]. This extension allows users to directly map any pa-
plex systems evolving over time [4]. NetLogo comes from rameter of a NetLogo patch into any sound processing en-
the Logo family of programming languages [3] and has vironment such as Max/MSP, Pd or SuperCollider using
expanded the original Logo concept in a number of ways. OSC.
NetLogo allows modelers to give instructions to hun- This article is structured as follows. In section 2 we
dreds or thousands of independent agents all operating describe the NetLogo application in more detail, including
concurrently, which is something esential for modeling its history, API. In section 3 we describe the netlogo-osc
complex systems. This makes it possible to explore con- extension, including its installation and usage. Then, in
nections between micro-level behaviors of individuals and section 4 we provide examples of mappings of two Net-
macro-level patterns that emerge from their interactions. Logo models into sound synthesis using Pd. Finally, in
NetLogo enables users to open simulations and play with section 5 we discuss the main findings and conclusions of
them, exploring their behavior under various conditions our work.
by manipulating several graphical objects suchs as sliders
or buttons. NetLogo is also an authoring environment that
enables users to create their own models, and try them on
the fly. 2. NETLOGO
Acording to the NetLogo website [8], NetLogo is be-
ing used to build an endless variety of simulations. Mem- NetLogo is a cross-platform standalone application writ-
bers of the NetLogo community have turned turtles into ten in Java. It has been being developed for more than
Figure 7. Screenshot of a patch achieving a real-time symbolic granulation. The original score (upper reddish window) molecules, wolves, buyers, sellers, bees, tribespeople, birds, ten years, which assures that NetLogo is a mature product
has some markers to determine and modify the grain regions. Parameters are handled in the lower ochre window. When worms, voters, passengers, metals, bacteria, cars, robots, that is stable and fast. It is freeware, anyone can download
the user presses the Start transcribing button, the result appears and accumulates in the middle blue window. If desired, neutrons, magnets, planets, shepherds, lovers, ants, mus- it for free and build models without restriction. It also
one may make it monophonic, retouch it, and finally quantize it. Every parameter is user-modifiable and affects the result cles, networkers, and more. Patches have been made into comes with extensive documentation and tutorials and a
in real-time, as in any electroacoustic granulation machine. trees, walls, terrain, waterways, housing, plant cells, can- large collection of sample models, created both by NetL-
cer cells, farmland, sky, desks, fur, sand, etc. [4]. ogo developers and the general community of users [4].

_378 _379

Вам также может понравиться