2013-01-05 1 views
0

그래서 내 프로그램에서 ASIO를 통해 오디오를 출력하기 위해 JAsioHost (https://github.com/mhroth/jasiohost)를 사용하기로 결정했습니다.왼쪽, 오른쪽 등 어떤 채널을 확인할 수 있습니까?

ASIO와의 상호 작용은 AsioDriverListener 인터페이스의 인스턴스를 통해 수행됩니다. ASIO 호스트는 새로운 샘플을 재생하기를 원할 때마다 void bufferSwitch(long sampleTime, long samplePosition, Set<AsioChannel> activeChannels) 메소드를 호출합니다. 모노 사운드를 출력하고 싶다면 activeChannels의 모든 채널에 같은 데이터를 씁니다. 그러나 뭔가를 더 복잡하게 만들고 정확한 채널 구성을 알고 싶다면 어떻게해야합니까? 그래서 각 채널의 인덱스를 알 수

#{#<AsioChannel Output Channel 0: HD Audio output 1, ASIOSTInt32LSB, group 0, inactive> 
    #<AsioChannel Output Channel 1: HD Audio output 2, ASIOSTInt32LSB, group 0, inactive>} 

: 간단한 시험 스텁 프로그램 (http://pastebin.com/sC870VJR)에서

activeChannels 세트 같이 인쇄된다. 질문은 - 어떤 채널이 실제로 왼쪽, 오른쪽, 중앙 등을 결정하는 것입니까? .. 또는 아무런 방법이 없으며 수동으로 자신의 위치를 ​​말할 사용자에게 맡겨야합니다.

+0

사양이 무엇입니까? –

답변

1

ASIO의 목적은 다중 채널 오디오 인터페이스에 고성능 추상화를 제공하는 것입니다.

전문가 용 오디오 응용 프로그램 - 채널 수는 종종 두 개보다 많고 어떤 채널 쌍이 스테레오 버스인지 그리고 어떤 채널인지는 설계된 도메인에서 실제로 어떻게 영향을 미치는지 사용자는 인터페이스의 입력 및 출력을 연결했습니다.

ASIO API는 이름 레이블이나 연결된 위치와 같은 채널의 라우팅 정보를 검색하는 수단을 제공하지 않습니다. 오디오 인터페이스의 제어판 소프트웨어에도 이러한 기능이 있습니다.
이것은 ASIO에서 오랜 적자입니다.

채널 그룹 (예 : 스테레오 또는 5.1 버스)의 사용은 순전히 규칙입니다. 적어도 스테레오 응용 프로그램에서는 왼쪽 채널이 일반적으로 순차적 쌍의 번호가 낮은 채널입니다.

MacOSX를 사용하는 경우 CoreAudio는 이름 채널과 오디오 라우팅 데이터를 모두 제공합니다. ASIO는 애플리케이션과 CoreAudio API 사이의 얇은 래퍼로 작동하므로이를 얻을 수 있습니다.

0

오디오를 하나의 채널 (예 : 채널 1)로 출력하고 어느 쪽이 연주되는지 들어 볼 수있는 코드를 작성할 수 있습니다 (장비가 올바르게 설정되었다고 가정). 각 채널에 대해 동일한 작업을 수행하십시오 (2 개 이상을 가정하면 하나의 채널을 테스트 할 때 두 개만 중지 할 수 있습니다). 센터 채널은 질문에서 참조하는 "모노"채널과 동일합니다 . CHEERS

+0

물론 가능합니다. 그러나 다른 시스템에서는 다를 수 있습니다. 맞습니까? –

+0

물론 다른 사람이 올바른 채널이 하드웨어의 왼쪽이라고 생각하면 채널이 "다르게"됩니다. 다른 사람이 할 일을 지키기위한 방법이 없습니다. 그래서 제가 제안한 것은 소프트웨어의 저자가 염두에두고있는 것을 "아는 것"만큼이나 훌륭합니다. 그러나 올바르게 설정되어 있고 소프트웨어 사용자가 제대로 연결되어 있다면, 사용자는 의도했던 것과 같은 경험을 가져야합니다. 건배! –