19.9. ALSA et Midi

Outre la possibilité de lire des données PCM, de nombreuses cartes son offrent également une fonctionnalité MIDI. Le séquenceur Midi ALSA implémente une architecture puissante pour le routage des données Midi. Pour cela, il vous faut les paquetages pmidi, aseqview, vkeybd, awesfx, snd_sf2 ainsi que kalsatools.

De nombreuses cartes son possèdent un port Midi externe pour la connexion de périphériques Midi tels que synthétiseurs, claviers et modules sonores. Si le port Midi de votre carte est supporté par ALSA, vous pouvez utiliser ce port pour enregistrer et écouter des fichiers Midi avec un programme séquenceur (par exemple jazz). Dans le centre de contrôle de KDE, sous Son & Multimédia -> Système son -> Midi, vous pouvez faire établir une liste des périphériques Midi disponibles. Ici, vous pouvez également définir quels périphériques doivent être utilisés pour la reproduction des fichiers Midi. Vous pouvez également, depuis la ligne de commande, faire établir une liste des périphériques Midi disponibles accompagnés de leurs numéros internes de port ALSA en saisissant la commande pmidi -l. Dans le cas d'une carte Soundblaster Live!, cette liste aurait l'aspect décrit dans 19.1, « Périphériques Midi d'une carte Soundblaster Live! ».

Exemple 19.1. Périphériques Midi d'une carte Soundblaster Live!

Port     Client name                       Port name
72:0     External MIDI 0                   MIDI 0-0
73:0     Emu10k1 WaveTable                 Emu10k1 Port 0
73:1     Emu10k1 WaveTable                 Emu10k1 Port 1
73:2     Emu10k1 WaveTable                 Emu10k1 Port 2
73:3     Emu10k1 WaveTable                 Emu10k1 Port 3

Dans la première colonne se trouvent les numéros de port avec lesquels le pilote ALSA s'adresse au périphérique. Dans les autres colonnes se trouvent la désignation et le nom de port du périphérique. Outre le port Midi externe déjà cité, vous trouverez ici plusieurs ports à table d'ondes. Avec une commande telle que pmidi -p 73:0 mysong.mid, vous pouvez faire lire un fichier Midi à travers l'un des ports de la liste.

[Important]Important

Si un lecteur Midi est interrompu lors de la lecture, il est possible qu'un son continu persiste. Dans ce cas, exécutez le script all_notes_off. Si cela ne fonctionne pas, vous pouvez redémarrer ALSA en tant que root avec rcalsasound restart.

De nombreuses cartes son (par exemple Soundblaster AWE et Live!) contiennent un synthétiseur à table d'ondes interne. Celui-ci convertit des événements Midi en sons audibles. Ces événements Midi peuvent être envoyés au synthétiseur à table d'ondes soit depuis un clavier Midi externe soit par un programme (par exemple un lecteur Midi ou un séquenceur). En ce qui concerne les cartes Soundblaster AWE et Live!, le synthétiseur à table d'ondes doit être initialisé avec une fonte sonore (SoundFont) afin que les sons soient audibles.

19.9.1. Chargement de fontes sonores : SB Live! et AWE

Le paquetage awesfx contient la commande sfxload pour le chargement des fontes sonores dans les cartes Soundblaster AWE et Live!. Vous trouverez, par exemple, des fichiers de fontes sonores adéquats sur le CD contenant le pilote de votre carte son. Le script de démarrage d'ALSA peut charger automatiquement les fontes sonores nécessaires au synthétiseur à table d'ondes. Au préalable, les fichiers correspondants du CD Creative Driver devront avoir été installés avec YaST2. À l'heure actuelle, le script ne fonctionne que pour une carte son. Cependant, ALSA peut administrer sans problème jusqu'à huit cartes son.

Les fontes sonores sont chargées à l'aide d'une commande telle que sfxload -D n /usr/share/sfbank/creative/8MBGMSFX.SF2, où n représente le numéro de la carte son (0, 1…). Il est à noter que n n'est pas forcément le numéro sous lequel la carte son est configurée mais dépend de l'ordre dans lequel chaque pilote son a été chargé.

Vous pouvez également charger une des fontes sonores installées dans /usr/share/sounds/sf2. La fonte sonore Vintage_Dreams_Waves_v2.sf2 de Ian Wilson contient 128 sons de synthétiseur analogique ainsi que huit jeux de percussions. Elle est adaptée aussi bien aux cartes SB AWE qu'aux cartes SB Live!. La fonte sonore ROM gu11-rom.sf2 de Samuel Collins est conçue uniquement pour les cartes SB AWE. Elle offre à ces cartes un registre Midi général avancé. Veuillez consulter les fichiers Copyright et la documentation sous /usr/share/doc/packages/snd_sf2. Vous trouverez d'autres fontes sonores sur Internet, par exemple sur http://www.hammersound.net.

19.9.2. vkeybd – le clavier MIDI virtuel

Figure 19.13. vkeybd – un clavier Midi virtuel complet

vkeybd – un clavier Midi virtuel complet

Si vous n'avez pas connecté de clavier Midi externe à votre carte son, vous pouvez utilisez le clavier virtuel que vous offre vkeybd. Ici, les numéros de port internes dont on peut faire établir la liste avec pmidi -l (voir plus haut) sont importants. Le programme est exécuté depuis la ligne de commande avec vkeybd --addr 73:0 &. L'adresse du port doit être adaptée à votre système. Entrez ici le premier port à table d'ondes de la liste. Si vous avez connecté un générateur de sons externe, vous pouvez, bien entendu, entrer également le numéro de port du port Midi externe.

vkeybd dispose encore de toute une gamme d'options. Avec vkeybd --addr 73:0 --octave 5 &, vous pouvez, par exemple, augmenter à cinq le nombre des octaves affichées. Vous pouvez obtenir une vue d'ensemble des options disponibles à la ligne de commande avec vkeybd --help ou dans les pages de man de vkeybd.

Les désignations d'instruments dans la liste prédéfinie peuvent également être configurées en spécifiant un fichier prédéfini avec l'option --preset. Les noms d'instruments peuvent être extraits d'un fichier de fontes sonores à l'aide de la commande sftovkb. Passez dans le répertoire adéquat avec cd /usr/share/sounds/sf2 et entrez la commande sftovkb Vintage_Dreams_Waves_v2.sf2 >~/vintage.vkb afin d'enregistrer les noms dans votre répertoire personnel dans vintage.vkb. L'interface de vkeybd peut être configurée dans le menu affichage.

L'allocation des touches aux notes MIDI envoyées est enregistrée dans le fichier ~/.vkeybdrc. Il est possible de procéder à des extensions dans ce fichier. Si vous souhaitez procéder à vos propres modifications, vous pouvez retrouver les désignations des événements clavier à l'aide du programme xev.

19.9.. Établissement d'une connexion entre des ports Midi

Figure 19.14. Connexion des ports Midi avec kaconnect et affichage du statut

Connexion des ports Midi avec kaconnect et affichage du statut

ALSA offre une infrastructure efficace pour la connexion de différents ports Midi. Les cartes son et programmes Midi (à partir du moment où ceux-ci supportent la structure du séquenceur ALSA) possèdent un ou plusieurs port Midi qu'ils utilisent pour communiquer entre eux. La connexion des ports peut se faire soit avec le programme KDE kaconnect, soit à l'aide de la commande aconnect. Une fois le programme démarré, kaconnect affiche les ports en lecture et écriture disponibles dans le système ainsi que leur état de connexion. Pour tester cette procédure, vous pouvez démarrer deux programmes Midi, l'un avec vkeybd et l'autre avec aseqview. Pour la connexion entre deux ports MIDI, l'adresse port du programme est spécifiée après le nom du programme. Le premier programme se voit attribuer, par exemple, le numéro de port 128:0, et le deuxième programme se voit attribuer le numéro de port 129:0. Les ports des programmes sont alors immédiatement affichés par kaconnect.

Étant donné que vkeybd a été exécuté sans le paramètre --addr, la connexion entre le port du programme et le port de la table d'ondes (ou le port Midi externe) peut maintenant être établie manuellement. À cette fin, sélectionnez les ports correspondants puis cliquez sur connecter. Si vous souhaitez utiliser l'outil à la ligne de commande aconnect, saisissez aconnect 128:0 73:0 (ou les ports adéquats). Ainsi, une connexion (unidirectionnelle) sera établie entre le port 128:0 en tant qu'émetteur et le port 73:0 en tant que récepteur.

Vous pouvez maintenant établir aussi une connexion entre le port Midi du clavier et le port Midi de l'afficheur du séquenceur ALSA. Ainsi, si vous modifiez des paramètres du clavier, tels que le panning ou le pitch wheel (qui doit tout d'abord être activé sous Affichage), cela sera immédiatement affiché par aseqview.

Répertoriez les ports disponibles pour la réception ou l'émission ainsi que leur état de connexion à l'aide de aconnect -il ou aconnect -ol. Avec l'option -d, par exemple aconnect -d 128:0 129:0, vous pouvez terminer les connexions établies à l'aide de aconnect. Si vous souhaitez terminer toutes les connexions, utilisez aconnect -x. Vous trouverez plus d'informations sur les autres options à la ligne de commande de aconnect dans aconnect.

[Tip]Astuce

Avec aseqnet, il est également possible d'établir des connexions à travers un réseau.

Figure 19.15. Configuration de zones de split avec QMidiRoute

Configuration de zones de split avec QMidiRoute

Le programme QMidiRoute permet le routage MIDI flexible. Il classe les événements MIDI reçus sur le port MIDI écriture selon la hauteur tonale, la force (velocity) ou le canal et les transmet immédiatement au port lecture. Avec les paramètres Canal et Transposer, vous pouvez modifier le canal et la hauteur tonale de la zone de split inférieure.

19.9.4. kmid – le lecteur Midi de KDE

Figure 19.16. Fenêtre principale et affichage des canaux de kmid

Fenêtre principale et affichage des canaux de kmid

Si le paquetage kdemultimedia est installé, vous trouverez, dans le menu de démarrage de KDE, sous Multimédia, l'option Lecteur de fichiers MIDI/Karaoke. Le répertoire /opt/kde2/share/apps/kmid contient quelques fichiers démo pour kmid au format .kar. C'est dans ces fichiers que sont enregistrées les paroles de chansons qui sont affichées pendant que la musique est jouée.

Vous pouvez lancer l'aide en ligne très détaillée de kmid en pressant la touche F1. Pour ce programme aussi, les ports Midi doivent être correctement sélectionnés dans le menu Configuration sous Configuration Midi.

L'affichage des canaux que vous obtenez en cliquant sur le bouton Clavier de la barre des outils est particulièrement intéressant. Dans la fenêtre d'affichage des canaux (qui devra peut-être aussi être agrandie), les événements Midi sont représentés graphiquement sur plusieurs claviers. Vous pouvez en outre changer ici les instruments.

[Tip]Astuce

Lorsque kmid est lancé par un clic sur un fichier Midi dans le gestionnaire de fichiers de KDE Konqueror, tous les paramètres Midi réglés dans le Centre de Configuration de KDE sont utilisés. Si le programme est lancé séparément, ce sont les paramètres réglés dans le programme lui-même qui entrent en jeu.