Как опробовать многоканальный звуковой ввод в Java

StackOverflow https://stackoverflow.com/questions/434803

  •  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 для Джека.

чао вяз

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top