Contenuto

Ci sono momenti in cui un problema tecnico diventa improvvisamente un problema personale.

Forse a qualcun* è noto: suono la chitarra nei Respiro Nocivo e negli Zeromila, quindi passo parecchio tempo tra prove, concerti, pedalboard, cavi e amplificatori. Allo stesso tempo faccio il programmatore e, quando qualcosa non funziona come vorrei, ho una pessima abitudine: invece di rassegnarmi, cerco di capire come funziona.

È esattamente quello che è successo con il mio Blackstar Dept. 10 Amped 3.

L’Amped 3 mi piace molto: è compatto, potente, suona bene e come soluzione per il live ha parecchio senso (sopratutto per chi, come me, è comincia a diventare vecchio, con sempre meno voglia di portarsi appresso pesanti testate). Ma dopo averlo usato per un po’ mi sono trovato davanti a due problemi piuttosto concreti.

Il primo era CabRig.

Il secondo era ancora più banale: non esisteva un’app Android.

Il problema dell’app

Per configurare in profondità l’Amped 3, Blackstar mette a disposizione Architect, il software desktop ufficiale.

Funziona, ma significa avere un computer a disposizione.

Per me era una soluzione poco pratica. Se sono in sala prove con la pedaliera, una chitarra e un telefono, non voglio dover tirare fuori anche un portatile soltanto per modificare un parametro o sistemare una patch. Men che meno portarmi appresso il computer durante le trasferte live.

Molti dispositivi digitali moderni hanno ormai un’app mobile. L’Amped 3 no e questa cosa denota poca attenzione da parte di Blackstar per questa riuscita serie.

A quel punto ho pensato: ok, vediamo cosa succede se provo a “parlare” direttamente con il pedale.

Dal software ufficiale al protocollo USB

Il primo lavoro è stato il reverse engineering della comunicazione tra Architect e Amped 3.

Ho catturato il traffico USB generato dal software ufficiale e ho iniziato a modificare un parametro alla volta, confrontando quello che cambiava nei pacchetti. È stato un lavoro abbastanza rognoso e certosino: ogni manopola, ogni interruttore andava mappato.

Non c’è stato un singolo momento magico in cui “ho trovato il protocollo”. È stato molto più prosaico: pacchetti, offset, valori, checksum, confronti e parecchio lavoro ripetitivo.

Alla fine sono riuscito a ricostruire una parte significativa del protocollo USB HID utilizzato dall’Amped 3.

Il pedale utilizza report HID da 64 byte e diversi tipi di comando. Alcuni gestiscono i parametri dell’amplificatore, altri i parametri CabRig e altri ancora il trasferimento dei profili DSP. Il repository documenta anche gli offset dei parametri e le sequenze necessarie per leggere e scrivere lo stato dell’hardware.

A quel punto avevo già abbastanza informazioni per fare una cosa che Blackstar non aveva fatto: controllare l’Amped 3 direttamente da Android.

Ma il vero problema era CabRig

La parte più interessante è arrivata quando ho iniziato a studiare CabRig.

Inizialmente pensavo di trovare quello che mi sarei aspettato: una normale impulse response, magari memorizzata in qualche formato proprietario.

Non era così.

Analizzando i dati inviati da Architect e il codice del software, ho scoperto che CabRig non sta semplicemente caricando una WAV e facendone una convoluzione FIR.

I profili CabRig sono invece rappresentati da un piccolo blocco di coefficienti DSP.

Nel formato che ho ricostruito (o meglio che ha fatto ChatGPT Astra per me), ogni profilo occupa 260 byte, cioè 65 valori float32:

  • un coefficiente diretto;
  • 16 sezioni di filtri ricorsivi;
  • quattro coefficienti per ciascuna sezione.

In altre parole, il pedale utilizza una cascata di filtri IIR/biquad per approssimare il comportamento della cassa, invece di conservare una lunga risposta impulsiva da convolvere che avrebbe rischiato di introdurre latenze.

Questo spiega anche una cosa importante: non puoi semplicemente prendere una qualsiasi WAV IR e “copiarla” dentro all’Amped 3. Il DSP del pedale non è fatto per quello.

Ed è qui che la cosa è diventata interessante.

Da una IR WAV al formato CabRig

Se il pedale non può eseguire una convoluzione FIR, la domanda diventa:

posso prendere una IR convenzionale e trovare un insieme di coefficienti CabRig che ne approssimi la risposta?

La risposta è sì, almeno entro i limiti del modello.

Ho quindi implementato un sistema di fitting che parte da un profilo CabRig esistente, ne mantiene la struttura dei poli e risolve i coefficienti necessari per avvicinarsi alla risposta della WAV IR.

La scelta di partire dai poli dei profili factory non è casuale: significa ereditare la stabilità di un filtro che il pedale già conosce e utilizza.

Dopo il fitting, Surveyor (Geometra, per contrasto all’architetto di Blackstar) ricostruisce i coefficienti, verifica la stabilità e applica una serie di limiti ricavati dalla libreria dei profili originali.

Il risultato non è quindi “una WAV caricata nell’Amped 3”.

È qualcosa di più interessante, e anche più limitato: una rappresentazione della risposta della IR convertita nel linguaggio DSP che l’Amped 3 è effettivamente in grado di eseguire.

La differenza è importante.

Il sistema non può rappresentare qualsiasi cosa. Per esempio, una lunga coda ambientale o un riverbero non sono un buon candidato per questo tipo di modello. Stiamo parlando soprattutto di risposte di cabinet ed EQ, non di sostituire un motore di convoluzione generale. Anche per questo il reverbero è separato in queste pedaliere.

E così è nato Surveyor

A quel punto non aveva più molto senso lasciare tutto in una cartella di script Python.

Ho trasformato il lavoro in una vera applicazione Android:

Surveyor — Blackstar AMPED 3 Controller.

L’idea è molto semplice: collegare l’Amped 3 direttamente allo smartphone tramite USB-OTG e poter fare dal telefono quello per cui normalmente servirebbe Architect.

L’app legge lo stato reale del pedale, permette di modificare i parametri e risincronizza l’hardware dopo le scritture.

Tra le funzioni attuali ci sono:

Controllo dei parametri

Accesso ai parametri dell’amplificatore e a diversi parametri CabRig che non sono esposti direttamente dai controlli fisici.

Per esempio, Surveyor espone Cabinet Level e Room Level e permette di lavorare con i parametri dell’EQ e dei filtri.

Per Low-Cut e High-Cut mostro anche una conversione approssimativa in Hz. È importante sottolineare che Architect non fornisce quelle frequenze, ma soltanto una posizione 0–10: quindi Surveyor le considera correttamente come una stima, non come una misura di laboratorio.

Preset direttamente sul telefono

Le patch possono essere salvate, importate ed esportate senza dover aprire un computer.

La gestione dei preset è stata progettata con qualche cautela in più del semplice “scrivi i byte e spera”.

Prima di una scrittura Surveyor crea un backup locale dello slot, invia i dati, aspetta la conferma, rilegge il contenuto e verifica quello che è stato effettivamente scritto. Se qualcosa non torna, l’app lo segnala invece di fingere che il salvataggio sia andato bene.

Live-oriented UI

Ho cercato di progettare l’interfaccia pensando al fatto che potrebbe essere utilizzata con una chitarra in mano, magari in sala prove o sul palco.

Valori grandi, controlli che non cambiano accidentalmente con un semplice sfioramento e una gestione dei cabinet che permette di vedere immediatamente quale profilo è selezionato.

Non è un’interfaccia “desktop rimpicciolita”.

Custom Cabinet Profiles

È probabilmente la parte più sperimentale e più interessante del progetto.

Puoi importare una WAV impulse response, farla analizzare dall’app e generare un profilo compatibile con il modello CabRig.

Il profilo viene caricato solamente nella configurazione DSP live: Surveyor non scrive il risultato nei sei slot permanenti del pedale.

Ho aggiunto anche alcune protezioni perché la prima cosa che voglio evitare quando faccio reverse engineering di un amplificatore è trasformarlo in un fermacarte costoso.

288 profili CabRig analizzati

Durante il lavoro ho inoltre estratto e analizzato i profili CabRig presenti nella mia unità.

Il repository contiene 288 combinazioni factory, corrispondenti alla matrice completa 24 × 6 × 2; alcune condividono lo stesso payload, per cui i profili distinti sono 276.

Tutti i profili catturati superano i due livelli di checksum utilizzati dal protocollo.

Questo materiale è diventato anche una serie di tool di ricerca offline. Per esempio, il progetto contiene script Python che permettono di decodificare, modificare e ricostruire i profili CabRig senza collegare fisicamente il pedale.

In pratica, quello che era iniziato come:

“Vorrei solo un’app Android per non portarmi il Mac alle prove”

è diventato un piccolo progetto di reverse engineering del DSP.

Open source

A questo punto non aveva senso tenere tutto privato.

Ho quindi pubblicato Surveyor come progetto open source.

Il repository contiene l’app Android, la documentazione del protocollo, gli strumenti di analisi, i profili CabRig e la documentazione relativa alla conversione delle IR.

L’obiettivo non è sostituire ufficialmente Architect ma capire come funziona l’hardware che abbiamo comprato e costruire gli strumenti che vorremmo avere.

Se avete un Blackstar Amped 3 e volete sperimentare, il progetto è qui:

Surveyor — GitHub

L’APK compilato è disponibile nella sezione Releases, quindi non è necessario compilare il progetto per provarlo. Basta un dispositivo Android, un cavo USB-OTG e un Amped 3.

Il progetto è indipendente da Blackstar e non è affiliato, approvato o supportato dall’azienda. Utilizzatelo a vostro rischio e pericolo, non mi assumo alcuna responsabilità.

E sì: la prossima volta che qualcuno mi dice “ma perché non usi semplicemente il software ufficiale?”, probabilmente gli risponderò che avrei potuto. Ma sarebbe stato molto meno divertente. E avrebbe fatto molte meno cose.