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

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

По началу идея была в том, чтобы полностью отказаться от движка 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 thoughts on “Звуковой движок: что стоит ждать?

  1. Viper

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

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

  2. Artem Post author

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

  3. DuXeN0N

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

  4. Svobodniy

    Тестировал этот движек, но даже не подозревал, что он может столько всего! Я сам в шоке, хотя давно уже понимаю, что Артем не просто программист 🙂

  5. T.R.S.

    Я мало во всём этом смыслю, но даже мне понятно какой это прорыв. Раньше приходилось смиряться с БАСС и подстраиваться под него. а теперь…

  6. TTK-GAVer

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

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

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

    Удач.

  7. YurCompMan

    Что ж, очень и очень радостные новости.

    А “пощупать” движок раньше следующей мажорной версии можно будет? Ну, до мажорной, как я понял, будет серия бета и RC версий…

  8. Artem Post author

    Не путай с релизом, я говорил именно про мажорную – версия, куда войдет болшое кол-во изменений (не только движок).

  9. Tiger

    есть к чему стремиться, повышать квалификацию и расти до более высокого уровня.
    непременно хочется “пощупать” движок

  10. Artem Post author

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

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

  11. Зелёный

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

    И правильно. На кой их поддерживать, когда своих хватает?

  12. Lyuter

    Новый звуковой движок – звучит угрожающе, но главное начать, ибо работы предстоит реально много.
    Остаётся одно – пожелать удачи.

  13. trenerlife

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

  14. vig849

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

  15. Artem Post author

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

  16. 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-кой).

  17. Artem Post author

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

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

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

  18. x-new

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

  19. x-new

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

  20. x-new

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

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

  21. NixoN

    Artem, когда планируется выпустить Aimp с новым движком? я уже заждался… (или можно получить тестовый движок?)

  22. KamiKatze

    Артем, будет ли это AIMP 3 или еще будет модификация второго? Если это третий что нас еще будет ждать кроме движка?

Leave a Reply