# 3.9. Instruments (Arts >= 0.3.2)

La philosophie de conception d'un instrument est la suivante : faites-le une fois, et réutilisez-le.

Fondamentalement, la création d'un composant dans arts, comme un égaliseur, un effet, un appareil comme une table de mixage... est basée sur cette philosophie. (Bon, il reste beaucoup à faire).

Il y a plusieurs conditions à vérifier pour pouvoir le réutiliser.

- Le premier point important est que votre instrument est une structure, qui contient un module Interface_MIDI_NOTE (voir ci-dessous : Synthèse contrôlée par midi).

- La structure doit se terminer toute seule lorsque c'est nécessaire (voir Synthèse contrôlée par midi).

- La structure doit avoir un bus qui porte le nom d'un port, qui est une propriété de type "chaîne de caractères". Ce port doit être connecté à un Synth_BUS_UPLINK, qui collecte les données que votre instrument produit.

- L'instrument doit être nommé instrument_nombienchoisi, il est important que le nom commence par instrument_.

Si vous voulez avoir des paramètres ajustables qui peuvent être modifiés en temps réel par l'utilisateur, vous avez besoin de plus de choses :

- Votre instrument doit avoir un port d'entrée par paramètre modifiable pour le signal audio. Si vous pouvez par exemple modifier les paramètres "attack","decay" et "cutoff", votre structure doit avoir trois ports audio.

- Pour votre structure d'instrument, il doit y avoir une autre structure qui sera le "control panel" (panneau de contrôle) pour l'instrument. Il devrait y avoir trois ports d'entrée (parent, qui est le signal audio entrant, et x et y, qui sont les propriétés audio).

- La structure "control panel" doit s'appeler instrument_nombienchoisi_GUI.

- La structure "control panel" doit s'afficher toute seule à la position x,y dans l'élément graphique parent. Utilisez simplement un Gui_SUB_PANEL pour faire cela.

- La structure "control panel" doit avoir une sortie pour chaque paramètre nécessaire à l'instrument, dans notre exemple il y aurait trois ports de sortie de signaux audio, "attack","decay" et "cutoff".

Ça vous semble compliqué ? Et bien - oui - un peu, mais l'instrument créé est vraiment réutilisable. Si vous avez vu les exemples avec l'INSTRUMENT_MAPPER, vous savez de quoi je parle.