2008년 9월 11일 목요일

I²S와 클록 퍼펙트(clock-perfect) 전송

나중에 붙임: 
잘은 모르지만, 요즘은 이렇게 안 하고 그냥 USB로 해결할 겁니다. 이 당시와 달리 피드백 방식으로 지터를 줄이는 알고리듬을 USB 펌웨어 차원에서 구현할 방법이 있기 때문이죠. 특정 제품의 USB 펌웨어에 그것이 구현되어 있는지만 확인하시면 됩니다.

* * *

- 공시디에 따라 음질이 달라진다고 합니다. 무슨 소립니까? 데이터가 100% 같은데?

- 디지털 케이블에 따라 음질이 달라진다고 합니다. 무슨 실용론자 광분할 소립니까? 데이터가 100% 같은데?
- 디지털은 아날로그보다 음질이 못하다고, 딱딱한 소리가 난다고 합니다. 무슨 헛소립니까? 귀로 듣고 구분할 수 있어요? 응? 응?

저 세 가지 주장이 다 헛소리라고 굳게 믿는 실용오디오 탈레반은 얌전히 꺼져주시면 고맙겠습니다.

※ 나중에 붙임. 아무 데로나 꺼지지 말고 요 아래 사이트로 가서 100만 원 빵을 함 해보시면 어떨까요?

http://blog.naver.com/miroo67

이분은 자칭 황금귀라서 웬만하면 상대방 조건을 다 들어준다고 하는데 신청자가 없는 모양입니다. 저한테 100만 원 빵 신청하셔도 되는데, 저는 황금귀가 아니라서 조건이 제법 까다롭습니다. 엄격한 실험심리학 실험 기준을 적용할 생각이거든요.

* * *

소리가 다르기는 한데, 왜 그런지 모르는 분은 '클록 퍼펙트(clock-perfect)'를 아셔야 합니다. '클록 퍼펙트'는 '비트 퍼펙트(bit-perfect)'를 바꾼 말로 제가 지어냈습니다. 인터넷 검색해보니 '비트 퍼펙트'라는 말은 있어도 '클록 퍼펙트'는 없더군요.

사실은 '클록'보다 '지터(jitter)'를 먼저 아셔야 합니다. 태초에 지터가 있었습니다. 쿨럭...;;

지터가 뭔지는 솔직히 저도 잘 모릅니다. 위키피디아 검색하니 이렇게 나오네요:
http://en.wikipedia.org/wiki/Jitter

지터는 여러 가지가 있지만 대부분은 시간 관련 지터라고 합니다. 데이터를 보내고 받는데 순서가 꼬일 수 있다는 것 같아요. 이걸 바로잡아 줘야 하는데 오디오에서 실시간으로 처리하다 보면 '아날로그적인' 오류가 생길 수 있다는 것 같습니다. 데이터 오류가 생기면 '퍽' 하는 잡음이 생기지만 시간 관련 지터가 생기면 잡음이 생기는 대신 음질이 나빠진다고 해요. '디지털스러운' 딱딱한 소리가 바로 시간 관련 지터 때문이라는군요.

이제 클록(clock)을 알아봅시다. 클록은 우리말로 '시계'이지요. 여기서는 컴퓨터에서 시간 제어에 쓰이는 정보를 말합니다. 컴퓨터에는 클록 제너레이터(clock generator)라는 놈이 시간 제어를 담당한다고 해요. 손목에 차는 시계와 휴대전화 시계와 TV 방송에서 알려주는 시계는 조금씩 다르지요? PC에서 DAC로 데이터를 보낼 때에도 PC에 있는 클록 제너레이터와 DAC에 있는 클록 제너레이터가 당연히 같지 않기 때문에 시간 관련 지터가 생깁니다. 여기서 의문. 그러면 도대체 '클록 퍼펙트'라는 게 가능하기는 한 겁니까? 제가 바로 알고 있다면 이론적으로 불가능합니다. 그러나 백만 년에 1초씩 느려지는 시계가 있다면 그냥 정확한 시계라고 봐도 되지 않을까요? 이쯤 되면 그냥 '클록 퍼펙트'하다고 해줍시다.

클록 제너레이터를 위키피디아에서 찾아보니 이렇게 나오네요:
http://en.wikipedia.org/wiki/Clock_generator

컴퓨터 내부에서는 시간 관련 지터가 없는 것이나 마찬가지라고 합니다. '클록 퍼펙트'하지요. 컴퓨터 속 오디오 장치끼리 정보를 주고받을 때에는 I²S라는 전송규약(protocol)을 따른다고 합니다. I²S는 "Integrated Interchip Sound" 또는 "Inter-IC Sound"를 줄인 말이고 '아이-스퀘어-에스'라고 읽습니다. 이놈은 I²C(Inter-Integrated Circuit)의 오디오 버전인 것 같아요.

I²C는 한글 위키피디아에도 나오네요:
http://ko.wikipedia.org/wiki/I%C2%B2C

I²S는 영문 위키피디아에 있습니다:
http://en.wikipedia.org/wiki/I2S

링크에 나와있는 내용은 전문적이라 많이 어렵지요? I²S는 데이터와 클록 정보를 따로 전송하기 때문에 그만큼 손실이 없거나 적다고만 알고 넘어갑시다.

그런데 사운드카드 또는 오디오카드와 외장 DAC를 연결할 때에는 보통 광, 동축, 또는 USB 케이블로 연결합니다. 광(TOSLINK) 단자와 동축(coaxial) 단자는 S/PDIF(Sony/Philips Digital Interconnect Format)라는 전송규약(protocol)을 따른다고 합니다. USB는 USB 오디오 전송규약을 따르고요. 그러니까 PC에 있는 사운드카드에서 I²S 신호가 S/PDIF로 바뀌거나 PC에 있는 메인보드에서 I²S 신호가 USB 오디오 신호로 바뀌어서 외장 DAC로 간 다음, 다시 외장 DAC 입력단에서 이 신호가 I²S 신호로 바뀌어 DAC 칩으로 가서 아날로그 신호가 됩니다.

S/PDIF를 위키피디아에서 찾아보니:
http://en.wikipedia.org/wiki/SPDIF

여기서 문제가 생깁니다. S/PDIF나 USB는 I²S와는 달리 데이터 정보와 클록 정보를 같이 보내기 때문에 시간 관련 지터가 매.우. 많이 생긴다고 해요. S/PDIF를 만들 때는 그 때문에 사람이 지각할 수 있을 만큼 음질 차이가 날 줄 몰랐겠죠. 아니면 알았어도 마땅한 방법이 없었거나. USB야 애초에 오디오용이 아니었고요.

자, 지터를 되도록 줄이려면 어떻게 하면 될까요? PC나 다른 여러 곳에서 들어오는 '노이즈'를 줄이면 됩니다. 오디오랑 비슷하다고 보면 되지요. 좋은 케이블 쓰고, 차폐에 신경 쓰고, 단자를 깨끗하게 닦아주고, 케이그 칠해주고 등등.

그런데 S/PDIF나 USB를 거칠 게 아니라 PC와 외장 DAC 사이를 처음부터 I²S 연결하면 되지 않나요? 맞습니다! 이게 왜 처음부터 안 되었는지는 저도 잘 모릅니다. 제 생각에는 단자를 비롯한 것들이 표준이 정해지기까지 저작권이 발목을 잡지 않았나 싶어요. 그리고 기술적인 문제도 하나 있는데, I²S는 컴퓨터 내부에서 신호를 주고받으려고 만든 거라서 케이블 길이가 긴 상황을 고려하지 않은 것 같아요. 정확한 내용은 모르겠지만 케이블이 길수록 안 좋다더군요.

여기서 TG-Link 얘기를 하지 않을 수 없습니다. 이놈은 TOGO라는 중국 회사에서 I²S를 베껴서 만든 전송규약인데, 인터넷 전송에 쓰는 이더넷(Ethernet)과 I²S를 합쳐놓았다고 합니다.

이더넷은 한글 위키피디아에도 있네요:
http://ko.wikipedia.org/wiki/%EC%9D%B4%EB%8D%94%EB%84%B7

I²S보다 더 좋은 기술이지만 저작권을 대략 무시하고 만들었기 때문에 중국에서만 써먹고 있지요. 제가 올바로 이해했다면 TG-Link는 I²S보다 케이블 영향을 덜 받을 겁니다. 좀 길어도 되고 싸구려 케이블이라도 돼요.

TG-Link에 대해 제가 얼마 전에 쓴 글:
http://wagnerian.textcube.com/305

그리고 프로용 오디오 장비에서는 I²S와 비슷한 자체 전송규약을 만들어서 쓴다고 합니다.

요즘은 CD 트랜스포트와 DAC를 I²S 연결할 수도 있게 나오지요? PC도 이렇게 하면 좋을 텐데요, 무슨 방법이 있을까요?

첫째, 사운드카드를 개조해서 I²S 신호를 따옵니다. 회로도가 인터넷에 돌아다니기 때문에 개조하기 어렵지 않다고 합니다. 재주 있으신 분은 개조 사운드카드 공제 좀 해주시면 안 될까요? ●█▀█▄ 굽신굽신●█▀█▄ 굽신굽신

둘째, SndScape Odeum라는 사운드카드(?)를 PC에 설치하고 TG-Link to I²S 컨버터를 만들어 연결합니다. SndScape라는 중국 회사에서 컨버터 모듈을 판다고 합니다:
http://www.sndscape.com/AccessoriesPage.asp?AccessoriesNameID=10

셋째, 프로용 장비를 씁니다. 뭐가 있는지는 저도 모릅니다. 일단 비싸겠지요? -_-;;

넷째, USB to I²S 컨버터를 씁니다. 이놈은 USB를 거치는 순간 '클록 퍼펙트'와는 거리가 멀어지므로 궁극적으로는 바람직하지 않습니다. 그러나 USB 펌웨어를 잘 만들고 좋은 클록 제너레이터를 쓰면 현실적으로 가장 좋은 방법일 수도 있습니다. OffRamp I2S라는 제품이 지금까지 나온 것 가운데 가장 좋다고 합니다. 제작자가 Intel 엔지니어 출신이고 지터 전문가라서 믿을 만합니다. 제 생각에 오디오카드를 개조해서 직접
I²S 신호를 따오더라도 이놈 만한 음질이 나와줄지 의심스럽습니다. 대신 값이 싸지는 않네요.

OffRamp I2S 소개:
http://www.empiricalaudio.com/frComputer_Audio.html#Off-Ramp%20I2S


저는 이쪽 전문가가 아니고 음악학 전공한 사람인데, 잘 모르면서 떠들어 봤습니다. 틀린 곳이 있으면 알려주세요.

나중에 붙임. 지터가 생겨도 보정 과정을 거치면 데이터가 바뀌는 일은 거의 없는 모양입니다. 그러나 지터 때문에 왜곡된 클록 정보가 DAC 칩에 영향을 끼쳐 결국 음질이 달라진다고 하네요. 참고:
http://wagnerian.textcube.com/354

정보공유라이선스

김원철. 2008. 이 글은 '정보공유라이선스: 영리·개작불허'에 따라 이용할 수 있습니다.

글 찾기

글 갈래