left click Ghinea

mai ales despre jocuri

akshay-ZBjlFtzpLKc-unsplash

foobar2000 – cîteva idei (partea I)

Pornind de la propriile nevoi în ceea ce privește sunetul, de mai multă vreme mă gîndesc să scriu despre cîteva elemente ce pot îmbunătăți experiența în utilizarea unui anume player audio. Da, este vorba despre audiția muzicală pur și simplu, nu despre filme sau jocuri. Evident, cel mai simplu de folosit și mai bun la capitolul configurare pentru sunet de calitate este minunatul foobar2000, pe care, probabil, îl cunoașteți cei mai mulți dintre voi – dacă aveți cel puțin minime pretenții de la audiția muzicală.

Dar care este chestia cu foobar2000, de ce este player-ul ales de majoritatea celor atenți la calitatea sunetului? Răspunsul este simplu – arhitectura aplicației, ea este cea care permite utilizarea unor așa numite „componente”, ce pot îndeplini orice fel de funcție în fluxul audio, de la stabilirea driverului audio folosit, la formatul de compresie audio, ori procesarea sunetului, sau tipul de vizualizare a diverșilor parametri ai sunetului. Mă rog, sînt mult mai multe funcții ce pot fi îndeplinite de către componentele foobar2000, iar faptul că ele pot fi programate și integrate ușor în acest player audio, de către oricare utilizator dornic și capabil de asta, face ca, treptat, biblioteca de componente a foobar2000 să fi căpătat deja dimensiuni impresionante.

În prezentul articol voi urmări două dintre aspectele importante prin care anumite componente ale foobar2000 ne pot face viața mai bună și mai ușoară, nouă, celor care vrem să avem parte de o audiție muzicală de calitate. Unul dintre aceste aspecte ține de conservarea integrității digitale a materialului audio, iar celălalt de aplicarea corecțiilor de ton asupra muzicii ascultate (adică, mai pe românește, despre folosirea egalizatoarelor).

Dată fiind dimensiunea la care ar ajunge articolul dacă aș aborda ambele tematici în același spațiu, am împărțit acest material în două părți, prima fiind cea în care discut despre păstrarea integrității pe biți a materialului audio rulat în foobar2000.

Un mix nedorit

Dacă intrăm în foobar2000 în meniul „File:Preferences:Output”, vom vedea că singurele tipuri de drivere disponibile în secțiunea „Devices” sînt cele DirectX. Asta înseamnă că foobar2000 poate accesa dispozitivele audio instalate în sistem numai prin intermediul driverelor DirectX. Asta poate că nu pare o problemă la prima vedere, dar la prima audiție cu o ureche antrenată și capabilă de discernămînt, se simte imediat diferența între materialul audio original, ascultat direct de pe un CD player conectat la un amplificator de cască sau boxe, și ceea ce se aude prin foobar2000. Știu, pentru unii dintre voi asta poate părea ciudat, mai ales dacă se ascultă un FLAC obținut prin copierea cu EAC de pe CD-ul original. Dar ceva se simte, un înger competent șoptește urechii că e o chestie ce stă în calea sunetului original, că e ceva ce corupe foarte discret, dar cert, calitatea audiției muzicale.

Iar urechii nu i se năzare – problema există. Vedeți voi, în Windows se prea poate să apară situația în care două aplicații emit sunet simultan – să zicem că ascultați muzică de pe Youtube, iar la un moment dat o altă aplicație emite o notificare sonoră. Evident, ambele aplicații au nevoie deodată să acceseze dispozitivul audio instalat pe calculator și configurat ca fiind default-ul sistem. Dar dispozitivul audio – adică placa de sunet – poate rula pe ieșirea stereo un singur flux audio de output. Iar acest flux poate avea o singură frecvență de eșantionare (sampling rate). Dar, dacă cele două aplicații ce emit sunet simultan – Youtube și notificarea – nu o fac la aceeași frecvență de eșantionare? Teoretic, una dintre ele ar trebui să devină master și să impună frecvența unică de eșantionare pentru întregul sistem, iar sunetul celorlalte aplicații ar fi automat tactat la respectiva frecvență de eșantionare – ceea ce ar afecta direct frecvența sunetului emis de respectivele aplicații, ce nu ar mai fi cea originală.

Soluția adoptată de Microsoft este aceea de a introduce un nivel software intermediar, între aplicații și placa de sunet, nivel „administrat” de către API-ul DirectX. Astfel, DirectX folosește un algoritm de reeșantionare ce convertește automat sunetul emis de oricare aplicație, aducîndu-l la o valoare presetată, unică, a frecvenței de eșantionare. După acest nivel de conversie a frecvenței de eșantionare urmează mixerul software care generează fluxul stereo pe care placa de sunet îl trimite către ieșiri.

Mă rog, ăsta este un model masiv simplificat al chestiunii, dar zău că nu este cazul să încercăm marea cu degetul cînd este vorba despre DirectX, că viața e prea scurtă, frumoasă și grea, pentru o asemenea nesăbuință. Important este faptul că algoritmul de conversie a frecvenței de eșantionare audio nu este cea mai grozavă minunăție inventată de om, așa că afectează perceptibil calitatea audio finală. Asta este ceea ce simte urechea educată atunci cînd ascultă muzică prin drivere DirectX.

Configurația implicită

Puteți configura frecvența de eșantionare implicită a sistemului dacă vă duceți în „Sound settings”, de acolo în „Sound Control Panel”, care vi se deschide la tabul „Playback”, unde vedeți lista tuturor dispozitivelor audio instalate în sistem. Dintre acestea selectați-l chiar pe cel bifat ca „Default Device” și apăsați butonul „Properties”. Se va deschide panoul „Speakers Properties”. Acolo, în tabul „Advanced” veți vedea o secțiune numită „Default Format”, în care puteți selecta formatul audio dorit – iar acesta are doi parametri. Unul este frecvența de eșantionare despre care v-am vorbit pînă acum, iar celălalt este adîncimea pe biți („bit depth”). Unele dispozitive audio oferă mai multe adîncimi pe biți, de regulă 16 bit și 24 bit, deși scule mai avansate pot prezenta și varianta de 32 bit.

Dacă veți configura ca default sistem frecvența de eșantionare la 44.100 Hz și adîncimea pe biți la 16 bit, veți avea exact formatul audio al CD-ului audio obișnuit. Problema este că, deja, foarte multe materiale audio vin la 48.000 Hz (sau mai mult) frecvență de eșantionare, în timp ce adîncimea pe biți de 24 bit este tot mai răspîndită – iar dacă folosiți drivere DirectX pe foobar2000 va avea loc o conversie la rularea de materiale audio aflate la parametri diferiți de cei default. And it will not be pretty. Practic, se pierde integritatea pe biți a sunetului original.
Ceea ce nu este o dramă la utilizare de zi cu zi în diverse alte scopuri decît audiția sau vizionarea filmelor. Dar în momentul în care vrei să te relaxezi ascultînd ediția 24/88 a albumelor Dead Can Dance, parcă e aiurea să te tot apuci să configurezi formatul audio default al sistemului, iarăși și iarăși, trecîndu-l de la cel uzual la cel de audiție pretențioasă. De fapt, problema este că și la configurarea formatului audio default în așa fel încît acesta să fie identic cu cel al materialului audio ascultat, sunetul va trece în continuare prin algoritmul de eșantionare, va fi „reformatat”, suferind alterări la nivel de bit. Adică nu scapi nicicum de rîia asta de conversie de format.

Îți trebuie alte drivere decît cele DirectX.

WASAPI

Din fericire, există două soluții pentru această problemă, sub forma a două feluri de drivere: WASAPI și ASIO.

WASAPI este un API creat de Microsoft care, implementat în drivere, oferă aplicațiilor acces direct la un dispozitiv audio instalat în sistem. Astfel, nu mai există nicio intermediere, precum cea a DirectX, între aplicație și placa de sunet. Din acest motiv, fluxul audio nu mai trece prin niciun mixer software sistem care să aplice un algoritm de reeșantionare a materialului audio. Ce rulează în foobar2000 este ceea ce ajunge direct la hardware-ul de sunet – adică rezultatul este bit perfect, fără a suferi alterări de niciun fel.

În pagina de componente a foobar2000 veți găsi o componentă numită „WASAPI output support” ce vă permite să accesați driverele WASAPI ale oricărui dispozitiv audio compatibil instalat în sistem.

Pentru a instala o componentă a foobar2000, întîi descărcați-o de la link-ul aflat pe pagina sa. Apoi, în foobar2000, tastați CTRL+P pentru a intra în meniul „Preferences”. Acolo mergeți în secțiunea „Components” și apăsați butonul „Install”. Se va deschide fereastra „Install Component”, în care navigați pînă la componenta descărcată, selectați-o și apăsați „Open”. Componenta va fi instalată automat. Faceți acest lucru cu componenta „WASAPI output support”.

Ca o regulă de urmat cu foobar2000, după instalarea oricărei componente este bine să restartați aplicația – am avut surprize cu vizibilitatea anumitor componente proaspăt instalate, atunci cînd nu restartam foobar2000. Bun, după restartarea foobar2000, intrați din nou în meniul „Preferences” (CTRL+P), iar apoi în secțiunea „Playback:Output”. În lista „Devices” veți găsi acum driverele WASAPI corespunzătoare tuturor dispozitivelor audio compatibile instalate în sistem. Selectați-l pe cel dorit și apăsați OK.


Mă rog, în lista „Devices” veți găsi două variante ale dispozitivelor WASAPI – anume „event” și „push”. Dacă doriți să aflați amănunte privind diferențele dintre cele două variante, consultați acest thread de forum (https://hydrogenaud.io/index.php?topic=111120.0). Fără a intra în detalii, vă spun direct că este cel mai bine să folosiți varianta „event” a dispozitivelor WASAPI, deoarece oferă cea mai largă compatibilitate.

ASIO

ASIO este un format de drivere creat de Steinberg, destinat muzicienilor, producătorilor de muzică și inginerilor de sunet, avînd drept țintă aplicațiile profesionale și semi-profesionale. Pe lîngă integritatea pe biți a fluxurilor audio, aceste drivere oferă suport flexibil pentru administrarea a multiple intrări și ieșiri hardware și software, sincronizare perfectă cu generatorul de tact al dispozitivului audio folosit ca master în lanțul audio, precum și latențe audio extrem de scăzute. Bine, noi, ca amatori de audiție muzicală și atît, nu vom avea nevoie decît de partea cu integritatea pe biți a fluxurilor audio, deoarece driverele ASIO permit aplicațiilor să acceseze direct hardware-ul audio instalat în sistem, ocolind orice alt strat software din Windows.

Pentru a putea folosi driverele ASIO instalate în sistem, va trebui să instalați în foobar2000 componenta „foo_out_asio”, numită în lista de componente ca „ASIO support”.
Atenție, însă! Nu toate dispozitivele audio oferă suport pentru drivere ASIO. În general dispozitivele audio destinate producției muzicale la nivel cel puțin amatoricesc sînt dotate și cu drivere ASIO. Printre acestea, pînă oarecum recent, dintre cele mai răspîndite erau plăcile de sunet de la Creative Labs (dar în cazul acestora este o întreagă discuție la generațiile mai vechi de Sound Blaster-e privind integritatea pe biți – dacă vreți să nu vă bateți capul, puteți să le ocoliți pe cele anterioare modelelor X-Fi). Mai nou, însă, cipurile audio de la Realtek încep să vină cu drivere ASIO, deci chiar și în situația unei implementări onboard a sunetului, veți putea accesa drivere ASIO. Mă rog, sînt utilizatori care au probleme de stabilitate a driverelor ASIO de la Realtek, în fond sînt destul de tinere (apărute pe la începutul anului 2019), așa că, dacă aveți dificultăți cu ele, folosiți mai bine driverele WASAPI.

Pînă la urmă, chiar, asta este o bună întrebare – drivere WASAPI sau ASIO?

Hmm, de regulă driverele cele mai sigure sînt cele ASIO. Deci, dacă dispozitivul vostru audio oferă drivere ASIO, mergeți pe ele. În schimb, dacă nu aveți drivere ASIO, folosiți-le pe cele WASAPI.

O mică observație am de făcut la folosirea driverelor ASIO cu foobar2000. În principiu, acestea sînt configurate din oficiu pentru a scoate sunet pe ieșirea analogică stereo numerotată de driver ca fiind ceva de genul unei perechi de ieșiri precum ar fi „Main output left” și „Main output right”. Dacă doriți, însă, să scoateți sunet prin alte ieșiri ale dispozitivului audio decît acestea – cum ar fi printr-o ieșire digitală, sau una separată de monitorizare ori căști – trebuie să configurați voi care ieșire este utilizată de foobar2000.

După instalarea componentei „foo_out_asio” în foobar2000, dacă intrați în „Preferences” și mergeți la „Playback:Output” veți observa că „Output” a căpătat o nouă ramură în arborele de navigare, numită „ASIO”. Intrați în aceasta și în dreapta vi se va deschide un panou în care puteți configura către care canale ASIO veți trimite sunetul din foobar2000, în secțiunea „Custom channel mappings”. Selectați driverul ASIO pe care doriți să-l configurați, din lista de deasupra numită „ASIO drivers”, apoi apăsați „Add New” pentru a reatribui canalele audio de ieșire active, din lista celor puse la dispoziție de către driverul ASIO curent selectat.

Detalii importante

Este important de menționat aici o chestiune de detaliu. Între componentele foobar2000 se află două care oferă acces la driverele WASAPI. Despre prima am vorbit deja, anume despre cea numită „WASAPI output support”. Mai există, însă, o componentă care oferă aceeași facilitate, numită „WASAPI shared output”. Care este diferența dintre cele două? Prima, cea recomandată de mine, pune complet stăpînire pe ieșirea hardware a dispozitivului audio, în așa fel încît nici o aplicație, alta decît foobar2000, nu poate scoate sunet prin respectiva ieșire – practic, nu veți putea auzi decît sunetul emis de foobar2000. A doua componentă, după cum o arată și numele ei, permite împărțirea accesului la iesirea audio hardware între mai multe aplicații simultan – veți putea auzi sunetul emis și de altă aplicație în timp ce folosiți foobar2000. Din păcate, această componentă se folosește în acest scop tot de un algoritm de reeșantionare, care va distruge integritatea pe biți a fluxului audio creat de foobar2000, motiv pentru care trebuie evitată.

Și driverele ASIO pot pune stăpînire complet pe hardware-ul dispozitivului audio folosit, în așa fel încît să nu lase nicio altă aplicație să producă sunet în același timp cu foobar2000. Totuși, multe dintre plăcile de sunet de calitate destinate muzicienilor sînt dotate cu drivere ASIO multiclient, ce vor permite folosirea foobar2000 simultan cu alte aplicații ce emit sunet. Este unul dintre multele motive pentru care, eu unul, prefer folosirea driverelor ASIO de fiecare dată cînd este posibil.

Mai există un fapt de care trebuie să țineți cont atunci cînd folosiți drivere WASAPI sau ASIO – acestea decuplează complet fluxul audio propriu de orice alt mixer sau procesor software, fie acesta componentă a Windows-ului sau a panoului software de control ce vine cu driverele native ale dispozitivului audio. Nu veți putea folosi niciun control de volum pus la dispoziție de sistem sau de către driverele native, și nu veți avea acces la niciun fel de proces software, precum efectele de reverberație sau, mai important, egalizatorul grafic deseori aflat în „dotarea” panoului software de control al plăcilor de sunet.

Este adevărat, însă, că acest egalizator grafic poate fi de mare folos, iar unii dintre voi se poate ca, pe bună dreptate, să îl folosiți constant în rol de corector de ton master al fluxului audio de ieșire din dispozitivul audio. Ok, în foobar2000 există un egalizator grafic, dar, mie unuia, acesta nu-mi place nici să mă ameninți, de la o distanță medie, cu un cocoș de mesteacăn în călduri. Există soluții mai bune, iar despre acestea voi vorbi în partea a doua a prezentului articol.

Pînă atunci, numai bine, iar dacă doriți să mă citiți și auziți în continuare, vă rog frumos: patronați-mă!

Featured photo by Akshay on Unsplash.