10월은 주로 두 가지에 매달렸습니다. reTONE이 USB DAC로 오디오를 직접 보내게 하는 것, 그리고 NAS나 다른 폰에 있는 음악을 재생하는 것입니다. 그 과정에서 Bluetooth 리모컨과 Android 4.0 지원도 더해졌습니다. 모든 변경 사항은 다운로드 페이지의 릴리스 기록에 있습니다.
포타페스 오사카에서 시험해 보다 (10월 3일)
10월 3일, 휴대용 오디오 전시회인 포타페스 오사카에 reTONE을 내놓았습니다. 거의 실험 삼아서였습니다. 부스 한쪽 구석에 두었고, 솔직히 아무도 오지 않을 거라고 생각했습니다. 그런데 오디오 전시회에 있는 것은 거의 전부 하드웨어라서, 테이블 위에 늘어놓은 묘하게 오래된 스마트폰들이 사람들의 눈길을 끌었습니다. 많은 분이 걸음을 멈추고 이게 뭐냐고 물었습니다. 아이디어를 시험해 보는 중이라고 설명하자, 몇몇 분은 꼭 갖고 싶다고 했습니다. 그냥 오래된 기기를 좋아하는 분들도 있었고, 집에 오래된 폰이 아직 있다고 말해 준 분들도 있었습니다. 반응이 이렇게 많다는 데 놀랐습니다.
무언가를 만들 때면 저는 늘 누구나 번거로움 없이 쓸 수 있는 것이었으면 합니다. 한 사람에게만 맞거나 한 대만 존재하는 일회성 물건에는 별로 끌린 적이 없습니다. 그래서 어떤 형태로든 공개하는 것은 처음부터 계획이었습니다. 몰랐던 것은 이런 물건을 정말 원하는 사람이 있느냐였습니다. 그 반응이 좋은 쪽으로 답을 주었고, 그때 제대로 공개할 준비를 하기로 마음먹었습니다.

USB DAC, 험난한 길 (0.64~0.88)
오래된 Android 폰에 USB DAC를 꽂으면 대개는 아무 일도 일어나지 않습니다. Android가 USB DAC를 표준으로 오디오 출력으로 다루게 된 것은 5.0부터이고 (그전에는 제조사 재량이었습니다), 그래서 대부분의 오래된 폰은 DAC를 어떻게 다뤄야 할지 모릅니다. 새 Android라고 늘 나은 것도 아닙니다. 테스트한 폰 하나는 DAC에 닿기 전에 모든 것을 조용히 48 kHz/16비트로 변환하고 있었습니다.
그래서 reTONE은 이제 Android의 오디오 시스템을 건너뛰고 DAC와 직접 주고받습니다. 그 결과 Android 4.1을 쓰는 폰도 곡 원래의 샘플레이트로 USB DAC에 음악을 보낼 수 있습니다. 제 생각에는 이것이 reTONE이 하는 가장 큰 일입니다.
여기까지 오는 길은 꽤 험했습니다.
맨 처음 나온 소리는 여덟 배 빨랐습니다. 재생을 누르자 다람쥐가 뉴스를 읽는 듯한 소리가 났습니다. 전송마다 담는 오디오의 양을 잘못 정했던 것인데, 그걸 고치자 정상적으로 재생되었습니다. 그래도 웃음이 나왔습니다.
이달 가장 마음에 든 버그: 모든 곡을 0.941배속으로 재생하는 오래된 폰. 이 숫자는 정확히 16/17입니다. 폰의 USB 하드웨어가 16칸마다 빈칸을 하나씩 끼워 넣고 있어서, DAC는 필요한 오디오의 16/17만 받고 있었습니다. 보정을 넣었습니다. 그러자 전혀 다른 폰이 그 보정 때문에 1.14배속으로 재생하기 시작했습니다. 네, 보정을 보정해야 했습니다.

그다음은 도무지 사라지지 않는 지직거림이었습니다. reTONE을 고쳤습니다. 그대로였습니다. 설정을 바꿨습니다. 그대로였습니다. 알고 보니 폰 자체의 Wi-Fi였습니다. Wi-Fi를 끄면 조용, 켜면 지직. 처음부터 Wi-Fi였습니다. USB DAC에서 지직거림이 들리면 먼저 비행기 모드를 시도해 보세요.
그리고 어느 저녁, 2012년 테스트 폰이 곡 도중에 재부팅되었습니다. 배터리 탓이라고 생각했습니다. 틀렸습니다. reTONE이 충돌한 뒤 스스로 다시 시작해 DAC를 다시 잡았고, 그러자 폰 자체의 시스템이 쓰러졌던 것입니다. 폰의 시스템은 앱이 어찌할 수 없지만, reTONE이 애초에 충돌하지 않게 할 수는 있으므로 그쪽을 고쳤습니다.
지금의 상태: 동작하는 폰과 DAC의 조합은 모두 올바른 속도로 끊김 없이 재생되며, 2012년 테스트 폰은 배터리로 동작하는 DAC에 24비트/192 kHz 파일을 변환 없이 거뜬히 보냅니다. 아직 풀리지 않은 문제도 있습니다. USB 기기를 지원한다고 하면서 실제로는 그렇지 않은 폰이 있고, 폰에서 전원을 받는 DAC는 오래된 하드웨어에서 인식되지 않을 때가 있습니다.
리샘플러 다시 점검하기 (0.60~0.68)
폰이 곡을 원래의 샘플레이트로 재생할 수 없으면 reTONE이 변환합니다. 오래된 Android에서는 이제 모든 FLAC과 WAV에서 그렇게 하므로, 변환을 제대로 들여다보았습니다. 처음 버전은 고역의 맨 위를 조금 깎아 냈고, DSD 변환기는 초음파 성분 일부가 가청 대역으로 접혀 내려오게 했습니다. 둘 다 다시 만들었습니다.
그리고 조금 민망한 순간이 왔습니다. 바로 이 웹사이트에 실을 주파수 응답 그래프를 만들다가, 다시 만든 필터가 자기 목표에 못 미친다는 것을 알아챘습니다. 많이는 아니지만 목표는 목표이니, 다시 고쳤습니다. 웹사이트용 그래프가 그걸 잡아낼 줄은 몰랐습니다.
솔직히 말씀드리면, 차이는 아주 작고 들린다고 약속하지는 않겠습니다. 말씀드릴 수 있는 것은 수치가 이제 있어야 할 자리에 있다는 것입니다. 가청 대역 전체에서 평탄하고, 변환이 더하는 것은 들리기에는 한참 작습니다.
NAS나 다른 폰을 라이브러리로 (0.80~0.88)
reTONE은 이제 집의 NAS나 reTONE을 쓰는 다른 폰에 있는 음악을 재생할 수 있습니다. 곡은 재생하면서 오래된 폰에 복사되므로, 한 번 불러온 곡에는 네트워크가 더 이상 관여하지 않습니다.
첫 버전은 파일 전체가 다운로드될 때까지 기다리게 했고, 큰 하이레조 곡이면 약 23초가 걸렸습니다. 다운로드하면서 재생하도록 하자 대부분은 해결되었지만, 큰 WAV 파일 하나는 여전히 시작까지 19초가 걸렸습니다. 그 19초 중 15초는 진짜 오디오가 들어가기도 전에 오래된 폰이 0으로 가득 찬 빈 파일을 쓰는 시간이었습니다. 그 단계를 건너뛰자 2초로 줄었습니다. 0을 쓰지 않는 것만으로 19초가 2초가 되었습니다.
그 밖에도 놀란 일이 두어 가지 있었습니다. 커버 이미지가 엄청나게 큰 곡은 아예 재생되지 않았습니다. 파일의 앞부분이 온통 그림이고 음악이 없었기 때문입니다. 그리고 두 폰 사이의 공유가 한 번 실패했는데, 한쪽의 시계가 꼬박 하루 어긋나 있었기 때문이었습니다.
자신의 폰에서의 공유는 일부러 엄격하게 했습니다. 페어링한 reTONE 기기만 들을 수 있고, 두 폰에 같은 여섯 자리 코드가 표시되어 확인하며, 한 시간 동안 쓰지 않으면 공유가 저절로 꺼집니다. 지금까지는 제 컴퓨터의 작은 서버와 reTONE 자체로만 테스트했고, 시판 NAS로는 테스트하지 않았습니다.
Bluetooth 리모컨 (0.71~0.72)
왜 리모컨일까요? 주로 편리해서입니다. 오래된 폰은 앰프에 꽂아 두거나 가방에 넣어 둔 채, 이미 손에 든 폰으로 곡을 고를 수 있습니다. 배터리 이유도 있습니다. 오래된 폰에서는 대개 화면이 가장 많은 전력을 씁니다. 화면을 꺼 두면 배터리가 훨씬 오래갑니다.
이제 그것을 Bluetooth로 할 수 있습니다. 연결되어 있는 동안 평소 쓰는 폰의 reTONE이 오래된 폰을 그대로 비춥니다.
첫 버전에서는 음량만 빼고 모든 것이 동작했습니다. 음량 명령이 "+1"이었는데, Android 4.1은 앞에 더하기 기호가 붙은 숫자를 해석하지 못했습니다. 글자 하나 때문이었습니다. Android 폰끼리만 동작하며, 첫 연결 때는 라이브러리를 넘겨받느라 잠시 시간이 걸립니다.
Android 4.0으로 돌아가다 (0.84~0.86)
Android 4.0 음악 플레이어에서 reTONE을 돌리고 싶은 사람이 있어서 (그 사람은 저였습니다), 지원 범위를 4.1에서 4.0까지 넓혔습니다. 골치 아팠던 점: 4.0에서는 시스템에 없는 것을 호출하면 일반적인 오류 처리로는 잡히지 않는 방식으로 실패합니다. 그런 곳을 하나하나 손으로 찾아내야 했습니다.
새로 넣은 앱 내 업데이트 확인도 같은 벽에 부딪혔습니다. 확인하는 서버가 Android 4.x에는 아예 없는 새로운 종류의 보안 연결만 받기 때문에, 그런 폰에서는 reTONE이 안전하게 확인할 수 없다고 알려 줍니다. Android 4.0~4.0.2는 아직 실기에서 테스트하지 않았습니다.
그 밖의 변경
- DSD 곡의 시작 부분에서 나던 작은 클릭음을 수정했습니다.
- Silent DAP mode를 끈 뒤에도 알림음이 음소거된 채로 남는 경우가 있던 문제를 수정했습니다.
- Apple Lossless (ALAC) 재생을 추가했습니다.
- 새 Android에서 앨범 아트가 사라지던 문제를 수정했습니다.
- 가로로 든 태블릿과 폴더블용 레이아웃을 추가했습니다.
- 알림, 잠금 화면, Bluetooth 기기에서의 재생 조작을 추가했습니다.
- 기본값이 꺼짐인 Network features를 추가했습니다.