quello che ho trovato io che è nato in ambiente di sviluppo Microsoft...
La caratteristica dei
framework cross platform è proprio quella di renderti indipendente dall'ambiente di sviluppo (es. puoi sviluppare e compilare un'applicazione Windows su un Mac, cosa per altro successa per decenni).
Per i progetti più contenuti in termini di funzionalità, ma largamente distribuiti, tipicamente si utilizza questa strada perché ti permette di compilare per una miriade di dispositivi, senza dover andare su ambienti
nativi.
Il nome del framework usato da RoonLabs è Mono.
Il grosso è scritto in C (++, #) e la UI usa un linguaggio (probabilmente uno XAML, HAML, Jade o simili) che si sono scritti internamente.
Il backend è un NodeJS con alcune parti scritte in C.
C è un linguaggio universale, di cui esistono compilatori per qualsiasi piattaforma.
QT è per esempio un altro framework cross platform che ha caratteristiche analoghe a Mono, supporto del linguaggio C (e suoi
dialetti).
Visto che ho la più che
ampia sensazione che si celi una discreta presenza di
gamer dietro alcuni di voi se volete un esempio analogo per quel contesto ci sono Unreal Engine e Unity, che fanno grossomodo la stessa cosa di un Mono.
Cosa può succedere con questo approccio?
Tipicamente nelle funzioni base non si hanno problemi di sorta: se un software deve riprodurre la musica lo fa. In altri aspetti che coinvolgono
altre funzioni può accadere che il framework non sia ottimizzato quanto l'accesso nativo a tutta una serie di
facilitatori che il sistema operativo ti mette a disposizione.
Un esempio di
facilitatore (sto usando un termine improprio, ma è per far capire) è
Metal su macOS.
La verticalizzazione dello sviluppo è ancora oggi quella che offre soddisfazioni maggiori.
Ecco che
Roon (ovvero la sua interfaccia grafica e non Roon Core che NON HA interfaccia grafica) può risultare più legnosetto su iOS, Android o macOS piuttosto che su Windows, perché costretto a passare per rendering software delle proprie viste (che probabilmente Mono riesce ad accelerare meglio su Windows in virtù della sua vocazione .NET).
Tipicamente questo tipo di problematiche sono risolte dalle risorse del dispositivo, quindi più veloce è la macchina che lancia l'applicazione di controllo, meno saranno percepibili i limiti.
Ma c'è un altro aspetto che invece è dato dal RoonCore che è il "cervello" di Roon che fa da smistatore/manipolatore di flussi audio e controlla la libreria.
Queste funzioni hanno
lo stesso limite descritto sopra quindi se le
risorse della macchina ( e relativo sistema operativo) che ospita il Core sono governate da servizi terzi (che servono al sistema operativo ovviamente) Roon ne perde la
priorità, ed ecco che potrebbe diventare necessario un
sovradinsionamento delle stesse.
È proprio per aggirare i limiti che insorgono da quel lato che hanno scritto
Rock.
Hanno spostato la verticalizzazione del codice, svincolandosi da quei
facilitatori che non potrebbero mai sfruttare se non con uno sviluppo dedicato ad ogni singolo ambiente.
Contestualmente hanno potuto rimuovere tutta una serie di funzioni che per la gestione di una libreria audio non servono.
Ora, ci tengo a precisare che non sono uno sviluppatore, ma lavoro nel settore.
Potrei aver scritto delle cose
formalmente inesatte.
Magari slash riesce a raffinare qualche improperia.
Tornando alla discussione.
Nonostante abbia specificato che non parlavo di qualità della riproduzione... Si finisce a parlare di qualità della riproduzione...
Per la cronaca... RoonCore l'ho installato e ascoltato su diverse configurazioni e soluzioni, per me e per alcuni amici.
macOS < mia prima installazione di
RoonCoreWindows
QTS < mia attuale installazione
Rock < installato a due amici, con due library diverse una più piccola della mia e una il doppio più grande
Sul mio impianto non c'è nessuna differenza
qualitativa in riproduzione.
La qualità di riproduzione su questi sistemi è identica, nessun nero infrastrumentale, microdinamiche e stabilità della scena, attacchi dei pianoforti e altre vezzegiosità audiofile...
Diverso è il discorso delle
prestazioni, intese come velocità di lettura del database, wake-up degli endpoint, delay sull'avvio/interruzione di playlist/album, stabilità del flusso di rete, tenuta con DSP e upsampling.
In questi termini quello che mi ha dato la prova di essere più scattante a parità di configurazione hw è
Rock. Ma ripeto, la qualità di riproduzione è identica.
Quello che cambia è l'esperienza utente: meno interruzioni, più velocità nella ricerca, trasferimento delle zone ecc...
PS. Avevo già pronti i pop corn...