Anukari — это инновационный 3D-физический синтезатор, который стремительно набирает популярность среди музыкантов и разработчиков звукового программного обеспечения. Именно благодаря своим уникальным техническим решениям и поддержке современных аудиоинтерфейсов Anukari выделяется на фоне конкурентов. Сегодня глубоко рассмотрим одну из последних версий программы, в которой были добавлены или усовершенствованы такие аспекты, как многоканальная поддержка, интеграция ASIO, работа с видеокартами AMD Radeon и новые возможности для рандомизации параметров. Каждый из этих пунктов имеет большое значение для тех, кто работает с синтезатором на профессиональном уровне, особенно в контексте сложных звуковых проектов и живых выступлений. Многоканальная поддержка вывода и ввода — одна из важнейших функций, которые были реализованы создателями Anukari на основании запросов пользователей.
Главный катализатор внедрения этой функции — обращение от Joe Williams из CoSTAR LiveLab, который представил интересный кейс: использование Anukari как инструмента, способного передавать звук на 28 различных каналов Ambisonic купола. Это задача не из простых, требующая от программы умения распределять каждый звук с отдельных микрофонов или его источников на огромное количество выходных каналов без потери качества и производительности. Возможность управлять до 50 входами и 50 выходами аудиосигнала в Anukari открывает широкие перспективы для пространственного звука и сложных аудиосценариев. Важным аспектом является то, что многоканальная поддержка сделана максимально удобной и быстрой, а её использование не оказывает негативного влияния на производительность в тех случаях, когда она не задействована. Это говорит о продуманности архитектуры синтезатора, ведь каждый микрофон или источник звука используют одинаковую физическую модель, и вычисления по её обработке не дублируются.
Единственный дополнительный оверхед приходится на копирование данных между GPU и CPU, но и эта операция оптимизирована под разные платформы — будь то CUDA на Windows или Metal на macOS. Одновременно с развитием многоканального аудио в Anukari была наконец решена проблема поддержки ASIO — важного протокола для профессионального аудиооборудования на базе Windows. Ранее многие пользователи жаловались на высокую задержку при работе в Windows-версии из-за отсутствия поддержки ASIO, что сдерживало применение Anukari на задачах, где важна минимальная задержка звука, например при живых выступлениях или студийной записи. Юридические нюансы, связанные с подписанием соглашения со Steinberg об использовании ASIO SDK, стали причиной задержки внедрения данной функции. Однако разработчик успешно преодолел этот барьер и теперь ASIO входит в состав standalone-приложения, обеспечивая пользователям лучшую производительность и более стабильное воспроизведение звука.
Это улучшение позволяет эффектно использовать Anukari в комплексных звуковых установках с профессиональными аудиоинтерфейсами, делающими работу с низкой задержкой возможной. Несмотря на достоинства Anukari и его продвинутую поддержку различных технологий, не обошлось и без сложностей. В частности, существует целый ряд проблем с видеокартами AMD Radeon, которые требуют отдельного внимания. Несмотря на официальное заявление, что Radeon не поддерживаются в полной мере, на практике наблюдается разная степень стабильности — от идеально работающей программы до внезапных сбоев и аварийных завершений. Проблемы усугубляются в системах с комбинированной графикой, где наряду с NVIDIA присутствует встроенный Radeon от AMD Ryzen CPU.
Именно такие конфигурации вызвали резкое возрастание количества сбоев в версии 0.9.6. Основной причиной выявлена критическая ошибка драйверов AMD, приводящая к аварийному завершению процессов внутри OpenCL при компиляции ядра физического симулятора, что является грубым нарушением корректного поведения драйвера. Особенно пагубно это отражается на GPU с идентификатором gfx90c, где такие сбои проявляются наиболее активно.
Разработчику удалось найти временное решение — отключить тестовую компиляцию ядра на этапе обнаружения оборудования, что позволило избежать немедленных аварий. Однако если пользователь намеренно выберет Radeon gfx90c для работы, программа все равно крашится безвозвратно. Понимание того, что проблема — именно в видеодрайверах, и их нестабильности в части OpenCL, дает надежду на возможные будущие решения, хотя и с оговорками. Для выяснения глубоких причин производитель приобрел специфическую конфигурацию с упомянутым GPU в попытке создать патчи для обхода данного бага. Впрочем, есть и положительный опыт использования встроенных в Ryzen Radeon, которые при определенных условиях демонстрируют стабильность.
Возможно в дальнейшем будет сформирован список поддерживаемых Radeon, что позволит ограничить аппаратные конфигурации, исключая проблемные карты. Последним рассмотренным нововведением стала интеграция механизма рандомизации параметров в GUI Anukari. Эта функция особенно важна для творческого процесса, позволяя пользователям на лету генерировать новаторские звуковые идеи, избегающие шаблонности. Организация этой возможности оказалась нетривиальной задачей в связи со сложной логикой интерфейса, где слайдеры параметров могут управлять как единичным значением для выбранных объектов, так и диапазоном, если объекты имеют различные величины параметра. Рандомизация разделена на сценарии: при равных значениях у всех объектов кнопка просто выбирает случайное значение из всего диапазона и применяет его ко всем.
При наличии вариативности параметров используется тот диапазон, который существует в текущем выделении, и каждому объекту присваивается свое рандомное значение. Такой подход позволяет полноценно сохранить разнообразие и гибко регулировать параметры. Особенность заключается в том, чтобы при повторных нажатиях на кнопку «рандом» диапазон не сужался непрерывно, что исключается запоминанием изначального интервала рандомизации, применяемого на протяжении серий действий, и его сбросом только при ручной корректировке слайдера. Еще одна продуманная деталь — возможность правого клика по слайдеру с единичным значением для мгновенного преобразования его в диапазон с небольшим рандомизируемым диапазоном вокруг исходного значения. Это избавляет пользователя от необходимости размыкать и заново выделять объекты ради создания вариаций, что в целом повышает удобство и скорость работы.