С колонками нормальный звук, просто бук с собой приходится таскать, а колонки тяжеловаты
Плиз "ткните носом" какие строки в драйвере отвечают за громкость? Попробую поменять параметры..
sound, SB, AC97 и другое
codec.inc
Громкость задаётся ослаблением сигнала с шагом -1.5dB. Советую прибавлять осторожно, чтобы не спалить.
Code: Select all
align 4
proc setup_codec
xor eax, eax
stdcall codec_write, dword CODEC_AUX_VOL
mov eax, 0x0B0B
stdcall codec_write, dword CODEC_MASTER_VOL_REG
mov ax, 0x08
stdcall codec_write, dword 0x0C
mov ax, 0x0808
stdcall codec_write, dword CODEC_PCM_OUT_REG
mov ax, 0x0808
stdcall codec_write, dword 0x10
mov ax, 0x0808
stdcall codec_write, dword 0x12
mov ax, 0x0808
stdcall codec_write, dword 0x16
stdcall codec_read, dword CODEC_EXT_AUDIO_CTRL_REG
and eax, 0FFFFh - BIT1 ; clear DRA (BIT1)
or eax, BIT0 ; set VRA (BIT0)
stdcall codec_write, dword CODEC_EXT_AUDIO_CTRL_REG
stdcall set_sample_rate, dword 48000
.init_error:
xor eax, eax ; exit with error
ret
endp
Roverman
Для AC97 всё ещё работает System audio mixer.
Для HDA не пременять! Нужно будет переделать соответствующие функции драйвера HDA.
Для AC97 всё ещё работает System audio mixer.
Для HDA не пременять! Нужно будет переделать соответствующие функции драйвера HDA.
Странно.. сейчас попробовал - не работает, кнопочки нажимаются, громкость не меняется.
ps попробовал миксер который на SVN - тоже не работает
ps попробовал миксер который на SVN - тоже не работает
Roverman
Asper wrote:Для регулировки левого канала - Home/End, правого - PageUp/PageDown.
Для AC97 возможно регулировать только оба канала одновременно, т.е. уровень звучания в обоих каналах будет одинаковый.
По-моему он был предназначен для старого встроенного в ядро кода SB16, а так соответствующий код давно удалён из ядра, то и программа на SVN потеряла актуальность.Roverman wrote:ps попробовал миксер который на SVN - тоже не работает
Спасибо большое за разъяснения, все работает.
Сделал Infinity, которая по умолчанию не использует инструкций MMX+ (изменить можно через USE_MMX_PLUS). Размер упакованного драйвера увеличивается на 8 байт, что как мне кажется приемлемо.
- Attachments
-
-
INFINITY.ASM.txt (29.04 KiB)Downloaded 165 times
-
УраAsper wrote:Сделал Infinity, которая по умолчанию не использует инструкций MMX+ (изменить можно через USE_MMX_PLUS). Размер упакованного драйвера увеличивается на 8 байт, что как мне кажется приемлемо.
А на какой ревизии SVN базируется Ваша версия? Я пробовал сравнивать - в последней ревизии очень много других изменений, не связанных с Вашими.
Asper
Замечательно - хоть у меня не было железа без нужных инструкций, но зато теперь есть альтернатива. Спасибо.
З.Ы. Для тех кто "совсем не флудит" - иногда простая человеческая поддержка не менее необходима, чем багрепорт.
Замечательно - хоть у меня не было железа без нужных инструкций, но зато теперь есть альтернатива. Спасибо.
З.Ы. Для тех кто "совсем не флудит" - иногда простая человеческая поддержка не менее необходима, чем багрепорт.
yogev_ezra
Да видимо ревизия старая, но разницы нет, с точки зрения наличия инструкций MMX+ в коде. Изменения касаются одной только функции set_vol_param
Вот с последней ревизии. Mario
Спасибо за поддержку.
Да видимо ревизия старая, но разницы нет, с точки зрения наличия инструкций MMX+ в коде. Изменения касаются одной только функции set_vol_param
Вот с последней ревизии. Mario
Спасибо за поддержку.
Asper
А зачем neg в операциях ?
А зачем neg в операциях ?
Serge
Потому что сравниваются положительное и отрицательное числа (например 0x0000DDF0 и 0xFFFFDDF0), что в итоге приводит к нулевому уровню звука.
Потому что сравниваются положительное и отрицательное числа (например 0x0000DDF0 и 0xFFFFDDF0), что в итоге приводит к нулевому уровню звука.
Asper
Там все сравнения в коротких целых ( 16 бит). Знаковые сравнения cmp ax, word[...], jl ... или jg ... должны работать. И диапазон vol_min,vol_max [-10000, 0]. Если не закладываться на возможность ограничения по максимальному уровню то vol_max всегда равно 0.
Там все сравнения в коротких целых ( 16 бит). Знаковые сравнения cmp ax, word[...], jl ... или jg ... должны работать. И диапазон vol_min,vol_max [-10000, 0]. Если не закладываться на возможность ограничения по максимальному уровню то vol_max всегда равно 0.
Last edited by Serge on Mon Mar 28, 2011 7:48 pm, edited 1 time in total.
Хм... не знал, а зачем тогда 64 бита?Serge wrote:Там все сравнения в коротких целых ( 16 бит), достаточно cmp ax, word[...]
Asper
64 бита - требование операций pminsw и pmaxsw, чтобы привести значение в диапазон -10000, 0 без гемороя с ветвлениями. А дальше считаем 16 битные целые на FPU
64 бита - требование операций pminsw и pmaxsw, чтобы привести значение в диапазон -10000, 0 без гемороя с ветвлениями. А дальше считаем 16 битные целые на FPU
Code: Select all
movd [r_vol], mm0
.calc_amp:
emms
fild word [l_vol] << short int
...
...
...
fild word [r_vol]
Who is online
Users browsing this forum: No registered users and 0 guests