molodcov_alex wrote:держи список моих изменений в анриле.
Так я уже качнул сорцы с ГЯФ, и выделил оттуда дифом изменения. Теперь осталось только их добавить. Но за сорцы спасибо.
deathsoft wrote:П.С. Пока актуальной остается проблема со звуковыми устройствами выдающими постоянную составляющую в звуке (вместо нуля), из за этого при остановке/возобновлении звука (например при таскании окна за рамку или при входе/выходе из оталдчика) слышны щелчки.
outval/=k; // k подбирается на глаз, у меня 1.01
outval+=(tmps-inval); // tmps - текущее значение
inval=tmps;
// в outval теперь отфильтрованное значение
float outval[2]={0};
unsigned short inval[2]={0};
for (unsigned k = 0; k < n_samples; k++, bufplay++) {
outval[0]/=1.01; outval[1]/=1.01;
unsigned short tmpv[2];
*((unsigned long*)tmpv)=sndbuf[bufplay & (SNDBUFSIZE-1)];
outval[0]+=(tmpv[0]-inval[0]);
outval[1]+=(tmpv[1]-inval[1]);
inval[0]=tmpv[0]; inval[1]=tmpv[1];
sndplaybuf[k]=((((signed short)(outval[1]))&0xFFFF)<<16)|
(((signed short)(outval[0]))&0xFFFF);
sndbuf[bufplay & (SNDBUFSIZE-1)] = 0;
}
molodcov_alex wrote:Вот так вот (надеюсь так правильно)
sound.cpp
deathsoft wrote:Большое спасибо, посмотрим, заюзаем. Проблема там не только с АУ, но и с GS и с битом TapeOut (при нажатии на любую кнопку процедура из ПЗУ выставляет TapeOut в 1).
molodcov_alex wrote:Ну какбы, то что выше написано обрабатывает конечный сигнал, я так понимаю, при пересылке "накопившегося сигнала" в буфер звуковухи.
if (conf.mem_model == MM_PROFI)
{
if(comp.p7FFD&0x10 && comp.pDFFD&0x20)
{ // modified ports
deathsoft wrote:Коэффициент k видимо зависит от настроек в конфиге (максимальных громкостей отдельных девайсов), т.к. постоянку носит только часть девайсов и пропорционально максимальной громкости.
Users browsing this forum: No registered users and 0 guests