룸톤 Roomtone 14
이 글은 룸톤 Roomtone 시리즈의 15번째 기록입니다. (총 22개)
오늘 한 일
- 구독 화면에서 결제 동선을 걷어냄. 체크아웃 버튼과 외부 브라우저 열기를 지우고, 「구독은 웹에서 가입합니다」 안내와 상태 새로고침만 남겼다. 결제 링크가 아니라 안내 문구라 누를 곳이 없다.
- 이유: 앱 안에 결제로 나가는 링크를 두면 플레이 외부결제 프로그램에 걸려 구독 수수료와 거래 보고 의무가 붙는다. 앱 밖에서 팔면 그게 없다.
- 매장 역할(venue)을 없앰. 공유 비밀번호 하나로 매장을 들이던 방식인데, 계정이 생긴 뒤로는 구독 회원이 곧 매장이라 역할이 겹쳤다.
- 이유: 비밀번호 하나만 새면 결제 없이 전곡이 열린다. 매장 직원 손을 타는 비밀번호라 더 위험하다.
- 역할을 관리자·회원·체험 셋으로 줄이고, 스케줄 등록과 재생목록 복제를 회원 몫으로 옮김. 복제 버튼이 매장 역할에만 붙어 있어 정작 돈 내는 회원이 못 쓰던 것도 함께 풀렸다.
- 스케줄 블록에 끝 시각을 넣어 구간으로 바꿈. 어느 블록도 덮지 않는 시간은 재생하지 않고, 다음 블록 시작에 저절로 다시 켜진다. 사실상 영업시간에만 자동 재생이 되는 셈이다.
- 스케줄을 목록에서 요일 × 30분 격자로 다시 만듦. 빈 칸을 길게 눌러 끌면 그 구간으로 블록이 생기고, 칠해진 칸을 누르면 편집·삭제가 뜬다.
- 요일을 체크박스로 바꿔 한 블록이 여러 요일을 덮게 함. 「매일」이 특수값이 아니라 전부 체크한 상태가 되어 매일과 특정 요일을 가르던 분기가 사라졌다.
- 겹치는 블록을 저장할 때 정리하게 함. 새로 칠한 게 이기고 기존 블록은 잘리는데, 요일이 겹치는 쪽만 시간에서 도려내고 안 겹치는 요일은 원래 시간대로 남는다.
- 스케줄 기준 시간대를 설정에서 고르게 함. 자동이면 기기 시간대를, 수동이면 고른 오프셋을 따른다.
- 검수 콘솔에 보류곡 검수 모드를 붙임. 곡을 훑어 듣고 승인·보컬 있음·삭제·건너뛰기를 숫자키로 누르면 바로 다음 곡으로 넘어간다.
- 이유: 보류가 400곡 넘게 쌓였는데 곡을 고르고 재생하고 상태를 바꾸고 다음을 찾는 반복이 곡당 1분씩 들었다. 곡 수를 줄이는 것보다 곡당 시간을 줄이는 쪽이 크게 먹힌다.
- 콘솔에 새 곡 반입 절차를 접이식으로 적어 둠. 프로젝트가 여럿이라 순서를 잊기 쉽고, 커버나 프롬프트가 없으면 업로드를 건너뛴다는 함정이 특히 안 보인다.
막힌 부분
- 넣은 설정 항목이 앱에 안 보였다.
- 원인: 실행 파일이 이틀 전 빌드였다. 코드에는 있었지만 화면이 보는 것은 옛 빌드였다.
- 해결: 다시 빌드해 확인했다. 기능을 넣은 날 바로 다시 굽는다.
정시 컷이 안 걸린 원인은 UTC와 로컬이 섞인 시각 계산이었다
시각에 맞춰 4초 페이드하고 넘어가는 전환을 만들었는데 정작 그 시각에 아무 일도 안 일어났다. 곡이 끝날 때 확인하는 쪽은 멀쩡한데 정시 타이머만 안 터졌다.
기준 시각을 「UTC + 9시간」으로 만들어 쓰고 있었다. 이러면 벽시계는 우리 시간인데 내부적으로는 UTC 표시가 붙은 값이 된다. 그런데 다음 경계 시각은 로컬 기준으로 만들고 있었다. 같은 「17:18」이라도 두 값의 내부 시각이 9시간 어긋나, 비교와 뺄셈이 전부 틀어진다.
2분 뒤 경계 → 현재 방식: 15시간 1분 뒤로 계산
고친 방식: 1분 18초 뒤 (정확)
- 해결: 경계도 같은 규약(UTC 표시 + 기준 시간대 벽시계)으로 만들어 맞췄다.
- 교훈: 시각을 「어느 시간대의 벽시계인가」와 「내부적으로 어느 기준인가」 두 축으로 들고 다니면, 한쪽만 맞아도 다 맞은 것처럼 보인다. 결과가 이상하면 계산식보다 두 값의 기준이 같은지를 먼저 본다.
격자는 30분 칸인데 설정은 분 단위라 표가 거짓말을 했다
격자가 각 칸의 시작 분만 검사해서, 분 단위로 잡은 블록이 잘못 그려졌다. 09:05~09:20은 아예 안 보이고, 09:15 시작은 09:30부터 칠해졌다. 재생은 분 단위로 정확히 도는데 표만 어긋난 상태였다.
- 해결: 시각 선택을 30분으로 반올림하고 서버도 30분이 아니면 거절한다. 앱을 거치지 않는 요청까지 막힌다.
- 남은 것: 짧은 구간이 필요한 자리는 별도로 다룬다. 매장이 정해진 시각에 자기 안내방송을 틀고 돌아오는 요구가 있는데, 30초 음원을 2분 블록에 넣으면 반복되고 격자에도 안 그려진다. 구간이 아니라 「지정 시각에 한 번 끼어들고 복귀」하는 것으로 설계를 잡아 뒀다.
보컬 검사가 곡의 한 토막만 보고 판정하고 있었다
보컬 의심 표시가 붙었는데 그 구간에는 목소리가 없고, 정작 허밍은 다른 자리에 있는 일이 반복됐다. 검사가 곡의 30~70초 40초만 떼어 판정하고 있었다. 허밍이 다른 데 있으면 놓치고, 그 구간의 색소폰이나 현악이 보컬로 새면 오탐이 난다.
검사를 여러 구간으로 넓히는 게 근본이지만, 이미 올라간 700곡을 다시 재는 데 열몇 시간이 든다.
- 해결: 어차피 사람이 한 번은 들어야 하는 곡이라, 듣는 방식을 바꿔 덮기로 했다. 1초 듣고 2초 건너뛰기를 곡 끝까지 반복하면 4분 곡을 80초에 통째로 훑는다. 허밍이 어디 있든 걸리고 품질 판단도 같은 한 번에 끝난다.
- 남은 한계: 검사 자체는 그대로라 표시를 온전히 믿을 수는 없다. 재생 막대 아래에 검사가 실제로 들은 구간을 칠해 두어, 표시가 어디서 나온 것인지는 보이게 했다.
마우스로 칠하는 동작을 넣었다가 물렀다
격자에 마우스로 끌어 칠하기와 블록 가장자리를 잡아 늘리는 동작을 넣어 달라고 했다가, 만들어 놓고 보고 물렀다. 매장 기기는 안드로이드 태블릿이라 마우스로 하는 조작은 제품에서 쓰이지 않는다. 데스크톱은 개발·예비용일 뿐이다.
- 해결: 되돌리고 터치 기준(길게 눌러 끌어 새 블록 추가)만 남겼다. 같은 걸 다시 만들지 않게 이유를 문서에 적었다.
다음에 할 일
- 반입을 검수 콘솔로 통째로 옮기기 — 파일을 콘솔에 끌어다 놓고 프롬프트도 콘솔에서 입력(프롬프트 엑셀 제거), 그다음 분류·변환·업로드를 버튼 하나로(반입 배치 파일 은퇴)
- 검수 대기 440여 곡 청취 — 승인·보컬·삭제 확정
- 얇은 채널 보강 — 산뜻한 시티팝, 잔잔한 재즈부터 수노로 채우기
- 계정별로 데이터 가르기 — 스케줄·커스텀 재생목록·업종을 로그인한 계정 기준으로 (두 번째 고객 전 필수)
- 매장 안내방송 — 지정 시각에 한 번 끼어들고 복귀. 음원은 서버에 올리지 않고 기기의 로컬 파일을 고른다
- 보컬 검사를 여러 구간으로 넓히고 점수와 위치를 저장하기
- 웹 가입·결제 페이지 만들기
- Creem 구독 상품 등록 — 결제 화면에 자동 갱신·무환불 다시 고지
- 파일 추출 차단 2단계 — 안드로이드가 암호문을 받아 직접 푸는 재생 경로
- 파일 추출 차단 3단계 — 기존 곡 일괄 재암호화, 운영 키 설정
- 검수 콘솔 끝잘림 18곡 페이드 처리
- 30초 미리듣기 컷
- 곡 제목을 한국어·영어 두 가지로
- 휴지통 30일 자동 정리 붙일지 검토
- 넓힌 키워드로 기존 곡 무드 백필
- 자동 분류가 안 된 5곡 에너지를 귀로 확정
- 기기 1대만 재생되도록 묶기
- 앱 화면 더 다듬기 — 카드·가로 스크롤, 자켓 4분할, 셔플·반복 점 표시
Series: 룸톤 Roomtone
1 | 룸톤 Roomtone 2 | 룸톤 Roomtone 1 3 | 룸톤 Roomtone 2 4 | 룸톤 Roomtone 3 5 | 룸톤 Roomtone 4 6 | 룸톤 Roomtone 5 7 | 룸톤 Roomtone 6 8 | 룸톤 Roomtone 7 9 | 룸톤 Roomtone 8 10 | 룸톤 Roomtone 9 11 | 룸톤 Roomtone 10 12 | 룸톤 Roomtone 11 13 | 룸톤 Roomtone 12 14 | 룸톤 Roomtone 13 15 | 룸톤 Roomtone 14 읽는 중 16 | 룸톤 Roomtone 15 17 | 룸톤 Roomtone 16 18 | 룸톤 Roomtone 17 19 | 룸톤 Roomtone 18 20 | 룸톤 Roomtone 19 21 | 룸톤 Roomtone 20 22 | 룸톤 Roomtone 21