31 Marzo 2022

Le espansioni Roland “Wave Expansion” e “SuperNATURAL Expansion”: formati compressi e 16 bit lineari

Il 16 Marzo Roland ha presentato i nuovi Synth/Workstation Fantom06/07/08 che, a causa della User Memory Flash di 256 MByte, ha posto tutta una serie di domande sulla reale capienza di tale memoria che condivide e può ospitare le “Wave Expansion” (EXZ001-EXZ015), le “SuperNATURAL Expansion” (EXSN01-03) e gli User samples e multisamples utilizzabili all’interno della sintesi Zen-Core.

Il dubbio principale nasce dal fatto che i nuovi Fantom0 sono venduti con all’interno le tre espansioni SuperNATURAL Acoustic Piano1 - SuperNATURAL Acoustic Piano2 e SuperNATURAL Electric Piano 1: tali espansioni, che tra l’altro possono essere anche cancellate, occupano 120 MByte (46% della capienza complessiva) lasciando uno spazio libero pari a 136 MByte che è quello che ci si ritrova acquistando il Synth.

Ciò che ha creato notevoli perplessità è che in tali 136 MByte è possibile caricare ben 4 espansioni EXZ, nonostante il fatto che ciascuna di queste è un file di dimensione compresa tra i 96 e i 128 MByte. Come è possibile caricare dei file superiori a 400 MByte, in uno spazio della flash di 136 MByte?
Grazie alla possibilità di cancellare le 3 espansioni SuperNATURAL, è possibile liberare del tutto i 256 MByte della Flash e poi caricare fino a 8 espansioni EXZ, nonostante la capienza complessiva dei file (si scaricano da RolandCloud con il RC Manager) è di circa 900 MByte, valore più di tre volte superiore rispetto alla Flash disponibile. Altra domanda a cui rispondere: come è possibile che i file delle tre espansioni SuperNATURAL, che occupano complessivamente 440 Mega, possano occupare solo 120 Mega quando vengono caricate nella flash?

La risposta è molto semplice: dai file scaricati tramite RCM (Roland Cloud Manager) e caricati in Fantom0 tramite USB, viene trasferita nella Flash solo una piccola porzione dei dati presenti nei file.
Stessa cosa succede per altri synth Roland quali RD-88, AX Edge e Jupiter X/XM.

Per capire meglio, occorre fare un piccolo passo indietro nel tempo e tornare agli anni 1988-1990 in cui Roland presenta la famiglia dei Moduli/Synth U-110/U-220 e U-20, D-70: è il primo passo di Roland nell’utilizzo dei Multisample che sono memorizzati nelle ROM e nelle Card di espansione.

Per risparmiare prezioso spazio, Roland adotta una tecnica di compressione chiamata RS-PCM, molto probabilmente acronimo di "Reduced Size PCM". Tale codifica, probabilmente non particolarmente efficiente, viene subito abbandonata.
E’ un primo passo verso la ingegnerizzazione di un nuovo codec di compressione chiamato FCE-DPCM che per la prima volta viene utilizzato nella Flash del JD-800 (è il 1991): tutti i synth Roland successivi, dalla famiglia JV e XV degli anni 90, passando ai vari moduli GM/GS, fino ai recentissimi Integra-7 (2012), FA-06/8 (2014) utilizzano tale codifica di compressione.

Roland non ha mai reso note le caratteristiche di questo codec per evidenti motivi di copyright, ma ha dato la possibilità agli utenti “smanettoni” di curiosare su tale formato grazie al fatto che è utilizzato per esempio nelle varie espansioni liberamente scaricabili su axial.roland.com o nella schedina SD presente all’interno di Integra-7.

Ad oggi, l’unico utente che ha dichiarato di essere riuscito a decodificare tale codec è stato il WebMaster del sito dtech.lv che tra l’altro, a prova delle sue capacità, ha reso disponibile, qualche anno fa, il prezioso contenuto della FlashROM dei campioni del JD800 nella versione originale (3 MByte compressa nel formato FCE-DPCM) e nel corrispondente formato in chiaro a 16 bit lineari (dimensione di poco inferiore ai 6 MByte).

Riguardo la qualità di tale codec è noto che ha un rapporto di compressione variabile che riduce la dimensione di un fattore compreso tra 1:2 e 1:3 e che dipende dal tipo di campioni di origine (lo vedremo tra breve): l’autore che lo ha decodificato lo descrive come altamente ottimizzato, tanto da avere una dinamica comparabile a quella di un campione a 24 bit lineare con piccoli artefatti evidenti solo negli attacchi più rapidi.

Nel 2019 arriva il Fantom e per la prima volta i multisamples utilizzati per le espansioni esterne sono nel formato 16 bit lineare: il download delle espansioni Wave Expansion (EXZ001-EXZ015) lo si poteva effettuare sempre tramite http://axial.roland.com/ in quanto non esisteva ancora Zenology PRO che debutta nell’anno successivo, (12 maggio 2020) all’interno del pacchetto Roland Cloud.

Tali file EXZ, oggi inutilizzabili con i nuovi firmware di Fantom, hanno una dimensione ridotta rispetto a quelli scaricabili oggi tramite RCM in quanto contengono solo tale versione con samples codificati a 16 bit lineari e quindi non compressi.
Con l’avvento di Zenology, Roland aggiunge due novità: la prima è l’inserimento delle informazioni di licenza (48 Byte) all’interno delle Wave Expansion che rendono i file EXZ scaricati da Roland Cloud unici per una manciata di byte e associati all’account che li ha creati; la seconda novità è l’inserimento all’interno di tali file della versione dei multisamples compressi nel formato FCE-DPCM.
Il doppio formato è presente anche nelle “SuperNATURAL Expansion”.

Qui uno shot dove si visualizza, ad esempio, l’espansione EXZ009 - EXZ Symphonique Strings nella versione del sito Axial (multisamples in 16 bit lineari) e in quella scaricabile con RCM. La parte compressa ha la stessa dimensione di quella presente nelle vecchie espansioni per FA-06/08.

La presenza all’interno dei file EXZ di multisamples nel doppio formato (compresso e 16 bit lineare) e l’inserimento dei 48 byte di licenza, garantisce a Roland tutta una serie di vantaggi:

- caricamento delle versioni compresse in Fantom0 (user flash 256 MByte), AX Edge, RD-88 e JupiterX/XM (hanno flash libera poco superiore ai 64 MByte) e caricamento delle versioni 16 bit lineari in Fantom
- caricamento delle versioni con licenza (perpetua o in abbonamento) in Zenology
- distinzione, grazie ai 48 byte di licenza, delle versioni free per Fantom e Fantom0 e quelle a pagamento per AX Edge, JupiterX/XM e RD-88

Riguardo le tre “SuperNATURAL Expansion” (EXSN01-03) la struttura è identica, con l’unica differenza che, armeno per ora, è possibile utilizzare tali espansioni solo con Fantom e Fantom0

Seguono degli shot in cui sono mostrate le dimensioni delle due versioni presenti nei file, lo spazio vuoto (una serie di byte pari a zero) e il rapporto di compressione tra la versione compressa e quella 16 bit lineare.

Analizzando le dimensioni si dà chiara risposta alle domande poste all’inizio.

 

 

 

Qualche breve osservazione.

La prima è che i multisamples compressi presenti nei file EXZ hanno tutti una dimensione pari a 32 MByte: questo è coerente con il fatto che derivano dalle schede di espansione SRX, tutte avente capienza massima pari a 32 MB e compatibili con la vecchia serie di serie di Fantom, la famiglia XV (5080, 5050, 3080, 2020) e JV (1080-2080).

La seconda osservazione è che il rapporto di compressione del codec FCE-DPCM, come si vede in tabella, non è fisso: questo è tipico dei codec Lossless e dei codec che introducono solo piccole approssimazioni in fase di compressione.
La compressione ottenibile è strettamente legata alla caratteristica del file di origine.

L’ultima osservazione riguarda la qualità del suono: quanto un Fantom0 che legge i multisamples compressi con il codec FCE-DPCM suona “peggio” rispetto al Fantom che legge i file 16 bit lineari (ovviamente escludiamo l’incidenza dei convertitori)?
Io non darei per scontato che per le 15 EXZ, ci sia un deterioramento della qualità perché è tutto da dimostrare che Roland con Fantom sia ripartita dai sample originali non compressi (materiale degli anni 90) e li abbia inseriti nelle EXZ senza direttamente: potrebbe darsi che la scelta di utilizzare la codifica 16 bit lineare sia dovuta alla architettura di Fantom che è molto complessa come si può vedere dallo schema che segue e che pertanto obblighi i BMC a lavorare con samples necessariamente non compressi.

In Fantom, infatti, tutti i samples utilizzabili (interni, espansioni e user) sono memorizzati all'interno di una memoria eMMC di 4 GByte e all’accensione vengono interamente trasferiti nella RAM (anche essa di 4 Gbyte): mentre vengono sintetizzati i suoni, i dati necessari  vengono distribuiti alla piccola RAM (32 MB) associata a ciascuno dei  4 BMC,  tramite 2 FPGA Altera Cyclone V.
AX Edge, JupiterX e presumibilmente Fantom0 hanno invece una architettura più classica dove i samples rimangono sempre nella Flash e vengono caricati, all’occorrenza, nella piccola memoria di 32 MByte che accompagna ogni BMC.
Non è pertanto da escludere che Roland, per le conversioni delle vecchie schede SRX in EXZ,  in Fantom ha semplicemente riconvertito in 16 bit lineari i file compressi, senza ovviamente poterne miglorarne la qualtà, "obbligata" da soli motivi di architettura HW.

Riguardo i suoni più recenti (vedi ad esempio il SN AcPiano2 e le prime  4 espansioni EXZ che non derivano dalle vecchie schede SRX) certamente la natura non compressa dei samples garantisce in Fantom una qualità leggermente migliore rispetto a quella di Fantom0 che è costretto ad utilizzare la versione compressa. L'ottima qualità del codec FCE-DPCM è garanzia comunque di una differenza al limite dell'impercettibile.

 

Concludo con un video che ho realizzato qualche mese fa di un "Teardown" del mio Roland AX- Edge con immagini e dettagli dell'Hardware: riguardo la parte relativa alla generazione sonora l'audio mainboard contiene un singolo SoC Roland BMC, 48 MByte di RAM e 256 di flash che contiene fino a 2 espansioni EXZ e  i circa 150 MByte di firmware e samples ZenCore: in più è presente una seconda Flash più piccola e più lenta (48 MByte) probabilmente utilizzata per la memorizzazione dei toni e performance.