12.1 Ricevere OSC

# Ricevere OSC

Time State

## Un listener OSC basico

Costruiamo un listener OSC basico:

```
live_loop :foo do
  use_real_time
  a, b, c = sync "/osc/trigger/prophet"
  synth :prophet, note: a, cutoff: b, sustain: c
end
```

In questo esempio viene descritto un percorso OSC `"/osc*/trigger/prophet"` col quale ci stiamo sincronizzando. Questo può essere un qualunque percorso OSC valido (tutte le lettere e numeri sono supportati e la `/` è usata come in un URL per separare il percorso in parole multiple.) Il prefisso `/osc` viene aggiunto da Sonic Pi a tutti i messaggi OSC in ingresso, quindi dobbiamo mandare un messaggio OSC con un percorso `/trigger/prophet` per fare in modo che il nostro `sync` interrompa il blocco e il sintetizzatore prophet sia innescato.


## Mandare OSC a Sonic Pi

Possiamo inviare OSC a Sonic Pi da qualunque linguaggio di programmazione che abbia una libreria OSC. Ad esempio, se stiamo mandando OSC da Python potremmo fare qualcosa tipo questo:

```
from pythonosc import osc_message_builder
from pythonosc import udp_client
sender = udp_client.SimpleUDPClient('127.0.0.1', 4560)
sender.send_message('/trigger/prophet', [70, 100, 8])
```

Oppure, se stiamo inviando OSC da Clojure potremmo fare qualcosa di questo tipo dal REPL:

```
(use 'overtone.core)
(def c (osc-client "127.0.0.1" 4560))
(osc-send c "/trigger/prophet" 70 100 8)
```

## Ricevere da Macchine Esterne

Per ragioni di sicurezza, Sonic Pi non permette per default che macchine remote gli mandino messaggio OSC. Tuttavia, puoi abilitare il supporto per macchine esterne in Preferences->IO->Networked OSC->Allow OSC da altri computer. Una volta abilitato questo, puoi ricevere messaggi OSC da qualunque computer nel tuo network. Tipicamente la macchina che invia dovrà conoscere il tuo l'indirizzo IP (un identificatore univoco per il tuo computer nella tua rete - tipo un numero di telefono o un indirizzo email). Puoi scoprire l'indirizzo ip del tuo computer guardando nella sezione IO nel pannello preferenze. (Nel caso la tua macchina avesse più di un indirizzo ip, passando col mouse sopra l'indirizzo mostrato comparirà elenco con tutti gli indirizzi conosciuti).

Nota: alcuni programmi tipo TouchOSC per iPhone e Android supportano invio di OSC come caratteristica standard. Quindi, una volta che sei in ascolto di macchine remote e conosci il tuo indirizzo IP, puoi istantaneamente cominciare a mandare messaggi da app come TouchOSC che ti permette di costruire la tua superficie di controllo personalizzata con slider, bottoni, tasti ecc. Con questo puoi ottenere un'enorme gamma di opzioni.
