13.2 Live Audio

# Programmare dal vivo

Il synth `:sound_in`, come descritto nella sezione precedente, fornisce un metodo molto semplice e flessibile per lavorare con audio in ingresso. Tuttavia, come già discusso, ha qualche problema quando si lavora con un singolo ingresso audio come singolo strumento (come una voce o una chitarra). Di gran lunga il miglior approccio per un singolo flusso di audio continuo è l'uso di `live_audio`.

## Un Ingresso Audio Nominato

`live_audio` condivide un paio di restrizioni di base con `live_loop` (da qui il nome simile). Innanzitutto deve avere un nome univoco e secondariamente solo un flusso `live_audio` per volta con quel nome può esistere nello stesso momento. Diamo un'occhiata:

```
live_audio :foo
```

Questo codice si comporterà in modo analogo a `synth :sound_in` con alcune differenze chiave: viene eseguito per sempre (fino a che non lo interrompi esplicitamente) e puoi "spostarlo" a un nuovo contesto di effetti dinamicamente.


## Lavorare con FX

All'innesco iniziale `live_audio` funziona esattamente come ti aspetteresti che funzioni con FX. Ad esempio, per avviare un flusso audio con aggiunta di riverbero semplicemente usa il blocco FX `:reverb`:

```
with_fx :reverb do
  live_audio :foo
end
```

Tuttavia, dato che `live_audio` gira per sempre (almeno fino a quando lo fermi) sarebbe piuttosto limitante se, come tipicamente i synth, fosse chiuso dentro un blocco FX `:reverb` per la sua intera esistenza. Fortunatamente non è questo il caso in quanto è stato progettato per essere semplice spostarsi su un FX diverso. Proviamo. Esegui il codice sopra per sentire l'audio dal vivo proveniente dal primo ingresso della tua scheda audio. Nota, se stai usando un portatile, questo sarà tipicamente il microfono integrato quindi è consigliabile usare le cuffie per prevenire il feedback.

reverb,

```
with_fx :echo do
  live_audio :foo
end
```

Ora, premi Run, e sentirai immediatamente l'audio riprodotto attraverso un FX echo e non più attraverso riverbero. Se li avessi voluti entrambi, semplicemente modifica il codice nuovamente e premi Run:

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

foo


## Fermare live Audio

A differenza dei synth standard, dato che `live_audio` non ha un envelope, continuerà a girare all'infinito (anche se cancelli il codice, come una funzione rimane definita in memoria se cancelli il codice nell'editor). Per fermarlo devi usare l'arg `:stop`:

```
live_audio :foo, :stop
```

Può essere facilmente riavviato chiamandolo senza l'arg `:stop`:


```
live_audio :foo
```

Addizionalmente, tutti i synth live audio vengono arrestati quando premi il pulsante Stop globale (come per tutti gli altri synth e FX in esecuzione).

## Ingressi Stereo

Rispetto ai canali audio, di default `live_audio` si comporta in modo simile al synth `:sound_in` in quanto prende un flusso audio mono e lo converte in un flusso stereo usando un panning specifico. Tuttavia, come `:sound_in_stereo` è possibile dire a `live_audio` di leggere 2 ingressi audio consecutivi e trattarli come canali destro e sinistro direttamente. Questo si ottiene attraverso l'opzione `:stereo`. Ad esempio, per trattare ingresso 2 come segnale sinistro e ingresso 3 come segnale destro, devi configurare l'opzione `input:` a 2 e abilitare modalità stereo come segue:

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

Notare che dopo aver avviato lo stream audio in modalità stereo, non puoi cambiarla a mono senza fermarla e riavviarla. Similmente, se avvi nella modalità mono di default, non puoi passare a stereo senza fermare e riavviare il flusso.
