# 6.7. Étape 7: Synthèse contrôlée par midi

Enfin, vous êtes maintenant en mesure de transformer votre onde sinusoïdale en instrument proprement dit. Ceci ne prend son sens que si vous avez quelque chose de bricolé qui puisse envoyer des événements midi vers aRts. Je vais décrire maintenant comment vous pouvez utiliser des claviers midi externes, mais un séquenceur compatible avec les bus midi comme Brahms fonctionnera aussi.

Tout d'abord, nettoyez votre bureau pour n'obtenir que les deux fenêtres de artsbuilder (les deux n'étant pas en cours d'exécution), une avec le tutoriel, l'autre avec la structure de jeu (on l'appellera structure de base). Allez alors à la structure tutoriel et remplacez le module Synth_SEQUENCE par un module Interface_MIDI_NOTE. Connectez sa fréquence à l'objet Synth_FREQUENCY. Vous verrez que celui-ci, cependant, n'a pas de sortie "pos".

Ceci est dû au fait qu'il n'existe aucun algorithme au monde capable de prédire quand l'utilisateur va relâcher la note qu'il vient juste d'enfoncer sur le clavier midi. Donc à la place, il y a un paramètre "pressed" (pressé) qui indique juste si l'utilisateur maintient la touche enfoncée (pressed = 1 : touche maintenue enfoncée, pressed = 0 : touche relâchée).

Cela signifie que l'objet Synth_PSCALE doit lui aussi être remplacé maintenant. Reliez un objet Synth_ENVELOPE_ADSR à la place. Connectez

- La sortie "pressed" du module MIDI_NOTE à l'entrée "active" du module ADSR

- La sortie "out" du module SIN à l'entrée "in" du module ADSR

- La sortie "out" du module ADSR à l'entrée "left" du module UPLINK

- La sortie "out" du module ADSR à l'entrée "right" du module UPLINK

Réglez les paramètres attack à 0.1, decay à 0.2, sustain à 0.7 et release à 0.1.

Une autre chose à laquelle nous devons penser est que la structure de l'instrument, d'une manière ou d'une autre, doit maintenant savoir quand elle est prête à jouer, et alors elle doit se fermer, car sinon, ça ne s'arrêtera jamais, même si la note a été relachée. Heureusement, l'enveloppe ADSR sait lorsqu'il n'y aura plus rien à entendre puisque de toute façon elle fixe le signal à zéro un certain temps après que la touche ait été enfoncée.

Ceci est indiqué en passant la sortie "done" à 1. Prenez un module Synth_STRUCT_KILL et connectez-le à la sortie "done" de l'enveloppe ADSR. Cela va fermer la structure dès que la sortie "done" passe à 1.

Publiez votre structure d'instrument sur le serveur (il s'appelle toujours tutoriel et l'ancien sera écrasé).

Allez à l'autre artsbuilder et insérez un module Synth_MIDI_ROUTER. Mettez "channel" à 0, son maximum à 4 et sa structure à tutoriel. Il sera alors à l'écoute des événements midi sur le canal 0, et chaque fois qu'il en reçoit un, il crée une structure tutoriel, qui va à son tour créer des ondes sinusoïdales et les envoyer sur le bus. Pendant que j'y pense : réglez le paramètre "bus" du MIDI_ROUTER à une valeur quelconque, disons "audio", j'expliquerai ça plus tard. Donc ignorez les autres points comme x, y, parent.

Cliquez sur "File/Execute structure" (dans le artsbuilder avec la structure de base seulement, puisque exécuter un instrument sans en donner la fréquence ne rime à rien).

Ouvrez un terminal et tapez `midisend`. Prenez votre clavier et commencez à jouer (il doit bien sûr être connecté à l'ordinateur). Si vous voyez que le processeur n'est pas surchargé, vous pouvez essayer de passer le paramètre "max" du MIDI_ROUTER à 8, permettant à 8 voix ou peut être même encore plus d'être calculées.