Jonathan Bell
email: belljonathan50@gmail.com

Improvements in bach 0.8.1, a User's Perspective

This paper discusses recent uses of bach automated composer's helper), a Max library for algorithmic composition. In the context of the author's own works, audiovisual musical scores are (pre)-composed in bach (bach.score). In performance, the scores are sent to performers and synchronised to a shared common clock, in local networked music performances (npm), with the help of the SmartVox score distribution system. The 0.8.1 version of bach presents two major improvements which will articulate the structure of this article: on the lower level, bach now exposes an expr-like small language (bell: bach evaluation language for lllls), which greatly simplifies algorithmic processes in Max. The case study of an algorithm for automatic cueing system for singers will be given as exemple. On the higher level, bach.roll now supports dynamics, thus revealing promising user-friendly playback possibilities, exemplified here with Ableton and the ConTimbre library.

INTRODUCTION 1.1 Technology for Notation and Representation

The present research situates itself within the realm of "Technologies for Notation and Representation (TENOR)", which emerged in France around 2014 under the initiative of Dominique Fober (GRAME-CNCM). The first conference of the same name took place at IRCAM in 2015, and enjoys ever since a growing community of researchers, developers, scholars, and composers. Amongst the latter (composers), the "slow but steady shift away from textualization in digital media" [START_REF] Hajdu | Embodiment and disembodiment in networked music performance[END_REF] inspires very diverse avenues of research, encompassing live generated scores [START_REF] Freeman | Extreme sight-reading, mediated expression, and audience participation: Real-time music notation in live performance[END_REF] and their link to "comprovisation" [START_REF] Dudas | Comprovisation: The various facets of composed improvisation within interactive performance systems[END_REF] [START_REF] Louzeiro | Improving sight-reading skills through dynamic notation -the case of comprovisador[END_REF], realtime notation/algorithmic composition [START_REF] Agostini | Bach: an environment for computer-aided composition in max[END_REF] [START_REF] Hajdu | Maxscore: Recent developments[END_REF], animated notation [START_REF] Hope | Electronic scores for music: The possibilities of animated notation[END_REF] [8], audio-scores [START_REF] Bhagwati | Elaborate audio scores: Concepts, affordances and tools[END_REF] [10], augmented reality notation [START_REF] Kim-Boyle | Immersive scores on the hololens[END_REF] [START_REF] Liu | An evaluation of augmented reality music notation[END_REF] and distributed notation [START_REF] Gottfried | Drawsocket: A browser based system for networked score display[END_REF], to name a few.

Distributed Notation with SmartVox

Smartvox is web application dedicated to score distribution. Amongst the aforementioned categories, SmartVox best situates itself under the categories of audio-scores [START_REF] Bell | Audio-scores, a resource for composition and computer-aided performance[END_REF],

distributed notation [START_REF] Bell | SmartVox. A web-based distributed media player as notation tool for choral practices[END_REF], and more recently augmented reality notation [START_REF] Bell | Animated notation, score distribution and ar-vr environments for spectral mimetic transfer in music composition[END_REF]. Obtaining best results with choirs (with or without instruments), it consists in distributing audiovisual mp4 scores (i.e. pre-composed audio and animated notation), and synchronising them to a shared common clock, through the browser of the singer's own Smartphones. Developed by Benjamin Matuszewski and the author at IR-CAM in 2015, in the SoundWorks framework [START_REF] Schnell | Soundworks -A playground for artists and developers to create collaborative mobile web performances[END_REF], SmartVox is based on a node.js server communicating with clients (smartphones) through the WebSocket protocol. The great majority of the scores sent and synchronised by SmartVox are composed by the author in the bach environment. Whilst bach is perhaps more often used for live-generated scores than for more traditional algorithmic composition, such live or ephemeral scores [START_REF] Bhagwati | Vexations of ephemerality[END_REF] have nevertheless endured criticism, which encourages the author to carry on writing fixed scores (i.e. the same score each time, although animated).

Algorithmic composition with bach

bach [START_REF] Agostini | A max library for musical notation and computer-aided composition[END_REF] is a library of external objects for real-time CAC (Computer-Aided Composition) and musical notation in Max. Providing Max with a large set of tools for the manipulation of musical scores, it has later been expanded with the higher-level Cage [START_REF] Agostini | cage: a high-level library for real-time computer-aided composition[END_REF] and Dada [START_REF] Ghisi | dada: Non-standard user interfaces for computer-aided composition in max[END_REF] libraries. bach inherits from softwares such as Open Music or PWGL a lisp-like organisation of data, albeit with its own syntax called lllls (Lisp-Like Linked Lists). The latest version of bach (version 0.8.1 released in 2019) exposes the bell language [START_REF] Giavitto | Bell, a textual language for the bach library[END_REF] [START_REF] Agostini | Programming in style with bach[END_REF], conceived specifically for llll (lists) manipulation.

BACH EVALUATION LANGUAGE FOR LLLL-AN OVERVIEW OF THE BELL LANGUAGE

General presentation

The bell language in bach arose from an observation that the Max patching environment can be cumbersome when formalising algorithmic compositional processes: "It has been clear since the beginning of bach that non trivial tasks -in algorithmic composition -require the implementation of potentially complex algorithms and processes, something that the graphical, data-flow programming paradigm of Max [...], is notoriously not well-suited to." [START_REF] Giavitto | Bell, a textual language for the bach library[END_REF]. Indeed, while the Max GUI can be extremely intuitive and efficient for many DSP processes, its data-flow paradigm can make list (llll) formatting inefficient. As will be exemplified with the help of Fig. 1, 2 and 3, bach.eval now allows for a single line of code to centralize list formatting, which would have formerly required dozens of objects, themselves most often bringing priority issues.

Writing notes and playing them

In some cases, composing with bach essentially comes down to formatting "addchord" messages (i.e. adding note on the score) containing all necessary information about where/how each note should be inscribed and displayed, and what Max should do when retrieving that information later during playback. Lisp inherited lllls (lisp-like linked lists) can be represented as trees (see Fig. 1). Before the existence of the bell language (mainly exposed in Max with the bach.eval object, the formatting of such list messages typically required the user to build that tree "from the ground up" (see Fig. 2, reading the patch from top to bottom, and Fig. 1 from bottom to the top). The process implied for instance: 1/ appending together all slot content 2/ wrapping it together (adding a level of parenthesis) 3/ appending pitch, duration, and velocity 4/ wrap again 5/ prepend onset 6/wrap again 7/ prepend addchord and voicenumber.... Figure 2. The object bach.wrap add a level of parenthesis around a list. Bach.append appends lists together. Formatting complex lists in this way was cumbersome and errorprone.

Such a process was often prompt to error, and now gives evidence of the fact that a single bach.eval expression makes the process much easier and versatile (see Fig. 3). Figure 3. The bell language (mainly exposed through the bach.eval object) was conceived for lisp-inherited lisp-like structured messages. $x1, $x2. . . correspond to the different inlets of the object. bach.eval makes the construction of lisp-inherited parenthesis structures much easier than with the data-flow bach.wrap system.

The implementation of variables in the bell language constitutes another major improvement of bach. The ability to name variables in Max in this way (such as ONSET, or DUREE, as in the loop expressed in Fig. 4) helps again centralising information within simple expressions, which the message-driven send-receive Max functionality would have made cumbersome. Figure 4. A loop calculates the onset of each syllable of a vocal line according to a starting onset (the variable "ON-SET"), a given duration/tempo ("DUREE"), and prosodic accentuation (2 1 1 2 1 for long short short long short -0 is used for initialisation).

Use cases in compositions for voices

According to the performer's feedback, and in comparison with the author's previous artistic output and experience with composing in bach (since 2015), the use of algorithmic processes (such as the ones exposed below) demonstrated much better results than "hand-made" former methods. Although in germ in Common Ground1 (Fig. 5), a more systematic approach to algorithmic polyphony generation was used in a Deliciae2 (Fig. 6), while discovering the new bell language.

Most polyphonic passages in Deliciae were generated inside a poly˜in Max, with each instance (i.e. each voice) receiving the same types of information (i.e. text, prosody, melodic contour and harmonic material) but only differing by vocal range (sopranos for instance cannot sing below middle C and so forth). Contrast in Renaissance polyphony often consist in alternation between homophonic passages and contrapuntal ones. Contrast therefore mainly consisted in opposing textures in which singers articulate and move from one pitch to the next at the same time (homophonic) or not (contrapuntal). This consideration highly influenced the parameters chosen at the foreground of the "composer's interface" 3 . ONSET is in milliseconds and correspond to

Automatic cueing system

Since the beginning of SmartVox (see [START_REF] Bell | SMARTVOX -A Web-Based Distributed Media Player as Notation Tool For Choral Practices[END_REF]), cueing the singers with what comes next appeared one of the main advantages of the system.

To identify appropriate moments for page turns and in or- Figure 8. The first note (with lyrics "dia") has a duration that lasts until the beginning of the following note, (with lyrics "blo"). The distance between the two (ECART1, highlighted in yellow) is almost null.

der to cue the singers accordingly, the first step consisted in identifying the start and end of each phrase (see Fig. 7): with iterations on each note of the score two by two, we evaluate if the distance between two notes is superior to 600 ms or not. Fig. 8 and Fig. 9 illustrate how the decision is taken: in the first case it isn't (see Fig. 8, the two notes are close to one another) and nothing happens.

On the following iteration however, the gap between two notes is wider than 600ms (see Fig. 9), so the messages "addmarker fin" and "addmarker debut" are sent to the end of the phrase and to the beginning of the next phrase respectively, resulting in adding green marker named debut and fin at the beginning and the end of the phrase respectively (see Fig. 8 and Fig. 9). When a performer has nothing to sing, this precious time is systematically used in the score to provide cues feeding the perfomer's headphone with what is coming next: using the markers previously generated to retrieve their onsets, if the pause is longer than the phrase to sing, (i.e. if the DURANTICIP is greater than DUR (see Fig. 10, and the "then" stance of the "if" statement in the code displayed in Fig. 12), then the cue will need to start at the onset corresponding to the difference between entrance of the singer (START) and the end of his phrase (END), with a 300ms break between the two. If on the other hand, the pause is shorter than the phrase to sing (see Fig. 11, and the "else" stance of the if statement in the code displayed in Fig. 12), Figure 9. The two notes (with lyrics "blo" and "ho" respectively) are separated by a silence longer than 600 ms (ECART1 lasts a bit more than two seconds), therefore two markers are generated.

then the cue needs to start as soon as possible, i.e. as soon as the singers has finished the previous phrase (PREV): Finally, the 'end' markers (the ones named 'fin', as in Fig. 8 at 0'16"200"') are used for score display: the domain to be displayed on the playing staff and on the preview staff of the bach.roll(i.e. the staff-line that is coming next, as for page turns). Fig. 13 shows a coding example for formatting messages aimed at displaying the right portion of the score at the right time on both staves.

Each time the cursor hits one of these markers, the domain display of both 'playing' and 'preview' staves are updated, provoking at the same time an alternation up and down between the position of those staves, so that the passive (or 'preview') roll looks like an anticipation of the active (or 'playing') one, resulting on a 2-staves display with constant preview. 4Figure 13. Message formatting for maker generation in bell.

DYNAMICS IN BACH 0.8.1, IN SEARCH FOR PLAUSIBLE INSTRUMENTAL WRITING MOCKUPS

It is often a danger for a composer to write only what he can hear on his computer, rather than from his imagination directly. First he will limit his palette to what his virtual instruments can do, but also these instruments will always draw his attention to how they sound best, rather than how the instrument they are emulating would sound. However, the simulations of a sample library like ConTimbre5 slightly undermine this statement because of the infinity of timbre combinations it makes available to composers today. Taking advantage of bach 0.8.1 dynamics support, the following proposes an overview of some mockup strategies for instrumental writing, showing how bach may be particularly handy in the context of musique mixte (instrumental/vocal music with electronics), notably thanks the control of Ableton Live and/or ConTimbre.

bach-Ableton

The bach.roll object displays notation in proportional time (as opposed to bach.score in mensural notation), and outputs notifications of its playback status in real-time. These notifications can be interpreted in Max For Live in order to synchronize the notation for human players in bach with the electronic tape in Ableton Live. Figure 14 shows how Ableton's playback controls can be accessed through the live-set path of the live object model (LOM), which makes constant back and forth playbacks possible between composition of the vocal/instrumental lines in the score and electronic tape (fixed media) in Ableton, during the compositional process. Here bach ("master") sends playback notifications to Ableton ("slave") though the live.object. We'll examine here the case where bach (the fullscore) is used within Max-for-live to control synthesisers or VSTs.

One way to do this consists in hosting the score in one track (e.g. the master track), and adding one track per instrument e.g. violin on track 1, cello track 2...). Max-for-live devices can send messages to each other (but not signal), so the full-score track can send control data to various instruments (interpreted as MIDI by VSTs). Numerous strategies can be used in bach to map symbolic data to dynamic change. The most common way will consist in using a function stored as slot 6 content, for instance dB function of time (see Fig. 15), to be retrieved during playback with the help of bach.slot2curve, thus mimicking the behaviour of automation lines in a DAW. Very similar results can be achieved by mapping the thickness or opacity of the duration line of the note to dynamic change, using this time bach.dl2curve. In this case the volume of the sound increases if the duration line gets thicker over time. Whilst the MIDI control data of the instrument (noteon pitch velocity noteoff...) is sent to the entry of the VST, such automation-like gain/volume control must be placed at its output. Some difficulties then emerge with this approach to MIDI-to-VST-instrument communication:

-MIDI velocity and volume/automation data tend to contradict each other (e.g. what is the velocity of a crescendo dal niente?) -crescendos and diminuendo merely multiply the signal's value without changing its spectral content (Risset famously evidenced the correlation between loudness and brightness in his trumpet study [START_REF] Risset | Exploration of timbre by analysis and synthesis[END_REF]) -pitch-wise, MIDI communication needs to rely on pitch bend, which is relatively easy when dealing with finite values such as semi/quarter or eighth of tones. Pitch bend can however be more error prone than straightforward MIDIcent communication (supported by contimbre through OSC communication) when dealing with non-approximated pitch value (e.g. making sure that 59.99 sounds "C" etc...).

bach Controlling ConTimbre via OSC

ConTimbre is a large database of orchestral sounds (87000 samples, 4000 playing techniques). Its use in conjunction with bach promisses being of interest for plausible mockups using instrumental extended technique, with clear possibilities in the realm of algorithmic composition. Considering one instrument (e.g. flute), each playing technique can be considered in bach as a list of slot information describing note-head, articulation, textual information to display on the score, and control data assigning that note to a specific playing technique of the ConTimbre library. The lisp-inherited data structure of bach allows to represent all this information as a tree. 7The OSC syntax of ConTimbre also allows for precise control over dynamic change. Dynamic changes will therefore simulate true crescendi or diminuendi by sample interpolation. In a trumpet crescendo for instance, the timbre or harmonic content of the sound will transform over time, from low to high regions of the spectrum. To do so directly from notation information retrieval, the dynamic of the note is treated differently whether it is stable (i.e. if the dynamics list contains only one symbol e.g. f as "forte"), or if it changes over time (e.g. if the dynamics list contains 3 symbols e.g. o <fff as "crescendo dal niente a fff"). The figure below routes dynamic information accordingly. If the dynamic information contains 3 symbols, it will send to ConTimbre a noteon message with its initial dynamic, followed by a "dynamic" message containing the duration of the note and the target value.

bach, dada and attempts at using AI-inspired techniques

A playback engine such as the one described above (bachcontimbre could lead to interesting research in timbre combination and computer-aided composition, using techniques borrowed from AI in particular. Attempts are currently undertaken at classifying data with the help of the dada [START_REF] Ghisi | dada: Non-standard user interfaces for computer-aided composition in max[END_REF] library. 8

CONCLUSIONS

Recent improvements of the bach library for Max open promising perspectives in the realm of algorithmic composition, with the implementation of the bell language in

Figure 1 .

 1 Figure 1. A tree representation of the following list: "addchord 2 [ 1000 [ 6000 4641 127 [ slots [ speed 24 ] [ seek 1954 ] [ respect 109 ] [ file be.aif] [ size 12 ] [ volume 1. ] ] ] ]"

Figure 5 .

 5 Figure 5. Common Ground. Photography: Simon Strong.

Figure 6 .

 6 Figure 6. Deliciae (Madrid version). Photograpy: Enrique Muñoz

Figure 7 .

 7 Figure 7. The script above adds markers only when two notes are separated by more than 600ms.

Figure 10 .Figure 11 .

 1011 Figure 10. When the pause is long (or very long....) the cue needs to be provided as late as possible i.e. just before the singer's entrance. The corresponding onset value is 0'46" because START*2 -END = 48,5*2 -51 = 46

Figure 12 .

 12 Figure 12. Coding example in bell

Figure 14 .

 14 Figure 14. Max For Live device syncing bach and Ableton.

3. 2

 2 Controlling VSTs in Ableton via bach: the drawbacks of MIDI

Figure 15 .

 15 Figure 15. bach.slot2curve allows for automation curve retrieval.

Figure 16 .

 16 Figure 16. Dynamic information is routed according to the length of its list: "fff >o" contains 3 symbols.

Figure 17 .

 17 Figure 17. The message 'dynamic "from max 1" 8400. 1 2742' demands ConTimbre to reach velocity 1 in 2742ms"

Video of the performance: https://youtu.be/ZrLgbBw4xfU

Video of Sevilla's performance: https://youtu.be/zxnznD0Gzo0

See parameters tweaks on the right hand side for demonstration here: https://youtu.be/OKkiySEagm0

See for instance the tenor part: https://youtu.be/NLpI OpFcTs

https://www.ConTimbre.com/en/

The concept of slot in bach consists in attaching various kinds of metadata to a single note.

See https://youtu.be/cAtcMUKbQbs for demonstration.

See for demonstration : https://youtu.be/UxaEuKtXb8 and https://youtu.be/ByeIyRLnX-w.

Acknowledgments

The author would like to thank Andrea Agostini, Daniele Ghisi, and Jean-Louis Giavitto from the latest improvements of bach. In memoriam Eric Daubresse who highly supported Cage, the first extention of the bach library.


Jonathan Bell
email: belljonathan50@gmail.com

Sir Aaron Wyatt
email: aaron.wyatt@monash.edu

Zelman Cowen

COMMON GROUND, MUSIC AND MOVEMENT DIRECTED BY A RASPBERRY PI

This paper describes Common Ground, a piece for six dancing singers and electronics, in which the coordination between performers is ensured by a RaspberryPi-embedded node.js web application. The singers received synchronised scores in the browser of their phone, which they wore in head-mounted display in order to free their hands and enhance their scenic presence. After a description of the artistic project, the elaboration of the score is examined under the categories of movement notation (how trajectories are embedded in musical notation), spectral composition (microtonal tuning between synthesised sounds and human voices), algorithmic processes (how the recent bell coding language facilitates processes for which Max patching is ill-suited). The article finally describes the Raspberry implementation, outlining potential ameliorations of the current system, including dns support and unnecessary dependance on a dedicated router.

INTRODUCTION

Common Ground, by the Spanish artist Keke Vilabelda, is an immersive installation with large paintings, videos, and three tons of salt covering the ground. Commissioned by the Grau Projekt art gallery in Melbourne [START_REF] Hope | Scoring an animated notation opera -the decibel score player and the role of the digital copyist in 'speechless[END_REF] , it reflects on the common features of landscapes (salt lakes) situated at antipodes of one another (Spain Australia). The initial idea of the musical piece of the same name was to take advantage of this beautiful immersive space, and use it as set design for the performance of six female voices accompanied by electronics2 (see Fig. 1). The poems chosen for the piece, by the English poet Robert Bell, take the sea as source inspiration -the horizon, natural elements, treated as points of departure for meditation upon everyday life.

From the beginning, the visual aspect of the piece revealed itself to be of primary importance, which is why the performative part had to integrate movements/dance, costumes, and find a way for the score to be part of this ecosystem without disturbing it. Indeed after more than ten pieces written for the Smartvox system, with choirs and ensembles of various sizes, the main issue in concert/performance situation concerns more the theatrical restitution of the piece than the music itself. The system allows singers to move freely on stage and around the audience whilst singing with confidence, which gives the work an interesting immersive feeling. However, the way the system has so far been visually presented need to improved. Although the fact that singers wear headphones while singing should arguably be the most questionable source of interference between the singer and his audience, it is in fact their visual presence which is the most problematic when the singer has to break eye contact with his/her audience in order to watch the score [START_REF] Kim-Boyle | 3d notations and the immersive score[END_REF] . Moreover, the presence of the smartphone itself as an object part of the performance seemed most problematic, which encouraged for the search of different solutions.

HMD

Following Mit allen augen, a piece in which singers and instrumentalists wore head-mounted displays and walked freely around the audience, Common Ground carries on with similar concerns, trying to take this idea further by adding a precisely determined choreography. Placed above the head in HMD, smartphones are still rather cumbersome from a theatrical perspective, but SmartVox will probably take advantage in a few years of lighter solutions, such as Vufine glasses (see Fig. 2, left) which proved to be the most discreet, allowing for a mirror display of the score (i.e. of the smartphone's screen) in the corner of one of the lenses of the performer's glasses. Although one-eyed, the display is comfortable and wide enough, unfortunately its hdmi connection too often interfered with the audio output of the phone, making it unreliable in a concert/performance situation. Furthermore, its relatively high cost made it inappropriate for large score distribution [START_REF] Kim-Boyle | Immersive scores on the hololens[END_REF] . Solutions such as QLPP 90 • FOV AR headset (see Fig. 2, center), evocative of Microsoft Hololens imitations, showed interesting results as they allow for holographic display of the score, but the curvature of their glass requires calibration depending on the performer's phone size and their pupillary distance, again inconvenient for efficiency purposes, because of the often limited time for rehearsals in the performance space.

The solution therefore adopted for Common Ground was simply a headset constituted of a double mirror (see Fig. 2, right) for a large and comfortable display slightly above the head of the performer, leaving free the lower field of view, which was appreciated as the performers need to movesometimes rapidly -in the performance space.

Cat Hope [1] and Christian Klickenberg [2] have both used animated notation in several of their operas, giving evidence that these new forms of notation re-shape the roles traditionally assigned to conductor, singers and instrumentalists : the beating of the time by the conductor is not the main point of reference for singers, instruments, lighting etc. . . The scrolling of time with a cursor (as, for instance, in the Decibel ScorePlayer) allows for many processes to be automated, giving the music director a different role. Graphic notation also allows for more freedom of interpretation from the perspective of the performer.

However, those solutions still imply the presence of many screens on stage. An interesting field of research in the domain of AR scores [3][4] consists in using Hololens for display of 3D holographic structures (see Fig. 3), an area which soon hopefully interest a larger community of composers and performers.

SCORE ELABORATION

bach INScore

The notation in Common Ground is conceived as a mixture of singing and movement information. The movement is represented as a graph representing singers are the stage below the musical stave, and was controlled by spatial information stored in bach, so that the choreography could be written in the musical score directly. The movements are then sent from bach to INScore via OSC. INScore [5] is an environment for the design of augmented interactive music scores, opened to unconventional uses of music notation and representation, including realtime symbolic notation capabilities. It can be controlled in real-time using Open Sound Control [OSC] messages as well as using an OSC based scripting language, that allows designing scores in a modular and incremental way. INScore supports extended music scores, combining symbolic notation with arbitrary graphic objects. All the elements of a score (including purely graphical elements) have a temporal dimension (date, duration and tempo) and can be manipulated both in the graphic and time space. They can be synchronized in a master/slave relationship i.e. any object can be placed in the time space of another object, which may be viewed as "time synchronisation in the graphic space". As a result, a large number of operations can be performed in the time domain and in particular, moving a cursor on a score is simply achieved using the synchronization mechanism and by moving this cursor in the time space. Time in INScore is both event driven and continuous [6] , which makes it possible to design interactive and dynamic scores. The system is widely open to network uses [5]: it allows to use both local and remote resources (via HTTP), it provides a forwarding mechanism that allows scores to be distributed in real time over a local network. INScore has built-in solutions for monitoring the position and the speed of cursors in an efficient way.

bach supports by default spatial information in its 9th 'spat' slot. Inspired by Ircam Spat, this slot allows to store position information (x, y), as well as azimut indicating in which direction the source is facing [START_REF] Fober | Towards dynamic and animated music notation using inscore[END_REF] . Designing a movement of one of the singers therefore consisted in sending coordinate changes or interpolations (x, y and azimut) with a given duration (the length of the note, movements be-ing marked in blue, with empty noteheads) [START_REF]Inscore time model[END_REF] . A compositional constraint consisted in avoiding overlapping between dance and singing : the singer never had to move and dance at the same time, rather he/she alternates between singing and moving.

Spectral Composition -Synthesis

The first pieces composed with SmartVox used mixtures of recorded and synthesised sounds [START_REF] Aramaki | Imagine the sounds: anintuitive control of an impact sound synthesizer[END_REF] , but most recent works sound synthesis almost exclusively, because it allows for more precise control over sound as well as harmony. The first piece of the cycle 8 mainly consisted of an exploration of basic wave shaping techniques [START_REF] Risset | 5 -exploration of timbre by analysis and synthesis[END_REF] (hence the overall metallic sonority of the piece). Shir Hassirim 10 , a piece written around the same time, was more focussed on FM synthesis [START_REF] Bhagwati | Elaborate audio scores: Concepts, affordances and tools[END_REF] : through spectral analysis, the goal was to replicate in the choir phenomena like modulation increase. [START_REF] Kenmochi | Vocaloid and hatsune miku phenomenon in japan[END_REF] In the piece Mit Allen Augen 13 , all the electronics were generated from the PRISM laboratory synthesizer [7], whose perceptive model aims for the emulation of sometimes inconceivable sounds, such as a liquid rain of metal. [START_REF] Giavitto | Bell, a textual language for the bach library[END_REF] This material was analysed in bach to extract pitch material [START_REF] Agostini | Bach: an environment for computer-aided composition in max[END_REF] then ready to use for orchestration (for 12 voices and 12 instruments).

In Common Ground, sound synthesis primarily came from the Synthesis Tool Kit [8], accessed through the PerColate library in Max. The physical modelling objects, and brass in particular was of interest as it really captured complex timbral features of brass instruments elsewhere often discussed by Jean-claude Risset and David Wessel [9]. The second source of sound synthesis in Common Ground can be described as a subtractive model, in which dense FM spectra are filtered by FFT filters, so as to obtain clearly identifiable pitch content. [START_REF] Agostini | Programming in style with bach[END_REF] The precise overlapping of voices and electronics is made possible in performance thanks to the recent improvement of smartphones' capacities. On the composer's side, a precise dialogue between electronics and the score is highly facilitated by Max for Live 17 .

Audioscore -Display

Audio scores have been a key concept for the research undertaken by one of the authors [10]. Since a survey by Bhagwati on this topic [11], audio scores seem to enjoy increasing popularity (Stanford audioscore). Our claim is that, when applied to vocal ensemble writing in particular, they allow unprecedented accuracy in the realm of spectral composition, when the singers need to match the harmonic content of the tape accurately.

Working with various ensembles and receiving each time important feedback has confirmed that visual and auditory information need to be anticipated as much as possible : pauses in a singer's separate part always provides aurally what comes next. Also visually, Common Ground adopted a 2-systems-per-page mechanism in which the system that is not playing always anticipates what comes next. 18 3.4 Aspects of the bell language

Introduction: Vocaloid

Common Ground also marks an evolution in the way vocal generation is used in SmartVox, which hitherto consisted in storing path to samples of vocal speech inside each note or each melisma through the slot storing system in bach. 19 This method however presented significant drawbacks : although it made the end result slightly more expressive or convincing, it was extremely time consuming to make phoneme change correspond to note change whilst designing each vocal line. Also reading samples direct to disk often introduced delay which made the result imprecise.

The new method consists in using a vocal synthesizer (AlterEgo Plogue, a free equivalent of the japanese Vocaloid synthesizer [12][13]), using bach's slot storing system to control the synthetiser via midi. This slightly more robotsounding solution has the great advantage to be far more malleable algorithmically, since a new note can trigger a phoneme change. With the discovery of the new bell language [14] in bach [15], the method opened the door to promising experiments in the realm of algorithmic composition.

Bach Evaluation Language for llll -an overview of the bell language

The bell language in bach arose from an observation that the Max patching environment can be cumbersome when formalising algorithmic compositional processes: "It has been clear since the beginning of bach that non trivial tasks -in algorithmic composition -require the implementation of potentially complex algorithms and processes, something that the graphical, data-flow programming paradigm of Max [...], is notoriously not well-suited to." [14]. Single line snippets code in bell often require many objects and cables in Max (see Fig. 4).

Indeed, while the Max GUI can be extremely intuitive and efficient for many DSP processes, its data-flow paradigm can make message formatting efficient in Max (and hence in bach). As exemplified in Fig. 5, bach.eval allows for a single line of code to centralize message formatting, which would have formerly required dozens of objects, themselves most often bringing order or priority issues.

The implementation of variables in the bell language constitutes another major improvement of bach. The ability to name variables in Max (such as ONSET, or DUREE, as in the loop expressed in Fig. 5) and assign them a value helps again centralising information within simple equations, which the message-driven send-receive Max functionality would have made more prompt to error.

Algorythmic composition with bell

Although in germ in Common Ground, a more systematic approach to algorithmic polyphony generation was used in a Deliciae 20 , a piece composed just after Common Ground, while discovering the new bell language (see Fig. 6) [14] [16].

The polyphony of European tradition obeyed extremely strict rules throughout Europe during the Renaissance. Many of those rules discussed in the treatises of the time served 20 A video of the performance is available at: https://youtu.be/zxnznD0Gzo0 as source of inspiration for polyphony generation with the tools exposed above. The first obvious parallel consists in treating each voice as equal, unlike for instance when writing for an instrumental ensemble of a modern orchestra. This is why most polyphonic passages in Common Ground and Deliciae were generated inside a poly˜in Max, with each instance (i.e. each voice) receiving the same information regarding text, prosody, and harmonic material, but only differing by vocal range (sopranos for instance cannot sing below middle C and so forth).

Contrast in Renaissance polyphony often consist in alternation between homophonic passages and contrapuntal ones, which inspired most parameters available to tweak for a given verse: when the variables RANDUR, RAN-DOMONSET, DECAL, and STAGGER are set to 0, the algorithm will generate a homophony 21 (singers articulate and move from one pitch to the next at the same time). If only RANDUR increases, voices will start at the same time, but their duration will differ between each other. If only RANDOMONSET increases, they will all have the same duration but start at different times. If only DE-CAL increase, voice will enter at regular intervals from the bottom-up (and inversely if DECAL is negative). STAG-GER, finally, imitates a behaviour typical of the renaissance where two groups of voices are staggered or delayed by a given value.

Automatic cueing system

Since the beginning of SmartVox (see [17], Fig. 4), cueing the singers with what comes next appeared one of the main advantages of the system.

To identify appropriate moments for page turns and cue-21 See parameters tweaks on the right hand side for demonstration here: https://youtu.be/OKkiySEagm0. ONSET is in milliseconds and correspond to the position in the timeline where the generation is happening : as exemplified in the video 747618 ms correspond to 12'28". The term DUREE (French for duration) represents the duration of notes : the tempo speeds up when durations diminished Figure 8. The first note (with lyrics "dia") has a duration that lasts until the beginning of the following note, (with lyrics "blo"). The distance between the two (ECART1, highlighted in yellow) is almost null.

Figure 9. The two notes (with lyrics "blo" and "ho" respectively) are separated by a silence longer than 600 ms (ECART1 lasts a bit more than two seconds), therefore two markers are generated. ing the singers accordingly, the first step consisted in identifying the start and end of each phrase (see Fig. 7): with iterations on each note of the score two by two, we evaluate if the distance between two notes is superior to 600 ms: in the first case it isn't (see Fig. 8, the two notes are close to one another) and nothing happens. On the following iteration however, the gap between two notes is wider than 600ms (see Fig. 9), so the messages "addmarker fin" and "addmarker debut" are sent to the end of the phrase and to the beginning of the next phrase respectively. When a performer has nothing to sing, this precious time is systematically used in the score to provide cues feeding the perfomer's headphone with what is coming next: using the markers previously generated to retrieve their onsets, if the pause is longer than the phrase to sing, (i.e. if the DURANTICIP is greater than DUR (see Fig. 10, and the "then" stance of the "if" statement in the code below), then the cue will need to start at the onset corresponding to the difference between entrance of the singer (START) and the end of his phrase (END), with a 300ms break between the two. If on the other hand, the pause is shorter than the phrase to sing (see Fig. Each time the cursor hits one of these markers, the domain display of both 'playing' and 'preview' staves are updated, provoking at the same time an alternation up and down between the position of those staves, so that the passive (or 'preview') roll looks like an anticipation of the active (or 'playing') one, resulting on a 2-staves display with constant preview. 22

A RASPBERRY PI HARDWARE EMBEDDED SYSTEM SOLUTION FOR LOCAL NMPS

In search of a light plug-and-play dedicated system to be sent over the post, the Raspberry Pi quickly appeared as the best option to host SmartVox on an embedded system. Node.js runs on Raspbian, and SmartVox proved to be very stable on a Raspberry Pi 3, so, once installed, the only two steps for a 0-conf deliverable hardware were:

• Setting up a static address for a dedicated router (e.g. tp-link...). • Starting SmartVox at boot using linux 'systemd' service.

Starting a script at boot can be done on Raspbian with a file containing the following in the etc/systemd/system: This low-cost system now allows the sending of ready-touse scores. Once the system is power-supplied, all the performers need to do is to join the dedicated Wi-Fi, and type the static IP address of the server on their smartphone/tablet (i.e. for the performers: 192.168.0.100:8000, and for the conductor: 192.168.0.100:8000/conductor). In January 2019, the system was rented to the Caen French conservatoire via BabelScores,23 thus proposing a rental of performing scores (separate parts) of a new kind.

To make configuration even easier in the future, a lightweight DNS server, like dnsmasq, could be installed and configured on the Raspberry Pi to allow performers to enter a friendlier, more human readable address to access the nodejs server. Additionally, new ways of updating the scores on the device could be explored to both simplify the process and to limit the amount of data that needs to be sent out to it. Currently, the most straight-forward way to update the device is to send out a new disk image to be written to the SD card at the other end. Piping the image through xz substantially reduces the image file size, particularly if the filesystem on the card contains a large amount of free space. This can be done using the following terminal commands to first create the image on one end and to then write it on the other: (where /dev/disk3 is replaced by the SD card device name).

To make this process easier for the end user, it could also be possible to have a web server on the device configured to accept the upload of update packages. These would then only need to contain newer versions of resource files (like the videos used for the scores), so that the entire system doesn't need to be refreshed for minor changes.

POSSIBLE AVENUES FOR A FUTURE EXTENSION OF THE WORK

The encounter with the bell language offered the author24 new perspectives in the realm of algorithmic composition.

The linkage with the ConTimbre library in particular offers promising results in the instrumental domain, with at the same time an intuitive control over the generated result as well as a possibly more speculative approach related to machine learning 25 . A future extension of Common Ground with therefore include instruments as well as voices.

CONCLUSIONS

This article presents an overview of the evolution of the SmartVox project, with an emphasis on the artistic project Common Ground, its more systematic use of algorithmic processes for composition thanks to the bell language in

Figure 1 .

 1 Figure 1. The Common Ground installation by Keke Vilabelda at Grau Projekt, Melbourne.

Figure 2 .

 2 Figure 2. Experimentation with various lowcost Head-Mounted Display (HMD) solutions.

Figure 3 .

 3 Figure 3. The Elision ensemble performing David Kim-Boyle's new work at TENOR 2019. Photographed by Cat Hope.

Figure 4 .

 4 Figure 4. A comparison between an llll manipulation process described through a snippet of bell code (in the bach.eval object box, above) and the corresponding implementation within the standard graphical dataflow paradigm of Max (below): The first version is evidently easier to read.

Figure 5 .

 5 Figure 5. A loop calculates the onset of each syllable of a vocal line according to a starting onset (the variable "ON-SET"), a given duration/tempo ("DUREE"), and prosodic accentuation (2 1 1 2 for long short short long).

Figure 6 .

 6 Figure 6. The bell language is mainly exposed in Max through the bach.eval object. $x1, $x2. . . correspond to the different inlets of the object. bach.eval makes the construction of lisp-inherited parenthesis structures much easier than with the data-flow bach.wrap system.

Figure 7 .

 7 Figure 7. The following script adds markers only when two notes are separated by more than 600ms.

Figure 10 .

 10 Figure 10. When the pause is long (or very long....) the cue needs to be provided as late as possible i.e. just before the singer's entrance. The corresponding onset value is 0'46" because START*2 -END = 48,5*2 -51 = 46

  11, and the "else" stance of the if statement below), then the cue needs to start as soon as possible, i.e. as soon as the singers has finished to previous phrase (PREV): START = $x2 : ( $x1 1 ) ; END = $x2 : ( $x1 +1 1 ) ; PREV = $x2 : ( $x1-1 1 ) ; DUR = END -START ; DURANTICIP = START -PREV ; i f DURANTICIP > DUR t h e n ' ; ' t o c u e ' p a s t e 2 * START -(END + 3 0 0 ) 2 e l s e ' ; ' t o c u e ' p a s t e ( PREV + 6 0 ) 2 Finally, onset information from the 'end' markers (the ones named 'fin', as in Fig. 8 at 0'16"200"') are used for

Figure 11 .

 11 Figure 11. When the pause is short, the cue needs to be provided as soon as possible i.e. just after the previous singer's phrase (see the PREV variable).

  display information : the domain to be displayed on the playing staff and on the preview staff (i.e. the staff-line that is coming next, as for page turns) of the bach.roll. ' a d d m a r k e r $x2 : $x1 [ ' p l a y [ $x2 : $x1 ( $x2 : ( $x1 +1)+ 2 0 0 ) ] ' p r e v i e w [ $x2 : ( $x1 + 1 ) ( $x2 : ( $x1 +2)+ 2 0 0 ) ] ]

[

  U n i t ] D e s c r i p t i o n =My s e r v i c e [ S e r v i c e ] E x e c S t a r t = / home / p i / D e s k t o p / h e l l o . s h [ I n s t a l l ]WantedBy= m u l t i -u s e r . t a r g e t With the hello.sh script containing the following to launch the server: # ! / b i n / b a s h cd / home / p i / D e s k t o p / r i s s e t npm r u n s t a r t e x e c b a s h

  s u d o dd i f = / dev / d i s k 3 b s =4m | xz > common2 . i s o . xz x z c a t common2 . i s o . xz | s u d o dd o f = / dev / d i s k 3 b s =4m

https://www.kekevilabelda.com/common-ground

A captation of the performance is available here : https://youtu.be/ZrLgbBw4xfU

See for instance SmartVox in India: https://youtu.be/7 FMqLg9vHM

Performances using this system often require large ensemble, up to 80 performers in Le temps des nuages nuages, 12 instruments and 12 voices in Mit Allen Augen, or 30 singers in SmartVox.

See https://www.youtube.com/watch?v=sTgTv9yqZhI for demonstration.

See the part of Soprano 1: https://youtu.be/FcF4oNxJweg

See SmartVox for instance: https://youtu.be/JZsJn7EEW-A

See for instance the alto part: https://youtu.be/yWD6u2cPvSc. Slot No4 (the yellow one here) is the one that stores the sample's path.

Babelscores (https://www.babelscores.com/) currently supports actively supporting the SmartVox project: http://1uh2.mj.am/nl2/1uh2/lgi4u.html.The first piece performed in Caen with the Babelbox is available at the following address : https://youtu.be/wUyw0KQa5Wo

 24 To clarify, Bell is author of the article, albeit mere user of the coding language of the same

name.25 See the following for demonstration : https://youtu.be/ByeIyRLnXw bach, as well as the Raspberry Pi implementation of the piece/server.

Acknowledgments

We would like to thank Cat Hope for having made this work possible in Melbourne.


Gérard Maisse

Cryopreservation of rainbow trout sperm and eggs

teaching and research institutions in France or abroad, or from public or private research centers.

MARINE BIOTECHNOLOGY 12th -13th August, 1992 Rennes -Brittany

Pholas dactylus: a bioluminescent marine bivalve mollusc.

MARINE BIOTECHNOLOGY

CRYOPRESERVA TION OF RAINBOW TROUT SPERM AND EGGS

The freezing of reared-fish gametes has a double interest: this is a tool necessary for the diffusion of genetic advance and the freezing of eggs would allow a staggering of the production, which is especially difficult for species which spawn once a year.

Few works have been carried out on fish-egg cryopreservation and scientists have not gone beyond the preliminary study.

The tests have shown that the rainbow trout eggs resistance to cold (-10°C) can be improved with propanediol (20 %) for the "epiboly" and "eyed" development stages with a cooling rate of 0, 1°C/mn. Many studies on sperm freezing have been made showing a high variability of results. The ability to freezing depends on the sperm membrane quality which varies from one ejaculate to another one. A plasma membrane was isolated, allowing scientists to analyze it and to study its composition variations according to the male feeding and the rearing temparature. The main results are as follow:

1) the external membrane leaflet is more rigid than the internai one 2) the membrane fluidity does not adapt to temperature (from 4°C to 24°C) 3) the membrane lipid composition can be modified by the food and the rearing temperature 4) the fitness for cryopreservation is higher when the spermatogenesis has been made at 18°C, compared with 8°C, which could be linked to a lower cholesterol/proteins ratio, a higher quantity of 18:0 or a lower monoinsaturated fatty acids ratio.

INSTITUT NATIONAL DE LA RECHERCHE AGRONOMIQUE (INRA) Laboratoire de Physiologie des Poissons Campus de Beaulieu Avenue du Général Leclerc F-35042 Rennes Cedex Gérard Maisse Fax: 33.99.28.50.20 -Phone: 33.99.28.50.02

	Rennes, 12 & 13 August 1992
	This workshop was organised	by	CR/TT
	Biotechnologies, Chimie fine et Environnement and
	was supported by COMETT AUEF Bretagne and
	the Regional Council of Brittany.


Sophie Moulin

Simulation of the temporal variations of NOAA/AVHRR reflectances. Coupling of functioning model and satellite data