2009-12-10 4 views
3

4 개의 USB 사운드 카드 (ASUS Xonar U1)를 사용하고 있습니다. 각자 다른 소리 (다른 언어로 된 동일한 텍스트)를 보내고 싶습니다.Java Sound API - 여러 개의 동일한 USB 사운드 카드를 구분하십시오

Info[] mixerInfo = AudioSystem.getMixerInfo(); 
int count = 0; 
for (Info i : mixerInfo) { 
    System.out.println("["+(count++)+"]" + i.getName() + " - " + i.getDescription()+" - "+i.getVendor()); 
} 

이 나에게 다음과 같이 제공합니다 : 지금, 나는 내가 관심이있는 사운드 믹서를 얻기 위해 무엇을이 같은 것입니다 지금은

[5] Device [plughw:1,0] - Direct Audio Device: USB Advanced Audio Device, USB Audio, USB Audio - ALSA (http://www.alsa-project.org) 
[6] Device_1 [plughw:2,0] - Direct Audio Device: USB Advanced Audio Device, USB Audio, USB Audio - ALSA (http://www.alsa-project.org) 
[7] Device_2 [plughw:3,0] - Direct Audio Device: USB Advanced Audio Device, USB Audio, USB Audio - ALSA (http://www.alsa-project.org) 

에 내 구성 파일에서, 사운드 카드를 Info [] 색인 ("count"변수)에 연관 짓고 있습니다.

사운드 카드가 연결된 USB 포트를 변경하면 문제가 발생합니다. 그런 다음 Info [] 배열은 완전히 새로운 순서를 가지며 어떤 사운드 카드가 언어 en_US을 재생해야하는지 더 이상 모릅니다. 예를 들어 pt_PT입니다.

또한 "plughw : 1,0"문자열은 눈에 띄는 패턴없이 변경됩니다. 사운드 카드가 하나뿐이라면 어느 포트에 연결하든 항상 "plughw : 1,0"이됩니다.

컴퓨터를 다시 시작하면 믹서 Info []도 가끔 재정렬됩니다.

jUSB도 살펴 보았지만 사운드 카드의 장치 정보는 모두 동일하며 Java Sound API 믹서로 제공되는 USB 정보를 매핑하는 방법을 알지 못합니다. 정보.

그렇다면 누구나 Java Sound API로 동일한 사운드 카드를 고유하게 식별하는 방법을 알고 있습니까?

또 다른 오디오 파일을 동일한 컴퓨터의 4 가지 USB 사운드 카드에 출력하는 응용 프로그램을 작성하는 데 사용할 수있는 언어/라이브러리에 대한 다른 제안이 있습니까?

답변

1

, 우리는이 솔루션을 사용하여 끝났다. 여기서 x, y는 그들이 연결하고 때마다 구체적으로는 할당 고정 hwplug : USB 포트 당 x, y. 따라서 우리는 특정 사운드가 전송 될 USB 포트를 항상 알고 있습니다.

1

C로 작성된 BASS 오디오 라이브러리를 살펴보십시오. JNI 라이브러리 NativeBass이 있습니다.이 라이브러리는 Java에서 기본적으로 사용하는 가교입니다. 몇 가지 크로스 플랫폼 능력을 잃어 버렸지 만, 라이브러리의 성능이 훨씬 뛰어 났고, 다중 출력에서도 잘 작동하며, 각 오디오 장치에서 더 나은 식별이 가능하다고 생각합니다.

은 (NativeBass를 설치, 당신은 또한 BASS 자체를 다운로드 및 완전히 설명하지 않은 두/lib에 디렉토리를 병합해야합니다.)

난 당신이 사용하고있는 솔루션을 고수하려고한다면, 저렴한 USB 허브를 얻고 허브에 오디오 USB를 연결하고 허브를 컴퓨터에 연결합니다. 매번 동일한 순서로 오디오를 초기화해야합니다. 적어도 JavaSound에서 일관된 순서를 지정해야합니다. 그것은 오디오 장치에 동일한 hwplug를 할당 http://alsa.opensrc.org/Udev

: 우리가 리눅스에서 작업이 필요하기 때문에

+0

나는 리눅스를 사용해야한다고 언급 했어야했다. NativeBass는 Linux에서 작동하지 않습니다. 어쨌든, 당신의 대답에 감사드립니다, 그것은 우리에게 어떤 통찰력을주었습니다. 특히 USB 허브 트릭을 좋아했지만 테스트 할 기회가 없었습니다. –

관련 문제