Archives de Catégorie: Musique et programmation informatique

Comment un ordinateur peut-il traiter la musique ?

Vous êtes-vous déjà posé la question de savoir comment un ordinateur pouvait traiter la musique, la jouer, l’imprimer,… ?  En quelques clics de souris, vous pouvez positionner des notes à l’écran.  L’ordinateur vous les imprime sur papier, et en plus il vous les joue…  Peut-être trouvez-vous cela tout naturel, mais lorsqu’on pense au nombre incroyable d’opérations, de manipulations de données, de calculs et raisonnements qui contribuent au résultat, on ne peut s’empêcher d’être fasciné par cet exploit.  Visite guidée dans les coulisses d’un logiciel musical…

A la base de la puissance de calcul d’un ordinateur, c’est le microprocesseur.  Il permet de manipuler des nombres de manière très rapide, sous la forme d’opérations élémentaires.  Il peut en effectuer des centaines de millions, voire des milliards par seconde.  Ces opérations élémentaires sont des additions, soustractions, divisions, transfert de données en mémoire, décisions élémentaires,…  Ainsi un PC Pentium IV à 800 MHz, cela signifie que le microprocesseur est un processeur du type Pentium IV (ce qui détermine son architecture interne et les opérations qu’il peut effectuer) et qu’il peut exécuter 800.000.000 d’opérations élémentaires par seconde.

Par analogie, vous pouvez concevoir le microprocesseur comme un petit personnage qui manipule des nombres.  Il ne possède aucune intelligence propre, mais il est capable d’exécuter méticuleusement les instructions qu’on lui donne.  Il possède des tiroirs internes (appelés registres) dans lesquels il peut inscrire des nombres.  Il peut également accéder à la mémoire de l’ordinateur, qui comporte des centaines de millions de tiroirs élémentaires pouvant contenir chacun un nombre compris entre 0 et 255.  Lorsqu’on parle d’une mémoire de 128 Méga, cela est comparable à une immense armoire comportant +/- 128.000.000 de tiroirs, chacun capable de mémoriser un nombre d’une valeur comprise entre 0 et 255.  Le microprocesseur a accès à chacun des tiroirs et peut aller y lire le contenu et modifier le contenu.

Le paysage journalier du microprocesseur est rébarbatif et fort peu humain.  Il peut transférer des nombres d’un tiroir dans un autre, additionner des nombres, les soustraire, les comparer,…  Il passe son temps à cela uniquement, sans comprendre le moins du monde à quoi cela peut bien servir.  Il suit simplement les instructions qui lui sont données par le logiciel, sans la moindre réflexion.  L’intelligence apparente d’un logiciel vient de l’être humain qui l’a programmé.

Puisque le microprocesseur ne manipule que des nombres, comment peut-on alors l’amener à traiter de la musique, du graphisme, des bases de données,… ?  Tout l’art de l’informatique consiste à utiliser ces nombres pour représenter les données à traiter et ensuite traiter ces nombres de manière à réaliser les tâches désirées (imprimer une partition, écouter le résultat sonore,…).  Représentersignifie simplement ici attribuer par convention une signification. 

Ainsi pour représenter une note de musique, on choisit par convention de préciser sa hauteur par un nombre compris entre 0 et 127, dont le Do central du piano est représenté par la valeur 60.  Le chiffre 61 représentera la note suivante, le Do dièse.  62 sera le Ré, etc.  La série de chiffres 60, 62, 64, 60, 60, 62, 64, 60 représente le début de la mélodie « Frère Jacques ».  Puisque chaque demi-ton musical est représenté par une différence d’une unité, si l’on veut ensuite transposer cette mélodie une octave plus haut, il suffira d’ajouter la valeur 12 (une octave = 12 demi-tons) à chaque note de la mélodie et on aura donc la série 72,74,76,72,72,74,76,72. 

Sans titre

 

En manipulant (addition) des nombres, l’ordinateur a manipulé (transposé) la musique.  Pour cela, il a simplement pris le nombre du premier tiroir, il y a additionné la valeur 12, et a replacé le résultat dans le même tiroir.  Ensuite il a fait de même pour les autres tiroirs.   L’exemple ci-dessus est évidemment fort simplifié, car ces 8 chiffres ne donnent que la hauteur des notes, mais pas la force à laquelle elles sont jouées, ni la durée pendant laquelle une note doit être maintenue.  Pour améliorer notre modèle on peut représenter chaque note par un groupe de 3 nombres : (hauteur, force, durée). 

Une mélodie serait alors représentée par un ensemble de groupes de 3 nombres, chacun représentant une note et ses caractéristiques (appelées couramment « paramètres »).  En ajoutant de cette manière des paramètres aux notes, on pourra affiner la représentation de cette note en nombres.  En gagnant de la précision, on augmente évidemment la quantité de nombres manipulés pour chaque note, mais rappelez-vous : le microprocesseur peut en manipuler des quantités phénoménales en très peu de temps et il vous aura transposé toute une symphonie de Beethoven en moins de temps qu’il ne vous faut pour lui en donner l’ordre.   De même, pour la représentation graphique de la partition sur une page, il s’agit de convertir les positions en nombres, représentés par exemple en dixièmes de millimètres. 

L’aspect graphique d’une note pouvant être très varié, de nombreux paramètres seront ajoutés pour pouvoir la représenter.  Plusieurs dizaines de nombres peuvent être nécessaires pour indiquer la hauteur de la hampe de la note, son sens, sa distance graphique par rapport au début de la mesure, son appartenance à un accord, à un groupe de ligatures, son altération accidentelle éventuelle,…  Une mesure pourra être représentée par un groupe de nombres, comportant sa largeur, sa position sur la page, le type des barres de mesures, la clef, l’armure,… ainsi que par un tableau de notes, de silences et de symboles.  

La portée pourra être représentée par un tableau de mesures.  Le système par un tableau de portées.  La page par un tableau de systèmes.   D’un bout à l’autre, chaque aspect de la partition est transformé en un nombre et un document musical devient un ensemble structuré de nombres représentant une partition.   D’un logiciel à l’autre, les conventions internes pour représenter les divers éléments musicaux peuvent varier très fortement, mais la méthodologie reste la même.  Si les principes énoncés ici sont simples, la mise en application devient vite complexe, car les paramètres se multiplient et se combinent pour les opérations à traiter. 

Ainsi, pour transposer une note, il ne suffit pas d’ajouter le nombre de demi-tons en plus ou en moins, mais il faut adapter son aspect graphique (déplacer sa hauteur sur la portée, recalculer le groupe des ligatures auquel la note appartient, modifier son altération accidentelle, déplacer les symboles qui lui sont attachés, etc).  Une opération peut de cette manière avoir des répercussions diverses dans le reste de la partition et le traitement peu devenir fort complexe. 

C’est donc à cela que le programmeur passe ses (milliers d’) heures de travail : décrire les manipulations des structures de données pour que l’ordinateur puisse réaliser une tâche précise.  Les séries d’instructions qui en découlent forment ce qu’on appelle un logiciel.  C’est simple, non ?

Musique et programmation informatique ont des affinités

Chez Arpege Music Software Development, nous sommes étonnés ces derniers temps de découvrir à quel point musique et programmation informatique sont des passions connexes pour nombre de jeunes.

Les exemples valent d’abord et surtout pour le web anglo-saxon. Nous pouvons lire dans un forum général que tel musicien connu est aussi un programmeur, ensuite nous tombons sur un entretien sérieux qui essaie de déterminer les circonstances favorables à l’éclosion d’un tel lien et qui, même, veut établir des règles strictes en vue de relier musique et programmation.

Dans un autre forum, un long échange de même nature prétend explorer les sentiers où se rejoignent naturellement composition musicale et code informatique.

Sur le site de l’Institut National de la Santé aux Etats-Unis, nous trouvons une étude scientifique (signée par Schmithorst VJ and Holland SK) qui confirme les considérations publiées sur les forums (par nature non scientifiques) et qui parle de « corrélation entre l’apprentissage de la musique et l’aptitude pour les mathématiques ».

Il semble difficile de prendre au mot ces discussions venant en droite ligne des écoles de la psychologie américaine (principalement le behaviorism et le cognitivism), néanmoins nous remarquerons pour notre part, plus simplement, que musique et programmation :

– sont des systèmes

– ont des règles logiques

Par ailleurs, si les aspects d’apprentissage sont importants en soi, la connexion entre la passion pour la musique et l’enthousiasme pour la programmation informatique ont aussi trait au choix personnel et au contexte familial ou social, en conséquence elle est aussi liée :

– à l’éducation (ce que la famille et le contexte social offre durant l’âge de la vie où l’on est étudiant)

– au goût (un facteur mystérieux, qui peut être qualifié par certains d’élément « naturel » de la personnalité, mais dont d’autres disent qu’il est totalement déterminé)

– à la culture (qui est reliée à une famille ou à une école mais aussi plus généralement aux nations. Pas de « big data » à communiquer ici, mais pour tout qui connaît un peu l’industrie musicale, il apparaît clairement que les musiciens qui sont aussi des programmeurs (ou l’inverse) sont plus nombreux aux Etats-Unis et dans les pays directement influencés par la culture américaine que dans d’autres pays, parce que la culture informatique y est beaucoup plus implantée que dans n’importe quel autre (au passage, notons que cours de programmation informatique viennent de faire leur apparition à l’école primaire en Finlande).

Enfin, d’autres facteurs pourraient intervenir, qui appartiennent au parcours personnel.

Nous terminerons cette brève réflexion d’une manière plus pragmatique, en signalant que les « musiciens programmeurs » et autres « programmeurs musiciens » trouveront un intérêt à visiter notre site http://www.music-software-development.com, où ils trouveront notamment des articles relatifs à la technologie des logiciels musicaux (Midi tutorial, music data structures, etc).

Nous les invitons par ailleurs à nous contacter s’ils estiment qu’ils ont des projets professionnels spécifiques qui pourraient rencontrer les nôtres.

SDK main representative cover

Chez Arpege Music Software Development, nous souhaitons vous aider à rejoindre vos buts en matière de création de logiciels musicaux…

F. Delsaux, Arpege Music Digital Marketing