Показать сообщение отдельно
Старый 29.04.2012, 02:58   #15
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: Как смешать wav-файлы?

Сообщение от Phantom Посмотреть сообщение
$sample = $sample1 + $sample2;
if( $sample < -32768 ) $sample = -32768; // лимитирование до минимума при 16 бит
if( $sample > 32767 ) $sample = 32767; // лимитирование до максимума при 16 бит
?>
поробовал. при "s1 + s2" громкое шипение. почти все результирующие значения = 32767.
при "(s1 + s2) div 2" - тише, но качество отвратное ..(
был лет 15 назад на одной сельской дискотэке в саратовской области. в "клубе" с ильичом во дворе и "росписями" на всех углах. на входе дважды сунули по пол стакана водки. молча выпил, успокоились, отстали. внутри, в потемках, однообразно размахивали ветряками полторы девушки. моргала гирляндочка светомузыки. причем в такт мелодии. удивился, что тут кто-то умеет паять. ан нет. оказалось, что проводульки были рваные и от сотрясения басами разрывался контакт. вот и весь секрет аутентичности. но самое главное ноу-хау (для чего я это все и начал рассказывать) - усилитель системы "колонка в металлическом ведре". так вот эта колонка в ведре играла гораздо лучше, чем получается звук при побайтном (вернее поinteger-ном - 16 бит же ж) смешивании. вот такая вот эпидерсия
---
перерыл все компоненты с открытым кодом. везде делают так:
res := (volume1 * sample1 + volume2 * sample2) / 2;
но ведь это тоже самое, что и
res := (sample1 + sample2) div 2;
только с фиксированной громкостью. но на выходе какое-то уг получается. (ограничители стоят)
__________________
to be or not to be - it's not a question!
2b or not 2b = ff

Последний раз редактировалось barsunduk, 29.04.2012 в 22:17.
(Offline)
 
Ответить с цитированием