Как сэмплировать многоканальный звук на Java - PullRequest
7 голосов
/ 12 января 2009

Я понял, что это может быть относительно ниша, но, может быть, поэтому все равно стоит спросить. Я смотрю на аппаратную консоль записи с несколькими входами (например, Alesis IO 26), чтобы взять 8-канальный вход Adat lightpipe для обработки сигналов. Поскольку я еще не приобрел устройство и должен выяснить, возможно ли это (бюджетные проблемы), я хотел бы спросить, есть ли у кого-нибудь опыт использования всех этих 8 входов для данных в Java? Я видел множество примеров записи звука с использованием библиотек Javax.sound.sampled, но я не смог найти никакой информации по многоканальным каналам, которая превышает 2. Что меня интересует, так это выборка из 8 каналов для моно источника выполнить несколько простых DSP на них. Будет ли аппаратное устройство рассматриваться как один микшер? А 8 каналов будут представлены как 8 строк? Надеюсь, я правильно понял терминологию.

Буду признателен, если кто-нибудь укажет мне любую соответствующую информацию. Спасибо!

Ответы [ 4 ]

2 голосов
/ 02 февраля 2009

Предполагается, что многоканальное аудио будет возможно в Java в зависимости от версии Java, на которой вы работаете, платформы, на которой вы работаете, и типа используемой звуковой карты. Смотрите превосходный Java Audio Faq для более подробной информации. Я никогда не мог использовать это надежно на всех платформах.

Если вы действительно хотите создать надежный многоканальный звук, я бы порекомендовал использовать C API, например PortAudio , Juce или PulseAudio .

Мне очень повезло с PortAudio и Juce.

Чтобы использовать их в Java, вам необходимо создать JNI интерфейс для API C.

Это, очевидно, больше работы, чем просто использование javax.sound, но это дает вам гораздо больший контроль над используемым звуковым оборудованием. По моему опыту работы с аудиоустройствами, слишком большое удаление от аппаратного обеспечения (то есть 4 уровня абстракции вместо 2) часто лишает вас возможности создавать серьезное многоканальное аудио с высокой битовой глубиной и высокой частотой дискретизации.

1 голос
/ 04 сентября 2012

Я только что добавил оболочку Java JNI для PortAudio. План состоит в том, чтобы сохранить это вместе с источником PortAudio. PortAudio поддерживает многоканальное аудио, где N> 2.

Сегодня, 9/3/12, JPortAudio все еще находится в альфа-режиме. К тому времени, когда вы прочитаете это, оно может быть стабильным.

http://www.portaudio.com/docs/v19-doxydocs/java_binding.html

1 голос
/ 30 января 2009

Я реализовал нечто подобное с картами Terratec, каскадными для 32 входов, единственной библиотекой в ​​то время была Jsyn.

Это действительно хорошая библиотека, когда вы узнаете это.

http://www.softsynth.com/jsyn

Я не уверен, что есть что-то еще, что может помочь.

0 голосов
/ 28 января 2009

Я не могу дать вам ответ непосредственно на вопрос, работает ли API javax.sound с несколькими каналами (но в соответствии с документацией API это должно быть).

Тем не менее, я пошел другим путем для обработки многоканального звука с Java, который может работать и для вас. Я использовал Jack (Jack Audio Connection Kit) для направления сигналов от и на аудиоустройство, а затем в библиотеку JJack для обработки сигналов. Вы не упомянули свою целевую ОС. Я успешно использовал этот подход в Linux. AFAIR в пути был порт Windows для Джека.

чао, вяз

...