[별치브 아이폰개발]Low Level Audio Control _ RemoteIO of Audio Unit


개요


Low Level로 오디오을 다루길 원하시나요?

그런 분들은 아래와 같은 이유에서 일 겁니다.

1. 애플에서 지원하는 일반 프레임워크(예 : AVAudioPlayer)로 다루기엔 원하는 속도를 낼 수 없다.

2. (오디오의 재생의 속도에 변경하는 등 )지원되는 프레임워크로 낼수 없는 결과값을 만들어
    내기 위해서.


자 그럼 먼저 iPhone Core Audio를 다루기 위한 세가지의 level이 있다.
아래로 갈수록 low-level이며 다루기 어렵다.


여기서 첫번째가 쉽게 사용할수 있는 AVAudioPlayer이다. 해당 라이브러리는 구글을 통해 찾으면 좀더 정보를 찾을 수 있을것이다.

자 그럼 여기서 우리가 다루려고 하는 RemoteIO라는 소스는 3번 Audio Units를 다룬다.

그럼 들어가기에 앞서,

편하게 아래글을 한번 읽고 넘어가자~ 


간단히 요약하면 이분은 C/C++과 Mac을 20년동안 개발해 왔지만, CoreAudio는 상당히 어려웠고(이전엔 지옥과 같았다고 표현했다) 이쪽 분야에 대한 문서라던지 설명을 찾기 상당히 어려웠다고 말한다.

자 그래도 겁먹지 말고 ㅜㅜ

오늘 하려고 하는 RemoteIO를 알아보자!

RemoteIO란,

 
이쪽 부분을 찾아본 사람이라면 공감할 것이다. 위의 개발자가 한 말처럼 CoreAudio에 대한 문서를 찾기는 상당히 힘들다. 이것이 아마 CoreAudio를 개발하는 어려움 중의 하나일 것이다.
(본인은 오디오 output을 통해서 그래프를 여러 형식으로 그려주는것이 목표이다.)

사실 RemoteIO를 이용하는 것은 본인이 만든것이 아니라,
검색을 통해 외국사이트에서 찾은 소스이다.
해당 소스는 오디오 Input을 받아 녹음하고 멈추는 기본적인 기능을 한다.
이부분이 어느정도 이해가 간다면 그래프를 그리는 코드를 만드는것이 수월할 것이다.

(aurio touch, speak here 등 애플 샘플코드등은 너무나 복잡했다.
한번 직접 보길 바란다. RemoteIO를 이용해는 이 소스는 aurio touch를 읽기 전에 먼저 먼저 확인해보라는 추천을 통해 소개받은 소스이다.)


Oscope iPhone App


이 소스를 통해 앱스토어에 올라온 앱도 있다.

이름은 Oscope이다. 유료버전이기 때문에, 시뮬레이터로 돌린 동영상을 한번 확인하자.
(한가지 주의해서 볼 것은 실행 기기가 [시뮬레이터] 라는것! 시뮬레이터는 아이폰과 아이패드보다 하드웨어 환경이 좋기 때문에 더 좋은 결과값(예를들어 속도)을 보여준다.)





동영상 : http://youtu.be/StYAyhBxDbI 


소스코드


http://atastypixel.com/blog/using-remoteio-audio-unit/

이는 AudioUnit을 상당히 간편히 사용할수 있게 방법을 제시한다.

소스코드는 직접 가져오진 않겠다. 해당 사이트를 가면 (영어이지만) 완벽히 설명을 해 주고 있다.

특히 댓글들을 통해 많은 정보를 얻을 수 있을 것이다.


 Apply 2 App.


본인은 간단히 시간(X 축)에 따른 출력값(Y 축)을 보여주는 코드를 간단히 만들어 보았다.

RemoteIO를 사용하는 소스에서 데시벨 그래프를 보여주는 기능만 더한것이다.

스크린샷

마치며...


처음에 본인이 해당 어플을 만들어 내기 위해 시작하는데도 상당한 어려움이 있었던것 같다.

몇주를 검색하며 시행착오를 거치며 고생해야만 했다.

특히나 우리나라 사이트들에는 전혀 이 부분을 다룬 곳이 없기에,

이 글이 조금이라도 도움이 되길 바라면서 글을 마친다.



글이 마음에 드셨거나 도움이 되셨다면
댓 글을 남겨 주세요
저에게 큰 힘이 됩니다.

손가락 추천 부탁 드려요~!!!
(로그인이 필요 없습니다)