~Proceedings ICMCISMCI2014 14-20 September 2014, Athens, Greece large corpora. Further, the control change representation of transformation parameters means they are dissociated from the grains they act upon, as well as lose precision, being mapped and quantized to 7 bit integers. Instead the present implementation relies on two of the most exciting packages recently developed for MAX: CATART and BACH. 2.1 CATART Corpus-based concatenative synthesis (CBCS) is based on segmentation and description of the timbral characteristics of the sounds in a database or corpus, and synthesis by selection of sound segments from the database matching sound characteristics given by the user. It allows one to explore a corpus of sounds interactively or by composing paths in the descriptor space, and to recreate novel timbral evolutions. CBCS can also be seen as a content-based extension of granular synthesis, providing direct access to specific sound characteristics. It has been implemented in various systems and environments (see overviews of past [8] and presenti approaches to CBCS) and notably in the interactive sound synthesis system CATART [6]. The CATART software system for MAX realizes corpusbased concatenative synthesis in real-time. It is a modular system based on the freely available FTM&Co extensions 2 [9], providing optimized data structures and operators in a real-time object system. CATART is released as free open source software. 3 There is also a standalone application version of CATART available, 4 and a new version based on the MuBU library 5 for MAX [10]. In addition to its capabilities for real-time synthesis, CATART has been used effectively for real- and deferredtime audio mosaicing and computer-assisted composition [11]. In both cases, a live or recorded audio input target is analyzed and compared to a preloaded corpus according to descriptors chosen and weighted by the user. This process may be termed "Corpus-Based Transcription" and the goal is to create a mosaic of samples form the corpus that best approximates one or more audio features of the target. 2.2 BACH BACH is a library for MAX intended to bring CAC into the real-time world [4, 5]. The basic idea behind BACH is that symbolic score generation and modification is not necessarily an out-of-time activity: it can follow the composer's discovery process in real-time and adapt accordingly. BACH's hierarchic representation of data is directly inspired by the most common Lisp-based CAC environments such as OPENMUSIC [2] or PWGL [3]. BACH's nested lists, where hierarchies are defined via levels of parentheses, are indeed called lllls, an acronym for Lisplike linked lists; see Figure 1 for an example. At the same 1 http://imtr.ircam.fr/imtr/Corpus-BasedSoundSynthesisSurvey 2 http://ftm.ircam.fr 3 http://ismm.ircam.fr/catart 4 http://forumnet.ircam.fr/product/catart-standalone 5 http://ismm.ircam.fr/mubu/ time, BACH's approach to CAC takes direct inspiration from a digital signal processing model and applies such ideas to notes, chords, scores, and symbols in general. At the center of the BACH environment are two score editors, bach.roll and bach.score, which provide flexible interfaces for the representation and modification of musical content. bach. roll expresses time in terms of absolute temporal units (namely milliseconds), while bach.score expresses time in terms of traditional musical units, and includes notions such as rests, measures, time signature and tempo. Each notation editor is equipped with advanced representation features such as support for microtonal accidentals of arbitrary resolution, variable play rate, and the possibility to associate custom meta-data to notes (see section 3.3). Moreover, editing can be performed both through the interface and with messages, which makes bach. roll and bach.score suitable for advanced real-time score handling. 3. ADVANCED RECOMBINATION OF MODULES In order efficiently to implement CBCS with CATART and BACH, high-level capabilities of each system must be leveraged for the best performance. 3.1 Real-time BACH Usage BACH is distinguished from other CAC tools by its realtime capabilities, therefore efficiency and cost are primary concerns. However as bach.roll and bach.score also support the flexibility of a user-friendly interface, they are not the most efficient by default. When real-time performance is a priority, several parameters can be disabled for optimization-undo, redraw during playback, and display of mouse-over legends-by setting the respective parameters maxundosteps, highlightplay, and legend to 0. 3.2 Lambda Loops In computer programming it is often useful to combine two functions, operators, or objects in order to represent a specific sub-class of a wider process. Different programming languages offer different constructs to do this, and Lisp's lambda functions are probably among the most specific, powerful, and elegant. They are particularly relevant in the field of CAC because of the use of Lisp-based programming systems. MAX does not explicitly include such a concept; however its underlying callback-based structure easily allows the addition of a similar functionality to externals as well as abstractions. Several BACH modules, especially those implementing iteration-based operations, return single elements (proposals) from their rightmost outlet or outlets and expect an immediate return value for that proposal in their rightmost inlet. For example, an object filtering out elements from a list will propose elements one by one, and for each of them expect a return value expressing acceptance or refusal; an object sorting a list will propose pairs of elements, and for each pair expect a return value stating whether the pair is in the desired order or not. Return values are not always booleans: for example, the bach. mapelem abstraction proposes list elements - 1038 -
Top of page Top of page