Professional Documents
Culture Documents
D. Hirst - Hacking Music Notation With Bach and Cage
D. Hirst - Hacking Music Notation With Bach and Cage
1 2
http://tenor-conference.org http://www.bachproject.net
relationship between bach data structures and Max data • Harmonic and rhythmic interpolation,
types is set out in their comprehensive CMJ article formalization of agogics (cage.chordinterp,
(Agostini, A. and D. Ghisi, 2015). cage.rhythminterp, cage.timewarp)
Here is a brief summary of the bach library families: • Automata, L-systems, etc (cage.chain,
cage.life, cage.lombricus)
• Score editors and sequencers (bach.score,
bach.roll) • Musical set theory tools (cage.chroma2pcset,
cage.chroma2centroid)
• Other User Interface Objects for Musical
Representation (bach.circle, bach.tonnetz) • Scores – a set of modules for “editing” or
“mixing” scores (cage.rollinterp, cage.scissors,
• Generic Data-Processing Objects (rotation,
cage.glue)
reversal, retrieval of general information,
insertion, substitution, operations on sets, • SDIF files support – modules for reading and
iteration, collection of elements, etc) writing SDIF files and manipulating or using
the data (eg. fundamental tracking to pitch
• Specialized Data-Processing Objects, designed
conversion)
to operate on bach lllls (bach.expr, bach.n2mc)
• Audio rendering of bach scores:
• Rhythmic Quantization (bach.quantize)
cage.ezaddsynth~ (a basic additive synthesis
• Constraint Programming, or stating “musical engine) and cage.ezseq~ (a basic sound file
formalization in terms of the qualities of the sampler)
result” (bach.constraints)
1.5. About Hans Tutschku
We will see how objects from these families are used in
In 2015, German composer Hans Tutschku (2015)
the context of the CLH system below.
produced a series of four videos that described a Max-
1.4. About Cage based system he created to produce his composition
Shadow of Bells.4 The videos outlined his compositional
The cage library3 is a library of abstractions built upon the
method in using the bach library for Max, but without
bach library. Developed with the support of the Haute
providing all the details or the Max patcher code. These
École de Musique in Geneva, cage modules “in general
videos provided the impetus to reproduce and extend this
perform higher-level tasks, with a compositional rather
working method using higher level cage Max abstractions.
than strictly technical connotation” (Agostini, Daubresse,
and Ghisi 2014: 308).
2. RESEARCH QUESTIONS
Cage is first and foremost a library of ready to use
modules to assist with computer aided composition. Cage The primary research question in this present study was:
also has a pedagogical connotation in that it is entirely Can we reproduce the system for computer assisted
built as high-level abstractions and can therefore be composition outlined by Tutschku, but with the
viewed, analysed and modified in Max. Thirdly, cage is enhancement of using the higher level abstractions
highly influenced by a real-time approach to computer provided for in the cage for Max library? The processing
aided composition: “creating and editing symbolic of music data which Tutschku described in his videos
musical data is not necessarily an out-of-time activity, but relied more on his own idiosyncratic, text-based, lisp-like
it follows the temporal flow of the compositional process, commands, which he was able to type in. In our system,
and adapts to it.” (Agostini, Daubresse, and Ghisi 2014: one aim was to replace this textual way of working with
308). User Interface-driven methods that made best use of the
cage library.
Here is a brief summary of the cage library families,
with some examples of each: A secondary aim was to begin to investigate whether
some extensions could be made to the system utilising the
• Pitch generation (cage.scale, cage.notewalk)
dada library that explores graphical user interface objects,
• Generation and treatment of melodic profiles and which are more interactive5. These dada objects are
(cage.profile.gen, cage.profile.stretch) still in their experimental phase.
• Processes inspired by electro-acoustic
practices (cage.pitchshift, cage.fm, cage.delay, 3. CLH SYSTEM DETAILS
cage.granulate) 3.1. CLH overview
The the author’s system makes higher level use of the
“Cage” library to manipulate common practice western
3 5
http://www.bachproject.net/cage/ http://www.bachproject.net/dada/
4
http://www.tutschku.com/shadow-of-bells/
musical notation in order to create a musical work. The clean up the input includes “merge 200” (to synchronise
CLH process begins with reading a pre-existing MIDI file attacks from a MIDI performance) and “legato extend” (to
and creating segments. The segments are saved, and then create a more legato performance). There is also a number
various treatments can be performed on selected segments field to zoom horizontally to focus on detail when adding
(transposition, retrograde, inversion, rotation, time markers for segmentation (Entered as a percentage).
stretching, pitch stretching, repetition, interpolation, etc).
The treated versions are also saved into the composer’s
“shelf”. The shelf is written to disc. The next step involves
mixing the desired segments with each other. The mix can
be saved as a MIDI file or converted to a score and saved
as a Music XML file which can be read by a music
notation program to undergo further refinement and
become the final music score. CLH includes an audio
playback system to hear each score fragment as the
composition proceeds.
6
If you are returning from a break and re-starting Max, you will need to
read the json file back in to re-populate the shelf of segments.
Figure 9 shows the layout for the CLH-mix sub-patch. It
helps to clear out everything before starting to mix, and
the various “clear” and “clearmarkers” buttons facilitate
starting with a blank canvas. It is also wise to “read” the
shelf from the most recently stored json file before
commencing.
3.5. CLH-roll2score
The final sub-patch, CLH-roll2score, takes a bach.roll
representation of the composer’s final music mix and
renders it into a bach.score standard Western music
notation score, which can then be exported to a music
XML format file for further tweeking in a specialised
music notation program.
Figure 12 is a screen shot of CLH-roll2score. The
composer starts by clearing Roll 1 and Score 1, then
reading the shelf of segments from a json file. The final Figure 13. Treatments via a dada.machine network.
“mix” is selected from the shelf menu, the score’s time
signature and a tempo can be set by editing the values in 5. REFERENCES
the time signature button in the Score 1 area. Then Roll 1
is sent to Score 1 by clicking the “quantize” button in the Agon, C. 1998. “OpenMusic: Un langage visuel pour la
Roll 1 area. The score can be exported to a music XML composition musicale assiste é par ordinateur.” PhD
dissertation, Universite ́ Paris VI.
file and also to a MIDI file too.
Agostini, A. and D. Ghisi, 2015. “A Max Library for
Musical Notation and Computer-Aided Composition”,
Computer Music Journal, Volume 39, No. 2, p. 11–27,
2015. (Bach)
Agostini, A. Daubresse, E. and D. Ghisi, 2014. “cage: a
high-level library for real-time computer-aided
composition”, Proceedings of the International Computer
Music Conference (ICMC), Athens.
Bresson, J. and J. Chadabe. 2017. Interactive Composition:
New Steps in Computer Music Research, Journal of New
Music Research, 46:1, 1-2.
Ghisi, D. and C. Agon, 2016. “Real-Time Corpus-Based
Concatenative Synthesis for Symbolic Notation”,
Proceedings of the TENOR conference, Cambridge, UK.
(Dada)
Figure 12. Screen shot of CLH-roll2score.
Laurson, M., and M. Kuuskankare. 2002. “PWGL: A
CLH-roll2score is the least developed of all the sub- Novel Visual Language Based on Common Lisp, CLOS
patches, and it needs further development. Hans Tutschku and OpenGL.” In Proceedings of the International
has a method of editing the bach.score using text to Computer Music Conference, pp. 142–145.
represent bar number, meter and tempo. He can then Puckette, M. 2004. “A Divide Between ‘Compositional’
reference the bar number to set the meter and tempo in and ‘Performative’ Aspects of Pd.” In Proceedings of the
order to render the score into a more readable form. A First International Pd Convention. Available online at
puredata.info/community/conventions/convention04
/lectures/tk-puckette/puckette-pd04.pdf/at download /file.
Accessed July 2018.
Taube, H. 1991. “Common Music: A Music Composition
Language in Common Lisp and CLOS.” Computer Music
Journal 15(2):21–32.
Tutschku, H. 2015. “using max.bach and max.cage” Web
page with 4 videos: http://www.tutschku.com/using-max-
bach-and-max-cage/ [Accessed 17 July 2018]