THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму

Рівень звуку однаковий протягом всієї композиції, є кілька пауз.

Звуження динамічного діапазону

Звуження динамічного діапазону, або простіше кажучи компресія, Необхідна для різних цілей, найбільш часто зустрічаються з них:

1) Досягнення єдиного рівня гучності протягом всієї композиції (або партії інструменту).

2) Досягнення єдиного рівня гучності композицій протягом альбому / радіо передачі.

2) Підвищення розбірливості, в основному при компресії певної партії (вокал, бас бочка).

Як же відбувається звуження динамічного діапазону?

Компресор аналізує рівень звуку на вході порівнюючи його з заданим користувачем значенням Threshold (Поріг).

Якщо рівень сигналу нижче значення Threshold - то компресор продовжує аналізувати звук не змінюючи його. Якщо рівень звуку перевищує значення Threshold - то компресор починає свою дію. Так як роль компресора полягає в звуженні динамічного діапазону, то логічно припустити то що він обмежує найбільш великі і більш дрібні значення амплітуди (рівня сигналу). На першому етапі відбувається обмеження найбільш великих значень, які знижуються з певною силою, яка називається Ratio (Відношення). Подивимося на приклад:

Зелені криві відображають рівень звуку, чим більше амплітуда їх коливань від осі X - тим більше рівень сигналу.

Жовта лінія - це поріг (Threshold) спрацьовування компресора. Роблячи значення порога Threshold вище - користувач віддаляє його від осі X. роблячи значення порога Threshold нижче - користувач наближає його до осі Y. Зрозуміло то що чим нижче значення порога - тим частіше буде спрацьовувати компресор і навпаки, чим вище - тим рідше. Якщо значення Ratio дуже велике - то після досягнення рівня сигналу Threshold весь наступний сигнал буде пригнічений компресором до тиші. Якщо значення Ratio дуже мало - то нічого не відбудеться. Про вибір значень Threshold і Ratio мова піде пізніше. Зараз же нам слід поставити собі наступне запитання: Який же сенс пригнічувати весь наступний звук? Дійсно, в цьому сенсу немає, нам потрібно позбутися тільки від значень амплітуди (піків), які перевищують значення Threshold (на графіку відзначені червоним). Саме для вирішення цієї проблеми і існує параметр Release (Загасання), яким задається час дії компресії.

На прикладі видно то що перший і другий перевищення порога Threshold тривають менше ніж третє перевищення порога Threshold. Так, якщо параметр Release налаштувати на перші два піки - то при обробці третього може залишитися необроблена частина (так як перевищення порога Threshold триває довше). Якщо ж параметр Release налаштувати на третій пік - то при обробці першого і другого піку за ними утворюється небажане зниження рівня сигналу.

Теж саме стосується параметра Ratio. Якщо параметр Ratio налаштувати на перші два піки - то третій не буде достатньо пригнічений. Якщо ж параметр Ratio налаштувати на обробку третього піку - то обробка перших двох піків буде занадто завищеною.

Ці проблеми можна вирішити двома способами:

1) Завданням параметра атаки (Attack) - часткове рішення.

2) Динамічної компресією - повне рішення.

параметр атаки (Attack)призначений для завдання часу, по закінченню якого компресор почне свою роботу після перевищення порога Threshold. Якщо параметр близький до нуля (дорівнює нулю в разі паралельної компресії, дивись соотв. Статтю) - то компресор почне пригнічувати сигнал відразу ж, і буде працювати кількість часу, що задається параметром Release. Якщо ж швидкість атаки велика - то компресор почне свою дію після закінчення певного проміжку часу (це потрібно для додання чіткості). У нашому випадку можна налаштувати параметри порога (Threshold), загасання (Release) та рівня компресії (Ratio) на обробку перших двох піків, а значення атаки (Attack) поставити близьким до нуля. Тоді компресор придушить перші два піки, і при обробці третього буде його пригнічувати до закінчення перевищення порога (Threshold). Однак це не гарантує якісної обробки звуку і близько до ліміттінгу (грубий зріз всіх значень амплітуди, в цьому випадку компресор називається ліміттером).

Подивимося на результат обробки звуку компресором:

Піки зникли, зауважу то що настройки обробки були досить щадними і ми придушили тільки самі виступаючі значення амплітуди. На практиці ж динамічний діапазон звужується набагато сильніше і ця тенденція тільки прогресує. В умах багатьох композиторів - вони роблять музику голосніше, однак на практиці вони повністю позбавляють її динаміки для тих слухачів, які можливо будуть слухати її вдома а не по радіо.

Нам залишилося розглянути останній параметр компресії, це Gain(Посилення). Посилення призначене для збільшення амплітуди всієї композиції і, по суті, еквівалентно іншому інструменту звукових редакторів - нормалайзу. Подивимося на кінцевий результат:

У нашому випадку компресія була виправданою і поліпшила кчество звуку, так як виділяється пік швидше є випадковістю, ніж навмисним результатом. Крім того, видно то що музика ритмічна, отже їй властивий вузький динамічний діапазон. У випадках, коли високі значення амплітуд були зроблені спеціально, компресія може стати помилкою.

динамічна компресія

Відмінність динамічної компресії від НЕ динамічної полягає в тому, що при першій рівень придушення сигналу (Ratio) залежить від рівня вхідного сигналу. Динамічні компресори є у всіх сучасних програмах, управлінням параметрами Ratio і Threshold здійснюється за допомогою вікна (кожному параметру відповідає своя вісь):

Єдиного стандарту відображення графіка немає, десь по осі Y відображається рівень вхідного сигналу, десь навпаки, рівень сигналу після компресії. Десь точка (0,0) знаходиться в верхньому правому куті, десь в нижньому лівому. У будь-якому випадку, при переміщенні курсору миші по цьому полю змінюються значення цифр, які відповідають параметрам Ratio і Threshold. Тобто Ви задаєте рівень компресії для кожного значення Threshold, завдяки чому можна дуже гнучко налаштувати компресію.

Сайд чейн (Side Chain)

Сайд чейн компресор аналізує сигнал одного каналу, і коли рівень звуку перевершує поріг (threshold) - застосовує компресію до іншого каналу. Сайд чейн має свої переваги роботи з інструментами, які розташовані в одній частотній області (активно використовується зв'язка бас - бас бочка), проте іноді використовуються і інструменти, розташовані в різних частотних областях, що призводить до цікавого сайд-чейн ефекту.

Частина друга - Етапи компресії

Існує три етапи компресії:

1) Перший етап - компресія окремих звуків (singleshoots).

Тембр будь-якого інструменту має наступні характеристики: Атака (Attack), Тримання (Hold), Спад (Decay), Період утримання (Delay) Рівень (Sustain), Загасання (Release).

Етап компресії окремих звуків підрозділяється на дві частини:

1.1) Компресія окремих звуків ритмічних інструментів

Часто складові біта вимагають окремої компресії для додання їм чіткості. Багато обробляють бас бочку окремо від інших ритмічних інструментів, як на етапі компресії окремих звуків, так і на етапі компресії окремих партій. Пов'язано це з тим, що вона знаходиться в низькочастотної області, де крім неї зазвичай присутній тільки бас. Під чіткістю бас бочки розуміється наявність характерного клацання (у бас бочки дуже короткий час атаки і тримання). Якщо клацання немає - то потрібно обробити її компресором, задаючи поріг рівним нулю а час атаки від 10 до 50 мс. Спад (Realese) компресора повинен закінчитися до нового удару бас-бочки. Останню проблему можна вирішити за допомогою формули: 60 000 / BPM, де BPM - темп композиції. Так, наприклад) 60 000/137 \u003d 437,96 (час в мілісекундах до нової сильної частки 4-х розмірної композиції).

Все вище сказане відноситься і до інших ритмічним інструментам з коротким часом атаки - вони повинні володіти акцентованим клацанням, який не повинен бути пригнічений компресором на якомусь з етапів рівнів компресії.

1.2) Компресія окремих звуків гармонійних інструментів

На відміну від ритмічних інструментів, партії гармонійних інструментів досить рідко складаються з окремих звуків. Однак з цього не випливає те що їх не слід обробляти на рівні компресії звуків. У разі якщо Ви використовуєте семпл із записаною партією - то це другий рівень компресії. До цього рівня компресії відносяться тільки синтезовані гармонійні інструменти. Це можуть бути семплери, синтезатори використовують різні методи синтезу звуку (фізичне моделювання, FM, адитивний, субтрактівним і ін.). Як Ви напевно вже здогадалися - мова йде про програмування налаштувань синтезатора. Так! Це теж компресія! Практично у всіх синтезаторів є програмований параметр envelope (ADSR), що в перекладі означає огинає. За допомогою обвідної задається час Атаки (Attack), Спаду (Decay), рівень тримання (Sustain), Затухання (Release). І якщо Ви мені скажіть то що це не компресія кожного окремого звуку - Ви мій ворог на все життя!

2) Другий етап - Компресія окремих партій.

Під компресією окремих партій я розумію звуження динамічного діапазону ряду об'єднаних окремих звуків. В цей етап входять і записи партій, в тому числі вокал, який вимагає обробки компресія для додання йому чіткості та розбірливості. При обробці компресією партій потрібно враховувати те що при додаванні окремих звуків можуть з'явитися небажаний піки, від яких і потрібно позбутися на цьому етапі, так як якщо це не зробити зараз, то картина може посилитися на етапі зведення всієї композиції. На етапі компресії окремих партій потрібно враховувати компресію етапу обробки окремих звуків. Якщо Ви домоглися чіткості бас бочки - то неправильна повторна обробка на другому етапі може все зіпсувати. Обробка всіх партій компресором не обов'язкова, також як і не обов'язкова обробка всіх окремих звуків. Я Вам раджу поставити на всякий випадок аналізатор амплітуди щоб визначати наявність небажаних побічних ефектів об'єднання окремих звуків. Крім компресії на цьому етапі необхідно стежити за тим, щоб партії були по можливості в різних частотних діапазонах, щоб було виконано квантування. Також корисно пам'ятати те що у звуку є така характеристика як маскування (Психоакустика):

1) Більш тихий звук маскується більш гучним, тим, хто попереду ним.

2) Більш тихий звук на низькій частоті маскується більш гучним звуком на високій частоті.

Так, наприклад, якщо у Вас є партія синтезатора, то часто ноти починають грати до того як закінчують своє звучання попередні ноти. Іноді це необхідно (створення гармонії, стиль гри, багатоголосся), але часом зовсім немає - Ви можете обрізати їх кінець (Delay - Release) в разі якщо він чути в solo режимі, але не чути в режимі відтворення всіх партій. Теж саме відноситься до ефектів, наприклад реверберації - вона не повинна триває до нового початку звучання джерела звуку. Вирізаючи і видаляючи непотрібний сигнал - ви робите звучання чистіше, і це теж може бути розглянуто як компресія - тому що Ви видаляєте непотрібні хвилі.

3) Третій етап - Компресія композиції.

При компресії всієї композиції потрібно враховувати те що всі партії є об'єднанням безлічі окремих звуків. Отже, при їх об'єднанні і подальшої компресії потрібно стежити за тим щоб кінцева компресія не зіпсувала то чого ми досягли на перших двох етапах. Також потрібно розділяти композиції в яких важливий широкий або вузький діапазон. при компресії композицій з широким динамічним діапазоном - досить поставити компресор, який буде тиснути короткочасні піки, які утворилися в результаті складання партій між собою. При компресії композиції, в якій важливий вузький динамічний діапазон, - все набагато складніше. Тут компресори останнім часом називаються максимайзер. Максимайзер - плагін, який поєднує в собі компресор, ліміттер, граффіческій еквалайзер, енхайзер та інші інструменти перетворення звуку. При цьому він повинен обов'язково володіти інструментами аналізу звуку. Максімайзінг, кінцева обробка компресором, багато в чому потрібна для боротьби з допущеними помилками на попередніх етапах. Помилки - не стільки компресії (втім, якщо Ви робите на останньому етапі то що Ви могли зробити на першому етапі - це вже помилка), скільки в первісному виборі хороших семплів і інструментів, які не заважали б один одному (мова йде про частотних діапазонах) . Саме для цього проводиться корекція АЧХ. Часто буває так, що при сильній компресії на майстра потрібно змінювати параметри компресії і відомості на більш ранніх етапах, так як при сильному звуженні динамічного діапазону вилазять тихі звуки, які раніше маскувалися, змінюється звучання окремих компонентів композиції.

У цих частинах я навмисне не говорив про конкретні параметри компресії. Я вважав за необхідне написати про те що при компресії необхідно приділяти увагу всім звукам і всім партіям на всіх етапах створення композиції. Тільки так в підсумку Ви отримаєте гармонійний результат не тільки з точки зору теорії музики, а й з точки зору звукорежисури.

Далі в таблиці дані практичні поради з обробки окремих партій. Однак в компресії цифри і пресети можуть тільки підказати потрібну область, в окрузі якої потрібно шукати. Ідеальні налаштування компресії залежать від кожного окремого випадку. Параметри посилення (Gain) і порога (Threshold) мають на увазі нормальний рівень звуку ( логічне використання всього діапазону).

Частина третя - Параметри компресії

Коротка довідка:

Поріг спрацьовування (threshold) - визначає рівень звуку вхідного сигналу, по досягненню якого компресор починає роботу.

Атака (Attack) - визначає час, після закінчення якого компресор почне працювати.

Рівень (ratio) - визначає Стпень зменшення значень амплітуди (по відношенню до оригінального значенням амплітуди).

Спад (release) - визначає час, після закінчення якого компресор перестане працювати.

Посилення (Gain) - визначає рівень підвищення вхідного сигналу, після обробки компресором.

Таблиця компресії:

інструмент Threshold Attack Ratio Release Gain опис
вокал 0 ДБ 1-2 мс

2-5 mS

10 мсек

0.1 мс

0.1 мс

менше 4: 1

2,5: 1

4:1 – 12:1

2:1 -8:1

150 мс

50-100 mS

150 мсек

150 мс

0.5s

Компресія при запису повинна бути мінімальна, вимагає обов'язкової обробки на етапі відомості для додання чіткості і розбірливості.
Духові інструменти 1 - 5ms 6:1 – 15:1 0.3s
Діжка від 10 до 50 мс

10-100 mS

4: 1 і вище

10:1

50-100 мс

1 mS

Чим нижче Thrshold і чим більше Ratio і довше Attack, тим сильніше виражений клацання спочатку бочки.
синтезатори Залежить від типу хвилі (огинають ADSR).
Робочий барабан: 10-40 mS

1 5ms

5:1

5:1 – 10:1

50 mS

0.2s

Хай-Хет 20 mS 10:1 1 mS
надголовние мікрофони 2-5 mS 5:1 1-50 mS
ударні 5ms 5:1 – 8:1 10ms
Бас гітара 100-200 mS

4ms to 10ms

5:1 1 mS

10ms

струнні 0-40 mS 3:1 500 mS
Сінт. бас 4ms - 10ms 4:1 10ms Залежить від огинають.
перкусія 0-20 mS 10:1 50 mS
Акустична гітара, Піаніно 10-30 mS

5 - 10ms

4:1

5:1 -10:1

50-100 mS

0.5s

Електро-нітара 2 - 5ms 8:1 0.5s
Фінальна компресія 0.1 мс

0.1 мс

2:1

від 2: 1 до 3: 1

50 мс

0.1 мс

0 дБ на виході Час атаки залежить від мети - чи потрібно видалити піки або зробити трек більш гладким.
Ліміттер після фінальної компресії 0 mS 10:1 10-50 mS 0 дБ на виході Якщо потрібен вузький динамічний діапазон і грубий «зріз» хвиль.

Інформація була взята з різних джерел, на які посилаються попуряние ресурси в інтернеті. Різниця параметрів компресії об'есняется відмінністю переваг звучання і роботою з різним матеріалом.

Люди, захоплені домашнім звуком, демонструють цікавий парадокс. Вони готові перелопатити кімнату прослуховування, спорудити колонки з екзотичними випромінювачами, але ніяково відступають перед музичної консервою, ніби вовк перед червоним прапорцем. А власне, чому не можна за прапорець заступити, а з консерви спробувати приготувати щось більш їстівне?

Періодично на форумі виникають жалібні питання: «Порадьте добре записані альбоми». Воно й зрозуміло. Спеціальні аудіофільскій видання хоч і порадують слух першу хвилину, але до кінця їх ніхто не слухає, аж надто сумний репертуар. Що ж стосується решти фонотеки, то проблема, здається, очевидна. Можна економити, а можна не економити і вбухати прірву грошей в компоненти. Все одно мало кому подобається слухати свою улюблену музику на високій гучності і можливості підсилювача тут ні при чому.

Сьогодні навіть в Hi-Res альбомах зрізані піки фонограми і гучність загнана в клиппинг. Вважається, що більшість слухає музику на будь-якому барахлі, а тому треба «піддати газку», зробити свого роду тонкомпенсації.


Зрозуміло, робиться це не спеціально, щоб засмутити аудиофилов. Про них взагалі мало хто згадує. От хіба що здогадалися сбагрівают їм майстер-файли, з яких копіюється основний тираж - компакт-диски, MP3 та інше. Зрозуміло, майстер вже давно сплющений компресором, ніхто свідомо не буде готувати спеціальні версії для HD Tracks. Хіба що виконується певна процедура для вінілового носія, який з цієї причини і звучить більш гуманно. А для цифрового шляху все закінчується однаково - великим товстим компресором.

Отже, в даний час всі 100% видаваних фонограм, за вирахуванням класичної музики, піддаються компресії при мастерингу. Хтось виконує цю процедуру більш-менш вправно, а хтось зовсім по-дурному. В результаті ми маємо пілігримів на форумах з лінійкою плагіна DR за пазухою, болісні порівняння видань, втеча в вініл, де теж потрібно Майні первопрессси.

Самі відморожені побачивши всіх цих неподобств перетворилися буквально в аудіосатаністов. Без жартів, вони читають звукорежисерську святе писання задом наперед! сучасні програми редагування звуку мають певний інструмент відновлення звукової хвилі, що зазнала кліппінга.

Спочатку цей функціонал призначався для студій. При микшировании бувають ситуації, коли клиппинг потрапив на запис, а переробити сесію по ряду причин вже неможливо, і тут приходить на допомогу арсенал аудіоредактора - декліппер, декомпресор і т.п.

І ось уже до подібного софту все сміливіше тягнуть ручки звичайні слухачі, у яких йде кров з вух після чергової новинки. Хтось вважає за краще iZotope, хтось Adobe Audition, хтось операції розділяє між декількома програмами. Сенс відновлення колишньої динаміки полягає в програмному виправленні кліппірованних піків сигналу, які, впираючись в 0 дБ, нагадують шестірню.

Так, про 100% -м відродження исходника мови не йде, оскільки мають місце процеси інтерполяції по досить умоглядних алгоритмам. Але все-таки деякі результати обробки мені здалися цікавими і гідними вивчення.

Наприклад, альбом Лани Дель Рей «Lust For Life», стабільно погано матюкливою, тьху, що роблять! В оригіналі пісні «When the World Was at War We Kept Dancing »було ось так.


А після низки декліпперов і декомпресор стало ось так. Коефіцієнт DR змінився з 5 на 9. Завантажити та послухати зразок до і після обробки можна.


Не можу сказати, що метод універсальний і годиться для всіх угроблених альбомів, але в даному випадку я вважав за краще зберегти в колекції саме цей варіант, оброблений активістом рутрекера, натомість офіційного видання в 24 біт.

Навіть якщо штучне витягування піків з звукового фаршу не поверне справжню динаміку музичного виконання, ваш ЦАП все одно скаже спасибі. Адже йому так важко було працювати без помилок на граничні рівні, де велика ймовірність виникнення так званих межсемплових піків (ISP). А тепер до 0 дБ будуть дострибувати лише рідкісні сполохи сигналу. Крім того, притихла фонограма при стисненні у FLAC або інший lossless-кодек тепер буде менше за розміром. Більше «повітря» в сигналі економить простір хард-драйву.

Спробуйте оживити свої самі ненависні альбоми, убиті на «війні гучності». Для запасу динаміки спочатку потрібно знизити рівень треку на -6 дБ, а потім запустити декліппер. Ті, хто не вірить комп'ютерів, можуть просто увіткнути між CD-плеєром і підсилювачем студійний експандер. Цей пристрій по суті займається тим же самим - як може відновлює і витягує піки стисненого по динаміці аудіосигналу. Коштують подібні пристрої з 80-90-х не сказати щоб дуже дорого, і в якості експерименту спробувати їх буде дуже цікаво.


Контролер динамічного діапазону DBX 3BX обробляє сигнал окремо в трьох смугах - НЧ, СЧ і ВЧ

Колись еквалайзери були цілком очевидним компонентом аудіосистеми, і ніхто їх не боявся. Сьогодні не потрібно вирівнювати завал високих частот магнітної стрічки, але з потворної динамікою треба щось вирішувати, братці.

динамічна компресія (Dynamic range compression, DRC) - звуження (або розширення в разі експандера) динамічного діапазону фонограми. динамічний діапазон, Це різниця між самим тихим і найгучнішим звуком. Іноді самим тихим у фонограмі буде звук трохи голосніше рівня шуму, а іноді трохи тихіше найгучнішого. Апаратні пристрої та програми, які здійснюють динамічну компресію, називають компресорами, виділяючи серед них чотири основні групи: власне компресори, лімітери, експандери і гейти.

Ламповий аналоговий компресор DBX 566

Знижує й підвищує компресія

Понижаюча компресія (Downward compression) зменшує гучність звуку, коли вона починає перевищувати певне порогове значення, залишаючи більш тихі звуки в незмінному вигляді. Екстремальним варіантом понижувальної компресії є лимитер. Що підвищує компресія (Upward compression), навпаки, збільшує гучність звуку, якщо вона нижче порогового значення, не зачіпаючи більш гучні звуки. При цьому обидва види компресії звужують динамічний діапазон аудіосигналу.

Понижаюча компресія

Що підвищує компресія

Експандер і Гейт

Якщо компресор зменшує динамічний діапазон, експандер його збільшує. Коли рівень сигналу стає вище порогового рівня, експандер збільшує його ще більше, таким чином збільшуючи різницю між гучними і тихими звуками. Подібні пристрої часто використовуються під час запису барабанної установки, щоб відокремити звуки одних барабанів від інших.

Тип експандера, який використовується не для посилення гучних, а для заглушення тихих звуків, що не перевищують рівня порогового значення (наприклад, фонових шумів) називається Noise gate. У такому пристрої, як тільки рівень звуку стає менше порогового, проходження сигналу припиняється. Зазвичай гейт використовується для придушення шуму в паузах. На деяких моделях можна зробити так, щоб звук при досягненні порогового рівня не припинявся різко, а поступово згасав. У цьому випадку швидкість загасання встановлюється регулятором Decay (спад).

Гейт, як і інші типи компресорів, може бути частотно-залежним (Тобто по-різному обробляти певні частотні смуги) і може працювати в режимі side-chain (див. нижче).

Принцип роботи компресора

Сигнал, що потрапляє в компресор, розділяється на дві копії. Одна копія направляється на підсилювач, в якому ступінь посилення управляється зовнішнім сигналом, друга копія - формує цей сигнал. Вона потрапляє в пристрій, який називається side-chain, де сигнал вимірюється, і на основі цих даних створюється огинає, що описує зміна його гучності.
Так влаштовано більшість сучасних компресорів, це так званий тип feed-forward. У старіших пристроях (тип feedback) рівень сигналу вимірюється після підсилювача.

Існують різні аналогові технології керованого посилення (variable-gain amplification), кожна зі своїми достоїнствами і недоліками: лампові, оптичні з використанням фоторезістров і транзістрние. При роботі з цифровим звуком (в звуковому редакторі або DAW) можуть використовуватися власні математичні алгоритми або емулюватися робота аналогових технологій.

Основні параметри компресорів

Threshold

Компресор зменшує рівень аудіосигналу, якщо його амплітуда первишает певне порогове значення (threshold). Воно зазвичай вказується в децибелах, при цьому більш низький threshold (наприклад, -60 dB) означає, що буде оброблено більше звуку, ніж при більш високому порозі (наприклад, -5 dB).

Ratio

Ступінь зменшення рівня визначається параметром ratio (відношення): ratio 4: 1 означає, що якщо вхідний рівень на 4 дБ перевищує поріг, рівень вихідного сигналу буде вище порога на 1 дБ.
наприклад:
Threshold \u003d -10 dB
Вхідний сигнал \u003d -6 dB (на 4 dB вище порогового рівня)
Вихідний сигнал \u003d -9 dB (на 1 dB вище порогового рівня)

Важливо мати на увазі, що придушення рівня сигналу триває і деякий час після того, як він впаде нижче порогового рівня, і цей час визначається значенням параметра release.

Компресія з максимальним значенням ratio ∞: 1 називається обмеженням (limiting). Це означає, що будь-який сигнал вище порогового рівня пригнічується до порогового рівня (за винятком короткого періоду після різкого збільшення вхідної гучності). Детальніше див. Нижче «Лімітер».

Приклади різних значень Ratio

Attack і Release

Компресор надає певний контроль над тим, як швидко він реагує на зміну динаміки сигналу. Параметр Attack визначає час, за яке компресор зменшує коефіцієнт посилення до рівня, який визначається параметром Ratio. Release визначає час, за яке компресор, навпаки, збільшує коефіцієнт посилення, або повертає до нормального, якщо рівень вхідного сигналу падає нижче порогового значення.

Фази Attack і Release

Ці параметри вказують час (зазвичай в мілісекундах), який буде потрібно для зміни посилення на певну кількість децибел, зазвичай це 10 дБ. Наприклад, в цьому випадку, якщо Attack встановлено на 1 мс, для зменшення посилення на 10 дБ буде потрібно 1 мс, а на 20 дБ - 2 мс.

У багатьох компресорах параметри Attack і Release можуть налаштовуватися, але в деяких вони задані спочатку і не регулюються. Іноді вони позначаються як «automatic» або «program dependent», тобто змінюються в залежності від вхідного сигналу.

Knee

Ще один параметр компресоора: hard / soft Knee. Він визначає, чи буде початок застосування компресії різким (hard) або поступовим (soft). Soft knee зменшує помітність переходу від необробленого сигналу до сигналу, підданому компресії, особливо при високих значеннях Ratio і різких збільшеннях гучності.

Hard Knee і Soft Knee компресія

Peak і RMS

Компресор може реагувати на пікові (короткочасні максимальні) значення або на усереднений рівень вхідного сигналу. Використання пікових значень може призводити до різких коливань ступеня компресії, і навіть до спотворень. Тому компресори застосовують функцію усереднення (зазвичай це RMS) вхідного сигналу при порівнянні його з граничним значенням. Це дає більш комфортне стиснення, наближене до людського сприйняття гучності.

RMS - параметр, що відображає середню гучність фонограми. З математичної точки зору RMS (Root Mean Square) - це середньоквадратичне значення амплітуди певної кількості семплів:

Stereo linking

Компресор в режимі stereo linking застосовує однакове посилення до обох стереоканалами. Це дозволяє уникнути зміщення стереопанорами, яке може стати результатом індивідуальної обробки лівого і правого каналів. Таке зміщення відбувається, якщо, наприклад, який-небудь гучний елемент панорамуватися не по центру.

Makeup gain

Оскільки компресор зменшує загальний рівень сигналу, зазвичай додається можливість фіксованого посилення на виході, що дозволяє отримати оптимальний рівень.

Look-ahead

Функція look-ahead призначена для вирішення проблем, властивих як занадто великим, так і занадто маленьким значенням Attack і Release. Занадто великий час атаки не дозволяємо ефективно перехоплювати транзіенти, а надто маленьке може бути не комфортним для слухача. При використанні функції look-ahead основний сигнал затримується щодо керуючого, це дозволяє починати компресію заздалегідь, ще до того, як сигнал досягне порогового значення.
Єдиним недоліком цього методу є тимчасова затримка сигналу, що в деяких випадках небажано.

Використання динамічної компресії

Компресія використовується повсюдно, не тільки в музичних фонограмах, але і всюди, де потрібно збільшити загальну гучність, не збільшуючи при цьому пікові рівні, де використовується недорога звуковідтворююча апаратура або обмежений канал передачі (системи оповіщення та зв'язку, аматорське радіо і т.п.) .

Компресія застосовується при відтворенні фонової музики (в магазинах, ресторанах і т.п.), де небажані будь-які помітні зміни гучності.

Але найважливіша сфера застосування динамічної компресії - музичне виробництво і мовлення. Компресія використовується для додання звуку "щільності" і "драйву", для кращого поєднання інструментів один з одним, і особливо, при обробці вокалу.

Вокальні партії в рок- і поп-музиці зазвичай піддаються компресії, щоб виділити їх на фоні акомпанементу і додати ясності. Спеціальний вид компресора, налаштований тільки на певні частоти - деессер, використовується для придушення шиплячих фонем.

В інструментальних партіях компресія також використовується для ефектів, не пов'язаних безпосередньо з гучністю, наприклад, швидко затухаючі звуки ударних можуть стати більш тривалими.

В електронній танцювальній музиці (EDM) часто використовується side-chaining (див. Нижче) - наприклад, басова лінія може управлятися бочкою або чимось подібним, щоб запобігти конфлікту баса та ударних і створити динамічну пульсацію.

Стиснення широко використовується в широкомовної передачі (радіо-, теле-, інтернет-мовлення) для підвищення сприйманої гучності при одночасному зменшенні динамічного діапазону вихідного аудіо (зазвичай це CD). У більшості країн є правові обмеження на миттєвий максимальний обсяг, який може транслюватися. Зазвичай ці обмеження реалізуються постійними апаратними компресорами в ефірній ланцюга. Крім того, збільшення сприймається гучності покращує "якість" звуку з точки зору більшості слухачів.

Див. також Loudness war.

Послідовне збільшення гучності однієї і тієї ж пісні, ремастірованной для CD з 1983 по 2000 рр.

Side-chaining

Ще один часто зустрічається перемикач компресора - «side chain». В цьому режимі компрессирование звуку відбувається не в залежності від його власного рівня, а в залежності від рівня сигналу, що надходить на роз'єм, який так зазвичай і називається - side chain.

Цьому можна знайти кілька застосувань. Наприклад, вокаліст шепелявить і всі букви «с» виділяються із загальної картини. Ви пропускаєте його голос через компресор, а в роз'єм side chain подаєте цей же звук, але пропущений через еквалайзер. На еквалайзері ви забираєте всі частоти, крім тих, що використовуються вокалістом при проголошенні букви «с». Зазвичай близько 5 кГц, але може бути від 3 кГц до 8 кГц. Якщо потім поставити компресор в режим side chain, то компрессирование голосу буде відбуватися в ті моменти, коли вимовляється буква «с». Таким чином вийшов прилад, відомий як «деессер» (de-esser). Такий спосіб роботи називається «частотно-залежним» (frequency dependent).

Ще одне застосування цієї функції носить назву «ducker». Наприклад, на радіостанції музика йде через компресор, а слова діджея - через побічну ланцюг. Коли діджей починає базікати, гучність музики автоматично зменшується. Цей ефект можна з успіхом застосовувати і в запису, наприклад, зменшувати гучність клавішних партій під час співу.

Brick wall limiting

Компресор і лімітер работаеют приблизно однаково, можна сказати, що лимитер, це компресор з високим Ratio (від 10: 1) і, звичайно, низьким Attack time.

Існує поняття Brick wall limiting - лімітінг з дуже високим Ratio (від 20: 1 і вище) і дуже швидкою атакою. В ідеалі, він взагалі не дозволяє сигналу перевищити граничний рівень. Результат буде неприємним на слух, але зате це запобіжить пошкодження звуковідтворювальної техніки або перевищення пропускної здатності каналу. Багато виробників інтегрують в свої пристрої лімітери саме з цією метою.

Clipper vs. Limiter, soft and hard clipping

, Медіаплеєри

Платівки, особливо старі, які були записані і виготовлені до 1982 року, з набагато меншою ймовірністю піддавалися мікшуваня, під час якого запис б зробили голосніше. Вони відтворюють природну музику з природним динамічним діапазоном, який зберігається на платівці і втрачається у більшості стандартних цифрових форматів або форматів високого дозволу.

Зрозуміло, тут є винятки - послухайте не так давно вийшов альбом Стівена Уїлсона від MA Recordings або Reference Recordings, і ви почуєте, наскільки хорошим може бути цифровий звук. Але це рідкість, більшість сучасних звукозаписів гучні і стислі.

Останнім часом компресія музики піддається серйозній критиці, але я готовий сперечатися, що практично всі ваші улюблені записи стиснуті. Якісь із них менш, якісь більш, але все одно стиснуті. Стиснення динамічного діапазону - це своєрідний козел відпущення, якого звинувачують в поганому музичному звучанні, але сильно стиснута музика - це не нове віяння: послухайте альбоми Motown 60-х років. Те ж саме можна сказати про класичні роботи Led Zeppelin або молодші альбоми Wilco і Radiohead. Стиснення динамічного діапазону зменшує природне співвідношення між найгучнішим і самим тихим звуком на записи, тому шепіт може бути таким же гучним як крик. Досить проблематично знайти поп-музику останніх 50 років, яка не була схильна до компресії.

Нещодавно я мило поговорив з засновником і редактором журналу Tape Op Ларрі Крейном (Larry Crane) про хороших, поганих і «злих» аспектах стиснення. Ларрі Крейн працював з такими групами і виконавцями як Стефан Маркус, Cat Power, Sleater-Kinney, Дженні Льюіс, M. Ward, The Go-Betweens, Джейсон Літтл, Еліот Сміт, Quasi і Richmond Fontaine. Він також керує звукозаписною студією Jackpot! в Портленді, Орегон, яка була притулком для The Breeders, The Decemberists, Едді Веддера, Pavement, R.E.M., She & Him і ще для багатьох-багатьох інших.

Як приклад дивно неприродно звучать, але все одно відмінних пісень, я привожу альбом Spoon «They Want My Soul», що вийшов в 2014 році. Крейн сміється і каже, що слухає його в машині, оскільки там він відмінно звучить. Що приводить нас до ще одній відповіді на питання, чому музику стискають: тому що стиснення і додаткова «чіткість» дозволяють краще її чути в галасливих місцях.

Ларрі Крейн за роботою. Фото Джейсона Куигли (Jason Quigley)

Коли люди говорять, що їм подобається звук аудіозаписи, я вважаю, що їм подобається музика, як якщо б звук і музика були нероздільними термінами. Але для себе я диференціюю ці поняття. З точки зору меломана, звук може бути грубим і сирим, але це не буде мати значення для більшості слухачів.

Багато поспішають звинувачувати мастеринг-інженерів в зловживанні компресією, однак стиснення застосовується безпосередньо під час звукозапису, під час мікшування і тільки потім під час мастерингу. Якщо ви особисто не були присутні на кожному з цих етапів, то не зможете сказати, як звучали інструменти та вокальна партія на самому початку процесу.

Крейн був в ударі: «Якщо музикант хоче навмисно зробити звук божевільним і спотвореним як записи Guided by Voices, то в цьому немає нічого поганого - бажання завжди переважує якість звучання». Голос виконавця практично завжди стискається, то ж саме відбувається з басом, барабанами, гітарами та синтезаторами. За допомогою компресії гучність вокалу зберігається на потрібному рівні протягом усієї пісні або трохи виділяється на тлі інших звуків.

Правильно виконане стиснення може зробити звук барабанів більш живим або навмисно дивним. Щоб музика звучала відмінно, потрібно вміти користуватися необхідними для цього інструментами. Ось чому на те, щоб зрозуміти, як користуватися стисненням і не перестаратися, йдуть роки. Якщо мікс-інженер занадто сильно стиснув гітарну партію, то мастеринг-інженер вже не зможе в повній мірі відновити відсутні частоти.

Якби музиканти хотіли, щоб ви слухали музику, яка не пройшла етапи мікшування і мастерингу, то випускали б її на полиці магазинів прямо зі студії. Крейн говорить, що люди, які створюють, редагують, мікшують музичні записи і проводять їх мастеринг, існують не для того, щоб плутатися під ногами у музикантів - вони допомагають виконавцям з самого початку, тобто вже більше ста років.

Ці люди - частина процесу творіння, в результаті якого виходять дивовижні витвори мистецтва. Крейн додає: «Вам не потрібна версія« Dark Side of the Moon », яка не пройшла через мікшування і мастеринг». Pink Floyd випустили пісню в такому вигляді, в якому вони хотіли її чути.

Ця група методів заснована на тому, що передаються сигнали піддаються нелінійним перетворенням амплітуди, причому в передавальною і приймальною частинах нелінійності взаімообратних. Наприклад, якщо в передавачі використовується нелінійна функція Öu, в приймальнику - u 2. Послідовне застосування взаімообратних функцій призведе до того, що в цілому перетворення залишається лінійним.

Ідея нелінійних методів стиснення даних зводиться до того, що передавач може при тій же амплітуді вихідних сигналів передати більший діапазон зміни переданого параметра (тобто, більший динамічний діапазон). динамічний діапазон - це виражене в відносних одиницях або децибеллах відношення найбільшої допустимої амплітуди сигналу до найменшої:

; (2.17)
. (2.18)

Природне бажання збільшити динамічний діапазон за допомогою зменшення U min обмежується чутливістю апаратури і зростанням впливу перешкод і власних шумів.

Найбільш часто стиснення динамічного діапазону здійснюється за допомогою пари взаімообратних функцій логарифмирования і потенціювання. Перша операція зміни амплітуди називається компресією(Стисненням), друга - експандуванні (Розтягуванням). Вибір саме цих функцій пов'язаний з їх найбільшою можливістю компресії.

У той же час ці методи мають і недоліки. Перший з них полягає в тому, що логарифм малого числа негативний і в межі:

тобто, чутливість дуже нелінійна.

Для зменшення цих недоліків обидві функції модифікують зміщенням і аппроксимацией. Наприклад, для телефонних каналів аппроксимированная функція має вигляд (тип А,):

причому А \u003d 87,6. Виграш від стиснення при цьому становить 24дБ.

Стиснення даних шляхом нелінійних процедур реалізується аналоговими засобами з великими похибками. Застосування цифрових засобів може істотно підвищити точність або швидкодія перетворення. При цьому пряме застосування засобів обчислювальної техніки (тобто, безпосереднє обчислення логарифмів і експонент) дасть не кращий результат зважаючи на низький швидкодії і накопичується похибки обчислення.

Стиснення даних шляхом компресії через обмеження по точності використовується в невідповідальних випадках, наприклад, для передачі мови по телефонних і радіоканалах.

ефективне кодування

Ефективні коди були запропоновані К. Шенноном, Фано і Хафманом. Сутність кодів полягає в тому, що вони нерівномірні, тобто з неоднаковим числом розрядів, причому довжина коду обернено пропорційна ймовірності його появи. Ще одна чудова особливість ефективних кодів - вони не вимагають роздільників, тобто спеціальних символів, які поділяють сусідні кодові комбінації. Це досягається при дотриманні простого правила: більш короткі коди не є початком більш довгих. В цьому випадку суцільний потік двійкових розрядів однозначно декодується, оскільки декодер виявляє спочатку коротші кодові комбінації. Ефективні коди довгий час були чисто академічними, але останнім часом успішно використовуються при формуванні баз даних, а також при стисненні інформації в сучасних модемах і в програмних архіваторах.

З огляду на нерівномірності вводять середню довжину коду. Середня довжина - математичне очікування довжини коду:

причому, l ср прагне до H (x) зверху (тобто l ср\u003e H (x)).

Виконання умови (2.23) посилюється при збільшенні N.

Існує два різновиди ефективних кодів: Шеннона-Фано і Хафмана. Розглянемо їх отримання на прикладі. Припустимо, ймовірності символів в послідовності мають значення, наведені в таблиці 2.1.

Таблиця 2.1.

ймовірності символів

N
p i 0.1 0.2 0.1 0.3 0.05 0.15 0.03 0.02 0.05

Символи ранжуються, тобто представляються в ряд по спадаючій ймовірностей. Після цього за методом Шеннона-Фано періодично повторюється наступна процедура: вся група подій ділиться на дві підгрупи з однаковими (або приблизно однаковими) сумарними ймовірностями. Процедура триває до тих пір, поки в черговий підгрупі не залишиться один елемент, після чого цей елемент усувається, а з рештою зазначені дії тривають. Це відбувається до тих пір, поки в останніх двох підгрупах не залишиться по одному елементу. Продовжимо розгляд нашого прикладу, яке зведено в таблиці 2.2.

Таблиця 2.2.

Кодування за методом Шеннона-Фано

N P i
4 0.3 I
0.2 I II
6 0.15 I I
0.1 II
1 0.1 I I
9 0.05 II II
5 0.05 II I
7 0.03 II II I
8 0.02 II

Як видно з таблиці 2.2, перший символ з імовірністю p 4 \u003d 0.3 брав участь в двох процедурах розбиття на групи і обидва рази потрапляв в групу з номером I. Відповідно до цього він кодується двухразрядного кодом II. Другий елемент на першому етапі розбиття належав групі I, на другому - групі II. Тому його код 10. Коди інших символів в додаткових коментарів не потребують.

Зазвичай нерівномірні коди зображують у вигляді кодових дерев. Кодова дерево - це граф, який вказує дозволені кодові комбінації. Попередньо задають напрямки ребер цього графа, як показано на рис.2.11 (вибір напрямків довільний).

За графу орієнтуються в такий спосіб: складають маршрут для виділеного символу; кількість розрядів для нього дорівнює кількості ребер в маршруті, а значення кожного розряду одно направленням відповідного ребра. Маршрут складається з вихідної точки (на кресленні вона позначена літерою А). Наприклад, маршрут в вершину 5 складається з п'яти ребер, з яких все, крім останнього, мають напрям 0; отримуємо код 00001.

Обчислимо для цього прикладу ентропію і середню довжину слова.

H (x) \u003d - (0.3 log 0.3 + 0.2 log 0.2 + 2 0.1 log 0.1+ 2 0.05 log 0.05+

0.03 log 0.03 + 0.02 log 0.02) \u003d 2.23 біт

l ср \u003d 0.3 2 + 0.2 2 + 0.15 3 + 0.1 3 + 0.1 4 + 0.05 5 +0.05 4+

0.03 6 + 0.02 6 = 2.9 .

Як видно, середня довжина слова близька до ентропії.

Коди Хафмана будуються за іншим алгоритмом. Процедура кодування складається з двох етапів. На першому етапі послідовно проводять одноразові стиснення алфавіту. Одноразове стиснення - заміна двох останніх символів (з нижчими ймовірностями) одним, з сумарною ймовірністю. Стиснення проводять до тих пір, поки не залишиться два символу. При цьому заповнюють таблицю кодування, в якій проставляють результуючі ймовірності, а також зображують маршрути, за якими нові символи переходять на наступний етап.

На другому етапі відбувається власне кодування, яке починається з останнього етапу: першому з двох символів привласнюють код 1, другому - 0. Після цього переходять на попередній етап. До символів, які не брали участі в стисненні на цьому етапі, приписують коди з наступного етапу, а до двох останніх символів двічі приписують код символу, отриманого після склеювання, і дописують до коду верхнього символу 1, нижнього - 0. Якщо символ далі в склеюванні НЕ бере участь, його код залишається незмінним. Процедура триває до кінця (тобто до першого етапу).

У таблиці 2.3 показано кодування за алгоритмом Хафмана. Як видно з таблиці, кодування здійснювалося за 7 етапів. Зліва вказані ймовірності символів, праворуч - проміжні коди. Стрілками показані переміщення новостворених символів. На кожному етапі два останніх символу відрізняються тільки молодшим розрядом, що відповідає методиці кодування. Обчислимо середню довжину слова:

l ср \u003d 0.3 2 + 0.2 2 + 0.15 3 ++ 2 0.1 3 + +0.05 4 + 0.05 5 + 0.03 6 + 0.02 6 \u003d 2.7

Це ще ближче до ентропії: код ще більш ефективний. На рис. 2.12 приведено дерево коду Хафмана.

Таблиця 2.3.

Кодування за алгоритмом Хафмана

N p i код I II III IV V VI VII
0.3 0.3 11 0.3 11 0.3 11 0.3 11 0.3 11 0.4 0 0.6 1
0.2 0.2 01 0.2 01 0.2 01 0.2 01 0.3 10 0.3 11 0.4 0
0.15 0.15 101 0.15 101 0.15 101 0.2 00 0.2 01 0.3 10
0.1 0.1 001 0.1 001 0.15 100 0.15 101 0.2 00
0.1 0.1 000 0.1 000 0.1 001 0.15 100
0.05 0.05 1000 0.1 1001 0.1 000
0.05 0.05 10011 0.05 1000
0.03 0.05 10010
0.02

Обидва коду задовольняють вимогу однозначності декодування: як видно з таблиць, коротші комбінації не є початком більш довгих кодів.

При збільшенні кількості символів ефективності кодів зростають, тому в деяких випадках кодують більші блоки (наприклад, якщо мова йде про тексти, можна кодувати деякі найбільш часто зустрічаються склади, слова і навіть фрази).

Ефект від впровадження таких кодів визначається в порівнянні їх з рівномірним кодом:

(2.24)

де n - кількість розрядів рівномірного коду, який замінюється ефективним.

Модифікації кодів Хафмана

Класичний алгоритм Хафмана відноситься до двухпрохідному, тобто вимагає спочатку набору статистики по символам і повідомленнями, а потім описаних вище процедур. Це незручно на практиці, оскільки збільшує час обробки повідомлень і накопичення словника. Найчастіше використовуються однопрохідні методи, в яких процедури накопичення і кодування поєднуються. Такі методи називаються ще адаптивним стисканням по Хафманом [46].

Сутність адаптивного стиснення по Хафманом зводиться до побудови початкового кодового дерева і послідовної його модифікації після надходження кожного чергового символу. Як і раніше, дерева тут бінарні, тобто з кожної вершини графа - дерева виходить максимум дві дуги. Прийнято називати вихідну вершину батьком, а дві пов'язаних з нею наступних вершини - дітьми. Введемо поняття ваги вершини - це кількість символів (слів), відповідних даній вершині, отриманих при подачі вихідної послідовності. Очевидно, що сума ваг дітей дорівнює вазі батька.

Після введення чергового символу вхідної послідовності переглядається кодове дерево: перераховуються ваги вершин і при необхідності вершини переставляються. Правило перестановки вершин наступне: ваги нижніх вершин найменші, причому вершини, що знаходяться зліва на графі, мають найменші ваги.

Одночасно вершини нумеруються. Нумерація починається з нижніх (висячих, тобто не мають дітей) вершин зліва направо, потім переноситься на верхній рівень і т.д. до нумерації останньої, вихідної вершини. При цьому досягається наступний результат: чим менше вага вершини, тим менше її номер.

Перестановка здійснюється в основному для висячих вершин. При перестановці має враховуватися сформульоване вище правило: вершини з великою вагою мають і більший номер.

Після проходження послідовності (вона називається також контрольної або тестової) всім висячим вершин присвоюються кодові комбінації. Правило присвоєння кодів аналогічно вищевикладеному: кількість розрядів коду дорівнює кількості вершин, через які проходить маршрут від вихідної до даної висячої вершини, а значення конкретного розряду відповідає напрямку від батька до "дитині" (скажімо, перехід вліво від батька відповідає значенню 1, вправо - 0 ).

Отримані кодові комбінації заносяться в пам'ять пристрою стиснення разом з їх аналогами і утворюють словник. Використання алгоритму полягає в наступному. Стислива послідовність символів розбивається на фрагменти відповідно до наявного словником, після чого кожен з фрагментів замінюється його кодом зі словника. Чи не виявлені в словнику фрагменти утворюють нові висячі вершини, набувають вагу і також заносяться в словник. Таким чином формується адаптивний алгоритм поповнення словника.

Для підвищення ефективності методу бажано збільшувати розмір словника; в цьому випадку коефіцієнт стиснення підвищується. Практично розмір словника становить 4 - 16 Кбайт пам'яті.


Проілюструємо наведений алгоритм прикладом. На рис. 2.13 приведена вихідна діаграма (її називають також деревом Хафмана). Кожна вершина дерева показана прямокутником, в якому вписані через дріб дві цифри: перша означає номер вершини, друга - її вага. Як можна переконатися, відповідність ваг вершин і їх номерів виконується.

Припустимо тепер, що символ, відповідний вершині 1, в тестовій послідовності зустрівся вдруге. Вага вершини змінився, як показано на рис. 2.14, внаслідок чого правило нумерації вершин порушено. На наступному етапі міняємо розташування висячих вершин, для чого міняємо місцями вершини 1 і 4 і перенумеровувати все вершини дерева. Отриманий граф наведено на рис. 2.15. Далі процедура триває аналогічно.

Слід пам'ятати, що кожна висяча вершина в дереві Хафмана відповідає певному символу або їх групі. Батько відрізняється від дітей тим, що група символів, йому відповідна, на один символ коротше, ніж у його дітей, а ці діти відрізняються останнім символом. Наприклад, батькові чи матері відповідають символи "кар"; тоді у дітей можуть бути послідовності "кара" і "короп".

Наведений алгоритм не є академічним і активно використовується в програмах - архіваторах, в тому числі і при стисненні графічних даних (про них мова піде нижче).

Алгоритми Лемпеля - Зива

Це найбільш часто використовувані в даний час алгоритми стиснення. Вони використовуються в більшості програм - архіваторів (наприклад, PKZIP. ARJ, LHA). Сутність алгоритмів полягає в тому, що деяка сукупність символів замінюється при архівування її номером у спеціально сформованому словнику. Наприклад, часто зустрічається в діловому листуванні фраза "На ваш лист вихідний номер ..." може займати в словнику позицію 121; тоді замість передачі або зберігання згаданої фрази (30 байт) можна зберігати номер фрази (1,5 байта в двійковій - десяткового формі або 1 байт - в двійковій).

Алгоритми названі в честь авторів, вперше запропонували їх в 1977 році. З них перший - LZ77. Для архівування створюється так зване ковзне за повідомленням вікно, що складається з двох частин. Перша частина, більшого формату, служить для формування словника і має розмір близько декількох кілобайт. У другу, меншу частину (зазвичай розміром до 100 байт) приймаються поточні символи проглядається тексту. Алгоритм намагається знайти в словнику сукупність символів, збігається з прийнятими в вікно перегляду. Якщо це вдається, формується код, що складається з трьох частин: зміщення в словнику щодо його початкової підрядка, довжина цієї підрядка, наступний за цією підрядком символ. Наприклад, виділена подстрока складається з символів "прог" (всього 6 символів), наступний за нею символ - "е". Тоді, якщо підрядок має адресу (місце в словнику) 45, то запис в словник має вигляд "45, 6. е". Після цього вміст вікна зсувається на позицію, і пошук триває. Таким чином формується словник.

Перевагою алгоритму є легко формалізується алгоритм складання словника. Крім того, можливо розархівування і без початкового словника (бажано при цьому мати тестову послідовність) - словник формується по ходу розпакування.

Недоліки алгоритму з'являються при збільшенні розміру словника - збільшується час на пошук. Крім того, якщо в поточному вікні з'являється рядок символів, відсутня в словнику, трьохелементна кодом записується кожен символ, тобто виходить не стиснення, а розтягнення.

Кращі характеристики має алгоритм LZSS, запропонований в 1978р. У ньому є відмінності в підтримці ковзного вікна та вихідних кодах компресора. Крім вікна, алгоритм формує бінарне дерево, аналогічне дереву Хафмана для прискорення пошуку збігів: кожна підрядок, що покидає поточне вікно, додається в дерево в якості одного з дітей. Такий алгоритм дозволяє додатково збільшити розмір поточного вікна (бажано, щоб його величина дорівнювала ступеня двійки: 128, 256 і т.д. байт). По - іншому формуються і коди послідовностей: додатково вводиться 1 бітний префікс для розрізнення незакодованих символів від пар "зсув, довжина".

Ще більша ступінь стиснення виходить при використанні алгоритмів типу LZW. Описані раніше алгоритми мають фіксований розмір вікна, що призводить до неможливості занесення в словник фраз довше розміру вікна. В алгоритмах LZW (і їх попередника LZ78) просмотровое вікно має необмежений розмір, а словник накопичує фрази (а не сукупність символів, як раніше). Словник має необмежену довжину, а кодер (декодер) працюють в режимі очікування фрази. Коли фраза, що збігається зі словником, сформована, видається код збіги (тобто код цієї фрази в словнику) і код наступного за нею символу. Якщо у міру накопичення символів утворюється нова фраза, вона також заноситься в словник, як і коротша. В результаті утворюється рекурсивна процедура, яка забезпечує швидке кодування і декодування.

додаткову можливість компресії забезпечує стислий кодування символів, що повторюються. Якщо в послідовності деякі символи йдуть підряд (наприклад, в тексті це можуть бути символи "прогалину", в числової послідовності - поспіль йдуть нулі і т.д.), то має сенс замінювати їх парою "символ; довжина" або "ознака, довжина ". У першому випадку в коді вказується ознака, що буде здійснюватися кодування послідовності (зазвичай 1 біт), потім код повторюваного символу і довжина послідовності. У другому випадку (передбаченому для найбільш часто зустрічаються символів, що повторюються) в префікс вказується просто ознака повторів.

THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму