# &MIDI;

## Aperçu

La gestion du &MIDI; dans &arts; permet de faire beaucoup de choses. Tout d'abord, elle permet la communication entre différentes parties d'un logiciel qui produit ou utilise des événements &MIDI;. Si par exemple vous avez un séquenceur et un échantillonneur qui sont compatibles avec &arts;, &arts; peut envoyer des événements &MIDI; du séquenceur vers l'échantillonneur.

D'un autre côté, &arts; peut aussi aider des applications à interagir avec le matériel. Si une partie d'un logiciel (par exemple l'échantillonneur) travaille avec &arts;, il sera capable de recevoir des événements &MIDI; depuis un clavier &MIDI; externe aussi.

Finalement, &arts; constitue un synthétiseur modulaire sympathique. Il est exactement conçu pour cela. Vous pouvez donc construire des instruments à partir de petits modules en utilisant artsbuilder, puis ensuite les réutiliser pour composer et jouer de la musique. Synthèse ne signifie pas forcément synthèse pure, il y a des modules qui vous permettent de jouer des échantillons. &arts; peut donc être un échantillonneur, un synthétiseur, etc. et étant entièrement modulaire, il est très facile de l'étendre, facile à prendre en main, puissant et flexible.

## Le gestionnaire &MIDI;

Le composant central de &arts; qui garde une trace de quelles applications sont connectées et comment les événements midi doivent circuler entre elles est le gestionnaire midi. Pour voir ou modifier ce qu'il fait, démarrez artscontrol. Ensuite, choisissez Affichage Voir le gestionnaire Midi dans le menu.

Sur la gauche, vous verrez Entrées Midi. Ici, tous les objets qui produisent des événements &MIDI;, comme un port &MIDI; externe qui envoie des données depuis un clavier &MIDI;, un séquenceur qui joue un morceau, etc. sont listés. Sur la droite, vous verrez Sorties Midi. Ici, vous trouverez la liste de tous ce qui utilise les événements &MIDI;, comme un échantillonneur logiciel, ou un port &MIDI; externe sur lequel un échantillonneur matériel peut être connecté. Les nouvelles applications, comme les séquenceurs, s'enregistrent toutes seules de telle sorte que cette liste est susceptible de changer au cours du temps.

Vous pouvez connecter les entrées aux sorties si vous marquez l'entrée à droite et la sortie à gauche, et choisissez Connecter... avec le bouton en bas. Déconnecter fonctionne de la même manière. Vous verrez ce qui est connecté grâce à de petites lignes entre les entrées et les sorties, au milieu de la fenêtre. Notez que vous pouvez connecter un émetteur vers plus d'un récepteur (et vice versa).

Certains programmes (comme le séquenceur Brahms) s'ajouteront d'eux même lorsqu'ils démarrent et seront enlevés de la liste lorsqu'ils s'arrêtent. Vous pouvez toutefois ajouter de nouveaux éléments avec le menu ajouter :

Port Midi (OSS)

  Ceci créera un nouvel objet &arts; qui communique avec un port midi externe.

  Comme les ports midi peuvent à la fois envoyer et recevoir des données, choisir cette option ajoutera une entrée midi et une sortie midi. Sous &Linux;, vous devriez avoir soit un OSS (ou OSS/Free, qui est fourni avec le noyau de &Linux;) ou un pilote ALSA permettant de faire fonctionner votre carte son. On vous demandera le nom du périphérique. Habituellement, il s'agit de `/dev/midi` ou `/dev/midi00`.

  Cependant, si vous avez plus d'un périphérique &MIDI;ou un pilote &MIDI; loopback installé, vous devriez avoir plus de choix. Pour voir les informations sur les ports midi, démarrez le &kcontrolcenter;, et choisissez Information Son.

Sortie Midi du synthétiseur aRts

  Ceci va ajouter une nouvelle sortie &MIDI; avec un instrument synthétisé par &arts;. Si vous choisissez cette entrée du menu, une boîte de dialogue va apparaître, vous permettant de choisir un instrument. Vous pouvez créer de nouveaux instruments en utilisant artsbuilder. Tous les fichiers `.arts` dont le nom commence par `instrument_` apparaîtront ici.

## Utiliser &arts; & Brahms

En réalité, c'est facile de débuter. Vous avez besoin d'une version de &brahms; pour &kde; 2.1, qui se trouve dans le module CVS `kmusic`. Il y a aussi des informations sur la façon de se procurer &brahms; sur le site web de aRts dans la section Download.

Lorsque vous le démarrez, il affiche le gestionnaire &MIDI;. Si vous voulez faire de la synthèse, ajoutez simplement un instrument &MIDI; de synthèse via Ajouter Sortie Midi du synthétiseur aRts.

Choisissez un instrument (par exemple organ2). Connectez-les en utilisant le bouton Connect. Enfin, vous pouvez commencer à composer avec &brahms;, et la sortie sera synthétisée avec &arts;.

Il est conseillé d'ouvrir une fenêtre du &artscontrol;, et de vérifier que le volume n'est pas trop fort (la qualité est moins bonne lorsque les bargraphs atteignent la limite supérieure). Maintenant, vous pouvez commencer à travailler sur un nouveau morceau de démo de &arts;, et lorsque ce sera fait, vous pouvez le publier sur aRts-project.org !

## midisend

`midisend` est une petite application qui vous permet d'envoyer des événements &MIDI; en utilisant le shell. Il va s'enregistrer comme client comme toutes les autres applications. La façon la plus simple de l'utiliser est de faire

    % midisend -f /dev/midi00

qui fera en gros la même chose que d'ajouter un port &MIDI; système dans le &artscontrol;. (pas tout à fait, puisque `midisend` ne fait qu'envoyer des événements). La différence est qu'il est facile par exemple de démarrer `midisend` sur plusieurs machines (et de cette façon, utiliser la transparence réseau).

`midisend` peut aussi envoyer des données depuis `stdin`. Vous pouvez utiliser ceci dans des tubes pour envoyer des données provenant d'applications non-&arts; vers &arts;, comme ceci :

    % applicationwhichproducesmidieventsonstdout | midisend -f -

## Création d'instruments

La façon dont &arts; réalise la synthèse midi est la suivante : vous avez une structure qui contient des ports d'entrée, où elle récupère la fréquence, la vélocité (volume) et un paramètre qui indique si la note est toujours enfoncée. La structure devrait alors synthétiser exactement telle note avec tel volume, et réagir au paramètre "pressed" (ou pressed = 1 signifie que l'utilisateur appuie toujours cette touche, et 0 signifie que l'utilisateur a relâché la touche).

Lorsqu'un événement &MIDI; arrive, &arts; crée de nouvelles structures pour les notes suivant les besoins, leur passe les paramètres, et les efface une fois qu'elles ont terminé leur travail.

Pour créer et utiliser une telle structure, vous devez faire les choses suivantes :

- Pour démarrer, la façon la plus simple est d'ouvrir `template_Instrument.arts` dans &arts-builder;.

  Allez dans Fichier Ouvrir un exemple... et choisissez template_Instrument dans la zone de sélection de fichier. Vous obtiendrez alors une structure vide avec les paramètres requis, que vous devrez simplement remplir.

- Pour traiter le paramètre pressed, il est préférable d'utiliser Synth_ENVELOPE_ADSR, ou s'il s'agit d'un son de percussions, jouez-le simplement sans vous soucier du paramètre pressed.

- La structure devrait indiquer lorsqu'elle n'est plus utile avec la sortie done. Si done est égal à 1, &arts; supprime alors les structures. Très pratique, l'enveloppe ADSR fournit un paramètre lorsqu'elle se termine, donc vous devez simplement le connecter à la sortie done de la structure.

- Renommez votre structure avec un nom commençant par `instrument_`, comme par exemple `instrument_piano.arts` - enregistrez le fichier avec le même nom, dans votre dossier `$`HOME`/arts/structures` (qui est le dossier ou enregistre arts par défaut).

- Enfin, une fois que vous l'avez enregistré, vous pourrez l'utiliser avec le &artscontrol; dans le gestionnaire &MIDI;.

- Oh, et bien sûr, votre structure devrait jouer les données audio qu'elle génère sur les sorties droite et gauche de la structure, qui sera joué ensuite par le gestionnaire audio (visible depuis le &artscontrol;), ou vous pouvez enfin les entendre (ou leur ajouter un post-traitement avec des effets).

Une bonne façon d'apprendre à créer un instrument est d'ouvrir un instrument déjà existant via Fichier Ouvrir un exemple et de regarder comment ça marche !

## Instruments mappés

Les instruments mappés sont des instruments qui se comportent différemment suivant la hauteur, le programme (son), le canal ou la vélocité. Vous pourriez par exemple construire un piano sur 5 octaves, en utilisant un échantillon pour chaque octave (en le transposant en conséquence). Ça sonne beaucoup mieux qu'avec l'utilisation d'un seul échantillon.

Vous pourriez aussi construire un "drum map" qui joue un échantillon de batterie spécifique par touche.

Enfin, il est très utile de placer différents sons dans un instrument mappé. De cette façon, vous pouvez utiliser votre séquenceur, clavier externe ou autre source &MIDI; pour basculer entre les sons sans avoir à revenir à &arts; lorsque vous travaillez.

Un bon exemple pour ceci est l'instrument `arts_all`, qui place simplement tous les instruments fournis avec &arts; dans une même map. De cette façon, vous avez juste à paramétrer le &artscontrol; une seule fois pour utiliser cet instrument, et ensuite, vous pouvez composer un morceau entier avec un séquenceur sans vous soucier de &arts;. Vous avez besoin d'un autre son ? Changez simplement de programme dans le séquenceur, et &arts; vous donnera un autre son.

La création de telles maps est relativement facile. Créez simplement un fichier texte, et écrivez des règles qui ressemblent à :

    ON [ conditions...] DOstructure=une_structure.arts

Les conditions peuvent être une ou plusieurs des valeurs suivantes :

`pitch`

  Hauteur du son qui doit être joué. Vous utiliserez ceci si vous voulez découper votre instrument en fonction de la hauteur. Dans nos exemples initiaux, un piano qui utilise différents échantillons pour différentes octaves utiliserait cette condition. Vous pouvez spécifier une hauteur unique, comme ``pitch`=62` ou une plage de hauteur, comme ``pitch`=60-72`. Les valeurs possibles sont comprises entre 0 et 127.

`program`

  Le programme actif sur le canal sur lequel est envoyée la note. Habituellement, les séquenceurs vous permettent de choisir l'instrument par un réglage du programme. Des programmes uniques ou une plage de programmes sont permis, comme ``program`=3` ou ``program`=3-6`. Les programmes possibles sont compris entre 0 et 127.

`channel`

  Le canal sur lequel la note est envoyée. Des canaux uniques ou une plage de canaux sont permis, comme ``channel`=0` ou ``channel`=0-8`. Les valeurs possibles sont comprises entre 0 et 15.

`velocity`

  La vélocité (volume) de la note. Des vélocités uniques (qui utiliserait ça ?) ou une plage de vélocités sont permises, comme``velocity`=127` ou ``velocity`=64-127`. Les valeurs possibles sont comprises entre 0 et 127.

Un exemple complet de map serait (ceci est extrait de la map `instrument_arts_all.arts`) :

    ON program=0 DO structure=instrument_tri.arts
    ON program=1 DO structure=instrument_organ2.arts
    ON program=2 DO structure=instrument_slide1.arts
    ON program=3 DO structure=instrument_square.arts
    ON program=4 DO structure=instrument_neworgan.arts
    ON program=5 DO structure=instrument_nokind.arts
    ON program=6 DO structure=instrument_full_square.arts
    ON program=7 DO structure=instrument_simple_sin.arts
    ON program=8 DO structure=instrument_simple_square.arts
    ON program=9 DO structure=instrument_simple_tri.arts
    ON program=10 DO structure=instrument_slide.arts
    ON program=11 pitch=60 DO structure=instrument_deepdrum.arts
    ON program=11 pitch=61 DO structure=instrument_chirpdrum.arts

Comme vous pouvez le voir, la structure est choisie en fonction du programme. Pour le programme 11, vous voyez un drum map (avec deux entrées), qui devrait jouer un son de deepdrum sur C-5 (hauteur=60), et un son de chirpdrum on C#5 (pitch=61).

Pour que les fichiers map apparaissent automatiquement dans le &artscontrol; en tant qu'instruments, ils doivent être nommés `instrument_quelque_chose.arts-map` et résider soit dans votre dossier utilisateur, dans `$`HOME`/arts/structures`, soit dans le dossier de &kde;, dans `$`KDEDIR`/usr/local/kde/share/apps/artsbuilder/examples`. Les structures qui sont utilisées par les maps peuvent être données soit avec un chemin absolu, soit relativement au dossier contenant le fichier map.

Étendre la map arts_all ou même faire une map au format general &MIDI; complète pour &arts; est une bonne idée pour faciliter l'utilisation de &arts; pour une utilisation en dehors du cadre de &arts;. N'hésitez pas à contribuer au projet par la création d'instruments, de façon à les inclure dans les versions futures de &arts;.