Adancimea/numarul de biti si rata de esantionare – partea II

Si dupa cum am promis, am revenit, urmand sa abordez in acest capitol problema adancimii/numarului de biti, precum si sa ofer niste sfaturi practice, derivate din experienta personala in domeniu.

Adancimea de biti

Pentru a face o prezentare cat mai clara asupra acestui subiect, voi incepe cu fundatia: informatia digitala dintr-un calculator este reprezentata binar, pe un numar de biti. Cand vorbim strict de audio, nr. de biti se foloseste pentru a “semnaliza” amplitudinea pe care o ia semnalul audio digital (rezultat in urma conversiei, de exemplu) intr-un moment anume din timp, semnalizat de catre perioada de esantionare (discutata in partea anterioara). Cu cat nr. de biti arondat fiecarui moment este mai crescut, cu atat avem posibilitatea de avea un raspuns mai “fin” al digitizarii. Un exemplu: daca am avea amplitudinea pe un singur bit (“1” sau “0”) finetea ar fi inexistenta – semnalul digital ar fi putea spune in fiecare moment strict “exista semnal, la nivelul maxim posibil (0dB FSD)” sau “nu exista semnal”. Deloc util muzicii.

Pentru a exemplifica grafic acest aspect, mai jos aveti o perioada a unei sinusoidale discretizata la o adancime mica de biti:

6

Si, varianta mai apropiata de realitate, la un numar mai ridicat de biti:

7

Gama dinamica

Practic, la ce se rezuma numarul de biti? La o anume gama dinamica maxima teoretica pe care o permite; calculata aproximativ cu 6*nr. de biti:

– la 1-bit, avem doar 2 nivele posibile pentru volum, o gama dinamica de 6dB

– la 8-biti, avem 256 de nivele posibile de volum, o gama dinamica de 48dB

– la 16 biti, avem 65536 de nivele, o gama dinamica de 96dB

– la 24 biti, avem 16.7 milioane de nivele, o gama dinamica de 144dB

Gama dinamica se refera la raportul dintre cea mai mare valoare pe care o poate lua un semnal (0dB FSD, in cazul celui digital), si valoarea minima a acestuia. Pentru a intelege mai bine, aveti mai jos niste valori de gama dinamica a anumitor echipamente folosite in mod curent:

–          caseta audio (nou-nouta) – 50-60dB

–          vinyl-uri (in stare perfecta, de foarte buna calitate si pe un sistem audiofil) – 70-80dB

–          magnetofoane (tape-machine-uri de studio) – maxim 90dB

–          CD – aproximativ 100dB

–          convertor A/D la 24biti (de calitate foarte buna, luata in considerare si circuistica analogica aferenta, care scade gama sa dinamica teoretica) – 116-117dB

–          ultima editie a unui compresor foarte faimos pentru agresivitate – “peste” 85dB

In primul rand (pe langa gama dinamica scazuta a anumitor medii de reproducere si echipamente), ar fi de observat faptul ca si cele mai avansate convertoare A/D nu reusesc nici macar sa se apropie de gama dinamica maxima teoretica a 24-biti, in principiu datorita circuisticii analogice aferente, motiv pentru care nu am auzit prea multe de convertoare de 32biti. Am citit acum ceva vreme un data sheet a unui prototip de convertor la 32-biti care oferea o gama dinamica apropiata e cea teoretica a 24 de biti; din pacate nu mai tin minte producatorul sau part number-ul… Stiti ceva despre el?

Mergand mai departe, tape machine-urile intr-atata de iubite inclusiv la ora actuala (macar prin prisma emularilor lor digitale) nu au nici macar 16biti de gama dinamica, si asta in cazul CEL mai fericit. Si atunci de ce sa ne agitam intr-atata cu 24 de biti vs. 16 biti? Din cateva motive simple.

In primul rand, si marea parte a convertoarelor pe 16 biti sufera de aceeasi boala ca si cele pe 24 – de fapt, din gama dinamica maxima teoretica de 96dB pe care ar trebui sa ofere, se poate intampla sa aiba doar 13-14 biti, respectiv vreo 80dB. Cam putin, ati spune. Intr-adevar, pentru o toba (care are o gama dinamica extrem de ridicata) sau pentru o inregistrare orchestrala, ar putea fi insuficient; dar luati in considerare o inregistrare de chitara distors pe acorduri (fara palm mute-uri)… gama sa dinamica ma indoiesc sa depaseasca 6dB. Intamplator, cam aceeasi gama dinamica pe care o au si cele mai recente “masterizari” – echivalentul zgomotului alb modulat din cand in cand. Asa, de distractie, si cu o referire directa la un articol mai vechi, luati un mixaj modern, strivit cu ura (Nickelback, sa zicem; sau daca preferati, sunt niste mixaje de metaleala din ultimii ani care cu greu pot fi deosebite de zgomotul alb), si convertiti-le la 8 biti. Simtiti vreo diferenta? J

Un alt avantaj in favoarea utilizarii de 24 biti este faptul ca puteti tine nivelul de inregistrare scazut (-18dB in mod curent, cu varfuri pana in -12dB – motivul este detaliat in articolul acesta, pe la jumatate), si totusi sa capturati fiecare nuanta a instrumentului, indiferent care este acesta. Astfel, scapati de grija overload-urilor care pot aparea in cazul unor inregistrari la 16biti (reali, sa speram) fortate in nivel pentru a obtine maximul de fidelitate.

32bit-float (cu virgula flotanta)

Aici mai intervine un subiect, de care am fost intrebat de catre “Gery.M” ca si comment la partea anterioara a articolului. 32-bit float… Permite o gama dinamica de peste 1500dB (!) – ca si idee, cred ca daca echipamentele analogice ar permite (nu o fac, toate se opresc in jurul a 120dB), ar fi o gama dinamica suficienta pentru a inregistra Big Bang-ul si ulterior suieratul unui tantar aflat la 10km distanta (o gluma evidenta, nu pot concepe cu adevarat ce inseamna un raport intr-atata de mare). Cu toate acestea, este utila in interiorul DAW-urilor – este motivul pentru care putem scadea sau overload-ui nivelul tuturor canalelor cu 16dB, si sa corectam respectivul nivel pe master bus, fara nici un efect advers. Daca ne referim la o inregistrare, nu are vreodata sens sa fie folosit nr. respectiv de biti – 24 de biti este arhisuficient, nici macar convertorul nepermitand peste 120dB din cei 144dB permisi de catre encodarea PCM, iar combinatia microfon preamplificator zgomot ambiental neavand sansa sa depaseasca vreodata 100dB de gama dinamica intre maximul semnalului util si zgomot (nu mie, cel putin). Mai exista un mit, care afirma ca sistemele actuale ruland pe 32 de biti, ar lucra mai usor daca fisierele sunt ele insele de 32 biti – din pacate, este un fals; fara sa intru in arhitectura calculatoarelor, voi afirma foarte simplu si clar – nu au nici cea mai vaga urma de legatura una cu alta. Este aproximativ ca si cum ai afirma ca oamenii ar trebui sa conduca masini cu 2 roti, datorita faptului ca au 2 picioare, fara sa fie denumite biciclete, si fara sa ne referim la variante similare cu:

segway

24 biti vs. 16 biti

Cand sa folosesti totusi inregistrari pe 24 de biti si cand pe 16? Parerea mea este urmatoarea: luand in considerare faptul ca spatiul pe hard disk este extrem de ieftin la ora actuala, iar puterea de procesare necesara nu creste in mod semnificativ la lucrul in 24 de biti, folositi numarul maxim de biti permis in specificatiile placii audio – 24 biti, in marea majoritate a cazurilor. Daca totusi sunteti limitati de resurse, in functie de genul de muzica abordat (o trupa de metal nu va necesita o gama dinamica larga, va garantez), puteti recurge la 16biti fara vreo pierdere sesizabila.

Mihai Toma

12 comentarii la „Adancimea/numarul de biti si rata de esantionare – partea II

  • 21 septembrie 2010 la 6:37 am
    Permalink

    Stiu ce întreba colegu Gery la articolu precedent. Io personal îmi amintesc destul de bine ca samplerul din Logic (exs24) are pe undeva optiunea de a converti mostrele audio la 32 de biti pentru a usura procesorul în detrimentul ram-ului.

    Personal n-am aprofundat subiectul, nu am stofă de programator, dar se pare că există asa ceva.

    A înregistra la 32 de biti totusi, trebe să ne fie clar că, nu aduce absolut nimic în plus fată de o întregistrare la 24 de biti atâta vreme cât convertorul face conversia în 24 de biti. Deci rezolutia maximă de înregistrare, pe orice convertor din lumea asta este la ora actuală 24 de biti.

    Singurele diferente stau, evident, în calitatea conversiei.

  • 23 septembrie 2010 la 12:14 am
    Permalink

    32biti vs 32 biti vs 24 biti

    De ce este bine ca intern sa se lucreze pe 32 biti cu virgula fixa (regardles ca A/D si D/A-ul este pe 24 biti)? Pentru ca in urma calculelor interne s-ar putea ca la final sa pierzi „detalii”.
    Un exemplu (foarte mercantil) din viata de zi cu zi: banii nostri (leul) sunt rotunjiti la 2 zecimale. Totusi cursul de schimb oficial al BNR poate avea de pana la 4 zecimale. La schimbul unei sume de 1000EUR diferenta poate fi deja de 9 RONi datorita acelor zecimale.

    Un exemplu pe tema:
    – presupunem ca avem 3 canale mono pentru care se face o simpla insumare unitara (adica cu amplificare de 0dB pe fiecare)
    – semnalul final va primi un gain de 6dB
    – facem comparatiile cu valori zecimale
    Dupa o conversie de A/D pe 24 biti avem pe cele 3 canale urmatoarele esantioane:
    – canalul 1 avem valoare momentana de 113
    – pe canalul 2 avem valoarea 1
    – pe canalul 3 avem valoarea 30002

    Daca nu se face conversia la 32 biti, sumarea digitala va face o impartire fara a putea tine cont de rotunjire (ca numai are headroom, atata incape in 24 biti…). Adica: (113+1+30002)/3=10038
    Adaugand amplificarea „pe master” de 6dB vom avea valoarea de 10038 x 2 = 20076

    Daca convertim pe 32 biti vom castiga exact 8 biti, adica un octet, adica vom avea urmatoarele valori:
    – canalul 1: 113*256=28928
    – canalul 2: 1*256=256
    – canalul 3: 30002*256=7680512
    Pe master (pre fader 🙂 ) vom avea (28928+256+7680512)/3=2569898.66667 Dar bineinteles si aici se pierd zecimalele ca numai exista headroom. DAR!
    Amplificam semnalul: 2569898 x2=5139796
    Si haideti sa-l convertim pe aceasta valoare 5139796 inapoi la 24 biti. 5139796/256=20077

    Vedeti diferenta? La 24 biti calcul intern am avut 20076. Dar la 32 biti valoarea e mai exacta: 20077!
    Diferenta e doar de 1 unitati, dar am luat un caz foarte simplu. Ganditi-va ce se intampla la 16 canale cu calculul unor efecte etcetc.

    Mai mult: Calculele in virgula flotanta aduc un surplus enorm pe parcursul procesarii interne al unui semnal. Virgula flotanta are o caracteristica foarte speciala: rezolutia lui nu este uniforma!
    La valori cat mai mici putem atinge o rezolutie cat mai mare. Si acesta datorita logaritmitatii auzului uman este bine venit.
    Pe virgula flotanta putem distinge la fel de bine valorile:
    0.0000001 0.0000002
    precum
    12345678 12345679

    Ambele valori unul fata de celalalt sunt adiacente pe scara virgulei flotante. Si va dati seama ce dinamica inseamna asta! Cum a scris si Mihai…

  • 23 septembrie 2010 la 9:18 am
    Permalink

    Multumesc, Jutas, pentru nota explicativa foarte detaliata!

    Doar o mica clarificare, pentru a nu risca inducerea in eroare a utilizatorilor: dupa cum a mentionat Jutas, avantajele antementionate se refera strict la procesarea interna a DAW-urilor. Cu micul addenum ca o rezolutie fixa de 64 biti (cum are REAPER, Sonar-ul fiind primul care a implementat aceasta rezolutie interna de procesare) va oferi o gama dinamica de 384dB, precum si un noise floor constant, spre deosebire de noise floor-ul variabil al procesarii la 32-biti cu virgula flotanta. Care e avantajul acestei abordari teoretice, totusi?…

    Pentru a nu induce in eroare utilizatorii prin ultima mea afirmatie… Sincer sa spun, EU personal nu simt vreo diferenta pe care sa nu o pot pune in prisma efectului placebo cu un nivel ridicat de certitudine intre procesarea la 32-bit float (Cubase 5 Professional) si 64-bit fixed (REAPER). Exista sute de thread-uri pe internet care afirma faptul ca o insumare a x canale (luand in considerare un pan law fix, care e marea problema neluata in considerare la astfel de teste, precum si absenta efectelor de modulatie, care difera in timp de la un render la altul), DAW-urile obtin EXACT acelasi rezultat (bit-cu-bit, verificat prin inversarea in faza a acestora si anularea la -infinit a render-urilor).

    Le puteti crede, sau nu – la fel ca si intr-un un post de-al meu la partea anterioara a acestui articol, va recomand cu tarie sa faceti teste A/B oarbe. Sper sincer ca asa le spune in limba romana – ma refer la un test intre doua variante IDENTICE de mixaj (fara efecte, cu pan law-ul identic!), render-uit din 2 DAW-uri diferite, facut FARA sa stii care e care; varianta aleasa de mine este rugatul prietenei sa le redenumeasca intr-un mod complet aleator si ulterior sa ma lase pe mine sa le ascult, spunandu-mi care e care doar dupa ce am „ales” o preferinta.

    Tom

  • 23 septembrie 2010 la 10:13 am
    Permalink

    Super interesant postul lui Jutas.

    Mihai… ai prea multa incredere in urechea umana si perceptia constienta a micro-diferentelor.

    Ma indoiesc ca un om (golden ears or not) ar putea sa perceapa vreodata zecimala din exemplul lui Jutas.

    (nu zic ca nu ar fi important exemplul, ba este chiar extrem de relevant)

    De multe ori, chiar si in blind tests, e foarte posibil ca lucrurile sa nu para ca suna mai bine/mai rau ci doar diferit.

    Atunci intervine parerea generala/experienta profesionistilor/experientele oamenilor in care ai incredere sau experienta proprie.

    In mare parte, nu conteaza ce DAW folosesti, atata timp cat acesta iti serveste nevoile si e stabil. E important sa ai un workflow optimizat, sa reusesti sa ajungi usor si sigur la rezultatul dorit.

  • 23 septembrie 2010 la 12:00 pm
    Permalink

    Alex, nu e vorba de zecimale. Ca ele nu exista.
    Nu cunosc arhitectura unui DAW anume sa pot zice un exemplu ce aliasing iti poate aduce daca nu cresti headroom-ul cu numarul de biti din calcul intern. Doar un simplu exemplu, unde nu e vorba de unitati: compresorul/limitatorul. Acolo pot fi amplificari de ordine de marimi. Acolo numai e vorba de unitati pierdute 🙂

    Sa ma corecteze cineva, daca gresesc….

  • 23 septembrie 2010 la 9:37 pm
    Permalink

    Principiul headroom-ului se aplica si in video. Mi’e lene sa’l formulez ca lege general valabila dar mie mi’e clar.

    exista o membrana osmotica (dinamica…) intre ce auzi/vezi si ce simti mai mult sau mai putin explicabil.

    hello soundcreation ppl.
    +1 articol.

  • 24 septembrie 2010 la 10:14 am
    Permalink

    @Alex:
    Din punctul meu de vedere, totul este foarte simplu: folosirea ratelor de esantionare si a adancimii de biti ridicate la inregistrare sau acordarea de importanta procesarii interne a DAW-ului, fie ea pe 32-bit float/48-bit fixed/64-bit fixed/etc. poate avea dezavantajele sale – putere de procesare crescuta, spatiu ocupat in plus, pluginuri care nu functioneaza, samd => workflow calcat in picioare.

    Exemplu de workflow calcat in picioare, de dragul „perfectiunii” – ai o idee geniala de groove tobe+bas. Ai tras basul, dar sample-urile de tobe de care dispui nu te satisfac. Te pui si sapi 1/2 de ora prin librarii/torrente/naiba stie si gasesti EXACT sample-ul de care aveai nevoie – are grasime, punch, e perfect! Introduci febril ritmul in DAW (pe care speri ca l-ai tinut minte cum trebuie)… Ulterior te uiti in gol – ti-ai iesit din „film”, nu mai iti dai seama cum sa continui piesa. Ai ratat o idee poate chiar faina de dragul perfectiunii. Si mixajul este tot o arta care tine de compozitie. Daca nu ai la indemana, COMOD, tot de ceea ce ai nevoie, poti sa o iei pe aratura, compromitand rezultatul final.

    Simtiti avantajele oricareia dintre cele de mai sus fata de varianta simpla si comoda de inregistrare 24bit/44kHz, in DAW-ul preferat? Le considerati suficiente pentru a contrabalansa dezavantajele? Raspunsul si-l poate da doar fiecare in parte.

    Ca si exemplu scurt si mai direct, daca nu simti diferenta dintre un compresor de outboard si un plugin, NU FOLOSI OUTBOARD-UL! Nu ofera nici un avantaj si are macar vreo 3 dezavantaje (pretul, export real-time si necesitatea de recall „manual” al setarilor).

    Ca si „comic relief” la un post destul de serios – cititi „#4 The Nirvana Fallacy” de pe prima pagina a articolului urmator:
    http://www.cracked.com/article_17142_5-ways-common-sense-lies-to-you-everyday_p1.html

    Cred ca insumeaza destul de bine „teoria” mea legata de domeniul audio. Recomand totusi sa nu va pierdeti printre articolele de pe cracked.com, se pot pierde zile in sir de lucru. 🙂

    Mihai Toma

  • 30 septembrie 2010 la 8:31 am
    Permalink

    Haha, din păcate îmi doresc să nu simt diferenta între compresoarele analoage si pluginuri, da o simt prea mult. Singurul compresor ceva mai ok în comparatie cu compresoarele mele este compresorul integrat în plăcile metric halo. Însă chiar si el sună fad în cele din urmă.

    Astept cu fooarte mult interes suportul oficial al platformei Nebula pentru compresoare.

  • 5 octombrie 2010 la 12:56 pm
    Permalink

    Avantajul folosirii unui format in virgula mobila nu rezulta neaparat dintr-o precizie mai mare (24 biti mantisa, din care 1 bit semn , plus 8 biti exponent – IEEE754-32FP) cat din dinamica mai mare pe care o poate oferi fara erori semnificative de calcul (in special trunchieri), care altfel ar necesita minim 32 biti in virgula fixa/intregi).
    Un alt avantaj il reprezinta prezenta unui coprocesor aritmetic relativ puternic in majoritatea procesoarelor calculatoarelor moderne, care poate prelucra eficient asemenea date.
    Nu trebuie confundata dinamica teoretic obtenabila cu cea a semnalului analogic. La interfata A-D, intotdeauna va fi utilizat un format cu intregi. Cele mai bune convertoare AD/DA si circuite analogice aferente (va rog nu mai utilizati barbarisme gen „circuistica” de sorginte rogleza) rar ajung la o dinamica echivalenta cu 21 biti (~129dB), 24 biti fiind mai mult decat suficient, cei mai putin semnificativi reprezentand practic doar zgomot.
    Un alt aspect al prelucrarii intr-un sistem de calcul, cat si al stocarii, il reprezinta alinierea datelor in spatiul memoriei la multipli ai cuvantului de procesare (16/32/64biti). Chiar daca este ineficient dpdv al memoriei consumate, formatul de 24biti (48 pentru stereo) va folosi practic 32/64biti. Alinierea asigura o prelucrare si transferare mult mai eficienta a datelor.
    Cat priveste stocarea in fisiere, pentru economie de spatiu se face conversia de la 48 la 64 biti (si viceversa), dispozitivele de stocare in masa fiind mult mai lente decat memoria.
    Ca o completare a explicatiilor lui jutas referitoare la erorile de rotunjire, trebuie sublinat ca fiecare esantion de 16/24 biti este supus unei multimi de calcule in decursul prelucrarii, care ar produce rapid acumulari de erori masive, daca s-ar ignora repetat bitii mai putin semnificativi (rotunjiri), in ciuda aparent insignifiantei erori introduse la o iteratie.
    Formatul de 64 biti (utilizat temporar in calcule) este justificat prin prisma operatiilor MAC cu date de 24-32biti. Orice multiplicare intre doua numere necesita dublul numarului de biti pentru stocarea rezultatului, pentru a nu pierde nici cel mai mic detaliu. Orice DSP pentru o anumita adancime de cuvant, are un acumulator cu marime mai mult decat dubla (de ex. 36 biti la un DSP de 16 biti, sau 56 biti la unul de 24 biti).

  • 6 octombrie 2010 la 1:47 pm
    Permalink

    bbg: foarte tare commentul!

  • 8 octombrie 2010 la 5:03 am
    Permalink

    Uau, în sfârsit cineva care stie ce spune. Terminologia e praf la noi, este atât de înviorător să vezi că există si o viziune clară din punctu ăsta de vedere. Ce minunat ar fi dacă ne-am mai putea dez-ro-englezii si noi, ceva de genu unui îndreptar al inginerului de sunet. Cu câtiva ani în urmă am luat cunostintă de existenta filialei române a AES si discutând cu secretarul ei am convenit că una din posibilele activităti ale societătii ar fi fost crearea unui grup de lucru pentru realizarea unei lucrări de acest gen. Din păcate nu m-am înscris în AES (nefiind inginer de meserie, cerintă strică a societătii) si nici nu cred că au miscat ceva în directia asta.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

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