13.3 Son sortant

# Son sortant

Jusqu'à maintenant dans cette section nous avons regardé comment avoir plusieurs flux d'audio dans Sonic Pi - soit par l'utilisation du synthé `:sound_in` ou par le système puissant `live_audio`. En plus de pouvoir travailler avec de multiples flux d'entrée audio, Sonic Pi peut également faire sortir plusieurs flux d'audio. Cela est possible via le FX `:sound_out`.

## Contextes de sortie

Récapitulons rapidement comment les synthés et les FX de Sonic Pi sortent leur audio à leur contexte FX courant. Par exemple, considérant ceci :

```
with_fx :reverb do    # C
  with_fx :echo do    # B
    sample :bd_haus   # A
  end
end
```

La façon la plus simple de comprendre ce qui se passe avec le flux audio est de commencer au niveau le plus interne du contexte audio et de remonter. Dans ce cas, le contexte le plus interne est étiqueté `A` et il s'agit de l'échantillon `:bd_haus` qui est déclenché. L'audio pour cela va directement dans son contexte qui est `B` - l'effet `:echo`. Cela ajoute de l'écho à l'audio entrant et l'émet en sortie à son contexte qui est `C` - l'effet `:reverb`. Cela ajoute ensuite de la réverbération à l'audio entrant et l'émet en sortie à son contexte qui est le niveau le plus haut - les haut-parleurs de gauche et droite (sortie 1 et 2 de votre carte audio). L'audio sort avec un signal stéréo via ces derniers.

## Effet de son sortant

Le comportement ci-dessus est vrai pour tous les synthés (incluant `live_audio`) et la majorité des FX, à l'exception de `:sound_out`. L'effet `:sound_out` accomplit deux choses. Premièrement, il émet en sortie son audio au contexte externe comme décrit ci-dessus. Deuxièmement, il émet *aussi* en sortie son audio directement à une sortie sur votre carte son. Jetons un coup d'œil :

```
with_fx :reverb do      # C
  with_fx :sound_out, output: 3 do # B
    sample :bd_haus     # A
  end
end
```

Dans cet exemple, notre échantillon `:bd_haus` sort son audio à son contexte externe qui est l'effet `:sound_out`. À son tour, il sort son audio à son contexte externe qui est l'effet `:reverb` (comme attendu). Cependant, il sort *aussi* un mélange mono à la troisième sortie de la carte de son système. L'audio généré dans `:sound_out` a donc deux destinations - l'effet `:reverb` et la sortie 3 de la carte audio.

## Sortie mono et stéréo

Comme nous l'avons vu, par défaut, l'effet `:sound_out` ressort un mix mono d'une entrée stéréo vers un canal spécifique en addition de passer le flux stéréo vers le contexte de sortie (comme prévu). Si le fait de sortir un mix mono n'est pas précisément ce que vous voulez faire, il y a plusieurs options alternatives. Premièrement, en utilisant l'option `mode:`, vous pouvez choisir de ressortir uniquement le signal d'entrée de gauche ou celui de droite vers la carte-son. Ou vous pouvez utiliser l'effet `:sound_out_stereo` pour ressortir vers les sorties de deux cartes-son consécutives. Consultez la documentation de la fonction pour davantage d'informations et des exemples.

## Sortie directe

Comme nous l'avons également vu, le comportement par défaut pour `:sound_out` et `:sound_out_stereo` pour les deux est d'envoyer leur audio à leur contexte externe (ce qui est typique de tous les FX) *et* à la sortie spécifiée de la carte de son. Cependant, vous pourriez occasionnellement vouloir *seulement* envoyer à la sortie de la carte de son et pas le contexte externe ( et donc ne pas avoir la possibilité que le son soit mélangé et envoyé aux canaux de sorties standards 1 et 2). Cela est possible en utilisation l'option standard FX `amp:` qui s'applique sur l'audio *après* que le FX ait manipulé l'audio :

```
with_fx :sound_out, output: 3, amp: 0 do # B
  sample :loop_amen                      # A
end
```

Dans l'exemple ci-dessus, l'échantillon `:loop_amen` est envoyé à son contexte extérieur, le FX `:sound_out`. Ensuite, cela envoie un mélange mono à la sortie 3 de la carte audio et multiplie l'audio par 0 ce qui le rend silencieux essentiellement. C'est le signal silencieux qui est par la suite envoyé au contexte extérieur de `:sound_out` qui est la sortie standard. Par conséquent, les canaux de sorties par défaut ne recevront aucun audio et le canal 3 recevra un mélange mono de tambours d'Amen Break.
