Ma come funziona un vst ?

giannirsc 27-01-11 16.10
mi chiedevo..ma un vst come funziona ? ad esempio l'emulazione di un virtual analog..il pc genera le forme d'onda o sfrutta campionamenti di forme d'onda ? e a che qualità lavora un vst ?..ad esempio B4 o absynth o fm7, cambia qualcosa se lo esporto a 44khz o 96 ? è una mia semplice curiosità.
MacJack 27-01-11 17.57
Mi pare che tu abbia le idee alquanto confuse.

Un computer è nient'altro che una grossa calcolatrice giusto?
Bene. Un programma è una serie di stringhe di codice che, sfruttando le capacità di calcolo delle componenti del computer, esegue determinate funzioni preimpostate dal programmatore. Giusto?
Ok

Un VSTi è semplicemente un programma creato per generare suoni. Il suono, come qualsiasi (o quasi) aspetto fisico della realtà è possibile descriverlo attraverso leggi matematiche.
Quando si parla di "modellazione fisica" del suono si intende proprio questo: ciò che senti è prodotto dall'elaborazione di dati matematici che sono stati scritti dal programmatore. Più il programmatore è esperto di fisica e matematica, più i suoi calcoli saranno corretti e l'esito sonoro realistico.

Quando si parla di campionamento invece, si intende che un suono viene registrato e viene opportunamente usato in modo da poter essere riprodotto in maniera realistica da uno strumentista.
Tastiere hardware fanno questo, esattamente come fanno i VSTi... cambia solo l'hardware fisico con cui vengono calcolati i dati e determinati linguaggi di programmazione usati.

44.1 Khz è la frequenza di campionamento standard usata per i CD. Più la frequenza sale, più la qualità aumenta perché il suono, che passa da analogico a digitale, viene campionato in un numero di punti maggiore.
Quando fai un downgrade da una frequenza alta ad una più bassa, chiaramente perdi un pò ma il risultato non dovrebbe essere molto distruttivo... diverso il discorso inverso.

La qualità dei VSTi è dettata dalla qualità della tua scheda audio. Essi sono progettati per lavorare a qualsiasi FC
Edited 27 Gen. 2011 16:59
maxpiano69 27-01-11 18.09
Come rappresentato bene in VST Host, puoi pensare ad un VST come in questo schema logico:


[pre]Audio IN -----> IIIIIIIIIIIIIIIII -----> Audio OUT
I I
I SW Processing I
I I
MIDI IN -----> IIIIIIIIIIIIIIIII -----> MIDI OUT[/pre]

Dove SW Processing può essere quanto di più vario, es. un semplice Digital Delay "very basic" implementato in VST non farà altro che prendere i campioni in Audio IN e riproporli in AUDIO OUT con il ritardo (e le attenuazioni/ripetizioni) desiderate. emo

Nel caso dei VSti, ovvero "instruments" che devono generare delle note in base ai dati di MIDI IN, il "SW Processing" può essere puramente numerico (e.g. nei VA; o nei VSTi a sintesi FM o nei VSTi a modelli fisici come Pianoteq) oppure utilizzare dei campioni residenti in memoria/disco( es. i VSTi di tipo Rompler o pianoforti campionati, etc.) o anche dati Audio IN (e.g. un Vocoder) più elaborazione numerica.



Edited 27 Gen. 2011 17:14
giannirsc 27-01-11 18.19
ok ragazzi sarò rimbambito e non son riuscito a spiegarmi..prendo un vst...onda quadra..questa onda quadra come viene generata ? é un campione che viene riprodotto o si "chiede" al pc di ricreare digitalmente la funzione di un circuito analogico, quindi oscillatori resistenze etc?

Perchè ad esempio molti VA hardware, sfruttano forme d'onda campionate..quindi mi chiedo come possa funzionare un vst..ad esempio prendo korg legali collection..li sono una serie di waveform..se queste waveform sono campionate a 44100,a che serve lavorare a 96 ?

quindi vorrei capire, dato che un vst genera dei suoni, questi suoni li genera "leggendo" dei campioni o creandoli al suo interno ?


oppure posso fare un paragone più pratico...se prendo un jv1080 roland che ha la maggior parte dei suoi suoni campionati a 22khz, che senso ha registrarlo a 96 khz ?
Edited 27 Gen. 2011 17:21
mima85 27-01-11 18.28
MacJack ha scritto:
Quando fai un downgrade da una frequenza alta ad una più bassa, chiaramente perdi un pò ma il risultato non dovrebbe essere molto distruttivo... diverso il discorso inverso.


Invece se non si fa attenzione perdi eccome, perché ad una frequenza di campionamento più alta c'è il rischio che il suono contenga frequenze che vanno oltre la frequenza di Nyquist (Fcampionamento / 2) della nuova frequenza a cui vai a fare il "downgrade" (più corretto dire "downsampling")

Mi spiego meglio. Immagina di avere un suono campionato a 48000 Hz. La frequenza di Nyquist, che sarebbe la massima frequenza di un suono campionabile senza la formazione di aliasing, è data da Fcampionamento / 2, quindi la frequenza massima campionabile è 24000 Hz. Questo accade perché per descrivere un'oscillazione completa dell'onda servono come minimo 2 campioni. Portando la frequenza di campionamento di quel suono a, diciamo, 22050 Hz, come frequenza di Nyquist si otterrà 11025 Hz, quindi tutte le frequenze nell'intervallo tra 11025 Hz e 24000 Hz nel suono originale genereranno aliasing.

In pratica succede che le frequenze oltre il limite di Nyquist "tornano indietro". Se campioniamo un suono a 22055 Hz con frequenza di campionamento di 44100 Hz (quindi Fnyquist = 22050) nel file WAV risultante avremo un suono a 22045 Hz. Quindi tutte queste frequenze "di ritorno" (che nell'esempio di prima erano comprese tra 11025 e 24000 Hz) andranno a sovrapporsi alle frequenze correttamente campionabili sporcando il suono.

È per questo che prima dello stadio di conversione A/D di qualsiasi apparecchio che campiona un segnale vengono messi dei filtri passabasso il più ripidi possibile, per eliminare le frequenze che vanno oltre quella di Nyquist supportata dal convertitore.

Qui (in inglese) è spiegato con l'aiuto di grafici.
Edited 27 Gen. 2011 17:37
maxpiano69 27-01-11 18.30
Se sono campionamenti ovviamente non ha senso, ovvero se userai una frequenza superiore a quella del di campionamento originale, il VST dovrà "ricampionare" alla frequenza + elevata interpolando tra i campioni che ha.
(es. banale un cammpio preso a 48Khz può essere riprodotto a 96Khz semplciemente ripetendo 2 volte ogni campione oppure (meglio) inserendo un nuovo campione ogni 2 originali, ottenuto per interpolazione, lineare o non...)

Se invece (es. nei VA o nei modelli fisici) la forma d'onda è ottenuta tramite calcolo, il VST dovrebbe poter generare un numero maggiore di campioni (pari alla freq. impostata) semplicemente eseguendo la funzione ad un livello maggiore di "granularità"

PS: premetto che mi sono documentato ma non ho (ancora ma mi paicerebbe) sviluppato VST, per cui probabilmente qui il "guru" che può dare una risposta definitiva è .. lo Zio! emo
Edited 27 Gen. 2011 20:17
mima85 27-01-11 18.31
giannirsc ha scritto:
é un campione che viene riprodotto o si "chiede" al pc di ricreare digitalmente la funzione di un circuito analogico, quindi oscillatori resistenze etc?


Può essere fatto in entrambi i modi. O con un loop (una serie di istruzioni di programma ripetute tante volte quanto serve oppure all'infinito) che calcola i valori dell'onda in tempo reale oppure leggendo questi valori da delle tabelle predefinite in memoria (dette "Lookup Tables" o "Wave Tables"). Molte volte per onde "semplici" come quadre, triangolari, denti di sega, ecc... si usa l'approccio delle Lookup Tables per risparmiare cicli di calcolo CPU, in modo da dedicarli a tutto il resto (filtri, effetti, ecc...).

Penso che ZioKiller può confermare quanto detto, in caso avessi detto una vaccata faccio ammenda emo
Edited 27 Gen. 2011 17:33
MacJack 27-01-11 21.03
@ mima85
MacJack ha scritto:
Quando fai un downgrade da una frequenza alta ad una più bassa, chiaramente perdi un pò ma il risultato non dovrebbe essere molto distruttivo... diverso il discorso inverso.


Invece se non si fa attenzione perdi eccome, perché ad una frequenza di campionamento più alta c'è il rischio che il suono contenga frequenze che vanno oltre la frequenza di Nyquist (Fcampionamento / 2) della nuova frequenza a cui vai a fare il "downgrade" (più corretto dire "downsampling")

Mi spiego meglio. Immagina di avere un suono campionato a 48000 Hz. La frequenza di Nyquist, che sarebbe la massima frequenza di un suono campionabile senza la formazione di aliasing, è data da Fcampionamento / 2, quindi la frequenza massima campionabile è 24000 Hz. Questo accade perché per descrivere un'oscillazione completa dell'onda servono come minimo 2 campioni. Portando la frequenza di campionamento di quel suono a, diciamo, 22050 Hz, come frequenza di Nyquist si otterrà 11025 Hz, quindi tutte le frequenze nell'intervallo tra 11025 Hz e 24000 Hz nel suono originale genereranno aliasing.

In pratica succede che le frequenze oltre il limite di Nyquist "tornano indietro". Se campioniamo un suono a 22055 Hz con frequenza di campionamento di 44100 Hz (quindi Fnyquist = 22050) nel file WAV risultante avremo un suono a 22045 Hz. Quindi tutte queste frequenze "di ritorno" (che nell'esempio di prima erano comprese tra 11025 e 24000 Hz) andranno a sovrapporsi alle frequenze correttamente campionabili sporcando il suono.

È per questo che prima dello stadio di conversione A/D di qualsiasi apparecchio che campiona un segnale vengono messi dei filtri passabasso il più ripidi possibile, per eliminare le frequenze che vanno oltre quella di Nyquist supportata dal convertitore.

Qui (in inglese) è spiegato con l'aiuto di grafici.
Edited 27 Gen. 2011 17:37
Si si so come funzionano queste cose e appunto è una cosa ormai talmente ben conosciuta che nessun convertitore potrebbe essere sprovvisto degli opportuni filtri... per questo dico che non c'è un grosso rischio a fare il downsampling.

Il massimo che può accadere è che perdi dei dettagli...

Al contrario, se hai dell'aliasing ad una frequenza bassa, e pensi di risolverli aumentando la frequenza di campionamento non ce la fai.
Ma credo tu sappia anche meglio di me queste cose

emo
Edited 27 Gen. 2011 20:06
carmol 27-01-11 22.39
giannirsc ha scritto:
ok ragazzi sarò rimbambito e non son riuscito a spiegarmi..prendo un vst...onda quadra..questa onda quadra come viene generata ? é un campione che viene riprodotto o si "chiede" al pc di ricreare digitalmente la funzione di un circuito analogico, quindi oscillatori resistenze etc?

Dipende dallo sviluppatore del vst che tecnica ha voluto usare, si possono
implementare entrambe...
Il VST può 1) leggere i dati da usare per generare una forma d'onda da tabella,
tecnica assimilabile al campionamento, oppure 2) usare funzioni matematiche
per generare forme d'onda relativamente semplici... simulare un circuito elettronico a basso livello, con
resistenze etc, mi sembra un pò estremo, non mi risulta venga usata come tecnica.

giannirsc ha scritto:
Perchè ad esempio molti VA hardware, sfruttano forme d'onda campionate..quindi mi chiedo come possa funzionare un vst..ad esempio prendo korg legali collection..li sono una serie di waveform..se queste waveform sono campionate a 44100,a che serve lavorare a 96 ?

Più che altro conta la risoluzione di output usata..
Nel software host VST puoi da qualche parte settare il Sample Rate utilizzato,
è quello che ti dirà le caratteristiche di risoluzione del suono in uscita.
Il fatto che vengano riprodotti sample a 44.1 Khz 16 bit non significa nulla; la somma di più note
a questa risoluzione è qualcosa di molto più complesso di un altro sample a 44.1/16;
il risultato di questa convoluzione verrà adattato in uscita al sample rate specificato.
Edited 27 Gen. 2011 21:40
bobkurzweil 27-01-11 22.45
c'è qualcuno che si ricorda a quale semplice funzione matematica corrisponde una sinusoide ?emo
Ecco ho trovatO:
http://www.arrigoamadori.com/lezioni/TutorialMatematica/FunzioniRealiNotevoli/SenCosTan5.htm
c'è tutto quello che concerne un'onda di qualsiasi tipo acustica, elettrica, luce, radio, Rx.
quindi dando in pasto ad un'oscillatore virtuale quest'onda con le frequenze dell'audio,
si ha un moog virtuale, poi per modificare le forme d'onda le formule diventano sempre piu'
complesse... almeno immagino che funzioni cosi'...
ci vorebbe l'aiuto di zio killer...emo
Edited 27 Gen. 2011 21:54
maxpiano69 27-01-11 22.49
@ bobkurzweil
c'è qualcuno che si ricorda a quale semplice funzione matematica corrisponde una sinusoide ?emo
Ecco ho trovatO:
http://www.arrigoamadori.com/lezioni/TutorialMatematica/FunzioniRealiNotevoli/SenCosTan5.htm
c'è tutto quello che concerne un'onda di qualsiasi tipo acustica, elettrica, luce, radio, Rx.
quindi dando in pasto ad un'oscillatore virtuale quest'onda con le frequenze dell'audio,
si ha un moog virtuale, poi per modificare le forme d'onda le formule diventano sempre piu'
complesse... almeno immagino che funzioni cosi'...
ci vorebbe l'aiuto di zio killer...emo
Edited 27 Gen. 2011 21:54
Domanda seria o ..? emo cmq [pre]y=sin(x)[/pre]
Edited 27 Gen. 2011 21:49
MacJack 27-01-11 22.57
@ maxpiano69
Domanda seria o ..? emo cmq [pre]y=sin(x)[/pre]
Edited 27 Gen. 2011 21:49
emo
bobkurzweil 27-01-11 22.58
no, la domanda è seria, ma all'atto pratico, in quale linguaggio
di programmazione si scrivono queste cose, quali comandi accetta
il computer (CPU) o la scheda audio per dare adito ad una "prrrrr"
cioè una scoreggia virtuale....?
P.S.: x=sin(y),
mi sembra una risposta semplice, ma corretta: quanto avevi in matematica ?
Edited 27 Gen. 2011 22:01
maxpiano69 27-01-11 23.03
@ bobkurzweil
no, la domanda è seria, ma all'atto pratico, in quale linguaggio
di programmazione si scrivono queste cose, quali comandi accetta
il computer (CPU) o la scheda audio per dare adito ad una "prrrrr"
cioè una scoreggia virtuale....?
P.S.: x=sin(y),
mi sembra una risposta semplice, ma corretta: quanto avevi in matematica ?
Edited 27 Gen. 2011 22:01
I linguaggi di programmazione possono essere vari. ma per i VST il linguaggio di elezione secondo me è il C++ (nel quale, per risponderti, la funzione Sin() è implementata dalla libreria standard "math", insieme a molte altre).

Descrivere però tutto in un post non è possibile ma... se hai voglia di farti una cultura sui VST, partendo da 0 LEGGI QUI! (è in italiano) emo
Edited 27 Gen. 2011 22:06
carmol 27-01-11 23.05
bobkurzweil ha scritto:
per modificare le forme d'onda le formule diventano sempre piu'
complesse... almeno immagino che funzioni cosi'...

Si riduce tutto ad algoritmi e funzioni matematiche.
Esistono modelli matematici per filtri, inviluppi, lfo, fm etc.
Se si opera nel dominio digitale il tutto è più semplice.
QUI ad esempio,
in fondo alla pagina, c'è un semplice algoritmo che simula un
un filtro LP
carmol 27-01-11 23.13
bobkurzweil ha scritto:
in quale linguaggio
di programmazione si scrivono queste cose

La cosa importante è l'algoritmo, cioè i passi da effettuare per ottenere
un determinato risultato;
il linguaggio da utilizzare in teoria può essere uno qualsiasi,
qualunque linguaggio ha le funzioni e i costrutti necessari,
ma in pratica viene preferito il c e le sue varianti per la sua efficienza e rapidità di esecuzione,
importante per queste che sono elaborazioni in tempo reale.
Edited 27 Gen. 2011 22:13
giannirsc 27-01-11 23.23
vi ringrazio, ho dato una rapida letta quella guida in italiano e alla pag 3 si parla chiaramente che alla base di un vst c'è un suono campionato a 44100 ed in particolari copio

[c]"Questo tipo di rappresentizione del segnale viene definita "floating point" (per saperne qualcosa di più clicca qui).
Una volta “campionata” la sorgente audio, essa sarà quindi rappresentata come una semplice e sterile sequenza di numeri compresi tra -1 ed 1."[/c]

Quindi mi sembra di capire che ci si basa su una serie di campioni sui quali poi vengono applicati filtri e tecniche di sintesi.

carmol 27-01-11 23.39
Ma anche no emo
UN computer tratta numeri, per cui se arriviamo
al nocciolo sempre di campioni si tratta.
Un sample può essere visto come una sequenza di numeri.
Un oscillatore virtuale genera una sequenza di numeri;
un filtro virtuale trasforma la sequenza in un'altra sequenza;
un lfo genera un'altra sequenza di numeri; tramite convoluzione tra
le due sequenze viene generata una terza sequenza che rappresenta
la forma d'onda filtrata e modulata... e così via.
Tutto ciò è ben più complesso del ridurre tutto ad "un suono
campionato a 44100"
maxpiano69 28-01-11 00.14
@ carmol
Ma anche no emo
UN computer tratta numeri, per cui se arriviamo
al nocciolo sempre di campioni si tratta.
Un sample può essere visto come una sequenza di numeri.
Un oscillatore virtuale genera una sequenza di numeri;
un filtro virtuale trasforma la sequenza in un'altra sequenza;
un lfo genera un'altra sequenza di numeri; tramite convoluzione tra
le due sequenze viene generata una terza sequenza che rappresenta
la forma d'onda filtrata e modulata... e così via.
Tutto ciò è ben più complesso del ridurre tutto ad "un suono
campionato a 44100"
Esatto, ovvero (così forse rispondiamo alla domanda fondamentale) il programma deve generare (nel modo che gli pare ovvero come a seconda del modello di simulazione acustica implementato) una sequenza di numeri alla freq. cui è impostata la Scheda Audio, ovvero se lavoro a 48KHz devo generare 48.000 campioni al secondo ( a 16 bit, per canale).

Quindi, per provare a fare un esempio semplice, supponiamo di voler riprodurre un'onda quadra alla freq. di 1KHz (cicli al secondo) di ampiezza X (valore di picco entro i 16 bit) a 48Khz di frq. di campionamento

A quelal frequenza ho 48.000 campioni/sec. da generare; il rapporto 48Khz/1KHz = 48 quindi un'onda ad 1Khz richiede 48 samples per ciclo che per l'onda quadra saranno:

1 ciclo = [24 samples = 0] -> [24 samples = X]

ovvero i 48 samples, che per arrivare a 48.000 samples/s ripetono il ciclo 1000 volte in un secondo = 1Khz...
Edited 28 Gen. 2011 1:42
mima85 28-01-11 01.17
MacJack ha scritto:
per questo dico che non c'è un grosso rischio a fare il downsampling


Dipende se si fa il downsampling di un segnale che quelle frequenze, che vanno oltre il limite che verrà imposto dalla nuova frequenza di campionamento (più bassa), le ha già. In questo caso bisogna aver cura di applicare un passabasso che taglia alla frequenza giusta prima di far il downsampling, altrimenti... succedono casini emo

Cosa che penso i programmi di editing audio professionali fanno già, ma alcuni altri non lo fanno, con il risultato che ci si ritrova frequenze incasinate dappertutto

MacJack ha scritto:
Ma credo tu sappia anche meglio di me queste cose

Beh non e' mica detto, in fondo io sono un "banale" appassionato emo
Edited 28 Gen. 2011 0:29