MP3의 정의
MP3란 우리가 컴퓨터에서 사용하는 .HWP,WAV, TXT 처럼 파일 확장자의 일부분이다. MP3 란 ?MPEG(Motion Picture Experts Group : 동영상 전문가 그룹) Audio Layer-3의 줄임말로 MPEG 중에서 음성데이터를 압축하는 종류이다 정확히 말하면 'MPEG Audio Layer-3'의 줄인말이 MP3이다. MPEG는 (Motion Pictures Expert Group.) 즉 동영상, 멀티미디어 전문가 그룹으로 이 분야에 관한 전문가들이 ISO(국제 표준화 기구)와 IEC (국제 전기 표준회의)와 같은 국제 표준 기구의 산하에 모여 제정한 규격으로 비디오와 오디오 신호를 압축해 전송하고 이를 다시 복원하는 것과 같은 기술적 기준을 제정하였다. MPEG이 처음 만든 규격은 MPEG-1이고, 이는 비디오 CD를 제작할 때 사용하는 기술이고, MP3는 MPEG-1의 규격중 오디오 압축 부분을 의미한다. MPEG-1과 함께 현재 사용되는 건 MPEG-2인데 최근 기술적으로 우수한 디지털 오디오로 관심을 받고 있는 AAC(Advanced Audio Coding or MP4)는 MPEG-2에서 파생되었고, MPEG-4(최신의 화상 통신용 동영상 압축 표준)에 관한 규격이 제정중에 있다고 한다. MP3를 'MPEG Audio Layer-3'라고 했는데 이 Layer-3이라는 건 Layer-1, Layer-2 다음에 Layer-3으로 버전업이 된 것이다. 일반적으로 Layer-1은 압축율이 1:4 정도, Layer-2는 1:6 ~ 1:8 정도의 압축율을 갖고, Layer-3은 1:10 ~ 1:12의 가장 뛰어난 압축율을 갖기 때문에 MP3로 불리우고, 가장 많이 사용되는 것이다. MP3 기술을 이용하면 650MB 기준으로 공CD 한장에 최소한 150여곡(대략 8시간) 이상의 노래를 담을 수 있다. 최근에는 이런 MP3 데이터로 만들어진 CD를 재생해주는 MP3-CD 플레이어(MP3CDP)가 출시돼 MP3 매니아에게 관심을 받고 있다. 탄생배경 MP3는 MPEG Audio Layer-3의 줄임말로 오디오 신호를 효과적으로 사용하기 위하여 고안된 압축 방식을 지칭하는 말이다. 멀티미디어 시대가 도래하여 동영상 및 음향의 디지탈 데이타가 증가하면서 데이타 크기의 폭증이라는 어려운 문제점이 나타나기 시작했는데, CD 한 장을 그대로 디지탈로 저장하기 위해서는 650M byte라는 상당히 많은 저장 용량이 필요하다. 멀티미디어 개발자들은 이런 문제점들을 해결하기 위해서 데이타를 압축하여 저장하는 방법을 사용할 수 밖에 없다는 것을 알았지만, 압축을 하게 되면 화질이나 음질에 큰 손실을 가져오기 때문에 이를 최소화하기 위한 연구들이 활발하게 진행되었다. 이런 연구를 뒷받침하기 위해서 세계적으로 압축 코딩의 표준이 마련되었는데 그것이 바로 MPEG(Moving Pictures Experts Group) 이다 . 잘 알려진 대로 비디오 CD의 동영상 포맷이 MPEG-1 규격으로 제작되어 있고, 최근 출시된 DVD 역시 보다 진보된 MPEG-2 방식의 압축 기술을 사용하고 있다. MPEG은 이렇게 세계적인 영상 매체들의 표준을 이루는 중요한 규격으로 위성방송, 케이블방송 등을 위한 새로운 규격을 계속해서 만들고 있다. 이런 MPEG 규격 중에서도 오디오 데이타를 위한 규격들이 있는데 그 중 하나가 Audio Layer-3이라는 규격이다. 이 압축 방식을 사용하면 CD급의 음질을 유지하면서 데이타의 크기를 10분의 1 이상으로 축소할 수 있다. 그러나 이런 MP3 파일을 제작하거나 감상하기 위해서는 특수하게 제작된 인코더/디코더가 필요한데 이런 프로그램들은 대부분 프리웨어나 쉐어웨어 형태로 배포되기 때문에 인터넷 상에서 쉽게 구할 수 있다. 하지만 오디오 데이타를 압축하기 위한 표준은 아직 완벽하게 제정된 상태가 아니다. DVD에서는 AC-3라는 입체음 방식이 채용되었지만 가정용 오디오 시장에는 아직도 MD(Mini Disk) 방식이 일본을 중심으로 상당히 강세를 나타내고 있으며, 인터넷 쪽에서는 RA(Real Audio) 포맷이 보급되어 있는 실정이어서 PC에 어떤 방식이 표준으로 채택될 지는 더 두고봐야 알 수 있을 것이다. 참고로 MD 레코더는 개발된지 꽤 오래되었기 때문에 비교적 압축률이 낮으며 MPEG Layer-1의 수준이라고 할 수 있다. MPEG-1 이나 MPEG-2 모두 음향과 관련한 규약에 Layer 라는 구분을 두어 규약을 보다 세분화하고 있다. 좀 더 구체적으로 이야기하자면 MPEG-1, MPEG-2 Layer 1 에서는 Linear quantizer 가 특징적이며 MPEG-1, MPEG-2 Layer 2 에서는 Non-linear quantizer 와 longer frame 이, 마지막으로 MPEG-1, MPEG-2 Layer 3 (MP3) 에서는 Non-linear quantizer, longer frame, variable length 가 특징적이다. 높은 Layer 로 갈수록 데이터의 인코딩과 디코딩 기술이 좀 더 복잡해지며 더 다양한 기술(VBR 등)이 구현 가능하다. 또한 높은 Layer 용의 디코더는 하위 호환성을 갖는다. 참고로 MPEG-1 Audio Layer 2 는 MP2 라는 파일로 역시 한 시대를 풍미했었다. 디지털 오디오 MP3를 이해하려면 먼저 디지탈 오디오에 대한 기본적인 사항을 알아야 한다. MP3 역시 디지탈 오디오의 한 포맷에 해당하기 때문이다. 우리가 가장 많이 접할 수 있는 디지탈 오디오로는 오디오 CD(Compact Disk)와 PC의 윈도우 시스템에서 사용하고 있는 Wave라는 파일 포맷이 있다. 즉, 디지탈 오디오는 자연상의 아날로그 방식의 사운드를 디지탈 방식으로 변환하여 저장하는 방식이다. 0과 1의 디지탈 데이타로 변환하게 되면 음질이 손상되지 않고 저장하는 것이 가능하고 또한 PC에서 마음대로 사용할 수 있다는 장점이 있다. 우리가 게임을 하면서 실감나는 현장 효과음을 즐길 수 있게 된 것도 모두 이 디지탈 사운드 덕분이다. 소리를 마치 텍스트 파일처럼 저장하고 필요할 때 마음대로 편집하고 재생할 수 있는 이 디지탈 사운드의 기술은 대중음악가들에게도 자신의 창의력을 구체화할 수 있는 중요한 도구로 활용되고 있다. 물론 디지탈 사운드를 감상하려면 인간이 청취할 수 있는 아날로그 사운드로 변환하는 작업을 다시 수행하여야 한다. 이런 과정을 DA(Digital to Analog) 컨버팅과 AD(Analog to Digital) 컨버팅이라 한다. 즉, 아날로그 원음을 디지탈로 변환하는 과정을 AD 컨버팅이라 하고, 디지탈로 저장된 데이타를 아날로그로 변환하여 감상할 수 있도록 하는 과정을 DA 컨버팅이라 한다. 우리가 사용하는 사운드 카드나 CD 플레이어는 모두 이런 기능을 수행하는 전자회로가 내장되어 있다. 디지탈 사운드에는 16bit의 44.1KHz와 같이 표현하는 변환 방식이라는 것이 있다. 이 형식은 아날로그 사운드를 디지탈로 변환할 때 얼마나 세밀한 요소로 분해하여 저장했는지를 나타내는 것이다. 즉, 8bit는 2의 8승인 256개로, 16bit는 2의 16승인 65356개로 분해하여 데이타를 저장했다는 이야기이고, 이렇게 분해하는 과정을 1초에 몇 번 반복했느냐는 의미로 KHz라는 단위를 사용한다. 44.1KHz라는 의미는 1초에 44100번 분해 작업을 수행했다는 의미이다. 분해도를 더욱 높이고 초당 분해 작업을 더 많이 할수록 원음에 가까운 사운드를 디지탈로 저장할 수 있다. 하지만 분해도를 높이면 엄청난 데이타의 크기 때문에 실용성이 떨어지므로, 실험 결과 인간의 귀로 원음과의 차이를 느낄 수 없다는 16bit에 44.1KHz 형식의 포맷을 많이 사용한다. 하지만 이 포맷도 1분당 약 10M byte의 대용량을 차지하기 때문에 통신을 이용해서 전송하기가 힘들다. 그래서 MP3 방식의 압축을 이용하여 CD급의 음질을 유지하면서 1분당 1M byte로 압축하는 방법을 사용한 것이 주목받게 되었다. 앞서 말 한 대로 MPEG-2 에도 Audio Layer 표준들이 존재한다. 이들은 MPEG-2 BC(Backward Compatible)의 범주에 속하는 것으로 아직까지 대중적으로 널리 퍼지지 않았기 때문에 딱히 MP3 와 같은 약칭은 가지고 있지 않다. 다만 MPEG-2 의 오디오와 관련한 또 하나의 규약인 MPEG-2 AAC(Advanced Audio Coding)는 일명 MP4 라고도 불리는 데, 엄밀히 말해 이것은 MP3에서 MP4 로 이어지는 흥행을 노리고자 일부에서 억지로 가져다 붙인 이름이기 때문에 정식 명칭이라고는 할 수 없다. MPEG-2 AAC 는 MPEG-1 의 오디오 규약에 기반을 둔 MPEG-2 BC 와 비교했을 때 절반의 비트레이트 수준으로 보다 나은 음질을 들려 줄만큼 높은 스펙을 가진 규약이다. 멀티 채널 출력을 지원하는 MPEG-2 AAC 는 돌비(Dolby)의 비슷한 규약인 AC-3 에게 MPEG-2 BC 규약이 HDTV 오디오 표준화 전쟁에서 밀리게 되자 굴지의 업체들이 참여해 급히 제정한 것이라는 배경을 가지고 있다. 압축원리 MP3의 압축 방식은 우리가 알고 있는 Zip이나 Arj 등과 같은 일반적인 압축 방법과는 매우 다른 복잡한 알고리즘을 갖고 있다. 이런 압축 방법들은 주로 비파괴적인 압축 방식을 사용한다. 비파괴적인 압축 방식이란 데이타를 압축 복원하는 과정에서 데이타가 변경되거나 손실되는 것이 전혀 없는 방식이다. 예를 들어 '한글'로 작업한 문서를 Zip으로 압축해서 인터넷으로 송신했다고 하자. 만약 Zip을 압축하거나 복원하는 과정에서 데이타가 변경되거나 손실이 생긴다면 문서를 받는 사람이 그 내용을 정확하게 알아볼 수 없다. 이런 비파괴적인 압축의 알고리즘은 상당히 단순하다. 주로 연속되는 같은 데이타를 하나와 반복 횟수로 표시하는 방법을 사용한다. '12222223334'라는 데이타가 있다고 할 때, 이 데이타를 압축하면 '12-63-34'라는 식으로 압축할 수 있다. 원래의 데이타가 11자인데 비해 압축한 후에는 8자로 줄어든다. 압축한 데이타의 표현식을 보면 '2-6'이라는 것은 2가 6번 반복되었다는 것을 의미한다. '3-3'도 역시 3이 3번 반복되었다는 것을 의미한다. 따라서 같은 데이타의 반복이 많은 파일일수록 압축률은 높아진다. 그러면 '한글' 파일과 윈도우용 사운드 파일인 Wave 파일을 WinZip이라는 압축 프로그램을 사용해 압축해 보자. 결과는 '한글'의 경우(물론 정도차는 있겠지만) 3분의 1 이상 줄어든 반면 디지탈 사운드인 Wave 파일은 약간밖에는 줄어들지 않는다. 이유는 사운드와 같은 멀티미디어 데이타들은 일반 문서나 실행 파일과는 달리 연속되는 데이타가 적기 때문에 압축률이 떨어지기 때문이다. 따라서 사운드 파일은 일반적인 비파괴적인 방법으로 압축하지 않고 다른 복잡한 알고리즘을 가진 파괴적인 압축 방법을 사용하게 되는 것이다. 파괴적인 압축 방식이란 불필요한 데이타를 삭제하는 방식으로 압축을 하는 것이고 한번 압축한 후에는 원형으로 복원이 어려운 반면 압축률은 상당히 높아진다. 따라서 일반 문서나 실행 파일과 같이 정확한 복원을 목적으로 하는 경우에는 사용할 수 없는 반면 사운드나 그림 데이타와 같이 약간의 음질 손상이나 화질 저하에도 무리가 없는 경우에 사용한다. JPEG이나 MPEG 등이 파괴적인 압축 방식에 속한다. 그렇다면 이제 MP3의 경우에는 어떤 방식으로 압축이 수행되는지를 알아보자. 여러분이 지하철 플랫폼에서 친구와 이야기를 하고 있는 상황을 생각해 보자. 전동차가 도착하기 전에는 친구와 작은 목소리로 대화를 나눌 수 있는데 전동차가 들어오기 시작하면 그 소음으로 인하여 친구의 목소리는 잘 들리지 않게 된다. 또한 전동차가 지나가도 잠시 동안은 그 소리의 여운으로 귀가 멍해진다. 음악에서도 이와 마찬가지로 큰 소리가 난 후에는 작은 소리는 인간의 귀로 들을 수 없는 경우가 있다. 이런 현상은 인간의 두뇌가 소리를 분석해 내는 과정에서 입력된 소리의 부적절한 부분을 제거하는 작용을 하기 때문이다. MP3는 디지탈 사운드를 미리 분석해서 인간의 두뇌가 걸러낼 사운드를 미리 잘라내는 방식으로 압축을 수행한다. 그렇기 때문에 CD급의 음질을 유지하면서도 상당한 수준의 압축률을 올릴 수 있는 것이다. 사실 오디오 전문가가 아닌 일반인들의 능력으로는 압축 전의 디지탈 사운드와 MP3를 구별해내기 힘든 이유가 여기에 있는 것이다. 이런 압축 방식을 '인지 압축 방식(Perceptual Coding)'이라고 한다. 아날로그 음원을 MP3로 압축하는 과정을 간략히 나타내면 다음과 같다. 아날로그 음원 -> AD 컨버팅 -> 디지탈 PCM 파형 -> 20Hz에서 20KHz 사이의 주파수를 32단계로 분해 -> 분해된 한 단계를 다시 18단계로 세분 (총 576부분) -> 각 세부된 부분에서 가장 강한 음의 성분에 대한 정보만을 선택 -> 나머지 음에 대한 음의 정보 삭제 -> 세분된 576부분의 강음 정보만을 모아 재합성 -> MP3 파일 MPEG 종류 MPEG은 MPEG-1, MPEG-2가 현재 사용중이고 MPEG-4에 관한 규격이 재정중인데 오디오의 경우에는 주로 MPEG-1을 사용하기 때문에 일반적으로 MPEG 규격이라고 통칭된다. MPEG 규격의 오디오 부분은 Layer-1, Layer-2 및 Layer-3라는 세부 규격으로 나누어진다. Layer-1 : 압축률 1:4, 스테레오 신호의 경우 384Kbps에 해당 Layer-2 : 압축률 1:6~1:8, 스테레오 신호의 경우 256~192Kbps에 해당 Layer-3 : 암축률 1:10~1:12, 스테레오 신호의 경우 128~112Kbps에 해당 Layer-1은 필립스사에서 DDC(Digital Compact Cassette)를 위해 개발된 PASC 압축 알고리즘을 위해 사용되었으며, Layer-2 및 Layer-3으로 갈수록 보다 발전되어 더 큰 압축으로도 우수한 음질을 낼 수 있게 되었다. 현재 인기를 얻고 있는 MPEG-1 Audio Layer-3은 독일의 프라운호퍼 연구소에서 디지탈 오디오 방송을 위해 개발한 방식이다. 음을 주파수 대역별로 나누어 이를 압축하는 방법을 사용하는데 인간의 청각에 의한 음의 인지 패턴을 교묘히 이용하는 방식으로 압축한다. 음의 세기가 큰 음과 작은 음이 동시에 들릴 때는 작은 음은 큰 음의 소리에 묻혀서 잘 들리지 않게 된다. 이러한 청각적인 인식 효과를 마스킹 효과(Masking Effect)라고 하는데, MPEG-1 Audio Layer-3 방식에서는 우선 가청 주파수를 32부분으로 나누고 각 부분을 다시 18부분으로 세분해 총 576개의 세부 부분으로 나눈 다음 각 부분마다 마스킹 효과를 적용시켜 각 576부분마다 음이 주도적으로 큰 성분만을 남기고 나머지 부분은 제거한 다음 각 부분을 다시 합성하는 방법으로 압축 작업을 진행한다. 기본적으로 DDC및 MD(Mini DIsk)에서 사용하는 압축 방법과 개념은 비슷하나 이를 더욱 많이 개량한 것이라 할 수 있다. 이 방식은 다음과 같이 여러 가지 모드가 있어 원하는 형태로 압축해 사용할 수 있다. 오디오 파일을 압축해 인터넷과 같은 통신 라인을 통해 전송하고자 하는 것이 MPEG 규격 개발 목적의 하나이다. IDSN 전화선을 통해서는 128Kbps의 속도를 얻을 수 있으므로 CD 수준 음질의 음악을 실시간으로 전송받을 수 있으며, 56Kbps급의 모뎀을 사용하는 경우에는 FM 라디오 수준의 음질로, 33.6Kbps급의 모뎀을 사용하는 경우에는 AM 라디오 수준의 음질로 실시간에 전송받을 수 있다. 일반적으로 많이 사용하는 모드는 CD 수준의 음을 들려주는 112~128Kbps급의 모드이다. MPEG-1 Audio Layer-3 규격을 마이크로소프트사에서는 Wave 파일의 Layer-3 압축 포맷으로 새로이 지원하고 있다. 이는 마이크로소프트사에서 제작한 NetShow 2.0이라는 인터넷 오디오/비디오 스트리밍 소프트웨어에서 이 포맷을 포함시켰기 때문이다. 이 포맷과 MP3 확장자를 가지는 포맷은 동일하기 때문에 확장자 이름이 다를지라도 상호 호환된다. 한편 최근 들어 MP4라는 규격도 소개되었는데 MP4는 MP3와 성격이 비슷하면서도 뿌리가 다르다. MP4의 공식 명칭은 MPEG-2 AAC(Advanced Audio Coding)로 MPEG-2 NBC(Non Backwards Compatibility)라고도 부른다. 공식적인 이름은 아니지만, 친근감이 있고 MP3의 상위 버전처럼 느껴지도록 MP4라는 이름으로도 불려지고 있다. MPEG-2 AAC는 MP3처럼 압축된 오디오 데이타이지만 탄생 배경이 다르다. 이름에서 알 수 있듯이 MPEG-1이 아닌 MPEG-2에서 파생되었다. DVD 비디오용으로도 사용되는 MPEG-2는 MPEG-1에 비해 4배의 화질과 다중 언어 지원 등으로 성능이 우수하다. AT&T, 톰슨, 프라우호퍼 등의 업체가 공동으로 만든 이 규격은 MP3에 비해 음질이 우수하고 압축률이 높다. MP3의 데이타 구조가 고정적인 반면 AAC의 데이타는 유동적인 구조를 갖는다. MP3는 곡 전체의 정보를 담는 헤더 뒤에 데이타가 프레임이라는 단위로 저장되는데 이 프레임의 크기가 고정되어 있어 압축률이 높은 부분에서도 쓸모없는 용량을 차지한다. 이에 반해 AAC의 프레임 구조는 가변 구조로 압축률에 따라 크기가 변하므로 전체 파일의 용량이 훨씬 줄어든다. 실제로 MP3 파일과 비교하면 최대 30%까지 용량을 줄일 수 있다. AAC의 또 하나의 장점은 음질에 있다. MP3에 비해 AAC는 TNS와 프레딕션이라는 두 가지 기법을 통해 음질을 향상한다. TNS(Temporal Noise Shaping)는 양자화 보정 기술로 아날로그의 연속적인 음악 데이타를 0과 1의 디지탈 데이타로 만들 때 생기는 오차를 지능적으로 줄여 잡음을 감소시키고 원음에 가깝게 만든다. 프레딕션(Prediction)이란 TNS로 보정된 수치를 기억하는 것으로 앞에서 보정된 정보를 기억하여 다음에 같은 데이타가 나타날 때 기억된 데이타를 사용한다. 만일 양자화 단계에서 같은 음의 보정 수치가 다르면 다른 소리로 들리게 되므로 이를 같게 만드는 기술이다. 이같이 MPEG-2 AAC는 압축률과 음질 면에서 MP3 보다 우위에 있지만 AAC는 아직 해결해야 할 문제가 적지 않다. 그 중 한 가지가 인코딩 시간이다. 원음을 AAC 포맷으로 만드는 인코딩 시간이 MP3에 비해 최대 10배 이상 느리다. 물론 인코딩 소프트웨어의 성능 향상으로 이 문제는 차츰 개선되겠지만 인코딩 시간이 느려 AAC의 데이타를 만드는데 많은 시간이 소요된다는 것으 치명적인 약점이다 발전방향 MP3는 MPEG의 발전과 함께 시작되었다. 1987년 독일의 IIS(Institut fur Integrierte Schaltungen)라는 곳에서 유레카 UE147이라는 프로젝트로 심리음성학에 의거한 인지 압축 기술이 연구되기 시작하였고 결국 매우 강력한 기능의 표준화된 ISO MPEG Layer-3을 개발했다. 프라운호퍼 IIS에서는 이런 MP3의 보급을 위해 Winplay3라는 재생프로그램을 보급하여 MP3의 보급에 획기적인 전기를 마련하였다. 또한 독일의 라디오 채널인 FFN은 전화선을 이용한 ISDN 장비를 이용해 매일 20분씩 8개의 프로그램을 중앙 방송 스튜디오에 송출했는데 이로 인해 1년에 30만 달러의 운반비를 절약할 수 있었다고 한다. 한편 프랑스 알베르빌에서 열린 동계 올림픽에서 독일의 라디오 방송은 MP3를 이용한 깨끗한 음질로 스포츠 생중계를 실시하는 등 MP3가 디지탈 오디오 방송의 강력한 도구임을 증명하였다. MP3를 이용한 전세계적인 위성 오디오 방송이 준비중에 있으며 간단한 라디오만으로 CD급의 고풉질 오디오를 세계 어디서나 감상할 수 있는 시대가 왔다. 또한 인터넷을 통한 주문형 오디오(Audio On Demand) 서비스가 활발하게 이루어지고 있으며, 워크맨으로 음악을 감상하듯이 거리를 걸으면서 MP3를 감상할 수 있는 휴대용 MP3 재생기도 인기리에 보급되고 있다. |
MP3 플레이어 국내외
시장동향
![]() 1. 개요
디지털화된 음향을 재생하는
기기로 CD(Compact Disk) 플레이어, DVD(Digital
Versatile Disk) 오디오 플레이어, MD(Mini Disk) 플레이어, MP3 플레이어 등이 있는데, MP3 플레이어가 현재 가장
진보된 기술을 채택한 기기이며, 많은 인기를 끌고 있어 시장이 크게 성장하고 있다.
일반적으로 MP3 플레이어라 알려진 디지털 압축 오디오 플레이어는 압축된 디지털 오디오 파일들을
재생하는데 이용되는 기기로 휴대용, 가정용 차량용 등으로 구분되기도 한다. MP3(MPEG Audio Layer-3), WMA(Windows
Media Audio) 등과 같은 압축 오디오 파일은 주로 인터넷에서 다운로드 받거나, 오디오 CD로부터 PC를 통하여
인코딩된다.
이처럼 인터넷 오디오
플레이어라 불리기도 하는 MP3 플레이어는 Diamond Multimedia 의
Rio PMP300으로 1998년 11월에 처음으로 소개되었고, 국내의 경우는 이보다 약 1년 정도 앞선 1997년 엠피맨닷컴(구 새한정보
시스템)이 MPman을 출시한 바 있다.
과거 수년간 디지털 오디오
압축 기술의 사용과 인터넷을 통한 디지털 음악의 공유는 놀랄 만큼 증가하였고, 이로
인해 많은 사람들은 MP3나 Napster 등에 친근해질 수 있었으며, 디지털 저작권 등과 같은 여러 가지 이슈를 야기시키기도 하였다. 또한
디지털 음악의 인기는 MP3 플레이어로 잘 알려진 휴대용 디지털 음향재생기 시장의 성장을 촉진하였다.
(그림1)은 MP3 플레이어의 내부와 재생과정을 보여주고 있다. 그림에서 보는 것처럼 MP3 플레이어의 내부는
LCD 패널, 마이크로 프로세서, DSP 칩, I/O 컨트롤러 칩, 버튼 등으로 구성되어 있고, 음원인 MP3 포맷 파일은 마이크로 프로세서의
명령을 통해 메모리로부터 DSP를 거쳐 앰프에서 증폭되어 스피커 또는 헤드폰으로 재생된다. ![]() MP3 플레이어에는 압축 기술, 저장 기술, 보안 기술, 컨텐츠 배포기술 등이 적용되는데, 이중 저장 용량은
MP3 플레이어의 가치 측정에 가장 중요한 요인이라 할 수 있다.
현재, 휴대용 디지털 음향재생기 부분에서 지배적인 저장 매체로 Diamond Rio에 적용된 고체
플래시 메모리(solid-state flash memory) 등과 자기 매체 또는 광 매체 등도 사용되고 있고, 대부분의 MP3플레이어는
STMicroelectronics의 MP3 디코더(STA013)와 분리된 마이크로프로세서를 사용하고 있다.
DSP의 경우, 약 60mW 전력으로 약 80 MIPS를 조절할 수 있는 TI(Texas Instrument)의
16비트 DSP(TSM320C5409)와 Motorola의 24비트 DSP가 이미 시장에 출시되었고, 두 회사의 DSP 솔루션은 소프트웨어를
통한 MP3 디코딩을 가능하게 하기 위한 것으로, 아직까지는 애플리케이션을 구동하기 위한 마이크로프로세서가 필요하다.
앞으로 반도체 솔루션은
마이크로 프로세서, DSP, 오디오 DAC를 통합한 단일 칩 솔루션이 등장할 것으로
전망된다.
한편, MP3와 같은 포맷을 코덱(codec)이라 하는데, 코덱은 다양한 데이터를 부호화 및
복호화하는 것으로, <표 1>에 주요 코덱의 배경 및 장단점을 정리해 보았다. ![]() 현재 디지털 오디오 파일의
재생에는 수많은 압축 포맷이 사용되고 있으며, MP3가 디지털 음악과 같은 의미로
해석되고 있다. 실제로 많은 사람들이 채택하고 있는 코덱과 상관없이 휴대용 디지털 플레이어를 MP3 플레이어로 지칭하고 있는
실정이다.
대부분의 압축 포맷들은
서로 호환되지 않기 때문에, 기존의 수 많은 코덱들로 인한 사용자의 혼란이 가중되고
있다.
2. MP3 플레이어 시장환경 및 주요동향
가. MP3 플레이어 시장환경
MP3 플레이어는 시장에 출시된 이후 꾸준한 인기를 누리고 있는 제품이며, 새로운 기술개발 및 다양한 소비자의
요구에 따라 변화되고 있다. 저장용량이 증가된 제품, 디스플레이가 개선된 제품, 무선 네트워크를 통한 다른 기기와 연결이 가능한 차량용 MP3
플레이어 등 새로운 제품이 등장하고 있으며, 아직까지 MP3 파일의 저작권 등에 관련된 문제점을 가지고 있지만, 시장은 지속적으로 성장하고
있다.
(그림 2)는 새로운 기술의 소비자 제품이 등장함에 따라 시장에서 성숙되어 가는 과정에 대한 주기를 보여준다.
MP3 플레이어의 경우 그림에서 보는 바와 같이 기대에 따른 환상이 사라지는 단계를 거쳐 점차 기술/시장 안정화 단계로 접어들며 안정된 성장을
보여주고 있음을 알 수 있다. 또한 애플의 iTunes 서비스와 같은 새로운 온라인 서비스의 등장은 MP3 플레이어의 시장 확산을 더욱 부추길
것이다. ![]() 나. MP3 플레이어 주요 시장동향
세계 시장에서 큰 성장을
보이고 있는 아이리버는 최근 HDD를 내장한 10GB의 iHP-100과 15GB의
iHP115을 내놓으며 HDD방식 MP3플레이어의 인기를 주도하고 있다. 이 제품의 경우, 10GB이상의 HDD를 내장하고 있어 기존 플래시
메모리 방식의 MP3 플레이어와 비교하여 수천개의 곡을 저장할 수 있고, USB 2.0 방식으로 별도의 조작 없이 PC가 외장형 저장장치로
인식함에 따라 휴대용 저장장치로도 사용할 수 있는 특징을 가지고 있다.
삼성전자도 10GB HDD를 내장한 MP3플레이어 옙(YP-900)을 내놓고 아이리버와 경쟁을 하고
있으며, 이 제품은 CD 카세트테이프 라디오에서 나오는 음악을 MP3파일로 변환하는 기능과 FM 수신기 및 녹음기능을 포함하고
있다.
국내업체 이외에 애플
코리아도 대용량 MP3플레이어 제품 '아이팟(iPod)'의 용량을 40GB까지
늘리고 가격을 낮춘 신제품을 내놓는 등 HDD를 탑재한 MP3 플레이어의 경쟁은 앞으로 당분간 지속될
전망이다.
아이리버와 삼성전자의
제품처럼 MP3플레이어가 대용량화 하는 것은 단순히 많은 곡을 수용하기 위해서만은
아니다. 저장용량이 커지면 영화나 뮤직비디오처럼 용량이 큰 파일을 저장하고 재생할 수 있으며, 여기에 디스플레이만 컬러로 바꾸면 훌륭한 휴대용
멀티미디어 플레이어로의 변모가 가능하게 되는 것이다.
아이리버와 삼성전자는 올
초 미국 마이크로소프트(MS)사와 함께 휴대용 멀티미디어 플레이어의
기술표준인 ‘미디어투고’를 공동 개발하기로 했으며
두 회사는 12월경 동영상 재생이 가능한 MP3플레이어를 내 놓을
계획이다.
또한 아이리버는 HDD를 탑재한 MP3 플레이어와 더불어 대용량 메모리를 탑재한 MP3 플레이어의 개발에도
중점을 두고 있는데, 1GB 용량 플래시메모리를 내장한 MP3플레이어(모델명 iFP-500)를 세계 최초로 개발해 국내에서 출시할
예정이다. ![]() 3. MP3 플레이어 시장현황 및 전망
가. 세계 시장 현황 및 전망
지난 2002년 전세계 압축 오디오 플레이어는 총 5,600만 대의 출하량을 기록하였다. 이 중
휴대용이 약 1,200만 대로 전체 출하량의 21%를 차지하였고, 가정용과 차량용이 각각 400만 대, 500만 대의 출하량을 달성하였다. 각
부문은 2007년까지 30%를 넘어선 CAGR을 기록하며 지속적인 성장을 보여줄 것으로 전망된다.
2002년 전세계 압축 오디오 플레이어 시장은 120억 달러에 달하는 매출액을 기록하였다. 이 중 휴대용 압축
오디오 플레이어 시장은 약 22억 달러의 매출액을 기록하여 전체 시장에서 18%를 차지하였고, 가정용 압축 오디오 플레이어 시장은 11억 달러를
넘어선 매출액으로 약 10%를 차지하였다. 차량용 시장은 약 20억 달러의 매출액을 기록하여 전체 시장에서 16%의 비중을 차지하고 있으며,
기타를 제외한 시장에서 가장 큰 성장률을 보이는 시장이다. ![]() 전세계 압축 오디오플레이어
시장은 30%의 높은 CAGR로 오는 2007년 440억 달러에 이를 것으로
전망된다. 차량용 시장은 31%의 가장 높은 CAGR로 오는 2007년 시장규모가 74억 달러를 넘어설
전망이다. ![]() 지난 2002년 미국 압축 오디오플레이어 시장은 2,600만 대의 출하량과 약 60억 달러의
매출액을 기록하였다. 세계 시장에서와 마찬가지로 출하량은 휴대용이 약 560만 대로 전체 출하량의 21%를 차지하여 가장 큰 비중을 차지하였고,
차량용 시장이 12억 달러를 넘어선 매출액으로 가장 큰 비중을 차지(미국 전체 압축오디오 플레이어 매출액의
20%)하였다. ![]() 미국의 압축 오디오 시장은
각각 35%, 30%의 높은 CAGR로 오는 2007년 1억 2,000만 대의
출하량과 220억 달러의 매출액을 기록할 전망이다. 세계 시장의 경우, 차량용 압축오디오 플레이어가 가장 큰 성장률을 보여줄 것으로 전망되지만,
미국 시장의 경우, 가정용 압축 오디오 플레이어가 출하량은 47%, 매출액은 40%의 높은 CAGR로 2007년 약 1,000만 대의 출하량과
약 19억 달러의 매출액을 기록할 것으로 전망된다. ![]() 나. 국내 시장 현황 및 전망
국내 디지털 음향재생기
시장은 주로 CD플레이어를 중심으로 성장해 왔으나, 인터넷과 P2P 방식의 확산으로
최근 들어 MP3 플레이어의 비중이 점점 증가하고 있는 추세이다. 이러한 국내 MP3 플레이어 시장은 주요 대형 가전업체보다는 중소 규모의 업체
중심의 시장이라 할 수 있는데, 이들 중소 업체가 전세계 시장에서 큰 인기를 얻고 있다.
지난 2002년 국내 MP3 플레이어 시장은 업체간 특허 분쟁과 소리바다의 폐쇄로 인하여 위축될
것으로 보였지만, 특허 분쟁의 종결과 소리바다를 대체하는 새로운 P2P의 등장으로 줄어든 성장률이 다시 회복세로 돌아섰으며, 특허권 분쟁의
종결로 각 업체의 수출이 증대될 것으로 기대된다.
최근 들어, MP3 플레이어의 최대 시장이라 할 수 있는 미국 및 유럽 지역의 업체들이 국내 MP3
플레이어 업체들을 상대로 특허권 침해를 주장하고 있다. MP3 플레이어가 전세계 디지털 가전업계의 한 축으로 자리잡을 만큼 성장하고 그 중 국내
제품이 세계일류 상품으로 인정 받고 있는 상황을 고려해 볼 때 국제적인 특허권 분쟁은 자칫 국내 업체들에 큰 피해를 줄 가능성을 가지고 있으며,
해외시장 개척에도 차질이 발생할 수 있다.
2002년 CD 플레이어, MP3 플레이어, MD 플레이어 등을 포함한 국내 디지털 음향 재생기 시장은 8억
달러를 넘어선 것으로 추정되며, 이 중 CD 플레이어가 5억 7,000만 달러를 넘어서 시장의 70%를 차지한 것으로
나타났다.
인터넷 오디오의
경우, 2002년 6,500만 달러의 매출액으로 현재 시장에서 큰 점유율을 보이고
있지는 않지만, 디지털 오디오 부문에서 가장 큰 성장률로 2007년 매출액이 1억 2,500만 달러에 이를 것으로
기대된다. ![]() 다. 수출입 동향
2003년 국내 MP3 플레이어의 수출 추이를 살펴보면, 지난 1월 470만 달러의 수출액을 기록한 이후 점점
증가하여 8월 약 1,200만 달러의 수출액을 기록하였다. 1월부터 8월까지 누적 수출액은 약 6,200만 달러에 달하여 전체 디지털 음향
재생기 수출액의 28%를 차지하였다. 이처럼 국내 MP3 플레이어의 수출규모가 증가하고 있는데, 세계 시장에서 국내 제품이 많은 인기를 끌고
있으며, 다양한 소비자의 욕구에 따라 다양한 기능을 가진 제품과 대용량 메모리 및 HDD 탑재 제품들의 출시에 기인한 것으로 볼 수
있다.
MP3 플레이어 수입액의 경우, 5월까지 증가세를 보이다가 6월 큰 폭으로 하락하였다. 지난 1월부터 8월까지 총
수입액은 3,900만 달러에 달하였다. ![]() 지난 1월 이후 3월까지 무역수지는 감소세를 보였으나 4월 큰 폭으로 증가하였고, 7월에 수입이
크게 늘어 큰 폭으로 하락하는 등 안정되지 못한 추이를 보이고 있으나 지속적으로 무역수지 흑자를 보이고 있다. 8월까지 누적 무역수지는
2,300만 달러를 기록하였다.
2003년 1월부터 8월까지 누적 기준 MP3 플레이어 수출액 상위국가 현황을 보면, 홍콩이 1,800만 달러로
36.2%를 차지하였고, 뒤를 이어 미국이 1,300만 달러(27.4%), 일본 520만 달러(10.7%), 독일 480만 달러(9.8%),
네델란드 410만 달러(8.4%) 등의 순이다. 기타 국가에는 핀란드. 스페인 이탈리아 등이 포함되어 있다. 이들 상위 10개 국가는 총
4,900만 달러의 수출액으로 전체 MP3 수출액의 약 79%를 차지하고 있는 것으로 나타났고, 유럽지역의 많은 국가들에 수출을 하고 있음을 알
수 있다. ![]() 4. 결론 및 시사점
2003년 1월부터 8월까지 디지털 음향재생기의 총 수출액은 2억 2,000만 달러이고 이 중 MP3
플레이어(MP3 CD 플레이어 포함)는 약 6,500만 달러로 30%를 차지하고 있으며, 또한 MP3 플레이어의 총 수입액은 약 4,000만
달러에 달하여 디지털 음향재생기 전체 수입의 66%를 차지한 것으로 집계되었다. 그리고 동기간 디지털 음향재생기 무역 수지 총액은 4억
9,000만 달러의 흑자를 기록하고 있으며, MP3 플레이어는 2,500만 달러의 흑자로 전체 무역수지 흑자의 16%를 차지하였다. 이처럼
MP3 플레이어는 수출과 수입에서 많은 비중을 차지하고 있는 제품으로 앞으로 많은 성장이 기대되며, 세계 시장에서의 지속적인 성장이 기대되고
있다.
현재, MP3 플레이어의 수출은 주로 중소업체에 의존하고 있는 실정이지만, 이들 중소업체들이 세계
시장에서 갖는 점유율과 기술력은 높게 평가되고 있다. 새로운 기술의 개발과 기능의 개선으로 꾸준히 전세계 시장에서 점유율을 높이고
있다.
인터넷을 통한 음악의
인기는 앞으로 지속될 전망이고, 새로운 형태의 인터넷 장비들과 기술의 등장으로
인하여 더욱 다양해진 기기들이 출현하고 있다. 지속적인 기술 발전으로 한가지 매체만을 통해 재생이 가능한 플레이어는 사라질 것이며, 현재 새로운
PDA와 이동통신단말들은 압축 오디오 재생기능을 포함하고 있으며, 앞으로 점점 더 많은 제품이 오디오 재생기능을 탑재할
것이다.
여러 가지 매체를 동시에
사용할 수 있는 플레이어가 등장할 것이고, 기록이 가능한 CD에 다양한 소스의
음원을 기록하여 재생할 수 있는 플레이어 시장의 확산이 예상된다.
인터넷 오디오 기술과
PDA 기술을 포함한 통합 반도체 솔루션 시장은 커다란 성장 가능성을 가진 이
시장을 통하여 더욱 성장할 것으로 전망된다.
MP3 플레이어를 포함한 국내 디지털 음향재생기 시장의 경우, 시장의 대부분을 CD 플레이어가 차지하고 있는
실정이지만, MP3 플레이어가 점차 시장을 잠식하여 디지털 음향재생기 시장의 주류 제품이 될 것으로 예측된다.
저렴한 가격의 메모리
구매를 통한 기기의 제조 비용을 절감하고, 더 나은 품질의 제품을 생산할 수 있는
환경이 조성되고, 더불어 세계에서 인정받는 기술력에 대한 많은 투자가 이루어져, 국내 MP3 플레이어가 아시아/태평양 시장뿐만 아니라 전세계
시장에서 경쟁우위를 지속시킬 수 있는 발판을 구축해야 할 것이다.
<참 고 문 헌>
[1] 한국전자통신연구원, “디지털 음향재생기
기술/시장 보고서,” 2001. 12.
[2] 주간기술동향, “전세계 디지털 음향재생기
기술 및 시장 동향,” 2002. 04.
[3] 1H03 Worldwide Electronic Equipment Production and Semiconductor Consumption Forecast, 2001-2007,
Gartner, 2003.05.
[4] Asia/Pacific Consumer Electronics and Semiconductor Market
Forecast, Gartner, 2003.03.
[5] Hype Cycle for Consumer Technologies, 2003, Gartner,
2003.06
[6] MP3 Players Move into the Mainstream: Forecast and Analysis
of the Worldwide Compressed Audio Player Market, 2001–2006, IDC, 2002.04.
[7] Worldwide and U. S. Compressed Audio Player Forecast and Analysis, 2 002.2007: MP3
Every where, IDC, 2003.05.
[8] 전자신문: www.etnews.co.kr
|
Sound Programming [ Audio-1 ] [Audio-2] [ OSS ] [Play Programing,Recording Programing] --------------------------------------------------------------------------------
1.OSS Open Sound System(OSS)은 UNIX, LINUX 등 여러 운영체제의 사운드 카드 드라이버이다.
OSS는 저수준의 API를 제공하며 이를 이용하여 OSS devices 그리고 mixer,audio,MIDI,raw musix,Virtual Mixer,SoftOSS device를 프로그래밍 할 수 있다. 아울러 이문서는 http://www.opensound.com 의 "Open Sound System Programmer's Guide ver 1.11"중 에서 playback 과 recording을 위한 Audio 부분만을 골라 편집하여 번역한 것이다 2.Device Files Supported by OSS
*OSS API는 soundcard.h 에 선언되어 있다
*/dev/mixer */dev/sndstat */dev/dsp 그리고 /dev/audio */dev/sequencer */dev/music(/dev/sequencer) */dev/midi */dev/dmfm */dev/dmmidi 2-1. /dev/dsp and /dev/audio /dev/dsp 그리고 /dev/audio 는 음성을 기계화(digitized)시키는 주된 장치화일이다. 어떤 음성 데이터도 사운드 카드의 DAC/PCM/DSP 와 /dsv/dsp 그리고 /dev/audio 에 읽거나 써서 재생 또는 녹음을 한다 . dev/dsp 와 /dev/audio 는 매우 유사하나 dsv/audio는 loigarithmic mu-law encoding을 사용하며 dsv/dsp는 8-bit unsigned linear encoding을 사용한다. 이 화일들은 ioctl 프로 시저를 이용하여 제어할수 있다 (-dev/audio는 SunOS에서 사용하기에 적합하다.) Audio programing
1.introduction
*기본적인 programming 방법
1. 장치들를 열고 8kHz mono mode를 작동 시킨다
2. encoding 은 ioctl 프로시저를 호출 함으로 서 바꾸는 것이 가능 해진다 ,후에 모든 장치
화일들 은 유사하게 행동한다. 그러나 나중에 정의된 ioctl 프로시저를 호출 하는것에 의하여 장치들의 많은 파라 미터를 바꾸는 것이 가능하다. 모든 codec 장치들은 기록, 재생 능력을 가지고 있으나 전혀 기록( 레코딩),재생 기능을 가지고 있지 않은 장치들도 있다. 그러나 대부분의 audio 장치는 이런 기능을 가지고 있다. 동시에 레코딩 재생을 하는 장치들을 전이중 (full duplex)장치라고 부른다. 가장일반적인 사운드 데이타로 레코딩,재생 하는 방법은 UNIX,LINUX 명령어 (dd,cat )를 사용하는 것이다.예를들면 *녹음 : cat /dev/dsp > xyz : (오디오 장치에서 디스크화일로 명령어가 kill할때 까지
저장
한다.) *재생 : cat xyz > /dev/dsp
오디오 장치는 항상 exclusively 하게 열린다. 만약 하나의 프로그램이 그것 이 이미 open상태일떄 장치를 열려고 한다면
사운드 드라이버는 즉시 에러 (EBUSY)를 를 RETURN 할것이다. 1. Declarations for an Audio Program
OSS API를 사용하는 프로그램은 <soundcard.h> C언어 헤더 를 포함해야 한다. 그리고 그 밖의 화일을 다루기 위한 헤더를 포함한다. /****Listing1 - Definitions for an Audio Program*****/ /********* Standard includes************/
#include <ioctl.h>
#include <unistd.h> #include <fcntl.h> #include <sys/soundcard.h> /********* Mandatory variables.**********/
#define BUF_SIZE 4096
int audio_fd; unsigned char audio_buffer[BUF_SIZE]; *BUF_SIZE 매크로는 audio의 data를 위하여 할당해진 버퍼의 크기를 정의한다.(-그러나 짧은 버퍼가 결과를 더잘
recording 해준다.버퍼사이즈는 1024(linux) 4096사이에서 의 선택이 좋다) 2. Selecting and Opening the Sound Device
audio장치는 사용되기 전에 open해야한다. 만약 프로그램에 encoding format 이 장착되지
않았다면 올바른 장치 화일을 open하는것이 중요하다. 이창치 화일들은 실제 디바이스화일의 심볼릭 링크이다 예를들면 /dev/dsp 는 /dev/dsp0를 가르킨다(이것은 오디오장치가 시스템에서 처음 탐색 하는 화일이다)장치 화일을 열었다면 오직 O_RDONRY 와 O_WRONRY만을 쓸것을 권장한다. O_RDWR는 Full duplex(동시에 재생과 녹음을 한다.)에서 사용되어야 한다 /********Listing 2 - Opening a Device File***********/ if ((audio_fd = open(DEVICE_NAME, open_mode, 0)) == -1) { /* Open of device failed */ perror(DEVICE_NAME); exit(1); } *error 중 유일하게 EBUSY (Device busy )는 장치가 결코 이용할 수 있게 될것이라는 것이 보장되지 않을
지라도
프로그램이 다시한번 같은시간에 장치화일을 열려고 노력한다 3. A Simple Recording Application /***********Listing 3 - Sound Recording**********/ int len; if ((len = read(audio_fd, audio_buffer, count)) == -1) { perror("audio read"); exit(1); } 위 예에서 count는 프로그램이 장치로부터 읽기를 원한 바이트들의 수를 정의합니다. 그것은
적은 audio buffer의 크기와 같다. 덧붙이자면 그것은 또한 항상 sample크기의 정수형 배 수이다 그리고 그것은 2의 정수형을 사용한다 (2,4,8,16,32)그리고 이것은 내적으로 드라이 버에 의하여 사용될때 최고로 작동된다. 장치로부터 기록된 바이트들의 수가 정확하게 시간을 재는데 사용될수있다. 오디오 데이터 속도는 (data rate) (bytes per secound)는 샘플 스피드와 크기 그리고 채널의 수에 의존한다. 4. Simple Playback Application 재생 프로그램 역시 레코딩 프로그램과 같다 . 차이점은 재생 프로그램은 write 프로시저를 호출 한다는 점이다. 5. Setting Sampling Parameters *음질에 영향을 미치는 세 파라미터들 1.sample format (때떄로 number of bits 라고 불린다) 2,number of channels (mono or stereo),
3,sampling rate(속도)
디바이스 는 새로운 샘풀링 파라미터를 받아들이기 전에 SNDCTL_DSP_RESET 으로 reset 을
한다. 6. Selecting Audio Format 샘플 포맷은 오디오 데이타의 질에 영향을 끼치는 중요한 요소이다. OSS API는 여러 다른 샘풀 포맷을 지원한다 <soundcard.h> 헤더 화일이 다음의 견본 포맷 identifiers의 경계를 정한다. Name Description AFMT_QUERY 오디오 포맷이 아니다 그러나 현재오디오 포맷의 포맷에 대해 질문을 할때 사용되는 indentifier이다. AFMT_MU_LAW Logarithmic mu-law audio encoding AFMT_A_LAW Logarithmic A-law audio encoding (rarely used) AFMT_IMA_ADPCM 4:1 로 압축된 현재 16-bit 오디오로 대표되는 평균 4bit per sample의 포맷이다. 이것은 여러 다른 ADPCM 포맷이있다 . IMA ( interactive Multimedia Association,대화형 멀티 협회)에 의하여 하나가 정의 되고. 또한 Creative ADPCM format은 SoundBlaster16에 의하여 사용된 ADPCM 포맷이 이것을 가지고 부합하지 않습니다.AFMT_U8 : The standard unsigned 8-bit audio encoding used in PC soundcards. AFMT_S16_LE The standard 16-bit signed little-endian (Intel) sample format used in PC soundcards AFMT_S16_BE Big-endian (M68K, PowerPC, SPARC, etc.) variant of the 16-bit signed format. AFMT_S16_NE 16-bit signed format in machine's native endian convention. AFMT_S8 Signed 8-bit audio format. AFMT_S32_LE Signed little-endian 32-bit format. Used for 24-bit audio data where the data is stored in the 24 most significant bits and the least significant 8 bits are not used(should be set to 0). AFMT_S32_BE Signed big-endian 32-bit format. Used for 24-bit audio data where the data is AFMT_U16_LE Unsigned little-endian 16-bit format. AFMT_U16_BE Unsigned big-endian 16-bit format. AFMT_MPEG MPEG MP2/MP3 audio format (currently not supported). <Table 1 - Sound Sample Formats>
하드웨어 레벨에서 대부분의 장치들이 8-bit unsigned format ( AFMT U8 ) 을 지지한다는 것은 중요한 사실이다( 비록 그것들이 16-bit format의 high-end device를 제공하더라도 ). 다른 일반적인 format은 AFMT_S16_LE 와 AFMT_MU_LAW이다. 많은 장치들을 가지고 AFMT_MU_LAW 는 소프트웨어에서 기본 번역기로 제공하는 mu-law와 8-bit encoding 와 경쟁한다. 이것은 오직 8bit를 사용 할때 보다 낮은 음질이 생기는 원인이 된다. 어플리 케이 션은 장치에 의하여 그들이 요구하는 견본 포맷이 지지된다는 것을 검사해야 한다. 지원 되지 않는 포맷의 작업은 데이터를 다른 포맷으로 바꾸어 주어야 한다. (보통 AFMT_U8). 양자 택일적으로 , 프로그램은 그것이 전환을 할 수 없다면 중단해야 한다. AFMT_S32_XX FORMAT은 애플리케이션이 16-bit 샘플사이즈 이상을 요구하였을 때 사용
하기 위하여 만들어졌다. 하나의 샘플을 32-bit로 저장 할당 할때 int 는 최고의 아키텍쳐이다. 24 bit 의 데이터는 3개의 중요한 bytes로 저장 되어야 한다 (가장 중요한 바이트는 0으로 쎄팅 되어야한다). the number of bits required to store a sample is: * 4 bits for the IMA ADPCM format, * 8 bits for 8-bit formats, mu-law and A-law, * 16 bits for the 16-bit formats * 32 bits for the 24/32 bit formats. * MPEG audio format.
샘플 포맷은 ioctl ,SNDCTL_DSP_SETFM을 사용하여 설치할수있다. 다음의 코드는 오디오
포맷을 AFMT_S16_LE(다른 포맷과 유사한)로 설치 한것이다 /***************Listing 4 - Setting Sample Format****************/ int format;
format = AFMT_S16_LE; if (ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format) == -1) { /* fatal error */ perror("SNDCTL_DSP_SETFMT"); exit(1); } if (format != AFMT_S16_LE)
/* The device doesn't support the requested audio format. The program should use another format (for example the one returned in "format") or alternatively it must display an error message and to abort. */ The SNDCTL_DSP_SETFMT ioctl call simply returns the currently used format
if
AFMT_QUERY is passed as the argument. 만약 AFMT_QUERY argument 가 설정되어있다면 SNDCTL_DSP_SETFMT iocl 호출은 단 순하게 현제 사용되고 있는 format을 return 한다. ioc시 호출로 현재 사용하는 format을 체 크하는 것은 아주 중요한 일이다. 만약 사용할 특별한 포맷이 하드웨어에서 제공되지 않는 다면 다른 시스템 콜을 거절하고 다른 포맷을 제공한다. /***********Listing 5 - Checking for Supported Formats************/ int mask; if (ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &mask) == -1) /* Handle fatal error ... */ if (mask & AFMT_MPEG)
/* The device supports MPEG format ... */ *NOTE* SNDCTL_DSP_GETFMTS 는 실제로 하드웨어에서 제공되는 포맷만을 리턴 한다. 그것은 드라이버에서 제공되는 포맷이 더 많은 종류의 소프트웨어 변화를 사용 가능 하게 만 든다.(signed to unsigned, big-endian to little-endian or 8bit to 16-bit). 이러한 포맷들의 우열은 ioctl에 의해서 리포트 되지는 않는다 그러나 SNDCL_DSP_SETFMT는 그것들을 받 아들인다. FMT_MU_LAW는 거의 모든 장치에서 지원대는 데이터 포맷이다. OSS 버전 3.6 에서는 항상 위의 포맷이 NDCTL_DSP_GETFMTS 으로 제공 되었다. 버젼 3.6 그리고 나중의 버전에 서는 장치가 하드웨어안에서 mu-law 포맷을 지한다. 이 엔코딩은 오직 어프리케이션 그리고 시스템이 mu-law 엔코딩을 사용하는 오디오 파일에서 사용된다 7. Selecting the Number of Channels (Mono/Stereo) 기본 모드는 mono이지만 거의 대부분의 장치는 stereo를 지원한다. 어플리케이션은 ioctl
호출로 채널의 수를 선택한다. SNDCTLl_DSP_CHANNELS은 argument와 함께 채널의 수를 지정할수있다. 대부분의 디바이스 장치는 16개의 채널을 지원한다. 미래의 장치는 점점더 지원하는 채널 수가 늘어날 것다 Listing 6. Setting Number of Channels
int channels = 2; /********* 1=mono, 2=stereo ***********/
if (ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &channels) == -1) { /* Fatal error */ perror("SNDCTL_DSP_CHANNELS"); exit(1); } if (channels != 2) /* The device doesn't support stereo mode ... */ *NOTE
어플리 케이션은 sampling speed를 선택 하기전에 채널의수와 비트의 수를 꼭 선택 하여 야만 한다. 장치들은 모노와 스테레오의 최대 스피드를 가지고 있다.카드의 최대 스피드모 드로 장착한 후에 프로그램이 부정확하게 채널의 수를 바꾼다면 프로그램은 부정확하게 행동할것이다. 스피드는 처음 장치에서 읽거나 쓰기전에 선택하여야만 한다. 8. Selecting Sampling Rate (speed) 샘플링 속도는 오디오의 음질을 결정하는 중요한 매개 변수이다. OSS API는 1HZ에서 2GHz 까지의 주파수의 선택을 허가한다. 그러나 실제로는 오디오 장치에 존재 하고 사용하는 것은 제한되어 있다 . 최대 주파수가 넓게 변화되는 동안 최소의 주파수는 보통 5kHz 이다몆개의 오래된 사운드 카드는 재생시에는 22.05kHz 레코딩시에는 11.025kHz를 이용하고 다음의 세대는 44.1kHz (모노) 혹은 22.05kHz(스테레오)를 제공한다 최대의 사운드 카드는 최대 96kHz(DVD 음질)을 제공한다 그러나 일반적으로 제공되는 것은 44.1kHz(CD음질)이다. 기본 샘풀링 속도는 8kHz이다.그러나 어플리케이션은 그런것에 의존하지 않는다 디바이스 장치의 제공이높으면 높게 제공이 된다. 코덱장치는 보통 높은주파수의 crystal oscillator 스피드 눈금 에 의해 샘풀링 눈금을 만들어 낸다. 다음은 샘플링 스피드를 설정하는 프로그램 코드이다 . /************Listing 7 - Setting Sampling Rate*********/ int speed = 11025;
if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed)==-1) { /* Fatal error */ perror("SNDCTL_DSP_SPEED"); exit(Error code); } if ( /* returned speed differs significantly from the requested one... */ ) /* The device doesn't support the requested speed... */ NOTE
어플리케이션은 샘풀링 스피드를 설정하기 전에 채널의 수와 비트의 수를 선택해야 한다 .
장치들마다 다른 모노와 스테레오의 스피드를 가지고 있다 . 만약 카드에 채널의 수가 에 높은 스피드 모드가 설정된이후에 바뀐다면 프로그램은 부정확한 행동을 할 것이다. 샘플링 스피 드느 처음 읽거나 쓰기전에 장체에 설정 되어야 한다. 9. Other Commonly Used ioctl Calls ioctl 프로시저 호출을 하지 않고 오디오 처리 프로그램을 하는 것은 가능 하다. 그것은 다른 3가지가 이미 초기에 기술 되어있기 때문이다. 눈에 띄는 delay나 pause없이 어플리케이션에서 이미 paramenters를 호출하여 장치를 열어 잇따라 연속적으로 읽거나 쓴후에 파일을 닫는 것은 것은 가능하다 이러한 종류의 어플리 케이션은 stream이나 batch apllication으로 described 되어있다 이러한 추가의 3가지 호출은 아마도 약간은 더 까다로운 프로그래밍을 요구할것이다. 모든 그러한 것들은 argument를 요구하거나 리턴 하지않는다 (just use an argument of 0) ioctl SNDCTL_DSP_SYNC 는 어플리케이션이 장치에 played시에 마지막 바이트를 쓸데까지
기다리기를(wait)원할 때 사용한다 (그것은 recoding 모드에서는 되지않는다) 그러한 경 우엔 시스템 호출은 장치를 reset(stop)한다 그리고 호출한 프로그램으로 돌아가 리턴한다. 이러한 호출은 아마도 몇몇의 두 번째 수행의 버퍼의 데이터에 의존한다. 은연중에 어떤 사 운드 장치 호출도 SNDCTL_DSP_SYNC 로 종료한다. SNDC시_DSP_SYNC 는 장치를 close 하거나 reopen 할시에 사용하는 것이 좋다. ioctl SNDCTL_DSP_RESET는 즉시 장치를 멈 추고 그리고 그것이 새로운 파라미터들을 받아들일 수 있는 상태로 그것을 돌려줍니다 . 장 치를 openning 한후에 호출 하였을때 불리한 효과가 있다 이호출은 오직 레코딩중에 playback이 abort를 필요로 할때만 요구한다 . 일반적으로 장치의 열고 닫는 것은 SNDCTL_DSP_RESET를 사용한 후에 할 것을 추천 한다
<ioctl SNDCTL_DSP_POST는 SNDCTL_DSP_SYNC의 lightweight 버전이다. 그것은 단지 드라이버가
출력중의 정
지 일것같다고 말한다 이것은 장치 좀더 괜찮은 정지를 핸들링이 가능하게 해준다> NOTE
그들 모드는클릭 혹은 출력중의 불필요한 정지로 ioctl을 호출한다. 프로그래머는 단지 절 대적으로 요구할때만 사용 하여야 한다. 프로그래머는 자신의 프로그램에서 오디오 데이타가 비교적 오랜시간 출력이 멈추었을때SNDCTL_DSP_POST를 사용 하여야한다. -예를 들면 이런 종류의 상태는 다음과 같다: *재생 후에 즉시 효과가 나타나지 않을 때 *사용자의 입력을 기다리는 적용시간들 전에 *그러한 큰 메모리 파일이 로딩시에 오래 작동 하기 전에 프로시저 SNDCTL_DSP_RESET 혹은 SNDCTL_DSP_SYNC 는 어플리 케이션이 샘플 파라 미터(스피드 채널의 수 혹은 비트의수)를 호출한다. 파라메터의 변화에 순간에 장치를 열고 닫는 것이 더 신뢰성이있다. 어플리케이션은 레코딩이나 재생을 바꿔주기 전 에SNDCTL_DSP_SYNC 혹은SNDCTL_DSP_RESET을 호출한다 (혹은 이런경우엔 장치를 열고 닫는 것을 더 추천 한다 ). 10. Interpreting Audio Data
오디오 데이터의 엔코딩은 샘플의 포맷에 의존한다
11. Mu-law (Logarithmic Encoding)
하 이 포맷은 디지털 전화 기술에서 기원 되었다. 각 샘플은 본래는 16비트 값인데 8비트로 압축하여 묘사한다. 만기된
logaruthmic 엔코딩은 그 포맷이 사용되기 전에 선형의 포맷으로 바뀐다.(two mu-law encoded values cannot
simply be add)
-가능하다면 mu-law를 피하라 그리고 그 대신 8 , 또한 16-bit 선의 포맷들을 사용해라. *8-bit Unsigned
이 것은 일반적으로 모든 사운드 카드(S/B)의 포맷이다 또한 거의 모든 하드웨어에 제공된다. 각각의 샘플은 8비트로 저장된다. 0은
제일작은 레벨을 나타내고 255는 최고의 레벨을 나타낸다. 자연스러운 레벨은 128이다(0x80 (16진법)) 그러나 이것은 조용한 가운데에서
레코딩을 진행해도 약간의 소음이있다 그래서 바이트값 127(0x7f)에서 129(0x81)사이에 변화를 준다. C언어에서 의 데이터 값으로는
unsigned char형을 사용한다 . signed 8-bit 포맷에서 unsigned 바꾸기 위하여 128의 값을 가감하여
바꾼다.
*16-bit Signed
16비트 포맷으로 작업을 해야 할땐 주의해야 할점이있다. 16비트 데이터는cpu와 오디오 장치의 설계에 의존하여 이식할수 없다. 상황이
정상적인 soundcard를 가지고 little-endian을 사용하는 x86 CPU를 사용할 때에는 간결하다. 이러한 경우는 cpu와
사운드카드가 같은 16bit 엔코딩을 사용할때이다 그러나 위와 같지 않다면 그렇지는 않다.
16 비트 엔코딩은 일반적으로 little-endian(byte ordering)같은 사운드 하드웨어에서 AFMT_S16_LE로 사용한다. 그러나 다른 기계들은 오직 오디오 칩에 big-endian만을 제공한다. 16비트 signed 데이터는 c언어에서 사용될시에는 signed short로 사용 되는 것이 제일 적합하다 그러나 이러한 사실은 오직 little-endian 머신에서만 적합되는 말이다. 덧붙여서 C 표준에서는 데이터 타입을 정의 하지 않았다 그래서 short가 16비트의 머신에 적합한지는 아무도 보증을 해줄수 없다. 이러한 이유로 unsigned short 형의 array를 사용할시에는 신중해야 한다. 적당한 방법은 array of unsigned char를 사용하는 것이다 그리고 드라이버에 pass 하기전에 직접 assemble/disassemble the buffer해버리는 것이다 . NOTE
*참고로 byte ordering을 해주는 함수로는 *Unsigned short interger htons() : host -to- network 바이트변환 ntohs() : network -to- host *Unsigned long interger 변환 htonl() :host -to-network nyohl() :network -to-host /*****************Listing 9 - Handling 16-bit Data ****************/ unsigned char devbuf[4096];//8bit,apllication의 2배가있어야 받아들이수있다.
int applicbuf[2048];//16bit int i, p=0; /********* Place 2048 16-bit samples into applicbuf[] here
**********/
for (i=0; i<2048; i+=2)
{ /* first send the low byte then the high byte */ devbuf[p++] = (unsigned char)(applicbuf[i] & 0xff); devbuf[p++] = (unsigned char)((applicbuf[i] >> 8) & 0xff); } /********** Write the data to the device*********/
< 풀 이 >
char => 8 bit =>unsigned char devbuf[p]
int =>16 bit =>int applicbuf[p] 11110111 00110010
00000000 11111111 _________________ & 00110010 devbuf[0]=00110010 11111111 11110111
00000000 11111111 & _________________ 11110111 devbuf[1]=111100111 AFMT_S16_NE 포맷은 프로그램에서 encoding 이나 decoding을 원할 때 사용하는forma
t이다.그것은 자동적으로 올바른 cpu구조의 포맷을 찾아내어준다. 이러한 방법은 보통 단순 하게 signed short format 샘플을 저장하는 것을 가능하게 해준다 24 and 32 bit signet formats AFMT_S32_S32_LE ,AFMT_S32_BE, 그리고 AFMT_S32_NE 포맷은 32bit-signed포맷이다 데이터는 왼쪽부터 저장하며 사용하지 않는 비트는 0으로 설정한다 13. Multiple channels OSS는 전문적인 멀티 오디오 장치 채널을 제공한다 디바이스는 2개의 다른 다중채널의 핸 들링에 의존한다. 이 방법안에(서) 복합적인 채널들을 지지하는 단지 하나의 장치 파일(/dev/dsp)이 있다. 어플리 케이션은 단순하게 SNDLC_DSP_CHANNELS ioctl을 사용하여 multiple channels(2,3,4,...,N)을 요구합니다. *Multiple audio device method
여 러 장치 파일들(dev/dspM ,dev/dspM+N : M=처음 채널의 장치 넘버 N= 채널의 넘버 ) 이방법은 같은 같은
애플리케이션 혹은 여러 부분들의 애플리케이션에서 채널을 개별적으로Open 할 것이다 그것은 또한 여러 장치 파일들이 stereo pairs처럼
조직화 되는 것이 가능하다(/dev/dspM = channels0/1, dev/dspM+1=channels2/3,etc)
*Mixed multi device and interleaved method
디바이스들은 독립된 복합적인 디바이스 화일을 준다. 거의 무한한 유연성을 제공하는 3번째 방법을 사용하기에 가능합니다.
이 방법은 하나의 어플리케이션이 하나의 파일( /dev/dsp0)을 열수있게 한다. 그리고 그것은 스테레오 (2
channel)모드(이것은 /dev/dsp1의 보류된 채널을 장착한다 ) 이다. 다른 어플리케이션은 아마도 /dev/dsp2를 열것이고 그리고
그것은 4채널모드일 것이다 (그래서 채널은 /den/dsp3./dev/dsp4 그리고 /dev/dsp5을 할당해 얻을 것이다.) 최후의
세번쨰그리고 네번째 어플리케이션은 /dev/dsp6 그리고 /dev/dsp7을 open할 것이다 그리고 그것들은 mono 모드를 사용할 것이다
. 모든 가능한 채널은 제한이 복합적이다
14. Changing mixer settings for an audio device
일 반적으로 오디오 어플리케니션이 mixer 세팅을 건드리지 않을 것을 권장한다. 사용자는 믹서 전용 프로그램으로 믹서 쎄팅하기
때문이다. 만약 그렇지 않다면 프로그램들은 서로 충돌하게 될것이다. 적어도 어플리케이션이 위의 문제를 염두에 두어야 믹서의 적용부분을
깨지않는다. 믹서의 제공이 깨지기 때문에 실패한 애플리 케이션은 너무나 많다.
만약 프로그래머가 그래도 믹서를 변화시키겠다면 아래의 방법을 따라라
1) 어떤 /dev/mixer# 장치도 열지 않고 대신 mixer ioctl(OSS 문서 중 믹서 프로그램 부분을 참조 바람 )을
오디오 장치 파일에서 직접 호출 해라 프로그래머는 믹서 접근을 위하여 다시 장치를 재개하려고 노력 하지 말아야 한다.
2) 오직 PCM(PCM은 아날로그 데이터 전송을 위한 디지털 설계이다. ) 볼륨과 레코딩 디바이스 세팅을 바꿀수 있다. 그것들은 같은
방법으로 모든 디바이스를 콘트롤 한다 만약 같은 믹서 제어가 실패해도 그것은 에러 상태가 아니다.
3)만약 너가 믹서를 접근할시 어떤 종류의 에러를 만났을때 그것을 무시하거나 혹은 멈추하하거나 게다가 믹서를 작동 시킨다면 당신이 할수
잇는 가장큰 실수는 믹서 때문에 어플리 케이션을 중단 시키는 것이다.
위에 나와있는 말들은 OSS 의 오디오 어플리 케이션의 프로그래밍을 할때 기초가 되는 부분 들이다 그러나 그것들은 게임과 같은 실시간
오디오 어플리케이션 ,음성 회의 시스템 ,음성분석툴 , 다른 많은 처리 들을 하기위해서는 더많은 기술을 요구로 한다 이러한 것들 고급 프로그래밍
부분(Advanced Programming Topics)에서 다루고 있다 . 그러나 위의 부분 들을 잘 이해 하고 있다면 많은 오디오 관련
프로그래밍을 할때에 큰 힘이
될것이다. |
Technical audio
papers
|
댓글 없음:
댓글 쓰기