Bol Processor open-source project:

en français

Bel's life story

Bol Processor BP2


Sound examples

Set your browser to read MIDI files
with the LiveAudio plug-in

by Thierry Montaudon

"Waves" (MP3)
by Harm Visser

by Srikumar K. Subramanian

-gr.Nadaka 1
by Nadaka

Download current version (free)



This is a brief presentation of Bol Processor which may be downloaded from the SourceForge website. This version is currently being ported to Mac OS X. The Carbon version will be available in Spring 2007. Please subscribe to the announcement mailing list to stay in tune.

We recommend readers to view the recent (2006) PowerPoint slide show on Bol Processor.

Bol Processor BP2 is a MacOS shareware program for music composition and improvisation in MIDI, QuickTime Music and Csound environments. It won the Bourges 1997 international award (ex aequo with Cecilia) in the category of computer-aided composition and realization software.

Bol Processor dates back to the early 1980s when computer scientist Bernard Bel and ethnomusicologist Jim Kippen were carrying an Apple IIc with its almost unreadable LCD monitor to the homes of expert tabla players in Lucknow, North India. Jim used the customized editor to type rhythmic improvisations at performance speed, and later figured out grammars enabling BP1, the expert system, to compose new variations making musicians frown in despair or chuckle with satisfaction. ;-)

In the late 1980s, the new version of Bol Processor, namely BP2, was developed on Apple Macintosh while Bernard was working in an artificial intelligence lab (GRTC, CNRS in Marseille, France). After 1994 development resumed in India, and later on Srikumar Karaikudi Subramanian joined the venture.

Thanks to the help of Anthony Kozar, Bol Processor is now released as free software (open source) under a BSD-style license and its porting to MacOS X will be completed in Spring 2007. BP development is now hosted by Sourceforge at <>. One of the goals of the open-source project will be to port it to other platforms. Ports to Windows and Linux will be possible depending on the wishes and expertise of the group of developers.

BP2 produces music with a set or rules (a compositional grammar) or from text scores typed or captured from a MIDI instrument. Thanks to interactions with composers tired of Euro-centric music software, it gradually became a flexible environment for composing music that makes sequencers and other MIDI software feel dumb. For instance, it is very smart at solving complex rhythmic problems, as it takes care of integer-ratio arithmetic with the minimum supplied information.

BP2's ability to solve systems of constraints, both at the symbolic and numeric levels, is a significant advantage on other programs (e.g. Max) that handle basic maths only. The authors' contention is that music composition is to a greater extent a constraint-driven design process than the application of stipulatory rules and methods.

A typical illustration of BP2 as a powerful compositional tool in Western contemporary music is a set of examples designed by Thierry Montaudon and Harm Visser. Thierry wrote a few pieces in the style of Steve Reich. Listen for instance to "-gr.NotReich" and see the grammar.

Harm advocated the idea of "composing in an armchair with a pencil and paper", thereby figuring out composition techniques he managed to implement in very concise grammars. See for instance his piano+sax piece (10 rules), listen to the music and to another composition, "Shapes", also based on a simple grammar, unfolding trills on separate layers of time...

Compositions in a "classical" (see -gr.Nadaka 1) and "modern" (see -gr.trialMohanam) Carnatic (South-Indian) styles are also demonstrated. This music, however, cannot be fully performed within the restrictions of MIDI, notably QuickTime Music as you hear it on the browser. Csound examples were designed by Srikumar Subramanian.

A feature common to BP2 and Csound is the use of plain text. BP2 text/hypertext musical score format allows polyphonic music and takes advantage of a vectorized representation of parameters like pitchbend, volume, panoramic, pressure... BP2 interpolates these parameters at performance time instead of storing zillions of MIDI messages. Thus, for instance, the complex melodic shapes of Indian music have now become accessible to computer musicians __/\_/\/\

Csound made easier

Bol Processor has been welcomed by music educators as a comprehensive introduction to MIDI. However, users of Csound who have been patiently keying-in scores for more than a decade will soon discover that BP2 contains the tool they had long dreamed of.

Csound is a public-domain software environment for the design and transformation of digitized sounds. It runs on different systems, among which Unix and MacOS.

See the Csound Wikipedia page <>

Tell BP2 about a Csound orchestra and it will do its best to write scores handling all significant parameters, beyond the limitations of MIDI. Whenever necessary it will also generate function tables describing fine variations of these parameters. Continuous control is exerted on Csound instruments thanks to a customizable mapping of MIDI parameters to score arguments. Additional parameters of the Csound orchestra may also be handled by BP2 even if they are not mapped to MIDI parameters.

Below is a diagram showing the interaction between BP2, MIDI and Csound.

The interaction between Bol Processor BP2, MIDI and Csound. BP2 scores in text format may be typed in, produced by a grammar or entered from a MIDI device. These scores contain simple notes, sound-objects and performance controls. A BP2 score combined with sound-object prototypes works out a direct MIDI output. The same output can be saved to MIDI files which may in turn be exported to sound-object prototypes. The BP2 score combined with a formal description of Csound instruments yields a Csound score. Csound is then invoked to produce a sound file using the orchestra file and the Csound score.

(Bel 1998)

What is does in greater detail...

BP2 deals with sound-objects handled (1) at the symbolic level (where each object is mapped to an arbitrary word) and (2) the lower level of elementary events. These events are messages triggering and controlling sound synthesis processes on an external sound device, either a MIDI synth or a Csound instrument.

A sound-object may be seen as a musical gesture... For instance, a conventional note is a simple sound-object represented as a NoteOn/NoteOff sequence in the MIDI format. Musicians who do not need the sophistication of sound-objects may use simple notes in English, French or Indian notation, or even MIDI key numbers. A conventional 440Hz tone is notated 'A4', 'la3', 'dha4' or 'key#69' in these respective conventions.

Objects are ordered on symbolic time whereas events are mapped to points on physical time. The beats of symbolic time may not necessarily be regular. This compensates for rigidity in the timings of many computer-generated musical pieces.

A major contribution of the BP2 model has been polymetric expressions, here meaning (incomplete) string descriptions of concurrent processes. A polymetric expression can be fully determined (expanded) by an algorithm inferring a strict ordering of sound-objects along symbolic time: should objects 'a', 'b', 'c', 'd', 'e', be superimposed on another sequence of three sound-objects f, g, h, the algorithm would make the following ordering:

The same algorithm is able to process multilayered polymetric expressions and polyrhythmic sequences (the period notation). It also deals with undetermined rests and is complemented with quantization procedures simplifying the complete representation in agreement with the expected time accuracy.

Sound-objects are assigned properties allowing BP2 to calculate their actual durations and locations on the physical time axis. Objects may be performed in striated time (with regular or irregular beats) or in smooth time (with no beat). Durations depend on the "local tempo" and on metrical properties stipulating the acceptable range of object contraction/dilation.

In smooth time, durations may be computed on the basis of time patterns, a hierarchy of time-span intervals that make it very easy to manage flexibility and expressiveness of the timings. This is an advantage on software dealing only with physical time.

Object location makes use of time pivots (anchoring points) that are first located on time streaks. This pivot-synchronization technique was inspired by Marco Stroppa (IRCAM). Topological properties of a sound-object are constraints stipulating whether or not its time interval may be overlapped, whether or not it must be contiguous to that of neighbouring objects, etc. Some objects will be relocated or truncated until all constraints are fulfilled. All this is done automatically by BP2 using a fast constraint-satisfaction algorithm (Bel 1992). The outcoming structure of sound-objects may be displayed in a graphic window before it is performed.

Syntactic extensions of the initial Bol Processor grammar format include remote-context rules, context-sensitive substitutions, dynamic rule weight assignment, programmed grammars, procedural inference control, etc. (Bel & Kippen 1992)

Version 2.8.1 introduced tools for serial music (see A serial killer...). From version 2.9.1 onwards, arbitrary numbers may be used to assign a tempo to any fragment of a polyphonic structure (see ... behind the bars).

BP2 handles glossaries enabling it to communicate comprehensively with various brands of MIDI devices, among which General MIDI. It imports and exports data in MIDI files.

Controlling BP2

All processes in BP2 may be automated thanks to an interpreted script language similar to AppleScript or HyperTalk. Some instructions in the script language deal with responses to the MIDI environment: in the interactive mode, BP2 can be operated and synchronized by instructions received from its MIDI interface. It is possible to synchronize processes, perform or repeat an item, modify tempo, adjust rule weights, etc., using a MIDI keyboard and controllers, a MIDI sequencer, or even another BP2.

Real-time interaction is similar to the situation of several musicians improvising together while they exchange information about parameters like tempo or compositional strategies through conventional (audible or inaudible) messages.

BP2 is able to run in background and responds to Apple Events sent by client applications. It notably makes it possible to store musical data (scores, grammars, scripts, etc.) in standard text data-bases designed for interacting with BP2.

BP2 works under Opcode OMS and can exchange MIDI data with other OMS applications via Inter-Application Communication buses.

With Bol Processor you may find out that your favourite MIDI devices (synth, sampler, drum machine) can do much more than conventional MIDI software would allow. Csound users will also discover a great tool for score design.

Interfacing Bol Processor with SuperCollider is on the agenda.


Bernard Bel <bel(arobase)>
Anthony Kozar <anthonykozar(arobase)>

A few papers related to the BOL PROCESSOR approach

Bel, Bernard, 2006

Bol Processor, an overview. PowerPoint slide show with music examples and PDF presentation. <>

Bel, Bernard, 1990a

Inférence de langages réguliers. Actes des Journées Françaises de l'Apprentissage (JFA 90). Lannion: CNET, pp.5-27.

Time in Musical Structures. Interface, 19, 2-3, pp.107-135.

Acquisition et représentation de connaissances en musique. PhD dissertation, Faculté des Sciences de St Jérôme, Université Marseille III.

Symbolic and sonic representations of sound-object structures. In M. Balaban, K. Ebcioglu, and O. Laske (eds.) Understanding Music With AI. Menlo Park: AAAI Press, pp.64-109.

Modelling improvisational and compositional processes. Languages of Design, 1, pp.11-26.

Two algorithms for the instantiation of structures of musical objects. Internal report, GRTC 458, Centre National de la Recherche Scientifique. (Download PDF version)

A flexible environment for music composition in non-European contexts. Journées d'Informatique Musicale (JIM 96), Caen (France), 1996. (Available with sound examples on <>)

Migrating Musical Concepts -- an Overview of the Bol Processor. Computer Music Journal, 22, 2, pp.56-64.

Bel, Bernard & Jim Kippen, 1992

Bol Processor grammars. In M. Balaban, K. Ebcioglu, and O. Laske (eds.), Understanding Music With AI. Menlo Park: AAAI Press, pp.366-400.

Kippen, Jim, 1987

An Ethnomusicological Approach to the Analysis of Musical Cognition. Music Perception, 5, 2, pp.173-95.

On the uses of computers in anthropological research. Current Anthropology, 29, 2, pp.317-20.

Computers, Fieldwork, and the Analysis of Cultural Systems. Bulletin of Information on Computing and Anthropology, University of Kent at Canterbury, 7, pp.1-7.

Kippen, Jim & Bernard Bel, 1989a

Can the Computer Help Resolve the Problem of Ethnographic Description? Anthropological Quarterly, 62, 3, pp.131-44.

The Identification and Modelling of a Percussion "Language", and the Emergence of Musical Concepts in a Machine-Learning Experimental Set-Up. Computers and the Humanities, 23, 3, pp.199-214.

A Pragmatic Application for Computers in Experimental Ethnomusicology. In Susan Hockey and Nancy Ide (series eds.), Ian Lancashire (guest ed.), Research in Humanities Computing I: Papers from the 1989 ACH-ALLC Conference. Oxford: Oxford University Press.

Modelling Music with Grammars: Formal Language Representation in the Bol Processor. In A. Marsden and A. Pople (eds.), Computer Representations and Models in Music. London: Academic Press, pp.207-238.

Computers, Composition and the Challenge of "New Music" in Modern India. Leonardo, 4, pp.79-84.

Vecchione, Bernard, 1991

Musique et modèles: approche d'une typologie. Analyse Musicale, 22, pp.13-29.