Windows Kmixer/Audio Service si alte metode de maltratare a semnalului audio

In primul, ce este Kmixer-ul: o parte din WDM audio, practic bucata de software care mixeaza toate stream-urile audio PCM care pot rezulta in interiorul unui calculator si face resamplingul necesar pentru ca acestea sa poata sa fie reprodusa de catre o placa audio oarecare. Prescurtarea este provenita de la “kernel audio mixer” si este folosita de catre mai toate variantele de Windows pana la Windows Vista, in acesta fiind inlocuit de catre un engine audio nou, dar care in principiu prezinta cam aceleasi probleme.

Cateva date folositoare despre Kmixer, intai si intai:

  • suporta rate de esantionare de pana la 100kHz in cazul versiunilor de Windows anterioare XP SP1 si Server 2003; la toate versiunile ulterioare, rata maxima este de 200kHz
  • are o latenta implicita de 30ms; lucru care nu ar trebui sa afecteaze intr-un mod vizibil (audibil, ar trebui sa zic?) reproducerea sunetului, dar este un aspect bine de cunoscut

Dupa o cautare destul de intensiva prin meandrele internetului, principala problema a Kmixerului este faptul ca face resampling automat al tuturor stream-urilor audio care ii apar pe intrari, la rata maxima dintre toate stream-urile care ruleaza concomitent, inclusiv a celor de intrare (pentru inregistrare). In practica, daca rulam un player la 96kHz si altul la 44kHz, semnalul audio transmis de catre cel care ruleaza la 44kHz va fi in mod automat resample-uit la 96kHz, si din cate se pare, cu un algoritm de SRC destul de “dezavantajos” muzicii, pentru a folosi eufemisme. Mentionez ca semnalul cu rata de esantionare cea mai mare nu este resample-uit de catre Kmixer, atata timp cat placa de sunet suporta in mod nativ rata respectiva de esantionare – si cam toate placile suporta MACAR 44.1kHz. Implicit, un semnal la 44kHz nu este afectat in vreun fel.

Mergand mai departe legat de posibilitatile de rulare a semnalului “bit-perfect” prin Kmixer, intervine urmatorul aspect – obligativitatea lasarii faderelor din Volume Control pe unity-gain si a panoramarii pe 0. Lucru deloc surprinzator, din punctul meu de vedere – orice modificare de volum (inclusiv cea din Foobar, setat pe ASIO, samd… voi explica putin mai departe) implica procesare si erori de trunchiere. Intr-adevar, trebuie avuta o oarecare grija la anumite aplicatii care controleaza de unele singure Volume Slider-ului mixerului de volum, dar in rest, nu mi se pare nimic anormal. Cati din voi folositi un atenuator pasiv sau un amplificator cu buton de volum care sa controleze 100% din exterior iesirea placii de sunet, si cati va folositi si de astfel de controale software “non-bit-perfect”?

Desi in specificatiile sale este mentionata si posibilitatea de modificare a numarului de biti, nu am reusit sa gasesc in documentatia Microsoft sau prin alte locuri mai mult sau mai putin de incredere o explicatie clara a momentului in care s-ar putea face o trunchiere sau un dithering al semnalului audio, cu exceptia urmatorului bug, aplicabil doar Windows-ului 2000:    LINK
Luand in considerare ca numarul de biti de pe iesire este dictat de catre posibilitatile placii si de cerintele software, nu prea reusesc sa intrevad un moment in care Kmixer-ul sa trunchieze (ca de dithering nu cred sa se puna problema) datele. Si pentru a fi perfect seriosi, cine exact asculta muzica la 24 de biti care ar putea sa sufere de o oarecare trunchiere la 16 biti?

Paranteza: daca asculti MP3-uri, WAV-uri, sau FLAC-uri rippuite de pe un CD audio, implicit cu 16 biti de informatie utilizabila, orice setare a placii de sunet, Winamp-ului, DAW-ului sau a oricarui alt program pe 24 de biti pe iesire NU va ajuta in vreun fel. Tot ce va face este sa plimbe 8 biti “creati din neant” si fara vreo valoare pe ici-colo.

Intram in sectiunea presupuneri pe care nu am reusit sa le fondez pe o baza teoretica efectiva:
Exista o serie de forumuri care sustin distrugerea ultimului bit de catre Kmixer, sugerand fiecarui user sa testeze daca placa proprie “beneficiaza” de acest aspect. Unii merg si mai departe, sugerand sa folosesti adancimi de biti de 24 de biti, practic “convingand” Kmixer-ul sa distruga ultimul bit din 24, care, dupa aproape orice standard, este complet nesemnificativ.

Pentru cei care au trecut la sisteme de operare moderne, Audio Service-ul (echivalentul Kmixer-ului) aparut si folosit in mod implicit de catre Vista (si ulterior la Windows 7) lucreze in mod automat la 32-biti cu virgula flotanta, lucru care s-ar parea sa duce in mod automat la anumite mici erori de trunchiere la reprezentare.

Asadar, pentru ascultatorii mai puristi, exista o serie de solutii pentru a trece pe langa un Kmixer/Audio Service care poate face mai mult sau mai putin rau unui semnal audio:

  • folosirea Foobar-ului concomitent cu ASIO4ALL pentru iesire (orice Windows)
  • pentru cei dependenti de Winamp, folosirea plugin-ului de OpenAL (in principiu pentru Windows Vista si 7)
  • acelasi Foobar, cu plug-in-ul de WASAPI (Windows Vista si 7)


Niste mici
concluzii, un pic cinice – doar e iarna afara, ce sa-i faci. Luand si cazul cel mai rau posibil, in care Kmixerul ar distruge ultimul bit din 16, chiar conteaza acel sunet la -85dBFSD care este mascat de white-noise-ul bloc compact denumit uneori muzica plasat peste el? Intr-adevar, daca se foloseste SI resampling, rezultatul ar putea sa fie destul de urat – pe de alta parte, in ce conditii Windows-ul ar putea produce sunete la o rata de esantionare mai MARE decat 44kHz pentru a resample-ui muzica?

Mergand mai departe, e perfect posibil si necesar sa dai volumul mai incet Kmixer sau din player-ul audio – e ceva nemaiauzit; din acel moment, problema cea mai mare nu este bit-imperfectiunea semnalului rezultant, as spune eu; ci faptul ca te apropii de noise floor-ul placii de sunet incetul cu incetul, scazand raportul semnal-zgomot; si totusi cu avantajul nesolicitarii partii analogice a DAC-ul, care influenteaza pozitiv semnalul, samd… Prin urmare, voi ramane cu al meu Winamp 2.5, cu skin clasic (ala verde cu negru si urat ca focu’) si cu Kmixer, ascultand muzica pe orice am la indemana de la nenorocita de placa Soundmax din laptopul vechi de 7 ani (cu una din cele 2 iesiri mono mai tare decat alta), la placi semi-profi, la convertoare dedicate, pe casti in-ear, casti de studio, monitoare de studio, boxe de calculator, boxe de laptop, samd. Oricare dintre acestea si adaptarea urechii la sunetul lor influenteaza MULT mai mult sunetul decat un ultim bit… Ca sa nu vorbesc de o deplasare a capului cu 5 cm catre stanga sweet spot-ului de 1cm2 dintre monitoare.

Mihai Toma

Un comentariu la „Windows Kmixer/Audio Service si alte metode de maltratare a semnalului audio

  • 14 august 2014 la 9:38 am
    Permalink

    Ce ai spus tu aici e perfect adevarat dar crede-ma , nu pe placul tuturor in special a celor in cazul carora efectul placebo lucreaza f intens . Ma refer la o grupare de insi care nu are habar de largimea benzii auditive a urechii umane dar , se supara ca nu reusesc sa gaseasca un EQ capabil de 30.000 Hz . Cat despre sample si resample in cazul unui mp3 …e clar ca nu avem ce discuta .

Lasă un răspuns

Adresa ta de email nu va fi publicată.

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.