Normaliseren is het proces waarbij digitale audio vermenigvuldigd wordt zodat de piekwaarde van een audio bestand op een bepaald niveau komt. In de meeste gevallen wordt de audio omgerekend naar de maximale waarde, 0 DbFS.
Je zult deze mogelijkheid in vrijwel alle audio-editors tegenkomen.
Het werkt als volgt:
Het audiobestand wordt doorzocht om de hoogste (absolute) sample-waarde te vinden.
Vervolgens wordt er een ratio uitgerekend tussen deze maximale waarde en het gewenste niveau (gain). Dit niveau kan hoger of lager liggen dan de maximale waarde.
Deze ratio wordt vervolgens met alle samples uit het bestand verrekend (d.m.v. vermenigvuldiging of deling, zie hieronder).
vraag: Hoe kan de schade van normaliseren beperkt worden?
Toine: Welke schade bedoel je precies? Zolang de gain niet buiten het dynamisch berijk van de file-format valt, is er niet echt van schade te spreken.
Toine(2): Oh wacht Anton, ik heb even de history terug gelezen, volgens mij begrijp ik je vraag. Je wil dus normaliseren zonder te zeggen "ik wil mijn gain op blablabla" maar je wil kunnen zeggen "ik normaliseer het 200%. (klopt dat?)
Dan heb je het dus niet over een gain parameter, maar over een "ratio parameter". Een zachte file zou dus minder hard genormaliseerd worden dan een harde file.
Dit is best gevaarlijk. Stel, we houden die 200% er in, en we gebruiken audio in floating-point formaat, tussen -1 en 1. Een waarde boven de 0.5 (of onder -0.5), laten we zeggen 0.6, zou dus een gain geven van maximaal 1.2, wat buiten het berijk valt. Hebben we echter een zacht geluid, met een max van 0.3, dan kan 200% best. Je zou dus moeten kijken of de uiteindelijke gain buiten het dynamisch berijk valt. Zo ja, dan is het denk ik het best om hem toch maar naar beneden te trimmen, tot 1. Anders krijg je clipping (of misschien zelfs wrapping, als je niet uitkijkt). Zo behoud je tenminste de natuurlijke vorm van het geluid.
Wat je ook kan doen is een of andere leuke formule opstellen die zorgt dat bij een max van 0.6 en een ratio van 200% er een of ander verloop is, dus dat hoe hoger een genormaliseerde waarde uit valt, hoe minder hij uiteindelijk genormaliseerd zal worden. Dus dat 0.6 met de ratio van 200% eigenlijk niet 200% wordt genormaliseerd, maar precies op 1 uit komt. Hoe dit klinkt weet ik niet, misschien wel retecool.
ik gebruik hier dus de delingsfunctie om te normaliseren. De ratio is dus 1.0/2.0 (1.0 van maximale dynamiek) 2.0 van 200%), wat resulteert in 0.5. Wil je een andere gain, dan wordt 1.0 dus iets anders:
Grappig te weten dat als de waardes zoieso nooit boven de 1 uitkomen, de ratio dus omhoog schiet om het wel te halen. Tik hem maar s in in een grafiekprogramma, en ga er eens lekker extreem mee klooien :D
Oh en btw, mocht je het niet weten, het gedeelte
|x[n]|
staat voor de absolute waarde van x[n], of in codevorm: abs(x[n])
ToineNOG EEN NOTE OP JE EERSTE VRAAG
Je had het over non-destructief, maar bedoelde (daarachter vermeld) dat er geen afrondingsfouten in zaten. Wellicht ben je al bekend met de betekenis van non-destructief, maar zo niet, dan hier een voorbeeldje:
destructief:
buffer[x] = buffer[x] * 2
(De inputbuffer wordt overschreven met een bewerking ervan. Ik doe dit bij DIP heel veel, omdat het idioot is om voor iedere bewerking een apparte buffer bij te houden)
non-destructief:
output[x] = input[x] * 2
(Op deze manier wordt het orrigineel niet gesloopt, en kan je ook bijvoorbeeld bypassen. Dit brengt ons op plugins. Deze zijn over het algemeen non-destructief.)
Pieter Suurmond over maal 1; maal 2; maal 3; etc.:
Ik weet wat Anton bedoelt: ik bouwde zelf ooit een speciale versie van 'SoundProcessor' voor Mac voor Eelco Grimm hiervoor:
Als je alle gehele (integer) getallen in een file met precies 1, 2 of 3, etc. vermenigvuldigt, dan introduceer je gegandareerd nooit extra quantisatieruis!
Maal 0.99 of maal 1.99 is zowat het ergste dat je kunt doen: je introduceert veel extra afrondingsruisruis.
Pieter Suurmond (2)
Clippen of wrappen zal nooit gebeuren Toine, want we onderzoeken eerst de hele file op piekwaarde. Als ergens 0.6 voorkomt doen we niet *2, maar simpelweg *1: Het kan gewoon niet luider, zonder extra ruis te introduceren.
Nogmaals: als je met iets anders vermenigvuldigt dan exact 1, 2, 3, etc., dan introduceer je (bijna altijd) viezigheid.