Aggiornamento importante!
A partire da Windows 10 può capitare saltuariamente che gli aggiornamenti rimuovano il driver BassMidi, per cui poi è necessario reinstallarlo.
Nel frattempo da questo link potete scaricare una versione aggiornata del SoundFont che uso normalmente
Come avevo anticipato nel blog “Karaoke di qualità con Vanbasco” eccoci ora a discutere un ulteriore miglioramento nella riproduzione dei suoni sintetizzati a partire dai midi, il tutto ancora una volta senza versare alcun euro aggiuntivo, ma ricorrendo solo a materiale disponibile in modo gratuito (donazione spontanea a parte
); in questo caso il risultato, a parte un po’ di pazienza richiesta nella configurazione, è davvero molto buono per quanto riguarda la qualità dei suoni sintetizzati, paragonabile, e anche superiore, a quella di sintetizzatori hardware dal costo di alcune centinaia di euro.
Nel post Karaoke di qualità con Windows senza componenti aggiuntivi accennavo ad un “evoluzione” nella riproduzione dei midi tramite l’utilizzo di Timidity++, che in sostanza è un sintetizzatore MIDI che fa uso di SoundFont; l’ho provato per diverso tempo ma il suo svantaggio principale è che praticamente occupa in memoria il doppio della dimensione del file .SF2 utilizzato, il che può risultare un po’ limitativo nei confronti di SoundFont di dimensioni consistenti.
In questo post parleremo del driver BassMIDI Driver, che utilizza le componenti BASS e BASSMIDI, unitamente ad una versione dello stesso driver modificata, e con caratteristiche aggiuntive che ho prodotto partendo dalla versione base, per evitare, in prima istanza, un problema durante la riproduzione “live” dei MIDI quando si fa uso di banchi dei suoni di dimensioni consistenti (come vedremo): la presenza di “strappi” durante il caricamento dei suoni, tanto più evidenti quanto meno performante è il PC che si usa.
La versione che ho prodotto prevede le seguenti differenze:
-
possibilità di precaricare in memoria tutti i banchi dei suoni in aggiunta al comportamento predefinito
-
possibilità di escludere gli effetti REVERB e CHORUS predefiniti del sistentizzatore MIDI (disabilitati di default)
-
possibilità di configurare gli effetti REVERB, CHORUS e COMPRESSOR nell’implementazione DirectX; questi effetti sono abilitati in modo predefinito e personalmente sembrano configurati senza “strafare”; il compressore ad esempio ha una soglia di intervento di –12dB con un rapporto 2:1 quindi non molto invasivo, ma utile.
-
impostazione della frequenza di campionamento dei suoni presenti nei banchi (44Khz il predefinito)
-
impostazione della frequenza di campionamento della scheda audio (44Khz il predefinito)
-
regolazione della polifonia fino ad un massimo di 256 voci (valore predefinito)
Allo stato attuale la modifica di questi parametri rispetto al valore predefinito richiede l’utilizzo del registro di configurazione (RedEdit); sto lavorando ad una piccola interfaccia che permetterà di apportare queste modifiche in modo più agevole (tempo permettendo).
Per come è stata compilata questa mia versione ho il sospetto che funzioni solamente su Vista e Windows 7, ma non su Windows XP; fatemi avere un feedback per cortesia.
Veniamo ora all’installazione e alla configurazione dell’ambiente:
-
Installare il driver BASSMIDIDRV prelevandolo da
http://www.mudlord.info/bassmididrv/#bassmididriverdownloads; è necessario installare la versione 3.0 e non le precedenti, in quanto la mia modifica si basa su questa versione, e quelle precedenti avevano problemi di funzionamento con VanBasco. Il driver viene installato nella cartella C:\Windows\system32\bassmididrv (o C:\Windows\SysWOW64\bassmididrv per le versioni a 64Bit).
-
-
Installare la componente BASSMIDI piu recente prendendolo dall’elenco di Add-On
http://www.un4seen.com/bass.html#addons, sovrascrivendo quella presente nella cartella bassmididrvi descritta sopra
-
Prelevare il SoundFont MySoundFont.SF2 da
questa cartella ed estrarlo sul disco locale; la dimensione totale è di poco meno di 600Mb. Nella stessa cartella a breve sarà presente anche un banco dei suoni di dimensioni maggiori, circa 850Mb, diviso in strumenti e drumkit.
-
Utilizzare lo strumento di configurazione di BassMIDI (Configure BASSMIDI Driver) per applicare il SoundFont appena scaricato.
-
Aggiungere al registro di configurazione le informazioni presente nel file For32BitOS.reg per sistemi operativi a 32Bit oppure For64BitOS.reg per sistemi a 64Bit, prelevandoli sempre dalla cartella riportata sopra; questi file pressuppongolo l’installazione di windows nella cartella C:\WINDOWS, in caso contrario modificare opportunamente i valori.
-
Sovrascrivere bassmididrv.dll nella cartella C:\Windows\system32\bassmididrv (o C:\Windows\SysWOW64\bassmididrv per le versioni a 64Bit) con quella presente nella cartella già vista; vale quanto già visto sopra per l’installazione di Windows.
-
Nelle opzioni di VanBasco o del software che usate impostare il dispositivo di uscita su “BASSMIDI Driver”

Con le impostazioni predefinite nel momento in cui selezionate il nuovo dispoditivo di uscita il drvier inizierà a precaricare il banco dei suoni, mentre agli avvii successivi lo farà al primo play.
Ecco nel dettaglio l’occupazione della memoria con il SoundFont che uso attualmente

Il banco da 600Mb si comporta molto bene anche con sistemi con 2Gb di Ram, per quello da 850Mb vi consiglio di fare alcune prove; sul portatile che usa un mio amico per fare serate non da problemi, ma gli ho installato una versione di Windows 7 “ad hoc”, che fa il boot da un .VHD e non presenta nessun software precaricato all’avvio e simili. Per chi si vuole divertire funziona anche con la preview di Windows 8 
I due banchi presenti nella cartella citata sopra sono stati costruiti partendo da elementi preesistenti con la sostituzione e la modifca di vari strumenti, ed il tutto ha richiesto numerose ore di ascolto e di affinamento, usando sia strumenti (e banchi) trovati gratuitamente in rete sia strumenti (.SF2) acquistati online ; il risultato attuale rispecchia naturalmente il mio gusto personale, e quello del mio amico, e non è detto che gli strumenti utilizzati in essi siano graditi a tutti.
Il banco da 850Mb oltre ad avere elementi diversi presenta anche differenze negli strumenti comuni per quanto riguarda alcuni parametri che ne determinano il comporamento ( Attack, Sustain, Decay Release, Modulation, ecc)
Comunque in rete si trovano diversi siti che forniscono gratuitamente sia banchi completi che i singoli strumenti: un buon punto di partenza può essere il seguente link http://www.synthfont.com/links_to_soundfonts.html; molto buoni i SoundFont SGM e Crisis riportati nel link sopra, mentre un altra fonte di SoundFont, con singoli strumenti è www.sf2midi.com
Nei prossimi giorni aggiungerò anche alcuni esempi di MIDI riprodotti con la configurazione predefinita di Windows, con la modifica al file GM.DLS già vista e poi con il driver BASSMIDI tramite i due banchi di suoni presentati in questo articolo.
Di seguito invece i dettagli dei parametri di configurazione che trovate nel registo di configurazione nel percorso HKEY_LOCAL_MACHINE\SOFTWARE\BASSMIDI Driver per Windows a 32Bit e HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\BASSMIDI Driver per Windows a 64Bit
-
Preload (0/1) determina se il banco dei sui viene precaricato all’avvio del software oppure se i suoni vengono caricati realtime. il valore predefinito è 0.
-
SampFreq determina la frequenza di campionamento dei suoni presenti nel SoundFont; il valore predefinito e 48000
-
AudioSampFreq determina la frequenza di campionamento della scheda audio ed il valore predefinito è 44100.
-
Poliphony determina il livello di polifonia dello stream MIDI, e di default è impostato a 256.
-
UseEffects (1/0) abilita o disabilità l’utilizzo degli effetti COMPRESSOR, CHORUS e REVERB nell’implementazione DirectX. Il valore predefinito è 1, se lo si imposta a 0 si abilitano CHORUS e REVERB MIDI predefiniti
-
UseChorus, UseCompressor, UseReverb (1/0) abilitano o disabilitano i relativi effetti DirectX; il vaolre predefinito è 1: NOTA: Il compressore può essere abilitato anche quando UseEffects è impostato a 0, dimodochè lo si possa usare anche con gli effetti MIDI predefiniti.
-
volume imposta il volume dello stream audio ed il valore predefinito è 10000.
I rimanenti parametri riguardano le impostazioni dei vari effetti ed il loro significato è spiegato nella documentazione della componente BASS al seguente link http://www.un4seen.com/doc/ (sezione BASS-> Effects –> Structures)
AGGIORNAMENTO AL 18/07/2012
Ho aggiornato la procedura di installazione, riportando i passi corretti, del momento che alcuni di voi mi hanno fatto notare alcune imprecisioni. Inoltre nella cartella https://skydrive.live.com/?cid=ED63F32772D65F20&id=ED63F32772D65F20%21521 ho copiato alcuni Screen Capture di VanBasco per presentrvi alcuni MIDI riprodotti con il driver in questione e l’ultima versione di SoundFont che sto utilizzando, e che vi fornirò nei prossimi giorni, appena finite ulteriori modifiche. Con l’ultima versione di BASSMIDI rilasciata in questi giorni sto inserendo nel codice del sintetizzatore anche alcune migliorie, come l’incremendo del numero di voci a 500 e l’utlizzo (gestito da registry) della “Sinc Interpolation” per il campionamento dei suoni presenti nel SoundFont; con questo metodo la qualità audio dovrebbe migliorare ulteriormente ma a scapito di un incremento dell’ uso della CPU, che però al momento sto riscontrando essere minimo.
Aggiornamento del 15/01/2013
Ho copiato nella solita cartella una nuova versione della DLL, unitamente alle varie componenti di supporto aggiornate all’ultima versione disponibile, che vi consiglio di installare; il file si chiama BassMidi.RAR
Questa nuova versione visualizza un’icona nell’area di notifica dalla quale si accede a diversi paramentri di configurazione

Come si vede adesso abbiamo a disposizione diverse configurazioni, che fino alla versione precedente richiedevano la modifica del registry (a parte la lista dei soundfont); per il Reverb ed il Chorus al momento è presente solo la possibilità di regolare il livello, ma in futuro dovrei riuscire ad inserire anche la possibilità di modificare paremetri come tempo, filtri, ed altri valori di configurazione (dimensione della finestra permettendo). La versione attuale non usa più Reverb e Chorus DirectX ma quelli standard MIDI. Inoltre se mantenete separato il file del Drumkit è possibile anche modificare il livello dello stesso, che non viene salvato, e il primo pulsante da destra sotto l’elenco dei suoni permette di ricaricarli senza uscire da VanBasco (qualche secondo di attesa), cosa che a me risulta molto comoda. Ricordatevi che questa DLL si basa sulla versione 3.0 del driver, e ad oggi dovete andare nel repository per scaricarlo; il link è questo http://kode54.net/bassmididrv/archive/
Ho realizzato anche un set di suoni di dimensioni inferiori al precedente, ma non per questo di minore qualità a mio giudizio, ed ho modificato il drumkit per rendere gli snare dello “Standard” un po’ più incisivi; la dimensione in memoria adesso è poco oltre i 510Mb ed i nuovi suoni comprendono anche diversi strumenti nei banchi successivi al primo.
Lo trovate in questa cartella SMALL in formato WinRar in modo da rendere più agevole l’estrazione.
Aggiornamento del 01/08/2013
Ciao a tutti, vi lascio prima delle ferie con un aggiornamento per quanto riguarda il banco dei suoni, come anticipato in alcune risposte, sia nei commenti che personali; il nuovo ha una dimensione di circa 1,4Gb e si trova in questa cartella 31072013 in formato .ZIP. Dal punto di vista tecnico ho sostituito alcuni strumenti, per altri ne ho modificato la modulazione e cambiato diversi default per quanto riguarda il “Reverb Send” ed il “Chorus Send”, in quanto alcuni erano proprio asciutti; ho iniziato inoltre ad espandere il numero degli strumenti per coprire la gamma GS (banchi 8, 16, 24) partendo da quelli che risultano in versione “Wet” o “Chorus” e altri strumenti che ho incontrato in alcuni MIDI.
Tenete presente che con l’impostazione predefinita “Preload Soundfonts” occorre sempre un tempo variabile tra i 30s ed i 60s per caricare i suoni, a seconda della velocità dei dischi; i possessori di PC con Hard Disk SSD non dovrebbero avere problemi nel disabilitare questa impostazione e caricare i suoni in realtime; in questo momento sto usando questa impostazione.
Sto anche valutando la possibilità di ridurre la dimensione dei suoni lavorando sulla frequenza di campionamento, quando possibile; si tratta in sostanza di effettuare un lavoro tramite un software RTA per identificare l’estremo superiore dei vari strumenti ed impostare una frequenza inferiore a 44KHz in base alla frequenza raggiunta.
Sono in arrivo anche novità per quanto riguarda il driver, di seguito alcuni screenshot



Fondamentalmente ho tolto la gestione dei livelli di Reverb e Chorus, in quanto ho riscontrato che diversi MIDI impostano i loro livelli (e a volte anche il tipo) per cui ho ritenuto effettuare questa scelta; nei casi di evidenti esagerazioni negli effetti è meglio intervenire sui MIDI stessi con i comandi SysEx (magari lo vediamo in un’altro post).
Nella finestra principale di configurazione adesso è possibile modificare anche il livello della polifonia (realtime) e visualizzare alcune informazioni, tipo la modalità MIDI (GM, GM2, GS, XG), il numero di voci, aggiornato ogni 200ms, ed il livello di utilizzo del buffer dei campioni. Tramite i pulsanti “Compressor” ed “Equalizer” si accede alle relative finestre di configurazione.
Sto completando le verifiche su queste nuove funzionalità e ragionevolmente di ritorno dalle ferie riuscirò a mettere in linea la nuova versione.
Aggiornamento del 26/02/2014
Ho messo in linea la versione annunciata nel precedente post e si trova nella cartella BassMidi con il nome bassmididrv.zip; contiene anche le ultime versioni delle dll di supporto necessarie, per cui è molto facile sostituirle. Inoltre nella cartella 22062014 ho caricato l’ultima versione dei soundfont che utilizzo; la dimensione adesso è intorno ad 1Gb in quanto ho cercato di ottimizzare alcuni strumenti riducendo la dimensione dei campioni e risistemando i loop in modo comunque da non perdere qualità del suono. Come al solito ho fatto anche alcune modifiche sui tempi di hold, decay e di modulation. Ricopiate anche in file .REG in quanto sono stati rigenerati in base alle ultime modifiche. Nel frattempo ho cancellato il soundfont MySoundFont.zip presente in quella cartella, ormai troppo “vecchio”.
Vi lascio anche
un link per una
nel caso in cui vogliate contribuire al lavoro già fatto e per tutti i futuri sviluppi delle varie componenti citate in questo blog
Mi piace:
"Mi piace" Caricamento...