Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Микширование цифрового звука. нужен интересный алгоритм. 
:(
    Опции темы
val
  Дата 15.12.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Привет, всем!
Сейчас делаю проект, связанный с микширование звука. На сегодняшний день микширование у меня проходит таким образом - просто складываются дискретные значения сигналов. Вот упрощенный примерный код:
Код

for (int i = 0; i < bufferSize; i++) {
    int sampleFirst = firstBuffer[i];
    int sampleSecond = secondBuffer[i];
    int resultSample = sampleFirst + sampleSecond;
    // Saturation.
    outputBuffer[i] = resultSample;
}


Всё работает хорошо, но меня мучает червь сомнения, что это приемлемое решение, слишком уж простое оно. smile Червь подпитывается тем, что микшер, встроенный в звуковую карту, намного приятнее работает.

Это сообщение отредактировал(а) val - 15.12.2005, 13:25


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
podval
Дата 15.12.2005, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Вообще-то весь алгоритм и заключается в тупом суммировании отсчетов smile + кое-какие оргвыводы.

http://www.moline.ru/equip/studio/seq/cubase5/mixing.php

http://oxygen.it.net.au/mixing/
PM WWW ICQ   Вверх
val
Дата 15.12.2005, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Ага, похоже на то. Просто я подумал, может есть какие-то техники сглаживания результирующего сигнала, просто иногда не очень красиво получается, если кто-то начинает орать. smile


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
podval
Дата 16.12.2005, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Может у тебя эффект клиппирования возникает?
PM WWW ICQ   Вверх
val
Дата 16.12.2005, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Не знаю, если среди участников появляется товарищ с очень громким микрофоном, то шумы от этого микрофона "давят" голоса остальных участников, что резко снижает качество общения.


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
DRUID3
Дата 27.12.2005, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 20.6.2005
Где: Kyyiv

Репутация: 2
Всего: 9



To:val

Нужно просто применить АРУ (понятно программную) и поиграться со временем ее срабатывания\отпускания. Хотя еще проще сделать плавный ограничитель, умножая отсчеты по закону pow(a, 1/k) , где a - амплитуда отсчетов, k - коэффициент с которым можно поиграться (const). Конечно сигнал при таком преобразовании испытывает некоторые спектральные искажения, но при передаче речи (тем более, как я понимаю, в системе связи) на слух это практически незаметно...

Это сообщение отредактировал(а) DRUID3 - 1.1.2006, 03:29


--------------------
Every time if you use Linux, you are joined to the communism...
практика - критерий истины ... отделенной от нас пропастью субъективного восприятия...
PM MAIL WWW Skype   Вверх
javaProgrammer
Дата 28.6.2012, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.8.2008

Репутация: нет
Всего: нет



скорее всего автор уже нашел свое решение(за 7-то лет^_^) проблемы но тут его не оставил((
Сам искал ответ на этот вопрос. Поиск ничего кроме этой статьи не дал. Поэтому выложу здесь свое решение, может потом кому пригодиться.
итак:
нужна нормальная функция микширования

читал я как-то википедию по теме ОТО и вот что я там обнаружил:

Цитата

Теория относительности даёт ответ на этот вопрос. Она расширяет понятие принципа относительности, распространяя его и на оптические процессы. Правило сложение скоростей при этом не отменяется совсем, а лишь уточняется для больших скоростей с помощью преобразования Лоренца:
vrel = (v1+v2)/(1+(v1*v2)/c^2) 
Можно заметить, что в случае, когда , преобразования Лоренца переходят в преобразования Галилея. Это говорит о том, что специальная теория относительности совпадает с механикой Ньютона при скоростях, малых по сравнению со скоростью света. Это объясняет, каким образом сочетаются эти две теории — первая является уточнением второй.
Википедия - Сложение_скоростей

И мне в голову пришла интересная мысль:
меняем скорость света на максимальное значение семпла,
а складываемые скорости -  на текушие значения семплов.
получаем:
Код

short * buf1; // первый канал
short * buf2; // второй канал
short * out_buf; // результат микширования

        for (int i = 0; i < bufflen; ++i) {
            int max_val_square = 1073741824; // нaша скорость света -> max short ^ 2 => 32768*32768  (ибо я работаю с 16bit-ным(знаковым) звуком)
            float a = buf1[i];
            float b = buf2[i];

            float rel_samp = (a + b) / (1 + (a * b) / max_val_square);

            out_buf[i] = rel_samp;
        }


ту-турууу теория относительности помогла написать функцию микширования!!! smile 
звучит при смешивании 2-х(больше пока не пробовал) источников звука очень хорошо(на слух искажений замечено не было).
такие эффекты как:
Цитата

...если среди участников появляется товарищ с очень громким микрофоном, то шумы от этого микрофона "давят" голоса остальных участников,

отсутствуют
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0735 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.