About Audio Unit Hosting
합성된 소리, 지연 시간이 적은 I/O(입력 및 출력) 또는 특정 오디오 장치 기능의 실시간 재생이 필요한 경우가 아니면 먼저 Media Player, AV Foundation, OpenAL 또는 Audio Toolbox Framework를 학습하는 것만으로 충분하다. 해당 Framework를 사용하면 사용자를 대신하여 Audio Units을 사용하며, 멀티미디어 프로그래밍 가이드에 설명된 것 처럼 중요한 추가 기능들을 제공해준다.
Audio Units Provide Fast, Modular Audio Processing
Audio Units을 직접사용하여 얻을 수 있는 장점은 다음과 같다.
- 탁월한 응답성 : Audio Unit Callback 함수에서 실시간 우선 순위 스레드에 접근할 수 있으므로, Audio Code는 가능한 원천적인 소스에 직접 접근 사용한 것에 가깝다. 합성 악기와 실시간 동시 음성 입/출력은 Audio Unit을 직접 사용하는 경우 느낄 수 있는 가장 큰 이점이다.
- 동적 재구성 : AUGraph 불투명 유형을 기반을 작성된 Audio processing graph API를 사용하면, 오디오를 처리하는 동안 복잡한 오디오 처리 chains을 스레드 안정 방식으로 동적으로 어셈블, 재구성 및 재배치 할 수 있다. 이 기능을 제공하는 iOS의 유일한 오디오 API 이다.
- App Runtime에 사용하고자하는 Audio Unit이 정의된 정보를 동적으로 참조 한다.
- Audio Unit을 인스턴스화(객체 생성) 한다.
- 유형에 따라 필요에 따라 Audio Unit을 구성하고 앱의 의도를 수용한다.
- Audio Unit을 초기화하여 오디오를 처리할 준비를 마친다.
- 오디오 흐름을 시작한다.
- Audio Unit를 제어한다.
- 끝나면 Audio Unit을 해제한다.
Choosing a Design Pattern and Constructing Your App
디자인 패턴을 호스팅하는 Audio Unit은 유연한 청사진을 제공하여 App의 특성을 맞춤 설정한다. 패턴은 다음과 같다.
- I/O 장치를 구성하는 방법 :
I/O 장치에는 두 개의 독립적인 요소가 존재한다. 하나는 입력 하드웨어에서 오디오를 받아들이는 요소이고, 다른 하 나는 출력 하드웨어로 오디오를 보내는 요소이다. 각 디자인 패턴은 활성화해야 하는 요소를 나타낸다.
- Audio processing graph 오디오 데이터 스트림 형식을 지정해야하는 경우 :
오디오 흐름을 지원하는 형식을 올바르게 지정해야 한다.
- Audio Unit 연결 정의 및 렌더링 Callback function을 연결 시키기 :
Audio unit 연결은 특정 Audio unit에서 다른 Audio unit 장치의 입력으로 스트림 형식을 전달하는 형식적 구성이다. 렌더링 Callback을 사용하면 Audio를 graph로 보내거나 graph 내의 개별 Sample level에서 Audio를 조작할 수 있다.
어떤 Design Pattern을 선택하든 관계없이 Audio Unit 호스팅 앱을 제작하는 단계는 기본적으로 동일하다.
- Application에서 Audio session을 구성하여 App이 시스템 및 장치 하드웨어의 컨텍스트에서 올바르게 작동하는지 확인할 것.
- Audio processing graph를 작성해야 함. 이 다단계 프로세스는 Audio Unit Hosting Fundamentals에서 학습한 모든 것을 사용한다.
- Graph의 Audio audio units을 제어하기위한 사용자 인터페이스를 제공한다.
'Software > iOS & Objective-C' 카테고리의 다른 글
Audio Unit Hosting Fundamentals (0) | 2016.12.06 |
---|---|
iOS Audio Play (0) | 2016.11.23 |
Concurrency Programming Guide 요약 (0) | 2016.10.10 |
[iOS] App 내에서 언어 변경법 (0) | 2016.03.02 |
클래스 기본 문법 (0) | 2015.11.09 |