The Bol Processor project

    

The  BOL PROCESSOR  is an open-source platform for music composition and improvisation, created by computer scientist Bernard Bel. It works in MacOS, Linux and Windows environments, and offers real-time MIDI, MIDI file, and Csound output options. BP3 features cutting-edge models of time and tonal structures.

An impressive (yet outdated) AI-generated conversation about the Bol Processor project (NotebookLM, 27 July 2025)

The project is based on a long-term commitment to designing music creation software that address musicological issues — read Roomi Fields for more. Its primary focus is not on developing tools for combining pre-composed music or sound fragments, nor on mimicking existing processes. The aim is to facilitate a coupling between a genuinely creative approach and the high-quality music and sound editing software used by composers and sound designers.

The  Bol Processor  generates music according to a set of rules (a compositional grammar) and/or text scores that can be entered manually, captured from a MIDI instrument or imported from MusicXML scores.

These rule sets are analogous to formal grammars (context-sensitive, remote positive/negative context, etc.) used in computer science to define machine-readable languages. However, the model implemented by  Bol Processor  grammars is considerably different from the way natural languages are described. Beyond remote/proximate positive/negative context-sensitivity, transformational  pattern  grammars and homomorphic transformations permit the construction of style-specific hierarchical structures. These were formalised and implemented in the early 1980s as a tool for musicologist Jim Kippen's fieldwork with expert tabla musicians — see article (1992).

Using  true Bol Processor  grammars, the machine can create and analyse sets of musical variations. Membership tests (parsing) and learning rule weights from examples are essential aspects of identifying the "languages" described by these grammars.

Some grammars used by the  Bol Processor  to represent drumming improvisation lend themselves to automatic learning from examples, as demonstrated (long ago) by the QAVAID project. However, it is important to note that their technical implementation can be leveraged in many areas of formal models, extending beyond its initial focus on Indian drumming.

The  Bol Processor has been used as a compositional tool with considerable success in modelling music in a wide range of styles, including Western Classical and Baroque, Serial, Contemporary and Indian Classical.

👉 Read more in our publications.

In the context of improvisation, sets of eligible rules can be supervised by rule weights (e.g. Mozart's musical dice game and Interactive improvisation) and/or by numerical/logical flags — e.g.  Computing ‘ideas’:

Computing ‘ideas’: numeric/logic flags in a pseudo-Carnatic musical style
composed by Srikumar K. Subramanian on  Bol Processor  connected to a Roland D-50 synthesiser (1995) (détails)

Show Computing ‘ideas’ grammar

Modelling complex melodic/rhythmic phrases is possible with an output in real-time MIDI or Csound:

"Pallavi" of song "Maayaatiita Svaruupini, Nannu brovave" in raga "mayamaalavagaula"
composed by Srikumar K. Subramanian on Bol Processor connected to Csound (details)

Show Pallavi grammar

The polymetric model

One of the great features of the Bol Processor is its ability to represent complex time structures using a polymetric model that is accessible to (human) composers, but at a level of abstraction that encompasses a wide variety of musical genres — listen to examples below!

A grammar creating a polymetric structure along with sound-object and piano-roll displays (more details)

Embedded polymetric structures can create rubato or naturally flowing movements without the need for speed control instructions, as shown in Harm Visser's "Waves":

"Waves" composed by Harm Visser on Bol Processor BP2
connected to physical-model piano and saxophone (1998)

Show “Waves” grammar

The Bol Processor score produced by the "Waves" grammar can be found here. This small file contains time, pitch and velocity data for the entire three-minute piece. (Instructions _transpose(), _keyxpand(), etc., are applied when building the phase diagram.)

The theoretical framework of polymetric structures has been a source of inspiration for the development of other music composition software, including TidleCycles (see Alan Blackwell et al., Live Coding: A User's Manual, MIT 2022, page 195).

“Shapes in Rhythm” composed by Andréine Bel on Bol Processor BP2
(based on Kathak tihais) and played on a Roland D-50 synthesiser (1994)

Show “Shapes in Rhythm” grammar

The fluidity of sound/time objects

The final product of a grammar in the  Bol Processor  is a structure of time objects. These are instantiated as sound-objects, defined as sequences of MIDI out/in messages or Csound instructions. Sound-objects include simple notes, reduced to a NoteOn/NoteOff pair, and simple time objects.

Bol Processor representation of time-objects belonging to a polymetric structure, with symbolic and physical time frameworks.
Sound-objects a, b, c, f, chik, arranged along symbolic and physical time

Sound/time objects are resized and located in physical time by a time-setting algorithm.

The timing of a polymetric structure is dependent upon the resolution of a system of constraints, which is influenced by three key factors: (1) the metric and topological properties of the time objects, (2) the contexts in which they are found, and (3) parameters related to the performance itself, such as "smooth" or "striated" time, tempo, etc. Additionally, input time objects can be employed to synchronise events or to modify parameters in generative grammars.

Sound-objects of "-gr.koto3" produced by BP2.9.8
and played on a Roland D-50 synthesiser (read details)

Time objects can also be reduced to plain (soundless) durations used to create time patterns in smooth time. Here is a very simple example:

{10, t1 t2, {t1 t3 t4, C4 D4 E4 F4 - A4} {t3 t1, B4 C5 _ E5}}

A sequence of simple notes ‘C4’, ‘D4’,…, arranged against a lattice of time-objects ‘t1’, ‘t2’,…, resulting in an irregular "beat" structure in smooth time.

The sound/time object model could easily be applied to other types of events such as the scheduling, sizing and precise timing of video clips, robot commands, and so on.

Milestones in the Bol Processor project

The earliest version of  Bol Processor  (BP1) was implemented by Bernard Bel on an Apple II computer in 1981. An expert system, it was used by Jim Kippen to model the improvisational processes of tabla players in North India — see article (1992) and interview (2021).

This initial version formed part of a research project conducted by the International Society for Traditional Arts Research (ISTAR) in India. It included an acoustic analysis of tonal structures in raga, the results of which contributed to the handling of microtonality in later versions of the Bol Processor — see below. The ISTAR project was widely supported by scholars and specialists in Indian music, as evidenced by their initial feedback.

During the late 1980s, the Bol Processor BP2 emerged as a pioneering shareware application specifically designed for Macintosh computers, marking a significant advancement in computer-aided music composition technology. Srikumar Karaikudi Subramanian's brief collaboration was met with great approval. The theoretical framework was established in Bel's PhD thesis (1990) and further elaborated in several publications.

The application was written in C (before the release of C++) and was optimised for time and memory usage. This remains an important feature of the console to this day, reinforced by the optimisation of modern C compilers and advancements in computer technology.

After implementing its Csound interface, which significantly enhanced its capabilities, BP2 was awarded the 1997 Bourges International Prize (ex aequo with Cecilia) in the category of computer-aided composition and realisation software.

The Bol Processor's innovative approach, in terms of its integration of concepts pertinent to multicultural music models, is discussed in the paper "A flexible environment for music composition in non-European contexts".

Harm Visser, a Dutch composer who developed instruments based on his own modelling method, Eclectic Acoustic Synthesis, collaborated extensively with the Bol Processor project (see examples), resulting in the implementation of serial tools that create 'shapes' in time and tonal spaces. Sadly, Harm became uncontactable after 2013.

In the spring of 2006,  Anthony Kozar joined the project and made the program open source. His intention was to foster a community of developers to port it to other platforms and enhance its music-making capabilities. Anthony completed the porting of BP2 to Mac OS X in June 2007, marking a significant step in expanding the software's accessibility and functionality.

A multi-platform version (BP3) was introduced by Anthony in 2020. The core engine of  Bol Processor  BP3 is a C-language console application that runs on MacOS, Linux and Windows (64-bit processors), plus WASM more recently. It is currently controlled via a PHP interface on these three platforms, but is also distributed as a (free) standalone application on MacOS.

👉  Read the installation instructions.
👉 A preview of the help file is available here.

In March 2025, real-time live coding features have been implemented. These allow users to modify grammars and settings during ongoing MIDI performances, greatly enhancing improvisational flexibility and the creative process. The system immediately reloads changes, making for a seamless workflow in performance and development contexts.

The development community prioritizes advancing research-driven features — such as rule-based generative structures, microtonality, polymetric timing, and applications beyond music (e.g., video, robotics).

Since 2024, AI tools have been used to assist with writing code on the  Bol Processor  project. Real-time MIDI drivers for MacOS, Windows and Linux were developed in under two weeks, and installation procedures were drafted for all platforms with the help of ChatGPT and Claude.

Beyond this basic usage of AI, we believe that transformers can be trained to 'understand' Bol Processor syntax. For example, a large corpus of MusicXML scores (or audio files) can be submitted alongside their corresponding Bol Processor 'translations'. Graph neural networks would probably be eligible for this task. Follow current AI-recognition work and the AI recognition of polymetric notation page.

👉  In 2026, Romain Peyrichou started integrating BP3 into a WebAssembly (WASM) architecture to create interactive links between BP3 and powerful sound design platforms, such as SuperCollider. Visit his website and the Under the Hood page for more details about this project. To accomplish this, the BP3 C code has been patched to compile with Emscripten, in addition to MacOS, Windows and Linux.

Microtonality without preconceptions

J.S. Bach's 1st Prelude matched by Bol Processor against Kirnberger III temperament
Matching J.S. Bach's 1st Prelude in C major
with Kirnberger III temperament. (More details)

In the Bol Processor project, the issue of microtonality is examined from both theoretical and computational standpoints, with a particular focus on tuning procedures.

This marks a departure from speculative models based on frequency number ratios.

Examples are applied to just intonation in Western harmony, temperament in European baroque music — as documented by Pierre-Yves Asselin — and raga intonation in Hindustani or Carnatic music.

BP3 can handle microtonality in both the MIDI and Csound environments. It can be used to adjust the tuning of a polyphonic MIDI instrument by inserting the correct pitch corrections in real time, in accordance with a chosen microtonal scale.

Importing MusicXML scores

A significant advance in recent research has been the import of MusicXML scores used for digitising Western music notation. This has paved the way for the reuse of fragments of musical works in the Bol Processor's syntactic and generative system.

The following recordings are complete musical works, each of which has been accurately "translated" to a single polymetric expression.

Still, the expressive power of the rendering is restricted by the thumb rule of descriptive timings embedded in MusicXML scores. Our ambition is to pair the Bol Processor with realistic performance models, such as synthesis via neural codec language modelling (MIDI-VALLEE).

François Couperin's “Les Ombres Errantes” (1730) interpreted by the Bol Processor + Csound
with a “Rameau en sib” temperament ➡ Image
Source: MusicXML score by Vinckenbosch in the MuseScore community
Scarlatti's Sonata in G minor (1753?) interpreted by the Bol Processor
on a Pianoteq physical-model synthesiser (Steinway D Classical)
with a “Sauveur” temperament ➡ Image
Source: MusicXML score by Vinckenbosch in the MuseScore community
Liszt's 14th Hungarian Rhapsody (1852) interpreted by the Bol Processor
on a Pianoteq physical-model synthesiser (Steinway D Classical)
Source: MusicXML score by OguzSirin in the MuseScore community

Show “14th Hungarian Rhapsody” data (1)

This musical interpretation is an exact reproduction of the (digital) score. An alternative edition of the score yielded a different version:

Liszt's 14th Hungarian Rhapsody (1852) interpreted by the Bol Processor
on a Pianoteq physical-model synthesiser (Steinway D Classical)
Source: MusicXML score by ManWithNoName in the MuseScore community

Show “14th Hungarian Rhapsody” data (2)

Franz Liszt's astonishing La Campanella, composed in 1851, is a good example of the BP3's ability to handle the intricacies of timing in a musical score. This recording shows a performance using the real-time MIDI output:

La Campanella (1851) — Liszt's piano version interpreted by the Bol Processor
in real time on a Pianoteq physical-model synthesiser
Source: MusicXML score by Heavilon in the MuseScore community

Show “La Campanella” data

👉 If you're impressed by this rendition of Franz Liszt's La Campanella, I invite you to broaden your musical horizons by listening to performances by human musicians such as Nobuyuki Tsujii or the composer's great-great-…-grandson, to name a few.

Once again, remember that each of these scores has been computed as a single polymetric structure. The structure can be "exploded" and converted into a grammar with a single click. This allows fragments to be reused in new compositions.

We are fortunate to have at our disposal an acceptable MusicXML transcription of the beginning of a musical improvisation by the great jazz pianist Oscar Peterson:

Beginning of Oscar Peterson's "Watch What Happens" (1974) interpreted by the Bol Processor
on a Pianoteq physical-model synthesiser
Source: MusicXML score by Jonasgss in the MuseScore community

Show “Watch What Happens” data

Visiting this website

Transposition of the Ma-grama basic scale in Indian music displayed by Bol Processor
Transposition of the Ma-grama basic scale in Indian music

This site gives an overview of the main areas of musicology relevant to computer music. Its includes a comprehensive documentation of the algorithms implemented in the  Bol Processor, as well as tutorials designed to facilitate a deeper understanding of related concepts in various musical traditions.

Key concepts and terminology associated with diverse musical contexts are introduced. The contents of this site are adapted to readers unfamiliar with these different cultures.

Musician? Musicologist? Software designer? The ball is in your camp…

As a project hosted by a GitHub open-source repository, we are taking the  Bol Processor  into the next stages of its evolution.

  • Install and try  Bol Processor BP3
  • 🎶 Use the Bol Processor  to create and share with us non-trivial compositions

YouTube video (December 2023) — The Bol Processor Project

⚠️  This video was recorded before the implementation of real-time MIDI input/output, which opened up new creative possibilities, e.g. using multiple instances of BP3, using live coding, and capturing MIDI input.
On the YouTube page, you will find an index for viewing chapters separately.

At the current state of the art, the Bol Processor has reached a high level of theoretical research into time and tonal structures. This project is open to engineers who wish to develop commercial products using (parts of) its algorithms. Collaboration with corporate actors should in turn pave the way for more sophisticated musicological research, while (hopefully) making money from their innovative products…

Donations would be really appreciated! 😀