Как опробовать многоканальный звуковой ввод в Java
-
10-07-2019 - |
Вопрос
Я понял, что это может быть относительно нишевый вопрос, но, возможно, именно поэтому об этом все равно стоит спросить.Я рассматриваю аппаратную консоль записи с несколькими входами (например, Alesis IO 26), которая сможет использовать 8-канальный вход световой трубки Adat для обработки сигналов.Поскольку мне еще предстоит приобрести устройство и мне нужно выяснить, осуществимо ли это (проблемы с бюджетом), я хотел бы спросить, есть ли у кого-нибудь опыт использования всех этих 8 входов для получения данных в Java?Я видел множество примеров записи звука с использованием библиотек Javax.sound.sampled, но не смог найти никакой информации о многоканальном режиме, превышающем 2.Что меня интересует, так это семплирование 8 каналов по отдельности в качестве монофонического источника для выполнения над ними простой DSP.Будет ли аппаратное устройство рассматриваться как один микшер?А 8 каналов представить как 8 строк?Надеюсь, я правильно понял терминологию.
Я был бы признателен, если бы кто-нибудь мог указать мне на любую соответствующую информацию.Спасибо!
Решение
Предполагается, что многоканальное аудио возможно в Java в зависимости от версии Java, на которой вы работаете, платформы, на которой вы работаете, и типа используемой звуковой карты. См. Java Audio Faq для получения дополнительной информации. Я никогда не мог использовать это надежно на всех платформах.
Если вы действительно хотите создать надежное многоканальное аудио, я бы порекомендовал использовать C API, например PortAudio , Juce или PulseAudio .
Мне повезло с PortAudio и Juce оба.
Чтобы использовать их в Java, вам необходимо создать интерфейс JNI для API C . р>
Это, очевидно, больше работы, чем просто использование javax.sound, но это дает вам гораздо больший контроль над используемым звуковым оборудованием. По моему опыту работы с аудиоустройствами, слишком большое удаление от аппаратного обеспечения (то есть 4 уровня абстракции вместо 2) часто лишает вас возможности создавать серьезное многоканальное аудио с высокой битовой глубиной и высокой частотой дискретизации. Р>
Другие советы
Я реализовал нечто подобное с картами Terratec, подключенными к 32 входам, единственной библиотекой на тот момент была Jsyn.
Это действительно хорошая библиотека, если вы с ней познакомитесь.
http://www.softsynth.com/jsyn
Я не уверен, что есть что-то еще, что может помочь.
Я только что добавил оболочку Java JNI для PortAudio. План состоит в том, чтобы сохранить это вместе с источником PortAudio. PortAudio поддерживает многоканальное аудио, где N > 2.
Сегодня, 9/3/12, JPortAudio все еще находится в альфа-режиме. К тому времени, когда вы прочитаете это, оно может стать стабильным.
http://www.portaudio.com/docs/v19-doxydocs/ java_binding.html р>
Я не могу дать вам прямой ответ на вопрос, работает ли API javax.sound с несколькими каналами (но, согласно документации API, так и должно быть).
Однако я пошел другим путем для многоканальной обработки звука с помощью Java, который, возможно, подойдет и вам.Я использовал Jack (Jack Audio Connection Kit) для направления сигналов от аудиоустройства и к нему, а затем библиотеку JJack для обработки сигналов.Вы не указали свою целевую ОС.Я успешно использовал этот подход в Linux.AFAIR на подходе был порт Windows для Джека.
чао вяз