Reaaliaikaista äänen muokkausta Windowsissa

elviz

Hifiharrastaja
Liittynyt
20.2.2007
Viestejä
6 377
Kaupunki
Tappara
Olen tässä lomilla leikkinyt VST pluginien kanssa. VST pluginit ovat miksausstudiossa käytettäviä ohjelmapätkiä, joilla voidaan muokata ääntä lennossa. Eli saadaan aikaan jos jonkinlaista efektiä ääneen, sekä vähän hyödyllisempiäkin asioita, kuten convolvaus huonekorjausta varten, äänen balanssi-korjaus ja pannaus, parametrinen EQ, crossover filterointi ja melkolailla mitä vain mahdollista. Osa plugeista on ilmaisia, osa maksaa jokusen kympin ja osa sitten paljon enemmän.

Windowsissa pluginit ovat .dll tiedostoja, ei siis ajettavia ohjelmia. Jotta näitä VST plugineja voidaan ottaa käyttöön, tarvitaan "VST host" ohjelmisto, johon voidaan plugineja ladata ja ketjuttaa. Joihinkin soitto-ohjelmiin on saatavilla VST host ohjelmisto lisäominaisuutena, mutta minua alkoi kiinnostaa yleisempi ratkaisu, mikä toimii koko käyttöjärjestelmässä, mukaanlukien Spotify, Foobar2000, videon toisto, pelit ja kaikki muut ohjelmistot jotka tukevat DirectSoundia.
"
Koko homman toimivuus perustuu ohjelmistoon nimeltä Virtual Audio Cable. Tämä ohjelmisto "huijaa" windowsia luulemaan, että tietokoneeseen on asennettu uusi fyysinen äänikortti. Tämä Virtual Audio Cable äänikortti laitetaan windowsin default äänikortiksi. ko. ohjelmisto tukee oikeastaan kaikkia mahdollisia ääniformaatteja, 44100-192000 ja 16-32 bittiä. Se kyllä maksaa jokusen kympin täysversiona, mutta siitä on myös saatavilla ns. kokeiluversio.

Nyt kun sitten äänet tulevat tuon Virtual Audio Cable äänikortin kautta, ne on myös saatava streamattua oikealle äänikortille, jotta ääni ylipäätään kuuluisi. Tähän väliin kytketään sitten se VST host ohjelmisto. VST host ohjelmistoja on monia, mutta itse olen tykästynyt kotikäyttäjälle ilmaiseen Cantabile Lite ohjelmaan. Se ei aiheuta häiritsevän paljoa latenssia esim. videon toistossa. Saattaa olla, että niitä on parempiakin.

Homma toimii näin Cantabile Liten kanssa.

Cantabile Lite vaatii, että myös default recording device on asetettu windowsissa Virtual Audio Cableksi. Joillakin toisilla vst host ohjelmistoilla on mahdolista säätää erikseen tuo sisääntulo, joten recording devicen ei tarvitse olla oletusarvoinen. Ulostuloksi määritellään tietenkin äänikortti. Sitten naksautetaan ruksi päälle Cantabile Liten pääkäyttöliittymässä kohtaan "input" ja jos musiikki soi, niin pitäisi myös input ja output palkkien liikkua ja musiikin kuulua äänikortin kautta. Ainiin ja rack paneelista pitää myös laittaa input päälle mikin näköisestä ikonista.

Kaikenmoisia hyödyllisiä ja hyödyttömiä VST plugineita on netti täynnä. Niitä voi sitten lisätä siihen rack paneeliin. Jokaisessa VST pluginissa on oma UI ja se tulee esille kaksoiklikkaamalla pluginia.

Tämä on mielestäni aika kätevä tapa esim. hoitaa huonekorjaus, varmistaa vaikka ettei digitaali leikkaa, tehdä vähän vakavempaa equtusta, säätää stereopannaus ja balanssi kuntoon tai ihan vaan rohkean hallitusti paskoa ääntä mieleisekseen. Paskomiset saa aina pois yhdellä klikkauksella, eikä rahapussi köyhy kuin korkeintaan kolikoista.
 
Hyvää matskua, elviz!

VST plugarit on kiinnostaneet kovastikin jo pidemmän aikaa, mutta kun musiikki tulee toistettua enimmäkseen Spotifysta, niin olen antanut asian olla. Periaatteessa Spotify on kait harkinnut "vakavastiotettavien" soitto-ohjelmien ominaisuuksien lisäämistä (esim. ASIO- tai WASAPI-mahdollisuutta), mutta tällä hetkellä kehityssuunta näyttää olevan kohti pullamössömusiikinkuluttajien kollektiivista kokemusta (sosiaalinen kuuntelu jne.). Mainitsemasi tapa vaikuttaa kohtuullisen simppeliltä ratkaisulta tähän ongelmaan. Jos olisi eksklusiivinen musiikinkuunteluun tarkoitettu kone, niin hyppäisin heti kelkkaan, mutta kun omalla koneellani paitsi kuunnellaan musiikkia, myös pelataan ja katsotaan leffoja, niin vähän vielä mietityttää että minkälaisia ongelmia tuo VAC mahtaa tällaisessa käytössä aiheuttaa. Kun koneen äänentoistoketjussa on nykyiselläänkin kaksi sound devicea, neljä eri toisto-ohjelmaa, ReClock, kaikki mahdolliset elokuvien ääniformaatit ja aivan omana lukunaan kolmelta eri vuosikymmeneltä olevia PC-pelejä, niin tuon VAC:n lyöminen tuohon pakkaan arveluttaa hiukan. Todennäköisesti silti otan ja kokeilen, kunhan kesän kiireet helpottavat. Muuttokin on taas edessä, jos vaikka huonekorjaustakin kohta tarvitaan...
 
Otin ja repäisin. Tunnin virittelyllä VAC, Cantabile Lite ja ensimmäinen VST plugin paikoillaan ja toiminnassa molempien varsinaisten äänilaitteiden kanssa. Vähän enemmän joutuu säätämään näytteenottotaajuuksia lähdemateriaalista toiseen siirryttäessä kuin tähän asti, mutta muutaman sekunnin jopi on pieni hinta tämän setin tuomien mahdollisuuksien hintana. Toimii täydellisesti kaikkien ääntä toistavien ohjelmien kanssa ja on itse asiassa aika selkeä käyttää.

Ekana varsinaisena säätönä tein Cantabileen kuulokekuunteluprofiilin, jossa ainut plugari on tämä. Varovainen crossfeed ja isompana juttuna equtus headroomin tekemien AKG K601 -taajuuskäyrien pohjalta kohti viivotinvastetta >:D. Olkoon vaikka kerettiläistä, mutta väittäisin että puolen tunnin säädöllä ihan hyvät kuulokkeet muuttui selvästi paremmiksi! Very cool.

 
pategen sanoi:
Olkoon vaikka kerettiläistä, mutta väittäisin että puolen tunnin säädöllä ihan hyvät kuulokkeet muuttui selvästi paremmiksi! Very cool.

Kaukana kerettiläisyydestä imho :) Tämän kaltaiset ratkaisut menee jo sinne puolelle jos käyttää kaikkia mausteita, mutta toisaalta what ever makes you happy sanon minä. Jos säätämällä saa omille korville miellyttävämpää saundia joka saa nauttimaan enemmän musiikista niin antaa palaa. Erinäiset kikat saa monet tukkoon kompressoidut biisit kuulostamaan paremmalta ja se ei voi olla kovin väärin.

Virtuaaliäänikortin lisäksi näitä ominaisuuksia voi käyttää myös studiotason äänikorteilla, joissa on vähän pidemmälle viety VST/ASIO-tuki. Esim E-Mu 1212M sisälsi aika jytyn DSP:n ja softa patch pöydän, eli ASIO-efektejä pystyi ajamaan suoraan kortin ajureiden kautta. Ei CPU overheadia, joskaan ei tuolla nykykoneilla enää niin ole merkitystä.
 
^Mulle on ihan sama onko kerettiläisyyttä vai ei. Aika moni kai pitää myös Spotifyn käyttöä hifistin pääasiallisena musiikinlähteenä suht kerettiläisenä, mutta on se kuitenkin paljon parempi kuin mikään muu tapa IMHO...

Prossun käyttö musiikin soidessa vaihtelee 1-2 % välillä, ja prosessilistauksessa Cantabilen prossun käyttö taas 0-1 % välillä. Muistia näyttää imaisevan n. 27 megaa. Tällä plugarilla ja tällä koneella (Q9550 @ 3,2 GHz, 4Gb RAM) yks kärpäsenjätös. Latenssia tosin tulee jostain aika paljon, vaikka Cantabilen bufferi on minimissä (DS:llä 512 samplea eli 11,6 ms). Pelaamiseen sopii siis vain varauksella, ja leffoille vain jos löytyy työkalut synkan säätämiseen.
 
Tuosta latenssiongelmaa voi korjata huomattavasti, käyttämällä sisäänmenona ja ulostulona Asio4All rajapintaa Cantabilessä. Jostain syystä tuo DS rajapinta lisää latenssia reilusti, etenkin kun se menee vielä kahteen kertaan DS:n läpi (VAC ja sitten äänikortti).

Ainakin Hifacen kanssa onnistui stabiili ASIO seuraavilla asetuksilla asio4all:sta:

Cantabile

Output: Asio4all
Buffer: 2048
Additional Buffers: 0

Asio4all

Virtual Audio Cable -> In: päällä
Virtual Audio Cable -> out: pois
Hiface -> out: päällä

Latency compensation in/out: 256 (<-- en tiedä tekeekö oikeasti mitään, mutta en viitsi ehjää korjatakaan)
HW buffers: pois
Kernel Buffers: 4
Always resample: pois
Force WDM to 16 bit: pois
ASIO Buffer Size: 2048


Tuunauksen varaa noissa voi olla jonkun verran. Selkeästi kuitenkin parempi latenssiltaan kuin DS:n läpi. Lisäksi, kun tuo VAC ei anna ääntä kmixerin sotkettavaksi, eikä nyt sitten anna mikään softa sitä myöskään äänikortin kautta, niin periaatteessa kaikilla softilla ja peleillä tällä tavalla toimii ainakin käyttöjärjestelmän sotkemattomat äänet.
 
^Virittelin itsekin tuon ASIO4ALL:n yhdessä vaiheessa ja kyllä sillä jonkin verran latenssia sai pienemmäksi ennen kuin alkoi pätkimään. Vähän pohtimista oli ennen kuin älysin laittaa tuon VAC-outin pois päältä ASIO4ALL:n paneelista. Tällä hetkellä tosin ei ole käytössä koko VAC-viritelmä, jokin todella monoliittinen häikkä joko käyttöjärjestelmässä tai - todennäköisemmin - rautatasolla tuo satunnaisen äänen säröytymisongelman, ja jostain syystä tuo ongelma esiintyy useammin VACin ollessa käytössä. Ohjelmistotasolla tätä olen koittanut selvittää puhdasta Vista-installointia myöten, mutta ei näytä korjaantuvan. Askartelupöydällä on uusi, mediatoistimeksi dedikoitu PC, kunhan saisin sen tulille niin VAC-Cantabile-headfit-ASIO4ALL -combo säädetään tappiin.
 
Miksi pienennätte puskuria ASIO:ssa, jos tarkoitus ei ole saada minimaalista latenssia esim raitasovitukseen musiikinteossa? Itse jahtaan matalaa latenssia, jotta esim koneen läpi soittamani kitara ei tule viiveella, mutta musiikintoiston kohdalla tuolle viiveelle on aivan yksi ja sama? Leffoissa synkka on tietty myös tarpeen, mutta harva toistin käyttää ASIO-rajapintaa tai siitä kummemmin hyötyy. Itse en oikeastaan edes kuule ASIO/Wasapi/Directsound eroja, eli ilmeisesti Auzentech X-Fi käyttämät Creativen ajurit ainakin audio creation modessa ei tee kummempia resamplauksia (tosin epäilen niidenkin kuuluvuutta kun tarkoituksella kokeilee 44.1KHz vs 48KHz).
 
Gretch sanoi:
Miksi pienennätte puskuria ASIO:ssa, jos tarkoitus ei ole saada minimaalista latenssia esim raitasovitukseen musiikinteossa? Itse jahtaan matalaa latenssia, jotta esim koneen läpi soittamani kitara ei tule viiveella, mutta musiikintoiston kohdalla tuolle viiveelle on aivan yksi ja sama? Leffoissa synkka on tietty myös tarpeen, mutta harva toistin käyttää ASIO-rajapintaa tai siitä kummemmin hyötyy. Itse en oikeastaan edes kuule ASIO/Wasapi/Directsound eroja, eli ilmeisesti Auzentech X-Fi käyttämät Creativen ajurit ainakin audio creation modessa ei tee kummempia resamplauksia (tosin epäilen niidenkin kuuluvuutta kun tarkoituksella kokeilee 44.1KHz vs 48KHz).

Asio4all:ssa on ainakin nuo omat bufferiasetuksensa. DirectSound tuntuisi olevan optimoitu siten, että kerran kun ääni menee sen läpi niin lip sync ei vielä mene pieleen, mutta kun ääni menee kahteen tai useampaan kertaan DirectSound rajapinnan ja softa VST:n läpi (VAC+Cantabile+äänikortti) niin joutuu pistämään -500...-400ms tasoitusta äänelle leffojen kanssa. Tästä voisi arvioida, että (softa) DirecSoundin viive on jotain 100-150 ms luokkaa, mitä ei vielä huomaa liian suurena viiveenä elokuvissa tai peleissä. Sama pätee asioon, kun sen läpi ajetaan ääntä useampaan kertaan, mutta viive on pienempi. Itseasiassa, minullahan on tuossa lähestulkoon kaikki bufferiasetukset maksimissaan asio4all:ssa, joten mistään aivan järkyttävästä "minimoinnista" ei ole kyse. Siltikin se on parempi kuin DS.

Oletettavasti tuo Cantabile on paljon parempi natiivin asio:n yli, kuin asio4all kernel streaming virityksen yli. Mitä olen vaihtoehtoja ko. softalle yrittänyt löytää, niin monella foorumilla tuo on sanottu olevan elektronisen musiikin live-esiintyjien mielestä parhaasta päästä alan softia. Joten se ei ole ainakaan pääsyyllinen :).
 
Direct-soundissa suoraan ei taida kovin kummoista viivettä olla (helppo kokeilla vaikka hiirellä nappia, josta tulee ääni). Input-output pyörittelyssä tietty sitten muodostuu latenssia. Oman kortin natiivi-ASIO:lla saa melkoisesti kiristettyä viivettä, mutta en ole jaksanut säätää vaan tyytynyt 5ms, jota ei kyllä huomaa esim kitaran soitossa (input->Guitar rig4 prosessointi->output). Cantabilessä tuskin on montaa millisekuntia viivettä.
 
Gretch sanoi:
Direct-soundissa suoraan ei taida kovin kummoista viivettä olla (helppo kokeilla vaikka hiirellä nappia, josta tulee ääni). Input-output pyörittelyssä tietty sitten muodostuu latenssia. Oman kortin natiivi-ASIO:lla saa melkoisesti kiristettyä viivettä, mutta en ole jaksanut säätää vaan tyytynyt 5ms, jota ei kyllä huomaa esim kitaran soitossa (input->Guitar rig4 prosessointi->output). Cantabilessä tuskin on montaa millisekuntia viivettä.

No enpä sitten tiedä, että miksi lip sync menee aivan pieleen DS:n kanssa, mutta ei asion kanssa juurikaan ollenkaan tällaisessa konfiguraatiossa. Mutta ota myös huomioon, että esim 2048 samplea 44100 taajuudella ja 4:llä kernel bufferilla ei vastaa ajuri-/rautatason 5ms asiota vaan se on paljon enemmän. Tuota voisi optimoida säätämällä asio4all taskin prioriteettia, mutta kun sellaista taskia ei ole näkyvillä missään ja kernelin prioriteettia tuskin kannattaa säätää. Cantabilen prioriteetin säätö ei vaikuta mitään. Olisiko sitten windowsin kernel streamingin ongelma, että jos kaksi "laitetta" käyttää sitä yhtaikaa, niin bufferiasetuksien pitää olla aika reilun kokoiset (tunkee in ja out samasta threadista/taskista läpi).

Sinunhan se pitäisi tuota VAC+Cantabile+Asio yhdistelmää kokeilla WDM-tason asioinesi :).
 
Voisihan tuota kokeilla vaihteeksi, kunhan keksii mitä VST-plugaria haluaisi ajaa. Tarkistin juuri, että itsellä input on 7ms, prosessointi 5ms ja ulostulo 0ms kitaramallinnuksessa, joka on aika CPU intensiivinen. 4 x 3,4Ghz prossulle tosin tuo on kevyttä jumppaa. DS:ssä on iso latenssi input puolella. Outputissa ei ole latenssia, sitä tarkoitin tuossa yllä.
 
Gretch sanoi:
Voisihan tuota kokeilla vaihteeksi, kunhan keksii mitä VST-plugaria haluaisi ajaa. Tarkistin juuri, että itsellä input on 7ms, prosessointi 5ms ja ulostulo 0ms kitaramallinnuksessa, joka on aika CPU intensiivinen. 4 x 3,4Ghz prossulle tosin tuo on kevyttä jumppaa. DS:ssä on iso latenssi input puolella. Outputissa ei ole latenssia, sitä tarkoitin tuossa yllä.

Koklaa jo ;). Itselläni on 4x3.8 prossu, joten ei tuo latenssi siitäkään ole kiinni.
 
Gretch sanoi:
Voisihan tuota kokeilla vaihteeksi, kunhan keksii mitä VST-plugaria haluaisi ajaa. Tarkistin juuri, että itsellä input on 7ms, prosessointi 5ms ja ulostulo 0ms kitaramallinnuksessa, joka on aika CPU intensiivinen. 4 x 3,4Ghz prossulle tosin tuo on kevyttä jumppaa. DS:ssä on iso latenssi input puolella. Outputissa ei ole latenssia, sitä tarkoitin tuossa yllä.

Pitänee kokeilla KS/asio4all:n kanssakin vielä sitten pistää outputista bufferien määrä ja koko minimiin. Kiitoksia vinkistä.
 
Back
Ylös