До выхода бетки AIMP3 остается все меньше и меньше времени, соответственно, появляется все больше и больше вопросов у пользователей, особенно после публикации последней новости на сайте об изменении планов (все-таки блог мало кто читает – тут мало полезной информации 🙂 )
Вопросов много, но самый, пожалуй, частый и наиболее “больной” для меня: “Зачем вам свой звуковой движок? Движков в интернете полно, самых разнообразных по функционалу и качеству, так зачем вам изобретать велосипед?”. Все-таки на разработку движка ушло куча времени…
Итак, обо всем по порядку:
Зачем избавляться от BASS? Ведь есть BASS_ASIO, BASS_WASAPI!
- Когда я начинал заниматься движком этих аддонов не было.
- Главное слово в первом пункте – аддонов. Эти библиотеки реализованы как довесок к BASS -никаким образом они с ним не интегрируются. По сути эти “аддоны” представляют собой только систему вывода, на вход которой нужно ручками подавать данные. В то время как сам BASS этого не требует – получается как минимум нужно делать две ветки кода – для управления BASS и для управления аддонами.
Так ведь полно других движков, и даже же опенсурс!
- Другие движки – кто знает какие сюрпризы они нам преподнесут? Да, согласен, проблем, которые есть в BASS, в них может и не быть, но могут вылезти другие, причем не сразу, а спустя какое-то время.
- Касательно опенсурса, тут возникает два момента, с которыми я столкнулся, изучая вопрос: либо написано настолько говено, что хочется все выкинуть и написать заново, либо движок не совсем удовлетворяет требованиям – проблемы с гибкостью, архитектура выбрана не совсем удачно / оптимальна – как ни крути, а нужно разбираться и допиливать. Имхо, а разбираться в чужом коде, особенно без документации, дело весьма не благодарное, да и времени потребуется не факт, что меньше.
Короче говоря, я посчитал, что сделать свое с нуля будет и полезнее, и быстрее.
Набросал на скорую руку две схемы: что было, что стало:
Основные минусы:
- Все крутится вокруг дескрипторов BASS-а (см. ниже)
- Из-за п.1 возникла куча проблем с прикручиванием Input-плагинов от Winamp-а. (Наверное, поэтому в AIMP2 своих Input-плагинов и не было)
- Самое неудобное место, на мой взгляд, DSP-Manager – часть звуковых эффектов реализуются BASSом, а часть – AIMPом.
Немного раскрою п.3: Причем для CustomDSP BASS предлагает два варианта: либо данные в процедуру приходят в формате 32float, либо в формате источника (я имею в виду только глубину дискретизации). Отсюда возникает: либо писать несколько процедур для каждого формата, либо смириться с тем, что данные будут перегоняться сначала в 32float, затем обратно в исходный формат (а вот тут может возникнуть “треск”, из-за клиппинга).
Да, BASS позволяет жестко указать, чтобы входящий поток конвертился в формат 32float, но это сугубо зависит от возможностей драйвера аудио карты.
Тут схема более красивая 🙂
- BASS выступает просто как “еще один” декодер, хотя и имеет лидерство. (На данный момент стримминг так же выполняется через BASS)
- “Аудио поток” конвертирует входящие данные во внутренний формат – 64float (опять же, речь только о глубине дискретизации). А обратное преобразование выполняется только в классе “устройство вывода” (и то, если оно нужно).
Выгоды вышло, может быть и не так много, как хотелось бы 🙂 Но самое главное – это свобода действий.
Уххх статейка.Давно в блоге ничего нового не было. Ждемс AIMP3. Тут схема более красивая 🙂 – + адин 🙂
Наболело )
Сильно в тонкости не влазил, новый звуковой движок даст конечному пользователю улучшение звука и удобство установки Винамповских звуковых плагинов? Или я что то не так понял?
Тон статьи, как мне показалось, столь неуверенный и не категоричный, что даже я теперь засомневался в необходимости нового движка. ))
Спасибо за пояснения. Надеюсь новый “велосипед” не подведет в самый ответственный момент. 🙂