Certamente. Ecco un file `README.md` completo e ben formattato che puoi salvare nella stessa cartella del tuo script `yamaha_cli.py`. Questo file spiega a cosa serve lo script, come installarlo e come utilizzarlo, con esempi chiari.

---

# Yamaha Mixer CLI Controller

Uno script Python per creare un'interfaccia a riga di comando (CLI) per controllare i mixer digitali Yamaha della serie TF (e potenzialmente altri modelli compatibili) tramite connessione Ethernet.

Questo strumento permette di eseguire operazioni comuni come il richiamo di scene, la regolazione dei fader, l'attivazione/disattivazione dei canali e il panning direttamente dal terminale, senza bisogno di interfacce grafiche o protocolli MIDI.

## Caratteristiche

- **Semplice e Intuitivo**: Comandi facili da ricordare (`recall`, `level`, `onoff`, `pan`).
- **Nessuna Dipendenza Esterna**: Utilizza solo le librerie standard di Python.
- **Configurabile**: Permette di specificare l'indirizzo IP e la porta del mixer.
- **Flessibile**: Include un comando `raw` per inviare qualsiasi stringa di comando supportata dal mixer.
- **Feedback Immediato**: Fornisce messaggi di conferma e di errore direttamente nel terminale.

## Prerequisiti

1.  **Python**: Versione 2.7 o successiva (Python 3.x raccomandato).
2.  **Mixer Yamaha**: Un mixer della serie TF (TF1, TF3, TF5, TF-RACK) o un altro modello compatibile con i comandi SCP.
3.  **Connessione di Rete**: Il computer che esegue lo script e il mixer devono essere collegati alla stessa rete locale.

## Configurazione Iniziale

1.  **Imposta l'IP del Mixer**: Assicurati che il tuo mixer Yamaha abbia un indirizzo IP statico. L'indirizzo predefinito utilizzato dallo script è `192.168.0.128`.
2.  **Imposta l'IP del Computer**: Configura il tuo computer con un indirizzo IP statico nella stessa subnet del mixer (es. `192.168.0.100` con subnet mask `255.255.255.0`).
3.  **Salva lo Script**: Scarica e salva il file `yamaha_cli.py` in una cartella sul tuo computer.
4.  **Apri il Terminale**: Apri un terminale (Prompt dei comandi su Windows, Terminale su macOS/Linux) e naviga nella cartella in cui hai salvato lo script.

## Utilizzo

La sintassi generale per eseguire un comando è:
```bash
python yamaha_cli.py [opzioni] <comando> [argomenti]
```

### Ottenere Aiuto

Per visualizzare la lista completa dei comandi e delle opzioni disponibili:
```bash
python yamaha_cli.py --help
```

Per ottenere aiuto su un comando specifico (ad esempio, `level`):
```bash
python yamaha_cli.py level --help
```

### Opzioni Globali

- `--host`: Specifica un indirizzo IP diverso per il mixer.
  - Esempio: `--host 192.168.1.50`
- `--port`: Specifica una porta diversa (lo standard è `49280`).

---

### Comandi Disponibili

#### **`recall`**
Richiama una scena da un banco specifico (A o B).

- **Sintassi**: `python yamaha_cli.py recall <banco> <numero_scena>`
- **Esempio**: Richiama la scena #15 dal banco A.
  ```bash
  python yamaha_cli.py recall a 15
  ```

#### **`level`**
Imposta il livello del fader di un canale di input.

- **Sintassi**: `python yamaha_cli.py level <canale> <valore>`
- **Nota**: I canali sono indicizzati da 0 (Canale 1 = 0, Canale 2 = 1, ecc.).
- **Esempio**: Imposta il fader del Canale 1 (indice 0) a +10.00 dB (valore 1000).
  ```bash
  python yamaha_cli.py level 0 1000
  ```

#### **`onoff`**
Accende (`on`) o spegne (`off`) un canale di input.

- **Sintassi**: `python yamaha_cli.py onoff <canale> <stato>`
- **Esempio**: Spegne il Canale 8 (indice 7).
  ```bash
  python yamaha_cli.py onoff 7 off
  ```

#### **`pan`**
Imposta il posizionamento stereo (pan) di un canale di input.

- **Sintassi**: `python yamaha_cli.py pan <canale> <valore>`
- **Valori**: `-63` (tutto a sinistra), `0` (centro), `63` (tutto a destra).
- **Esempio**: Imposta il pan del Canale 3 (indice 2) completamente a destra.
  ```bash
  python yamaha_cli.py pan 2 63
  ```

#### **`raw`**
Invia un comando grezzo non implementato direttamente dalla CLI.

- **Sintassi**: `python yamaha_cli.py raw <stringa_comando>`
- **Esempio**: Invia un comando per impostare un parametro specifico.
  ```bash
  python yamaha_cli.py raw set MIXER:Current/InCh/Fader/On 3 0 1
  ```

## Esempi Pratici

**1. Richiamare la scena #1 del banco A**```bash
python yamaha_cli.py recall a 1
```

**2. Alzare il fader del Canale 5 (indice 4) a 0 dB (valore 0)**
```bash
python yamaha_cli.py level 4 0
```

**3. Accendere il Canale 12 (indice 11)**
```bash
python yamaha_cli.py onoff 11 on
```

**4. Eseguire un comando su un mixer con un IP non standard**
```bash
python yamaha_cli.py --host 192.168.1.128 recall b 42
```

## Note Importanti

- **Indice dei Canali**: Ricorda sempre che i canali sono **indicizzati a partire da 0**. Per controllare il Canale 1, devi usare l'indice `0`.
- **Compatibilità**: Sebbene testato con la serie TF, lo script potrebbe funzionare anche con mixer delle serie CL/QL, poiché condividono un set di comandi simile.

## Licenza

Questo progetto è rilasciato sotto la licenza MIT. Vedi il file `LICENSE` per maggiori dettagli.