Решил я провести один опыт по добавлению в свою систему временные задержки. Но так как ни процевого ГУ ни собственно процессора у меня нет, меня посетила другая идея. А что, если внести задержки в исходный материал, то есть прямо в аудио файл?
Итак wav файл несет в себе всего лишь 2 канала, право и лево. Соответственно, что нам нужно - это добавить в информацию левого канала (мы ж сидим ближе к левому, значит его и отодвигаем) просто необходимое количество нулей вначале, сдвинув таким образом всю информацию левого канала по времени. Уточню на всякий случай, что не затереть нулями N семплов вначале левого канала, а вставить пустые семплы.
Сначала я подумал, что ничего не получится из-за саба, так как на него будет приходить сумма каналов и бас просто расплывется так как он будет приходить по 2 раза на динамик, сначала из правого канала прямой, а потом потом через несколько миллисекунд задержаный из левого. Но все таки решил заглянуть в сервис мануал по моему ГУ и вот что я там увидел
О чудо! Сабвуфер сидит только на правом канале! А это значит, что во первых бас двоится не будет, а во вторых задержка не будет задерживать саб так как мыж задерживаем левый канал.
Обычная частота дискретизации wav файлов 44100 семплов в секунду. Это означает, что вставив один пустой семпл в левый канал мы получим задержку длинно 1/44100 секунды, что равно примерно 23 микросекунды или (если взять скорость звука 331 м/с) 7,5мм. То есть мы можем вносить задержки с шагом 7,5мм.
Немного оффтопа. Когда набираешь в гугле запрос "скорость звука", в выпадающем списке автодополнения первый же вариант запроса, который он предлагает "скорость звука в вакууме". Видать часто ищут
Итак я сел и за 20 минут написал простенькую программу, которая берет WAV файл, читает его и добавляет в левый канал в начала нулей и записывает все это дело в такой же wav файл рядышком.
Осталось выяснить сколько нулей нужно приписать. Для этого я написал другую программу, уже под iPhone которая может проигрывать wav файлы и на лету менять задержку в левом канале. Для этого я взял пример из документации Apple, который нызвается SpeakHear, он умеет записать файл с микрофона и потом воспроизвести его. Вот его я и модифицировал выкинув записывающую часть, и добавив возможность задержки и контрол для изменения ее на лету. Также вложил туда 2 файла для теста: розовый шум с диска аудио доктор и мою любиму песенку для подобных целей Muse - I Belong to You.
Вот ее внешний вид:
Далее опытным путем установил, что лучший результат получается в моей системе при задержке в 33 семпла, что примерно равно 25 см или 0.8 миллисекунды. При этом я получил довольно четкую позицию вокалиста перед собой и звук оторвался от мидов и поднялся на панель.
Завтра прогоню через первую программку несколько десятков файлов и буду слушать еще.
Что мы имеем в результате. Вечер времени и у нас есть задержки без процессора и без каких либо изменений в звуке! Естественно со своими ограничениями. Нельзя поменять задержку на лету, файлы специально нужно готовить для проигрывания в мишине, нельзя настроить задержки на пассажирское сидение, так как если будем задерживать правый канал, то с ним будет задерживаться и саб. Но тем не менее - результат есть и главное совершенно бесплатно.
Полезные темы:
Социальные закладки