Наверное это больше сюда, нежели в музыку.
Начну сразу, без лирических вступлений - занимаясь улучшениями эмуля, постоянно хочу улучшить звук.
И есть тут одна проблемка - называется она постоянно включённый порт бипера. Причём это проблема не только большинства эмулей, но и, например, моего "Байта".
Суть в том, что когда бипер включается, AY начинает играть не так как раньше (обычно тише).
На сегодняшний день я знаю 2 алгоритма микширования (все остальные которые я знаю - это вариации этих двух)
1) Z = (A + B) / 2
2) Z = A + B - A*B
где A - AY, B - Beeper и Z - результат.
В этих формулах все числа дробные от 0 до 1.
проблема первой формулы очевидна - все звуковые устройства звучат тише. при использовании второй - при включённом бипере AY не будет звучать вообще.
Чтоб было понятнее, вот иллюстрация: http://detstwo.com/pub/zemu/audio-mix.html (в эксплорере не будет работать)
Кнопки Simpe / Divide by 2 / Improved - выбирают режимы микширования (Simple - Z=A+B), кнопки 1 / 0.5 / 0 - выбирают уровень сигнала бипера.
Наиболее адекватный сигнал получается при div by 2, но при увеличении кол-ва устройств, звук начинает играть тише и тише.
Сейчас я в эмуле "отключаю" неиспользуемые последнюю секунду устройства, а потом импользую div by <кол-во оттавшихся устройств> (пока грубо, что сопровождается щелчками, но буду импрувить).
----
А теперь представим, что в комнате стоит 2 колонки, одна исключительно на бипер, вторая - на AY.
Если "включить" бипер, то колонка щёлкнет, пойдёт звуковая волна, но далее эта "включённая" колонка уже не будет влиять на звук.
----
А как делаете вы? А как это реализовывают в железе?