읽는데 9 분 정도 걸려요
2021년 4월 24일 오후 9:34에 작성됨.

나름 오디오파일이라고 생각하는 사람들 중 어둠의 경로를 애용하는 사람들을 제외한다면 라이브러리를 구축하는 방법은 크게 두 가지가 있다. 음원 사이트에서 음원 파일을 구입하거나, 직접 미디어를 리핑하는 것이다. 예전으로 따지면 LP나 카세트 테이프, 오픈 릴 테이프 같은 것을 디지털화하는 것도 있었겠지만 어지간한 사람이 아니고서는 저 두 가지로 끝날 것이다. (아날로그 매체를 디지털화하는것은 요즘은 복원의 영역에 들어선 것 같기도 하다)

음원 사이트에서 음원 파일을 구입하는 것은 간단하다. 그냥 음원을 고르고, 결제한 다음 파일을 받아서 집어넣으면 끝이다. 뭐 음원 파일을 사기치지 않는 음원 사이트를 찾는 법이나, 자기네 말고 다른 나라의 구입을 막는 일본 사이트들을 뚫는 법이나 태그정리를 어떻게 하는지가 이야기거리가 될 수는 있겠지만 대부분이면 당장 들을 수 있는 형식의 음원 파일을 주기 때문에 별다른 것을 고민할 필요가 없다.

하지만 리핑은 이야기가 좀 다르다. (개인적인 목적의 사용이라 저작권법상 합법이라고 해도) 음반사들은 리핑을 매우 싫어하기 때문에 CD 정도를 제외한다면 대부분 락이 걸려 있다. 그리고 (음반사들이 리핑을 고려하고 만드는 것이 아니라는 것은 당연하고) 물리 매체의 특성상 이게 제대로 리핑이 된건지 아닌건지를 구분하는 것도 꽤나 골치아픈 문제다. 그래서 PC-FI란 것이 태동할 때부터 음원을 어떻게 구할 것인지에 대해 많은 토론과 연구가 있었고 대충 20년은 흐른 지금은 어느 정도 정답이라고 할 수 있을만한 것이 나와 있는 상태다.

EAC에 대한 것도 마찬가지이다. EAC란 프로그램은 굉장히 옛날에 나온 프로그램이고 (홈페이지의 changelog에는 내용이 98년부터 나와 있다!) 당연히 이 프로그램이 왜 필요한지, 어떤 역할을 하는지, 어떻게 사용해야 하는지는 대강의 결론이 나와 있다. 인터넷 전체의 풍화와도 같은 것 때문에 찾아보기는 힘들지만 국내에서도 2005년 즈음에 EAC에 대해서 활발한 토론이 있었던 흔적을 찾을 수도 있을 정도이다. 하지만 사람들이 점점 음반을 사지 않기도 하고, 모바일 시대에 입문한 사람들 같은 경우에는 당연히 음원이란 음원 사이트에서 받는 것이 당연하다고 생각하기 때문에 관련된 정보들이 꽤나 커뮤니티에서 잊혀진 상태이기도 하다. 그리고 이런 글들을 보면 옵션만 늘어놓고 이렇게 따라하라고 하는 경우도 보인다. 그래서 (수도 없는 사람이 먼저 했지만) 나 나름대로 EAC란 것에 대해서 정리해보는 것이 좋겠다 싶어서 이 글을 쓰게 되었다.

이걸 왜 쓰는가?

EAC는 기본적으로 CD 음반을 리핑하기 위한 프로그램이다. DVD나 BD같은 것은 파일 구조로 되어 있어서 락이 걸려 있지 않다는 가정 하에 그냥 탐색기에서 파일을 빼오면 되지만 CD는 그런 것이 불가능하다. 순차적으로 재생하는 데에 특화되어 있기도 하고 CD가 만들어질 때는 PC란 개념과 그 PC에서 CD를 읽어야 한다는 생각부터가 힘들었기 때문에 전용 플레이어를 사용하는 걸 전제로 생각했다. PC가 CD를 읽을 수 있게 되고, PC가 CD를 저장매채로 생각하게 된 것은 CD-ROM이란 것이 나와서이고, CD-DA의 규격이 1980년에 나온 것과 비교해서 CD-ROM은 1988년에 나왔기 때문에 우리가 생각하는 음악 CD와 데이터 CD의 구조는 꽤 다르다.

그러면 그냥 쉽게 OS에서 음악 CD를 넣으면 파일로 빼 주게 만들면 모두가 편하지 않을까? 란 생각은 당연히 할 수 있을 것이다. 구조가 아무리 다르다고 하더라도 OS가 대신 해 주면 대충 해결되는 일들이 많으니 말이다. 당연히 OS는 이런 일을 한다. 지금 당장 ODD에 CD를 넣으면 리핑하시겠습니까? 스러운 메뉴가 뜨니 말이다. 하지만 CD의 문제는 지금 이 데이터가 완전하게 CD의 기록된 데이터의 원본과 같은지 구분하기가 힘들다는 점에서 오기 때문에 복잡한 일이 생기는 것이다.

단도직입적으로 말하면 우리가 생각하는 것보다 CD의 내구성이 낮고, 오류 확인이 힘들기 때문이다. 그리고 왜 그런지 알기 위해서는 CD의 구조에 대해서 약간은 알아야 할 필요가 있다.

CD의 기록 구조

CD는 크게 프레임과 서브프레임으로 나눌 수 있을 것이다. (물론 우리는 트랙을 가장 많이 생각하게 될 테지만 말이다.) 우선 가장 큰 단위는 프레임이다. 1프레임은 1/75초 분량의 오디오 데이터가 들어있다. 그리고 우선은 오류를 확인할 수 있는 가장 큰 단위라고 생각해도 무방하다. 한 프레임이 오류를 가지고 있어서 알아볼 수 없으면 우리는 1/75초 분량의 데이터를 잃게 되는 것이다. 누가 못으로 CD를 긁었거나 해서 손상이 생겼다면 우리는 N개의 1/75초를 잃게 되는 셈이라고 봐도 무방하다.

프레임은 우리가 생각하는 그 의미 그대로를 가지고 있다. 동영상을 재생하거나 할 때 타임코드를 보면 대충 몇분 몇초 몇프레임이라고 나와 있는데, 그 프레임과 비슷한 느낌으로 생각하면 된다. 다만 영화가 24프레임인 반면 음악 CD는 75프레임을 가지고 있다고 생각하면 편할 것이다. 그리고 프레임은 여러 서브프레임으로 나누어져 있는데, (어떤 글에는 프레임을 섹터, 서브프레임을 프레임이라고 부르는데 이것도 맞는 말이다) 대충 98개로 나눠져 있다. 여기서 1초를 재생하려면 이런 프레임이 1176개가 필요하다.

이 서브프레임은 대부분이 헤더와 오류 정정 데이터들로 이루어져 있어 실제 오디오 데이터는 영역의 3분의 1 정도에 불과하다. (그리고 이것도 부족하다고 하는 게 현실이긴 하다) 한 서브프레임에서 동기화와 기타 정보 표시를 위한 헤더를 제거하고 보면 크게 네 부분으로 나누어지는데 대충 오디오 덩어리 1, 오류 정정 1, 오디오 덩어리 2, 오류 정정 2 정도로 부르자. (당연히 얘내들에는 제대로 된 이름이 있기는 하다) 그리고 오디오 덩어리 하나는 12바이트로 이루어져 있다. CD는 16비트의 오디오 신호를 저장하므로 12바이트면 6개의 데이터를 기록할 수 있고, 이게 두 개 있으니 12개의 데이터를 기록할 수 있다. (그리고 1초를 재생하기 위해서는 이 데이터가 88200개 필요하다.) 그리고 이 24바이트짜리 덩어리 두개는 24개의 8비트 단위의 것으로 나눠지고 우리는 이걸 “심볼”이라고 부른다. (뒤의 오류정정에서 이걸 써먹는다.)

그리고 이 서브프레임은 각 프레임마다 시간순으로 배열되지 않고 적절히 나눠서 배치되어 있다. 이걸 인터리빙이라고 하는데 이렇게 되면 CD가 아주 미세하게 손상되었거나, CD 플레이어의 픽업이 잠깐 정신이 나가서 잘못 읽었거나 하는 경우에 연속적으로 데이터가 다 터져나가는 것을 예방한다. CD 플레이어는 이 프레임을 읽은 다음에 데이터를 읽어서 오류가 있는지를 확인하고 오디오 데이터를 추출해서 시간순으로 배열한 후 조립해서 재생하는 것이다. (당연히 CD플레이어의 재생 버퍼에는 이렇게 조립된 데이터들이 들어갈 것이다.)

하지만 많은 사람들이 분산처리되어 있다고 해서 CD의 모든 영역에 이리저리 나눠져 있는 걸로 오해하기 쉬운데, 이렇게 되면 재생을 위해서는 CD 영역의 전체를 읽어온 후에 재생해야 하기 때문에 재생기의 메모리가 터져나갈 것이다. CD의 각종 데이터를 합쳐놓으면 크기가 2GB가 넘어가기 때문에 이걸 메모리에 올린 다음 조립하는 것은 우선적으로는 메모리 부족을 일으키고, 한번 재생하기 위해서는 CD를 먼저 다 읽어야 하기 때문에 불편이 하늘을 치솟을 게 분명하다. 따라서 인터리빙은 프레임 단위로 이루어진다. (그래서 프레임 단위로 탐색이 가능한 것이다.) 그래서 짤없이 못을 긁는다던가 하는 손상이 발생하면 연속된 영역의 데이터가 터져나간다 (…) 그래도 이걸 도입했기 때문에 CD는 2.5mm정도의 연속된 손상까지를 커버할 수 있다고 한다.

그럼 여기까지 왔으니 이게 리핑에 무슨 의미가 있는지를 알아야 하지 않겠는가. 앞서 말한 CD의 데이터를 분산해서 저장하고 오류 정정을 위해서 구성하는 알고리즘을 CIRC라고 부른다. 정확히 말하면 CD가 CIRC를 채택한 것이다. 그래서 CIRC를 해독하는 과정에서는 C1 단계와 C2 단계로 나눠지는데 C1 단계는 각 서브프레임을 해독하는 부분이고 C2 디코더는 프레임을 해독하는 부분이라고 생각해도 아주 대충은 무방하다. 흔히 C1 오류는 고칠 수 있지만 C2 오류는 고칠 수 없다고 말하는 게 C2 단계 프레임을 담당하는 부분이라서 그런 것이다.

CD의 데이터 오류

CD를 추출하는데 각종 시간축상의 오류(지터, 오프셋 등)을 제외하고 보면 C1 오류와 C2 오류로 나눌 수 있을 것이다. 앞서 말했듯이 C1 오류는 서브프레임의 오류이다. 각 서브프레임의 데이터가 손상되어서 읽을 수 없거나, 데이터 검산값이 맞지 않고, 이걸 스스로 (수학적인 과정을 통해) 복구할 수 없으면 C1오류를 내뱉는다. 여기서 ODD는 대충 E11 혹은 E21, E31이라고 하는 에러 코드를 뱉어내기 때문에 당연히 플레이어나 PC는 이를 감지할 수 있다. (E11은 서브프레임별로 한개의 심볼이, E21은 두개의 심볼이 망가졌다는 의미이다. 그리고 E31은 세개 이상의 심볼이 망가져서 수학적으로 복구할 수 없다는 말이다.) 그러면 당연히 각 서브프레임별로 데이터가 나눠져서 프레임 안에 기록되어 있기 때문에 플레이어는 프레임 단위의 데이터를 사용해서 이를 복구하려는 시도를 한다. 실례로 C1 오류는 생각보다 많이 일어나지만 대부분은 C2 단계에서 복구된다. 서브프레임은 아주 미세한 수준의 공간에서 발생하는 오류이기 때문에 이를 해결할 수 없으면 CD는 진작에 LP를 넘지 못하고 죽어버렸을 것이다.

C2 단계에서는 서브프레임들을 맞춰서 다시 심볼들을 검사해본다. 여기서 좀 문제가 생기는데 데이터가 분산되어서 저장되었기 때문에 하나의 C1 단계에서 복구할 수 없었던 심볼은 최대 28개까지의 심볼 오류를 유발할 수 있기 때문에 C1 단계에서 복구되지 못한 게 아다리가 잘못 맞으면 짤없이 C2 오류를 유발할 수 있다는 것이다. 하지만 C2 단계는 꽤나 유능해서 최대 4개까지의 심볼을 복구할 수 있다. 하지만 제조사에 따라서 2개까지만 복구 가능한 경우도 있기 때문에 이것도 C1과 같이 2개까지의 오류를 복구할 수 있다고 생각하자.

C2에서는 E12, E22, E32 에러 코드를 뱉는데, C1과 같이 각각 하나, 둘, 세개 이상의 심볼이 망가졌다는 의미이다. 여기서 E32라고 부르는게 우리가 흔히 공포의 대상으로 삼는 C2 에러이다. ODD가 “미안, 더 이상은 힘들어” 하고 포기해버리는 것이다. 여기서부터는 수학적으로 원본을 복구할 수 없기 때문에 묵음처리하거나, 앞뒤 데이터를 가지고 어떻게든 보간해야 하는 상황에 놓인 것이다. 여기서부터는 제조사의 노하우이기 때문에 최대한 비슷하게 만들 수도 있고, 개차반으로 만들 수도 있다. 리핑이 잘못되었을 때 음질이 망가졌다는 이야기는 ODD 혹은 리핑 프로그램이 C2 에러를 적당하게 숨기려다가 이상하게 만들어버린 것이다. (그리고 C2 에러가 사람이 감지할 수 있을만큼 자주 발생했다는 의미이기도 하다.)

여기까지가 1/75초 안에 일어나는 일이다. 그래서 하나의 C2 에러만 발생했다면, 그리고 제대로 플레이어가 처리했다면 사람은 사실상 인지할 수 없다. 제대로 처리를 못하고 최악의 경우가 발생했다고 하더라도 “퍽” 소리가 들릴 뿐이다. 막 고음이 사라지거나 하는 것은 플레이어가 잘못 처리한 것일 가능성이 크다.

하지만 앞서 CD가 오류 확인이 힘들다고 말했다. C2 오류를 보고하는데 왜 오류 확인이 힘드냐고 반문할 수 있겠지만 CD의 재생 시간을 늘리기 위해서 오류 정정을 위한 부분을 (상대적으로) 적게 할당했기 때문에 거의 발생하지 않지만 (손상된 CD일수록 기하급수적으로 발생 확률이 커진다) C2 에러가 발생하지 않았지만 데이터는 손상되었을 가능성이 존재하고, 이게 우리가 쓰는 다른 매체들보다는 생각보다 확률이 크다는 것이다. 물론 CD가 걸레짝이 되지 않은 이상 (…) 엔간하면 이것도 인간이 인지할 수는 없다. CD 리핑 과정에서 생긴 손실은 역시 CD가 걸레짝이 되지 않는 이상 WAV를 AAC로 변환할 때 생기는 손실보다 압도적으로 작다.

그래서 왜 CD를 리핑하는가?

그래서 이 인지불가능할 정도로 작지만 생긴 오류와 감지하지 못한 오류가 있다고 하면 그냥 편하게 아무 프로그램이나 써서 읽으면 되지 않겠냐고 묻는다면 축하한다. 당신은 정답을 맞췄다. 압도적 다수의 사람들은 그런 방식으로 CD를 리핑한다. 윈도우 미디어 플레이어나 아이튠즈 같은 프로그램이 이렇게 CD를 읽고 사람들은 대부분 불만 없이 쓰고 있다. 그런데 왜 오디오파일들은 이런 오류까지도 언짢아하는 것인가?

첫번째로는 이런 오류들이 CD가 손상될수록 기하급수적으로 증가한다는 점이다. CD는 내구성이 결코 좋지 못하고 삭아버린다. 그리고 하드디스크나 SSD같은 것처럼 쉽게 복사해서 백업한다는 발상이 없다. 그래서 가능한 한 데이터를 추출해서 복사 가능한 매체에 담는 것이 최선이다.

두번째로는 데이터의 무결성이다. 어떻게 보든간에 데이터가 손상된다는 것은 굉장히 꺼림칙한 일이다. 시간이 지난 후에 한 음반을 가지고 “네 파랑이 내 파랑과 같은 파랑인가”와 같은 철학적 선문답을 해야 하는 일은 최대한 피하고 싶은 게 아니겠는가. 그래서 최대한 원본에서 손상되지 않은 데이터를 저장해서 손실을 피하고 싶기 때문이다.

그러면 “처음부터 파일로 주면 되는 게 아닌가요?” 라고 묻는다면 축하한다. 당신은 정답을 맞췄다. 2010년대 이후 음원 시장은 급격하게 고해상도화, 음원 파일화되어가고 있다. 음원 사이트에서 음원을 구입하는 것은 이것을 고민하는 것보다 압도적으로 쉽다.

하지만 그럼에도 불구하고 CD를 리핑하는 이유는 첫번째로는 음원사이트들이 음원으로 사기를 친 전적 때문에 제대로 된 파일이 올 것이라는 신뢰도가 꽤나 많이 하락했기 때문이고 (이는 그나마 개선되고 있다.) 두번째로는 그럼에도 불구하고 물리 매체를 구입하는 팬심과도 같은 게 있기 때문이다. 그리고 마지막으로는 여태까지 그래왔지만 앞으로도 계속 CD로 음반이 나올 것이기 때문이다. 수많은 CD를 가진 사람이 뭣하러 같은 걸 음원 파일로 사겠는가?

그래서 왜 EAC를 사용하는가?

그래서 도입부의 주제이고 내가 할 말의 시작인 질문이다. 일단 정확한 리핑을 해야 한다는 생각에 다다랐다면 압도적으로 고려해 볼만한 선택지이기 때문이다. 일단은 EAC는 여러 가지 과정을 통해 최대한 CD의 오류를 복구하려고 한다. 수십번 읽어서 그중 과반을 차지한 값을 채용한다거나, ODD를 직접 제어하거나 오프셋을 보정해서 오류를 최소화하려는 시도를 한다. 그리고 결과물을 검증할 수 있는 여러 수단을 제공한다.

그리고 결정적으로 무료이고 많이 알려져 있어서 사용법을 익히기가 쉽다. 그래서 수많은 오디오파일들은 90년대부터 EAC를 사용해 왔고, CD란 것이 멸종될 때까지 사용될 것이다.

그래서 앞으로 이 EAC란 프로그램에 대해서 알아보도록 하자.

참고자료

이 글을 쓰면서 아는 내용을 적은 것도 있었지만 여러 군데에서 자료를 참고한 것도 많다. 목록을 정리하니 필요한 사람은 참고하도록 하자.

여기서부터는 영어이다.

  • http://www.k-probe.com/ 이 프로그램을 쓰면 CD를 추출할 때 C1에러와 C2에러가 얼마나 나왔는지를 시각화해 준다.

PS : 위 글의 내용을 정리하고 내용을 추가해서 리브레 위키에 정리하였다.