sound, SB, AC97 и другое

Drivers for sound cards
  • Serge
    Потестил примеры всё работает но mini иногда потрескивает.
    Не должно, хотя в бета релиз вошла новая версия движка, которая ещё глобально не тестировалась на предмет качества звучания. Трещит в случайных местах или всегда на одной и тойже секунде?
    Щелчки идут при автоопределении нагрузки. Потом Win запоминает конфигурацию и следующей загрузке уже не щёлкает.
    Колонки трещат всё время, как будто plug не совсем чётко вошёл в разьём. Но звук то всё равно выводится виндой в другой разьём и перенаправить его в винде нельзя нигде в настройках (или я просто не знаю как).
  • Quantum

    Мне покаалось что щелчки повторяются. Я подумал что проблема в стыковке звуковых фрагментов если звук воспроизволится через статический буфер.
    Но звук то всё равно выводится виндой в другой разьём и перенаправить его в винде нельзя нигде в настройках (или я просто не знаю как).
    Значит это от драйвера зависит. У меня если переключить штекер запускается автоопределение нагрузки и потом звук всё время выводится в этот разъём.
  • Quantum

    Добавил вызов SND_GETFREESPACE equ 17

    Только для PCM_OUT. Возвращает размер незаполненной части буфера

    Code: Select all

    get_buffer_free:
    ;param
    ; eax=stream
    ;retval
    ; ebx = buffer free space
    ; eax = error code
               push ecx
               push 0                 ;output
               mov ebx, esp
    
               push eax               ;input             
               mov eax, esp
               
               push 4                 ;.out_size
               push ebx               ;.output
               push 4                 ;.in_size   
               push eax               ;.input
               push SND_GETFREESPACE  ;.code
               push dword [hSound]    ;.handle
                
               mov eax, 68
               mov ebx, 17
               mov ecx, esp
               int 0x40
               add esp, 24+4          ;skip input
               pop ebx                ;load output   
               pop ecx
               ret             
    
  • SPraid

    Если хочешь сделать mp3 плеер для sb16 то единственный способ писать на С. Я добавил к mpg123 функции для чтения mpeg потока.
    Они все собраны в mpg/readers.c Сначала надо создать reader функцией create_reader потом установить читаемый файл вызовом init_reader. head_read читает заголовок фрейма а read_frame - фрейм. test_mp3 и play_mp3 в плеере выполняют всю работу по определению файла и его декодированию
  • Serge
    Добавил вызов SND_GETFREESPACE equ 17
    Отлично! Теперь можно обновлять буфер в неблокирующем режиме, что даёт определённые плюсы.

    Кстати о треске. Теперь я тоже заметил этот эффект на старте воспроизведения (файл не имеет значения). При задании частоты в 44.1КГц эффект пропадает. Такое ощущение, что на самом старте в буфере мусор. При использовании ресемплера ничего подобного не происходит.
  • Quantum

    Треск очень слабый, как статика на виниле. При ресемплировании он может сглаживаться.
    Какой буфер имеется ввиду ?
  • Serge

    Возможно, мы говорим о разных вещах. Я заметил, что на протяжении первых 100-200 мсек проигрывания слышна не музыка из трека, а какой-то мусор, т.е. проигрывание как бы спотыкается на самом старте. Потом всё играет нормально (как и должно). Если перезапустить приложение, глюк повторяется. Это всё при 48КГц. Если же включить ресемплер, то этот глюк мистическим образом исчезает, т.е. проигрывание стартует гладко. Никакого треска, накладывающегося на проигрывание в моём случае не слышно.

    Чтобы переключить частоту достаточно изменить константу в исходнике (mini.asm):

    Code: Select all

    UF_FREQ  equ 48000  ; Set sampling rate to 48KHz  (22050, 44100, 48000)
    Попробуй поставить 44100.

    И ещё, на всякий случай, предлагаю тебе скачать виндовую версию uFMOD. В папке masm32 есть экзешник по функциональности аналогичный mini. Там тоже 48КГц и никакого треска и подобных артефактов быть не должно.
    Какой буфер имеется ввиду ?
    Буфер стрима, который создаётся функцией CreateBuffer.
  • Serge
    Есть проблемы с воспроизведением:
    (оба файла с битрейтом 320)
    http://www.kolibri.hut1.ru/temp/1.mp3 прерывистое воспроизведение
    http://www.kolibri.hut1.ru/temp/2.mp3 замедленное воспроизведение
  • Quantum

    Исправил все ошибки с 2_16_48. Теперь mini.beta играет без статики и пульсаций в начале файла.
  • Mario79

    Для первого файла надо обновить дрова, а для второго плеер http://infinity-sound.narod.ru/ac97snd
  • Залил на SVN новое дерево каталогов для плеера. Если путь к Фасму не прописан в PATH надо отредактировать fasm.rules.

    http://infinity-sound.narod.ru/sdk.7z - pe2kos.exe и sound.lib
  • Serge
    Исправил все ошибки с 2_16_48
    Оперативно.
    Теперь mini.beta играет без статики и пульсаций в начале файла.
    Интересно, почему у меня не было статики... Может ICH6 как-то её поглощает? Например, SB Live действительно фильтрует звук перед выводом. Поэтому я перестал тестить движок на этой карточке.
  • Quantum

    Скорее это кодек и потом я слушаю через наушники. Был баг с копированием семлов 2_16_48 когда воспроизведение смещалось и ещё менялось чередование каналов. Поэтому было ощущение потрескивания пластинки.
  • Serge

    mp3-файлы с CD/DVD воспроизводятся с короткими паузами через каждые ~3-4 секунды
    Эта фича-баг излечима? и будет ли лечится?
  • Who is online

    Users browsing this forum: No registered users and 0 guests