Bol Processor open-source project: https://bolprocessor.org


Bol Processor BP2

Rencontre de deux mondes musico-informatiques


Nous présentons ici le logiciel Bol Processor qui peut être téléchargé gratuitement en version MacOS 9 sur le site SourceForge.


Le Bol Processor BP2 est un logiciel MacOS pour la composition et l'improvisation musicale dans les environnements MIDI, QuickTime Music et Csound..

MIDI est le standard le plus répandu pour l'interconnexion des instruments de musique électroniques, et Csound est un langage de programmation pour la synthèse et la transformation de sons développé par Barry Vercoe au MIT. (Voir <http://en.wikipedia.org/wiki/Csound>).

L'idée du Bol Processor remonte au tout début des années 1980, quand l'informaticien Bernard Bel et l'ethnomusicologue Jim Kippen visitaient les experts du tabla de Lucknow, au nord de l'Inde, munis d'un Apple IIc et de son moniteur LCD presque illisible. Le terme "bol" désigne en fait les onomatopées utilisées par les percussionnistes indiens pour identifier les diverses frappes de l'instrument.

Jim utilisait l'éditeur de BP1 pour entrer dans l'ordinateur des improvisations rythmiques à la vitesse où elles étaient interprétées (jusqu'à environ six bols par seconde). Il mettait ensuite au point des grammaires qui permettaient à BP1, comme tout bon système expert, de composer de nouvelles variations que les musiciens accueillaient avec un soupir de désespoir ou un grognement de satisfaction ;-)

A la fin des années 80, lorsque Jim et Bernard sont retournés en Europe et en Amérique du Nord, ils ont découvert des "Macs" dans leurs laboratoires de recherche. BP1 avait été programmé en langage machine 6502 et tournait à une vitesse impressionnante pour un système expert de cette époque. BP2 fut réécrit en langage C et servit de support à une recherche en informatique théorique donnant lieu à de nombreuses publications (voir la bibiographie). Retour à la pratique, en Inde, en 1994, et intégration à l'équipe de Srikumar Karaikudi Subramanian, un jeune musicien de Madras très qualifié en traitement du signal et en informatique.

Avec son entrée-sortie MIDI, et grâce aux interactions fructueuses avec des compositeurs fatigués des logiciels musicaux euro-centrés ou simplement imitatifs de styles conventionnels, BP2 est devenu un environnement flexible pour la composition musicale qui laisse muets les séquenceurs et autres logiciels commerciaux. Il est par exemple très doué pour la résolution de problèmes rythmiques complexes, dans lesquels il traite des systèmes de contraintes arithmétiques issus d'une description incomplète des structures temporelles.

Exemple élémentaire: on souhaite superposer deux séquences d'objets sonores: "a b c d e" et "f g h". Dans la syntaxe de BP2, cette superposition est simplement notée à l'aide d'une expression polymétrique::

{a b c d e, f g h}

BP2 calcule les durées symboliques (relatives) de chaque objet 'a', 'b'... et superpose les séquences de la manière suivante:

a _ _ b _ _ c _ _ d _ _ e _ _

f _ _ _ _ g _ _ _ _ h _ _ _ _

(diagramme de phases)

qui correspond à ce que l'on pouvait attendre intuitivement: "trois dans cinq". (Le symbole '_' indique la prolongation de durée de l'objet qui le précède.) L'expression polymétrique complète inférée (sur la base d'une complexité minimale du résultat) serait notée:

{a _ _ b _ _ c _ _ d _ _ e _ _, f _ _ _ _ g _ _ _ _ h _ _ _ _}

Le diagramme de phases contient des informations sur la précédence des événements, comme par exemple "l'événement 'g' commence avant 'c'", qui n'étaient pas explicitées dans l'expression polymétrique du départ. Il y a donc bien eu un enrichissement, par un mécanisme inductif, de l'information temporelle.

On peut poser des problèmes bien plus difficiles avec plusieurs niveaux de superposition ou d'imbrication des phrases musicales, chaque séquence pouvant même contenir un ou plusieurs silences de durée indéterminée. L'idée générale est de débarrasser le musicien de tout calcul arithmétique, sans pour autant imposer aucune limitation à la complexité rythmique, afin qu'il puisse se concentrer sur la notation musicale symbolique.

Les matériaux de base de BP2 peuvent être des notes conventionnelles (en notation française, anglaise ou indienne) ou des "objets sonores" qui contiennent n'importe quelle liste d'événements MIDI et/ou d'instructions (score lines) Csound. Il n'y a pas de théorie musicale, indienne ni occidentale, à la base de cette représentation. BP2 ignore en fait tout du contrepoint, de l'harmonie, du raga et du tala, même si l'on peut toujours créer des grammaires formelles basées sur la "syntaxe" d'un système musical connu ou inventé.

Il est possible d'attribuer des propriétés aux objets sonores, par exemple pour spécifier ce que BP2 doit faire lorsque tel objet demande à être étiré ou raccourci, ou encore lorsque deux objets d'une même séquence se recouvrent partiellement. BP2 met en oeuvre, de manière transparente et efficace, un algorithme de résolution de contraintes qui lui sert à calculer les positions temporelles et les coefficients de dilatation des objets. C'est un moyen parmi d'autres de briser la mécanique métronomique, de donner une sonorité "humaine" à la composition, de créer des effets de swing sans pour autant en être réduit à "bricoler" des corrections de détails, ou à programmer des paramètres aléatoires affectant la structure de surface de la pièce musicale. On peut enfin attribuer des paramètres de pre-roll et post-roll aux objets sonores pour régler des problèmes de délai mécanique ou de synchronisation dans les échantillonneurs MIDI.

Comme son prédécesseur, BP2 peut composer une pièce musicale ou une suite de variations sur un thème à partir d'un système de règles dont le format s'inspire des grammaires génératives, avec de nombreux aménagements pour la représentation de répétitions, le contrôle des contextes éloignés, la pondération des différentes règles, etc. BP2 peut aussi analyser une pièce (monophonique) pour vérifier qu'elle est conforme à une grammaire donnée.

Le musicien peut bien sûr se contenter d'une grammaire décrivant les différentes sections de son oeuvre (une production unique et non aléatoire), ou même éditer textuellement une courte pièce musicale. Au lieu d'écrire les notes sur l'ordinateur il peut dans ce cas les saisir à partir d'un instrument MIDI.

BP2 et Csound ont un point commun important: ils utilisent le texte comme principal support de données. Dans BP2, qui exploite aussi l'hypertexte (HTML), on peut noter textuellement des pièces polyphoniques (voir l'exemple précédent) ainsi que des réglages de paramètres comme le pitchbend, le volume, la pression, le panoramique, etc. Ces paramètres sont représentés de manière "vectorielle": s'ils doivent varier de manière continue entre deux valeurs indiquées, BP2 les interpole au moment de les envoyer à la sortie MIDI plutôt que de stocker des centaines de messages intermédiaires (comme dans une représentation "pixélisée"). De ce fait, des formes mélodiques complexes, comme celles que l'on trouve dans la musique indienne, sont faciles à programmer __/\_/\/\.

Dans le format Csound, BP2 reformate les paramètres en fonction de la demande. Il peut par exemple sortir les corrections de hauteur en cents plutôt que les valeurs de pitchbend héritées du format MIDI. Lorsqu'un paramètre varie de manière continue, BP2 fournit à l'instrument les valeurs en début et en fin d'événement, mais il peut aussi créer des fonctions tabulées (function tables) qui décrivent en détail les variations des paramètres à l'intérieur de chaque événement Csound. Ces tables sont ensuite interpolées par Csound, soit linéairement (GEN07) soit en cubic spline (GEN08). Lorsque les objets sonores sont décrits par des séquences Csound (des scores) et non des séquences MIDI, BP2 combine les valeurs de chaque paramètre du score avec celles imposées par l'écriture musicale, en créant chaque fois que nécessaire des fonctions tabulées. Ces combinaisons de paramètres sont, selon les options, additives (ex: hauteur en cents) ou multiplicatives (ex: volume). BP2 gère simultanément pour Csound jusqu'à 250 paramètres arbitraires en plus des cinq paramètres prédéfinis: pitchbend, modulation, volume, pression et panoramique.

Des professeurs de musique utilisent BP2 pour initier leurs élèves à MIDI d'une manière pas trop rébarbative. Mais les fans de Csound qui ont passé plus d'une décennie à taper des scores vont peut-être découvrir que BP2 est l'outil dont ils rêvaient pour sortir de la routine... Il suffit de donner à BP2 un minimum d'informations sur l'orchestre Csound pour qu'il exploite tous les paramètres des instruments, y compris ceux qui n'ont pas d'équivalents dans le domaine MIDI. En fait, BP2 exploite simultanément MIDI et Csound, le premier pouvant servir à mettre au point une "maquette" de la composition musicale sans passer par le compilateur du second.

Nous souhaitons créer un environnement de composition approchant le "temps réel" avec Csound. BP2 passerait à Csound les lignes du score par l'intermédiaire de messages comme les Apple Events, et non plus de fichiers, de sorte que Csound pourrait les traiter dans un délai minimum.

BP2 est une application client-serveur. Il peut par exemple tourner en tâche de fond pour jouer sur MIDI ou sur Csound des pièces musicales stockées dans une base de données standard comme FileMaker Pro®. Il réagit aux Apple Events et à des messages en temps réel envoyés sur MIDI. Il est bien sûr bien moins versatile que Max pour ce qui est de l'interactivité, mais sa réaction à un message MIDI peut être plus élaborée: plusieurs BP2 peuvent improviser ensemble, chacun avec sa grammaire, en échangeant des messages de synchronisation, de changement de tempo, de modification de paramètres dans les grammaires, etc. Par exemple un message peut être du style "c'est à ton tour de jouer", mais il peut aussi vouloir dire "dans 4 secondes ce sera à ton tour". Dans le second cas, le système expert essaie d'achever le travail en cours dans le temps imparti, et si ce temps est trop limité il relâche toutes les contraintes pour ne pas manquer le rendez-vous.

BP2 a un langage de script dont la syntaxe et la fonction d'enregistrement ressemblent à celles d'AppleScript. Les scripts sont pratiques pour automatiser certaines fonctions, notamment lorsque l'ordinateur est utilisé sur scène.

Les versions récentes importent et exportent des fichiers MIDI type 0, 1 et 2.

Que dire d'autre? Lire les nombreux développements récents, qui introduisent des outils sériels (rétrogradation, etc.) et un outil "flexible" _tempo permettant de contrôler le tempo de manière autonome sur des séquences superposées (effet polychrone).

Consulter aussi le diaporama PowerPoint créé en octobre 2006 à l'occasion de conférences invitées à Graz (Autriche) et Edinburgh (Royaume-Uni) : <https://bolprocessor.org/bol-processor-bp2-slideshow/>. Ce diaporama contient de nombreux exemples musicaux au format MP3.

Il faut ensuite essayer BP2 en suivant le manuel "QuickStart" fourni avec la documentation, qui contient de nombreux exemples. Il est facile de naviguer sur l'interface de BP2, sans surprise pour un habitué de MacOS, et de découvrir les fonctions grâce à l'abondante documentation en ligne.

Un musicien nord-américain utilise BP2 pour la conception d'un système lui permettant de converser avec des dauphins. Pour toute communication supra-aquatique il est préférable d'écrire aux développeurs.

Bernard Bel
CNRS - Laboratoire Parole et Langage (Aix-en-Provence)
<bel(arobase)lpl.univ-aix.fr>


Bibliographie


Parenthèse importante...

... dans la mesure où Opcode Max est souvent cité en référence.

BP2 et Max partagent la même philosophie de non-allégeance à une théorie musicale particulière.

Contrairement à Max, BP2 exploite deux environnements, MIDI et Csound, articulant l'un sur l'autre comme indiqué schématiquement ci-dessous:

Max n'exécute que des opérations arithmétiques classiques alors que BP2 possède des algorithmes de résolution de contraintes à deux niveaux:

Il est envisagé d'intégrer à BP2 d'autres algorithmes de résolution de contraintes, notamment au niveau du pattern matching dans les règles de réécriture (en s'inspirant de l'algorithme d'unification de Prolog II).

Max permet surtout de contrôler la structure de surface d'une pièce musicale; il n'est pas facile de garder une mémoire à long terme des événements antérieurs. BP2 s'intéressant aussi à la structure profonde, il est plus orienté vers la composition que vers l'improvisation.