jackyvuillemin.free.fr
left_arrow Linux
left_arrow Astronomie
left_arrow Chauffage
left_arrow Vélos
left_arrow Electrolyse
left_arrow Liens

Tuxophone, improvisation d'un programme C "musical"

Cet instrument est purement virtuel !!!!!! :-)

Il y l'approche "MIDI"   qui est abordée à coté,  et il y a l'approche  "improvisation"  .....

il y aura peut-etre  un moyen de rapprocher les 2 visions,  on verra plus tard .  En tous cas  la démarche  programmation est très pédagogique.

 

"tuxophone"  se veut  un clavier musical, capable aussi de jouer en  automatique, à partir  d'un fichier "partition'

La musique est une expression artistique, pleine de subtilités,  aux antipodes de la machine ....  

Pourtant, j'ai toujours  cherché à consilier l'inconsiliable, construire  un instrument  de musique   "Electronique" ,

et après  diverses  tentatives - Orgue électronique, Convertisseur  Numérique/analogique, Oscillateurs bizarres, amplis,   .. 

j'ai un ordinateur sous la main, avec un génial système d'exploitation,  on va voir ce qu'on peut faire !!!!

Ma carte son: lspci->  "Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 07)" 


Vous oubliez l'ancienne version, voici la version 2 du programme, qui sait  lire une partition plus élaborée,  et grace à la carte son SBLive,  on peut  exécuter plusieurs programmes en même temps,  ce qui permet la polyphonie. On change de cour !
Sur cette version, seul l'instrument 1 = piano a été un petit peu travaillé...  
 
Voici une procedure pour  jouer manuellement tux0    "./tux0"
Une procédure pour jouer une ligne à la fois  tux   Exemple "./tux     2     tartine-de-beurre.tux"    
Une procédure pour jouer les lignes 1,2,3,4  à la fois  tux4     "./tux4     tartine-de-beurre.tux"
 
Pour compiler avec "make"   Makefile  et la source :  tuxophone.c

A lire et jouer                              Norme-de-saisie.txt          gammes.mp3  

Exemples de partitions               tartine-de-beurre.tux     Panthere-rose.tux  

Resultats avec ma carte son :      tartine-de-beurre.mp3   Panthere-rose.mp3    

Sur la page d'accueil .... :          frere-Jacques.tux   Frère Jacques.mp3

 

Note: pour convertir en mp3,  j'utilise la sortie son branchée sur un autre ordinateur ,   et le logiciel Audacity ( Il est super ce programme,  merci aux auteurs)    Si je fais  l'enregistrement sur la même machine en bouclant la sortie sur l'entrée , il y a des petits  craquements inexpliqués qui apparaissent, sans doute un probleme de partage au niveau de la carte son.

Question: pourquoi ne pas utiliser la norme MIDI  qui existe depuis longtemps,  et est mille fois mieux ...  Je veux pouvoir saisir les partitions en format texte.  C'est le but initial  de l'essai et la  musique  semble facile  à  saisir et  à  maintenir, à condition de  bien noter les numéros de mesure sur la partition.  On peut imaginer un outil de conversion vers ou depuis midi. Comme éditeur, j'utilise "gedit" .

Question: Pourquoi avoir en mode manuel une correspondance clavier/note si bizarre ... Je me suis inspiré du clavier de certains accordéons qui ont les touches très rapprochées, disposition de clavier qui permet de jouer très vite. 

Suite en chantier:  Transposition, En mode manuel écriture de ce qui est joué pour faire des copier/coller vers un fichier, nouveaux sons,gestion des signes de reprise, coda etc  ...   pour ne pas avoir à duplliquer inutilement des parties identiques... comme  les  vraies partitions.

 

Sentiments de l'auteur:  C'est pas fini !

Le résultat varie selon les cartes son ..pas encore très au point . Les cartes son hda/Intel par exemple ne supportent pas le partage des /dev/dsp,du moins je n'ai pas réussi à les utiliser ainsi!   Il faut ajouter  dans ce cas  une couche  logiciel "partage du dsp"  , qui ferait le mixage des voix .  On verra plus tard  . Cela a certainement déjà été fait.  

Un problème non encore résolu: Modifier le comportement du clavier, pour avoir un son dont la puissance dépende de la frappe .. toute idée est bienvenue ...

D'abord  je vais regarder  comment fonctionnent les outils "officiels"  en  MAO  , en particulier les logiciels  qui utilent un fichier texte en entrée: Je pense à Lilypond  qui a une   approche très  voisine  pour la notation musicale. (par contre abc est  trop dilué et pas assez  compressé )

La prochaine  version devra donc etre compatible lilypond ... il y a un peut de boulot !  

L'idée serait  donc de continuer dans un langage compatible avec Lilypond, ce qui permettra de passer d'un programme à l'autre , et  de convertir en format MIDI , lilypond sait le faire  ... 

Tuxophone: V3- Prog.C - API PCM

Pour la suite de la découverte de la programmation sonore sinon musicale, voici le code précédent modifié pour utiliser l'API  PCM d'Alsa, le reste du programme restant identique.

En pratique cela  revient à remplacer les "write" de la V2 par des "snd_pcm_writei" , l'environnement étant un plus plus élaboré.  Pas de probleme particulier, sauf la comprehension du comptage des buffers,  j'en envoie un à la fois vers la carte ... ce qui fait 4 octets ...si je ne veux pas avoir de délai entre la pression de la touche et le son.  

Attention au niveau de la compilation, il faut ajouter -lasound en parametre gcc.

Pour compiler avec "make"   tux-v3/Makefile et la source : tux-v3/tuxophone.c
 
Dans cette nouvelle verison, seule la voie 1 a été  reprise avec la nouvelle dynamique du programme, il reste les autres à corriger.
 
Pour la suite, si suite il y a, je reste sur ce mode de travail plus "moderne" , le résultat semblerait  plutot meilleur, des craquements ont disparu.
 
Astuce importante: la commande " xset r off "supprime la répétition des touches, quand vous jouez au clavier , c'est plus sympa.