Звуковой движок: что стоит ждать?

Сегодня хочу все-таки рассказать про звуковой движок, о котором уже упоминалось столько раз.

По началу идея была в том, чтобы полностью отказаться от движка BASS, который мы используем в данный момент. В итоге, BASS останется в плеере, но будет выполнять уже куда меньшую роль — роль декодера аудиофайлов, нужно сказать, что в этом отношении у нас к нему притензий не было.

Итак, обо всем по порядку.

Разработка началась в декабре 2008 года, тогда по большей мере я изучал данный вопрос — это были демки, воспроизводящие обычные WAV файлы через DirectSound / ASIO /KernelStreaming. Каждый из методов приподнес свои сюрпризы, самым легким, на мой взгляд, оказался ASIO, наиболее сложным — KernelStreaming — документации мало, нюансов тьма, чтобы заставить выводить звук через него, ушло по меньшей мере 2 месяца, а в итоге он стал попросту неактуален, но об этом чуть позже. После того, как «основные демки» были отлажены, можно сказать, и началось написание самого движка…

В дальнейшем, с выходом Windows 7 RC1, было дописан модуль, отвечающий за вывод звука через WasAPI (на данный момент — неэксклюзивный доступ).

Движок получил название AIMP SoundOut. Я думаю, многие сразу поняли почему — его основная цель «выводить» звук.

Движок разделен на три логические части:

  • Приемник — его задача получать данные от декодера и преобразовывать в «выходной формат» — привести кол-во каналов и частоту дискретизации к заданному пользователем значению. Как вы уже могли догадаться, в движке присутствует ресемплер.
  • Контроллер (ядро) — собственно, самая главная часть движка, она отвечает за управление потоками и наложение звуковых эффектов.
  • Система вывода — представляет собой набор встроенных «плагинов», которы отвечают за вывод звука одним из выбранных пользователем методов. Не думаю, что у АИМПа появятся свои output-плагины в виде dll-ек, здесь речь больше о легкой расширяемости.

Что это дает нам? На самом деле все просто — большая свобода действий. Наш движок заточен именно под нужды плеера, в отличии от BASS (игровой движок) — это упростило много кода, как в плане управления аудио потоками и эффектами, так и реализации поддержки сторонних (не bass-овских) input-плагинов — теперь AIMP будет иметь и свои собственные input-плагины.

Характеристики

  • Методы вывода: DirectSound / ASIO / WASAPI (+ Null Output)
  • Режимы работы: Mono / Stereo / 5.1 / 7.1
  • Поддерживаемая глубина дискретизации (вход): 8 / 16 / 24 / 32 / 64 бит
  • Поддерживаемая глубина дискретизации (вывод): 8 / 16 / 24 / 32 бит
  • Поддерживаемые частоты дискретизации (вывод): 8 — 192 KHz
  • Поддерживаемые частоты дискретизации (вход): 8 — 768 KHz
  • Внутренняя глубина дискретизации: 64 Bit (Float) (Имеется так же 32-битная версия)

Что еще предстоит сделать?

  • На данный момент есть некоторые технические трудности с реализацией двух звуковых эффектов — pitch и tempo.
  • WASAPI: эксклюзивный доступ к устройству.

P.S. Движок, скорее всего будет представлен в следующей мажорной версии AIMP-а в виде отдельной dll-ки, однако, API будет закрытым.

Звуковой движок: что стоит ждать?: 31 комментарий

  1. Viper

    Что ж, вот и приоткрыта завеса. Особенно порадовали характеристики в плане битности и частоты дискретизации. 64 бит на уровне внутренней обработки — отлично!

    Пару вопросов:
    1. Будет ли доступен движок для ПУБЛИЧНОГО тестирования?
    2. Как скажется на размере дистрибутива? Как я понял, от BASS’а останется только декодер

  2. Artem Автор записи

    1. Альфа-тестеры его уже успели погонять. Далее он будет доступен для тестирования уже встроенным в плеер.
    2. Я не думаю, что размер сильно увеличится. По крайней мере движок там сыграет меньшую роль (по сравнению с планами на аудиобиблиотеку)

  3. DuXeN0N

    Что можно сказать… достойно, даже очень. AIMP набирает обороты все быстрее и быстрее. Хотя он и так не сильно отставал от других аудио плееров, теперь, я уверен, его популярность возрастет намного. Жду не дождусь, когда этот движок выйдет в паблик и его можно будет «пощупать». Очень порадовали характеристики. Думаю в будущем AIMP вовсе избавится от BASS и перейдет на уровень выше. Спасибо, Артём, что ты нас радуешь все чаще и чаще =))

  4. TTK-GAVer

    не наю, чувствую себя неандеральцем, но 44 kHz вполне нормуль для меня…
    наверное от того, что звук у меня встроенный, а не аудиофильский…

    тут скорее надо признать, что Артём перешёл на новый уровень (либо реализовал накопленные ранее знания), что (+ сам факт разработки ядра) сделает его контроль за AIMP’ом гибче. Это рулеззз.

    хотя да, не менее важно, наверное, привлечение и удержание аудиофилов.. ну + раскрутка для таких как я: со встроенным Реалтеком, слушающим 128/320 Kbs, но интуитивно догадывающихся, что новые граница возможностей — это всегда к лучшему.

    Удач.

  5. Artem Автор записи

    Нет,
    «Null Output» — по сути вывод в «никуда».
    Сейчас если в плеере выбрать устройство «No Sound», то он играть не будет вообще, а при null-output будет играть, но вы ничего не услышите 🙂

    P.S. винамповские ouput-плагины поддерживать не планирую.

  6. trenerlife

    Думаю новый движок по звучанию будет хорошим. Тестирование покажет))) в наше время пока создавать движки не очень то и нужно. Но эксперименты нужно проводить). Все равно BASS пока рулит))) (я имею ввиду широкое пользование).

  7. vig849

    Вопрос касательно Win XP. Будет ли новый движок AIMP SoundOut самостоятельно обходить Kernel Mixer, или ето всеже будет осущетвлятся через ASIO (скажем драйвер ASIO4ALL)?

  8. x-new

    «TTK-GAVer пишет:
    9 Январь 2010 в 2:02
    не наю, чувствую себя неандеральцем, но 44 kHz вполне нормуль для меня…»

    Ну если записи закодированы с частотой дискретизации 44,1кГц, то от поддержки плеером более высоких частот дискретизации эти записи более насыщенней звучать не станут.

    trenerlife пишет:
    26 Март 2010 в 15:57
    …Все равно BASS пока рулит))) (я имею ввиду широкое пользование)

    BASS имеет какое-то неоднозначное звучание, на сложных композициях замыленное на СЧ (средних частотах), из-за чего кажется что СЧ искусственно приглушены и хочется прибавить громкости. К примеру прослушайте (все DSP в плеерах надо отключить) композицию MARTIN HESS & CYRILL LUTZELSCHWAB — BOXENKILLER (в формате .wav, .ape или .flac) через AIMP2 и foobar2000 и возможно вы услышите разницу. Ещё эквалайзер на движке bass как-то «не очень», в сравнении с эквалайзером в том же foobar2000.

    Artem пишет:
    18 Май 2010 в 23:37

    Скорее всего только через ASIO, т.к. поддержку Kernel Streaming я не доделал, да и наверное, не буду.

    Kernel Streaming не надо, поддерживаю, а вот вывод через ASIO нужен 100% (и для windows xp и висты с 7-кой).

  9. Artem Автор записи

    Если быть точным, то эквалайзер BASS = DirectSound Equalizer.

    На счет звучания — время покажет, не во всем виновата система вывода БАСС и его фильтры, не стоит забывать про декодеры, которыми пока остаются декодеры из BASS.

    Возможно, со временем, декодеры так же будут «своими», но не факт.

  10. x-new

    А то, что плеер делает ресемплинг при проигрывании файлов, отличающихся от установленной в настройках звука виндовс частоте дискретизации (44.1кГц) это реализуется движком bass.dll или каким-то плагином?

  11. x-new

    А поддержка VST-плагинов планируется, чтобы, к примеру, можно было использовать freeware VST-ный EQ? Т.е. это может быть проще сделать, чем совершенствовать встроенные DSP-эффекты?

  12. x-new

    Спасибо за ответы, удачи в работе над новым звуковым движком, терпеливо ждём! И поправляйтесь, вроде бы вы «удачно» простужались недавно.

    [пост не для публикации, он не по теме как-бы :)))]

Добавить комментарий