9zip.ru - технологии для людей
9zip.ru Инструкции Декодер сжатого звука

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

Итак, задача была поставлена - найти компромисс между простотой алгоритма, степенью сжатия и качеством звука.

В результате жестоких экспериментов над моими ушами получился элементарный декодер. На входе - два бита, на выходе значение очередного отсчета сигнала. Алгоритм напоминает последовательное приближение или сильно упрощенный ADPCM.

Процедура не зависит от частоты нарезки и разрядности отсчетов. Я не мастер формализовать алгоритмы, но выглядит это примерно так:
Алгоритм помнит два значения:
- предыдущее значение сигнала A(n)
- текущий шаг D(n)

На вход поступают два бита:
- знак S
- величина M

Надо получить:
- следующее значение сигнала A(n+1)
- следующий шаг D(n+1)

Если не вдаваться в тонкости реализации, то процедура элементарная. Здесь для простоты описания введена переменная Delta.
1. Считаем дельту:

Если M==0:
Delta = D(n)
D(n+1) = D(n) / 2

Eсли M==1:
Delta = D(n) * 3
D(n+1) = D(n) * 2


2. Считаем сигнал:

Eсли S==0:
A(n+1) = A(n) + Delta

Если S==1:
A(n+1) = A(n) - Delta


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

Звук получается довольно шумный, но вполне разборчивый. Я пробовал играть коэффициентами или добавлять цифровые фильтры. Иногда удается получить лучший по качеству звук (особенно, когда известна частота нарезки и АЧХ сигнала) Но мне показалось, что вычислительные затраты растут неадекватно росту качества звучания. Кроме того, хотелось сохранить простоту и интуитивную понятность идеи. Впрочем можете поэкспериментировать сами.

Вся функция декодера написана на ассемблере для линковки с AVR-GCC проектом. Скорость ее работы зависит от входных данных, но худший случай - 28 тактов на выборку.

01.02.2015 © 9zip.ru
Авторские права охраняет Роскомнадзор

Понравилась статья? Похвастайся друзьям:

Хочешь почитать ещё про инструкции? Вот что наиболее популярно на этой неделе:
Изготовление прокладок из силикона
Необычные неисправности магнитол
Ф-24-2
Коля одобряет.

Есть вопросы, комментарии? Напиши:

Имя
Комментарий
Длина текста:
число с картинки
Правила прочитал(а)

Дальше в разделе инструкции: Описание работы схемы центрифуги, электродвигатель питается от сети переменного тока напряжением 220 в частотой 50 гц. под крышкой центрифуги установлен выключатель, блокирующий включение двигателя при открытой крышке. установкой требуемой выдержки времени подготавливают цепи включения реле и нагревателя.

Главная 9zip.ru База знаний радиолюбителя Контакты

Девять кучек хлама:

Радиотехника, электроника и схемы своими руками Ремонт домашней электроники Виртуальный музей старых радиодеталей XX века Ламповый звук hi-end и винтажная электроника Катушки Теслы Радиодетали и модули с Aliexpress Интернет и сети Сотовые операторы Инструкции



Дайджест
радиосхем
Новые схемы интернета - в одном месте!

Конкурс
для всех
Участвуй в новом конкурсе для радиолюбителей в ноябре-декабре 2016 и получай призы!



Гостевушечка


Сколько тебе лет?
Попытаемся составить портрет современного радиолюбителя...

Голосование запущено 07 ноября 2016, приняли участие 152 человека.