13.2 Live geluid

# Live audio

De `:sound_in` synth zoals beschreven in de vorige sectie bied een flexibele en bekende manier om met ingang audio te werken. Maar, zoals ook beschreven heeft het een paar onhandigheden wanneer het gaat om werken met een enkelvoudig ingangs geluid als een enkel instrument (zoals een stem of een gitaar). De allerbeste manier om met een oneindig geluid te werken is `live_audio` gebruiken.

## Audio ingang met een naam

Er zijn een paar ontwerp beperkingen die `live_audio` deelt met `live_loop` (vandaar dat hun naam gelijk-ig is). Allereerst moet het een unieke naam hebben. Ten tweede mag er ook maar één `live_audio` met dezelfde naam tegelijk bestaan. Zie hier:

```
live_audio :bla
```

Deze code gedraagt zich gelijk aan `synth :sound_in` met een paar belangrijke verschillen: de code blijft altijd actief (tot je het expliciet stopt) en je het dynamisch naar een nieuwe effect context *verplaatsen*.


## Werken met Effecten

Als een `live_audio` blok als eerste gespeeld word, gedraagt het zich zoals je zou verwachten bij effecten. Om een live geluid van nagalm te voorzien gebruik je gewoon een `:reverb` effect blok:

```
with_fx :reverb do
  live_audio :bla
end
```

Maar aangezien een `live_audio` geluid maar door blijft gaan (in ieder geval tot je het stopt) zou het best een beperking zijn als, dat zoals bij synths, het gekoppelde effect `:reverb` er voor altijd aan vast zou zitten. Gelukkig is dit niet het geval en was het ontworpen om eenvoudig van effect te wisselen. Laten het eens proberen. Start de code hierboven om het geluid horen dat uit eerst ingang van je geluidskaart komt. Let op, als je een laptop gebruikt zal dit doorgaans de ingebouwde microfoon zijn, het is dus aan te raden om een koptelefoon te gebruiken om rondzingen te voorkomen.

Wijzig, terwijl je de live audio uit de geluidskaart nog met nagalm (reverb) hoort, de code naar het volgende:

```
with_fx :echo do
  live_audio :bla
end
```

Druk op Afspelen en je zult meteen horen dat het geluid een echo effect heeft gekregen en geen nagalm meer. Als je ze beide wil, pas de code aan en druk op Afspelen:

```
with_fx :reverb do
  with_fx :echo do
    live_audio :bla
  end
end
```

Het is belangrijk om je er op te wijzen dat je `live_audio :bla` vanuit elke thread or live loop kunt aanroepen zodat het geluid ervan in *die* threads effect context terecht komt. Je kunt dus eenvoudig vanuit meerdere live loops `live_audio :bla` aanroepen op verschillende momenten, met als resultaat dat de effecten context automatisch word vervangen. Dit zal zeker wat interessante resultaten opleveren.


## Live audio stoppen

Een `live_audio` heeft in tegenstelling tot andere synths geen envelop en zal oneindig doorgaan (zelfs als je de code verwijderd, blijft het code blok actief in het geheugen). Om het stoppen gebruik je het `:stop` argument:

```
live_audio :bla, :stop
```

Hij kan eenvoudig weer gestart worden door de code opnieuw af te spelen zonder het `:stop` argument:


```
live_audio :bla
```

Daar komt nog bij dat alle `:sound_in` synth worden gestopped zodra je op de "Stop" knop hebt gedrukt (net zoals dat met alle andere synths en effecten het geval is).

## Stereo ingang

Als het gaat om audio kanalen werkt `live_audio` gelijk aan de `:sound_in` synth. Het neemt de mono input van de audio en zet dit om in een stereo geluid met de aangegeven balans. Net als bij `:sound_in_stereo`is het ook mogelijk om aan`live_audio` te vertellen om twee opeenvolgende audio ingangen samen te voegen tot een linker en rechter kanaal. Dit doe je door de `:stereo` optie te gebruiken. Om bijvoorbeeld ingang kanaal 2 als links en kanaal 3 als rechts te gebruiken, zet je de `input:` optie op 2 en activeer je de stereo modus op de volgende manier:

```
live_audio :bla, stereo: true, input: 2
```

Zodra je een live audio geluid in stereo modus hebt gestart kun je deze niet weer veranderen naar mono modus zonder te stoppen en te starten. Omgekeerd kun je ook de mono modus niet omzetten naar stereo zonder te stoppen en weer te starten.
