Состояние Android и аудио
За последние несколько лет мобильная связь стала популярной платформой для медиапотребления большинства людей. От воспроизведения звука до потоковой передачи фильмов в вашем кармане и на планшете становится все больше контента, и рынок все еще расширяется.
Сегодня мы наблюдаем переход к высококачественным трехмерным игровым средам, вспомогательным средствам для живой музыки и даже программным пакетам для домашних студий, предназначенным для работы на мобильных устройствах и планшетах. Однако, к сожалению, Android не был в авангарде этого растущего рынка, эту позицию твердо удерживает Apple.
В частности, в плане творчества планшеты быстро заменяют ноутбуки для создания музыки и живых выступлений. Не говоря уже о том, что существует целый рынок цифровых эффектов, которые можно купить по гораздо более низким ценам, чем традиционное аналоговое оборудование.
Новейший усилитель цифровых эффектов Line 6 спроектирован полностью вокруг мобильных интерфейсов, но поддержки Android пока не видно.
Однако переход к большему количеству цифрового контента требует более высоких уровней вычислительной мощности на платформе, ограниченной меньшими батареями и тепловыми ограничениями. Владельцы Android гордятся тем, что у них одни из лучших аппаратных средств на рынке, так почему же Android так далеко отстает от своего конкурента, когда дело доходит до аудиоприложений?
Немного об обработке звука
Наши мобильные телефоны более чем достаточно мощны для простых задач воспроизведения. Однако по мере увеличения вычислительной мощности мы также начали требовать от наших мобильных устройств большей обработки сигналов, причем в большей степени в режиме реального времени.
Мы можем принять это как должное, но даже во время игры каждому звуковому файлу требуется время, чтобы его извлечь из памяти, преобразовать из двоичной информации в числовые значения перед тем, как передать его в ЦАП, что занимает ценные тактовые циклы. Дополнительная пост-обработка, такая как передача файла через оптимизированные настройки эквалайзера или добавление звука дополнительной реверберацией, занимает еще больше времени, а современные приложения становятся все более сложными.
Хотя современные мобильные процессоры давно превзошли отметку в несколько ГГц и могут сравниться с высокопроизводительным ПК по количеству ядер, эти простые цифры – не все, что имеет значение, когда речь идет о цифровой обработке сигналов. Разные конструкции процессоров выполняют разные задачи за разное количество тактов, что делает некоторые процессоры быстрее других при выполнении одних и тех же задач. Вот почему прямое сравнение частоты ГГц и количества ядер не всегда применимо для разных проектов.
Android может быть не в состоянии конкурировать с дорогим оборудованием студийного уровня, но многое можно сделать при ограниченном бюджете обработки, если вы знаете, где оптимизировать.
При работе со звуком в реальном времени очень важно иметь возможность быстро обрабатывать данные с плавающей запятой, цифровые числа с десятичной запятой и инструкции SIMD (одна инструкция, несколько данных), желательно в течение короткого промежутка времени между выборками, который обычно 44100 или 48000 кГц для большинства аудиоприложений. Модули с плавающей запятой, математический сопроцессор, обычно встречающийся в ядрах ЦП, используются для вычисления математических операций с цифровым аудиосигналом с высокой степенью точности.
Несколько ядер не так важны для звука – вместо этого ключевым моментом является грубая скорость.
Несколько ядер не так важны для звука, поскольку большинство алгоритмов DSP не оптимизированы для нескольких потоков, вместо этого ключевым моментом является грубая скорость. В этом отношении ограничения мобильных процессоров заключаются в меньшей пропускной способности шины памяти и меньшем размере кеш-памяти ЦП по сравнению с более мощными ЦП настольного уровня. Это может означать, что ваш мобильный процессор может в конечном итоге тратить больше времени на ожидание данных, которые он обрабатывает.
Примером одной из наиболее – если не самых – требовательных задач обработки звука является растяжение по времени, когда темп / скорость аудиосэмпла изменяется без компромиссов в изменении высоты тона / частоты, которые могут возникнуть при изменении длины волны сэмплов., В этом методе звук преобразуется в цифровой формат, а затем алгоритм быстрого преобразования Фурье извлекает частотную информацию из звука, которая используется для исправления / восстановления частотной информации при растяжении или сжатии выборки во временной области.
Быстрое преобразование Фурье – это процесс извлечения информации о конкретной частоте из более сложной формы сигнала, который требует высокой загрузки процессора.
Звучит довольно сложно, правда? Этот тип процесса создает огромную нагрузку на ЦП, что может привести к недопустимой задержке. На самом деле в мире существует менее пяти алгоритмов БПФ, которые могут эффективно запускать этот тип процесса на мобильных устройствах.
Максимальная задержка в любой системе реального времени в идеале не должна превышать 20 мс, что примерно соответствует допустимому пределу задержки для людей. Еще немного, и наш мозг заметит разницу между входящим и исходящим звуком в системе или между нажатием кнопки и тем, что происходит на экране. К сожалению, типичная задержка в Android составляет от 100 до 250 миллисекунд.
Стремясь повысить производительность и обойти некоторые из этих недостатков, разработчики мобильных SoC, такие как Qualcomm, начали включать собственное специализированное оборудование DSP вместе со своими основными процессорами.
ARM и DSP
ARM уже давно включает блоки с плавающей запятой почти во все свои основные проекты, за исключением Cortex-M3 и ниже, и поддерживает дополнительную цифровую обработку сигналов и расширения SIMD в своих мобильных процессорах.
Расширение ARM SIMD и движок NEON особенно важны для таких сценариев.
Эта возможность обработки DSP нацелена на снижение энергопотребления, предлагая при этом максимальную доступную производительность, до 75 процентов выше, чем та, которая может быть достигнута без расширений. Инструменты ARM используются для ряда распространенных мобильных приложений, от датчиков мониторинга до распознавания голоса, VOIP и кодирования / декодирования звука.
Расширение ARM SIMD и движок NEON, присутствующие в обычной архитектуре ARMv7, особенно важны для типов сценариев, о которых мы говорим. ARM произвела особую оптимизацию для более быстрого сна, повышения производительности алгоритма DSP в 4-8 раз, специальных инструментов для приложений быстрого преобразования Фурье и целого ряда других оптимизаций для выполнения сложных математических вычислений с интенсивным процессором при строгом бюджете мощности.
ARM NEON Data Engine и модули с плавающей запятой, присутствующие во всех проектах Cortex-A, необходимы для эффективной обработки DSP.
Переход на 64-разрядную архитектуру ARMv8 компании RM также может иметь некоторые полезные преимущества для разработчиков и потребителей аудиопрограмм, поскольку аудиоприложения могут сильно зависеть от памяти, а 64-разрядная версия может позволить использовать устройства с большими пулами ОЗУ.
Тем не менее, ARM может сделать не так много, а библиотека ARM на самом деле служит лишь примером того, как разработчики могут создавать свой собственный код более низкого уровня. Без полноценной библиотеки разным разработчикам пришлось бы повторять одни и те же процессы снова и снова, чтобы создать базовые инструменты, которые им нужны. Еще одним препятствием для небольших групп разработчиков является высокая стоимость проприетарного компилятора ARM.
Аудио-разработка и Android
Несмотря на то, что у нас есть мобильное оборудование, которое явно способно предоставить высококачественное аудио-приложение, похоже, что разработчикам не хватает поддержки программного обеспечения со стороны Google.
Для разработчика приложения первым портом захода обычно является Android SDK. Однако API Google Media для Android, мягко говоря, весьма ограничен. Вы не найдете много полезных инструментов, за исключением самого простого MediaRecorder и функций воспроизведения файлов. Если углубиться в различные пакеты Android, вы обнаружите несколько инструментов для эквалайзера, предустановок реверберации и подавления шума. Однако не существует каких-либо приемлемых инструментов для обработки звука в реальном времени с малой задержкой, а различные фрагменты операционной системы, обнаруженные в дикой природе, часто означают, что эти инструменты могут быть запущены и пропущены в зависимости от оборудования пользователя.
Android уже имеет приемлемый выбор приложений, ориентированных на звук, но платформа не так хорошо работает с более широким миром звука.
Сравните эту ситуацию с платформой Apple iOS, она не может быть более контрастной. Apple уже давно включает свою инфраструктуру цифрового звука Core Audio в свои операционные системы, которая предлагает разработчикам специальную программную среду для множества приложений, таких как те, которые мы уже обсуждали.
Похоже, со стороны Google разработчикам не хватает поддержки программного обеспечения.
Библиотека Core Audio включает инструменты для микширования и преобразования сигналов и файлов, легко реализует цепочки сигналов, а также важные встроенные эффекты, сохраняя при этом высокую производительность. Apple также обеспечивает легкий доступ к своему уровню абстракции оборудования, позволяя звуковым приложениям легко взаимодействовать и взаимодействовать с другими частями оборудования, такими как микрофоны или устройства вывода, которые принимают входящие аудиосигналы. Большая часть этих функций полностью отсутствует в платформе Android.
Как ни больно это признавать, платформа Apple Core Audio гораздо более удобна для разработчиков, чем экосистема Android.
Вместо этого более сложные приложения могут обнаружить, что им приходится выполнять гораздо больше низкоуровневого кодирования самостоятельно, что увеличивает время и затраты на разработку. Это основная причина того, почему Android так сильно отстает от Apple, когда дело касается продвинутых аудиоприложений. То есть, если вы не можете найти сторонний SDK.
Представляем – Superpowered
Superpowered – один из немногих аудио SDK с широким набором функций, доступных для мобильных устройств, который только недавно стал доступен для Android. Он предлагает ряд инструментов для разработчиков Android и iOS, позволяющих легко реализовать некоторые более сложные звуковые приложения и эффекты. SDK предлагает библиотеку предварительно созданных функций для аудиофильтров, реверберации, эффекта эха, растяжения во временной области и БПФ, разработанных с учетом высококачественного звука студийного уровня.
Superpowered был создан с нуля, чтобы максимизировать производительность DSP и одновременно избежать проблем со звуком в Android.
В отличие от других звуковых движков, Superpowered не является оболочкой для Core Audio или библиотеки предварительной сборки Android. Вместо этого он был построен с нуля, чтобы максимизировать производительность DSP, при этом избегая проблем с фрагментацией Android, его скудным набором функций и проблемами задержки. Superpowered утверждает, что в результате она может даже превзойти известную в отрасли платформу Core Audio от Apple, что немало.
Superpowered разработан для устройств ARM, которые используют расширение архитектуры NEON, что в основном означает, что охвачено 99% смартфонов и планшетов. Его можно использовать для ускорения разработки практически всего, что связано со звуком, от приложений для ди-джеев и инструментальных эффектов до программ для чтения аудиокниг, приложений для подкастов и игр. Видео ниже демонстрирует соучредитель Superpowered, демонстрирующий переносной диджейский интерфейс с питанием от платформы.
<iframe src=”//player.vimeo.com/video/92242073″>
Что важно для разработчиков, Superpowered – это кроссплатформенный SDK, позволяющий приложениям беспрепятственно работать как на Android, так и на iOS без каких-либо различий в качестве звука. Хотя iOS может быть ведущей платформой на данный момент, это открывает возможность для более широкого круга разработчиков также рассмотреть Android.
Superpowered не останавливается на достигнутом со звуком, в ближайшем будущем компания также выпустит DSP SDK для обработки изображений и видео. Это может открыть Android для нового поколения приложений и контента для редактирования мультимедиа.
Если вы разработчик, интересующийся SDK Superpowered, хорошая новость заключается в том, что его можно бесплатно загрузить и внедрить в свое приложение. Когда ваше приложение достигнет 50 000 установок, Superpowered поможет вам заключить с ними контракт, который включает дополнительную поддержку для вашего приложения.
Оглядываясь назад, можно сказать, что отсутствие в Android стандартной поддержки расширенных аудиоприложений и функций, похоже, было упущенной возможностью. К счастью, сторонние разработчики предложили решения проблемы. Надеюсь, что в будущем Android окажется достойной платформой и для разработчиков Power Media.
Источник записи: https://www.androidauthority.com