맥 컴퓨터는 훌륭한 미디어 컴퓨터이며, 아이폰은 지금까지도 최고의 아이팟이다. 하지만 이렇게 훌륭한 이유는 무엇인가? 어떻게 몇 가지 초기 iOS 앱이 아이폰을 가상 악기로 변모시켰음에도, 아이폰 외의 모바일 플랫폼 개발자들은 그저 MP3 플레이어의 스킨을 바꾸는 데만 만족하고 있을까? 왜 맥 컴퓨터를 그렇게 많은 디지털 미디어 전문가들이 선택하며, 맥의 어떠한 비밀이 Bias Peak, Logic, Soundtrack Pro와 같은 앱을 가능하게 하는가?
코어 오디오가 그 해답이다.
코어 오디오는 애플이 맥 OS X과 iOS의 디지털 오디오를 동작하기 위해서 제공하는 로우레벨 API다. 코어 오디오는 동시적으로 다중 채널 디지털 오디오의 많은 흐름을 처리하기 위한 API와 캡처(마이크)와 출력(스피커와 헤드폰)을 위한 오디오 하드웨어의 인터페이스를 제공한다. 코어 오디오는 마이크로폰에서 캡처된 압축되지 않은 오디오 데이터를 직접 처리하고, 효과를 넣고, 다른 오디오와 합성하고, 더 나아가 스피커로 출력하거나, 파일 시스템에 작성하거나, 네트워크 통신으로 전달할 수 있게 압축된 형태로 변환하는 앱을 작성할 수 있게 한다. 완전한 앱을 개발하는 것이 아닌 경우 코어 오디오는 맞춤형 효과를 작성하고, 오디오 유닛이라 불리는 플러그인에 묶어 둘 수 있게 한다. 오디오 유닛을 통해 효과를 코어 오디오 기반의 앱에 추가할 수 있다.
애플은 맥 OS X 10.0에서 코어 오디오를 소개했고, 결국 클래식 맥 OS의 일부였던 SoundManager를 대체했다. 코어 오디오는 C 기반의 API이기 때문에 오브젝티브C로 작성된 코코아(Cocoa) 앱과 C++로 작성된 카본(Carbon)과 함께 사용될 수 있다. 개발자들은 이러한 프레임워크를 생략하고, 일반적인 C POSIX 커맨드라인 실행 파일에서 코어 오디오를 호출할 수 있다(사실 대부분의 예제가 이런 식으로 작성됐음). 코어 오디오는 C로 작성됐고, 호출되기 때문에 매우 좋은 성능을 보인다. 이런 성능 효과는 매 초 수십만 개의 오디오 샘플을 처리해야 할 때 매우 중요하다.
코어 오디오는 오디오 스트림의 아이디어에 기반한다. 스트림은 오디오 신호를 나타내는 데이터의 연속을 의미한다. 소리는 시간에 기반하여 변하기 때문에 데이터도 시간에 따라 다르다. 코어 오디오 전반적으로 오디오와 상호작용하는 주요 수단은 이러한 스트림을 가지고 이루어진다. 즉 파일이나 입력 장치에서 스트림을 얻고, 혼합하고, 다른 형식으로 변경하고, 출력 장치로 전달한다. 이런 동작을 하면서 개발자 코드는 코어 오디오를 호출하거나, 스트림이 처리할 데이터가 있을 때마다 코어 오디오에서 콜백 호출을 받는다. 이런 동작은 다른 미디어 API에서 본 것과는 다른 형태다. HTML 5