룸톤 Roomtone 1
이 글은 룸톤 Roomtone 시리즈의 2번째 기록입니다. (총 22개)
오늘 한 일
- 기획 문서 검토
- 빈 구멍을 메움 — 파일럿을 언제 성공으로 볼지, 음량은 어떻게 맞출지, AI로 만든 음원의 저작권이 인정되지 않으면 보증을 어떻게 쓸지
- 다른 프로젝트에서 쓰던 작업 원칙과 보안 검사 항목을 그대로 옮겨 심음
- 웹으로 한 벌 만들어봄
- 곡 올리기·태깅·재생목록 편성·셔플 재생까지. 백엔드는 Cloudflare Workers와 D1, 음원은 R2
- 음원은 재생 직전에 곡 단위로 서명한 주소를 발급해서만 닿게 함
- 이유: 저장소를 공개해두면 주소만 알면 누구나 받아갈 수 있다
- 매장용 전용 앱을 Flutter로 새로 만듦
- 로그인 → 재생목록 → 셔플 연속 재생. 켜지면 마지막에 틀던 목록을 이어서 틈
- 이유: 매장 기기는 정전이나 재부팅 뒤에 사람 손 없이 다시 나와야 한다
- 갤럭시에서 화면을 꺼도 계속 재생되는 것까지 확인
- Windows에서도 같은 코드로 소리가 나는 것 확인
- 로그인 → 재생목록 → 셔플 연속 재생. 켜지면 마지막에 틀던 목록을 이어서 틈
- 관리 화면을 앱 안으로 옮김
- 곡 목록·필터·업로드·태깅·재생목록 편성 전부
- 이유: 관리를 웹에 남기면 같은 로직이 웹과 앱 두 벌이 되고, 한쪽만 고쳤을 때 동작이 갈린다
- 운영자와 매장이 로그인으로 갈려서 보이는 화면이 달라짐
- 곡 목록·필터·업로드·태깅·재생목록 편성 전부
- 카탈로그를 쓸 만하게 다듬음
- 파일을 화면에 끌어다 놓으면 올라감
- 곡마다 대표 이미지, 곡 길이, 등록일 표시
- 무드를 5종에서 12종으로 늘림
- 이유: 5종으로는 매장 성격을 갈라 담기에 모자랐다. 트로피컬 하우스 한 곡을 “경쾌” 하나로만 표현할 수 없었다
- 프롬프트를 나중에 채워 넣어도 거기서 태그를 뽑을 수 있게 함
- 생성 엔진은 전에 쓴 값을 다시 고를 수 있게
- 재생 화면 개편
- 재생목록·새로 등록된 곡·인기있는 곡 세 묶음으로 나눔
- 곡 이름·장르·무드로 찾기
- 인기 순서를 만들려고 재생 횟수를 세기 시작함
막힌 부분
- 웹으로 갈지 전용 앱으로 갈지 하루 종일 정하지 못했다
- 결정 근거: 같은 시장의 라임덕을 찾아보니 웹 플레이어를 앞세우면서 윈도우 설치형도 따로 두고 있었다. 둘 중 하나를 고르는 문제가 아니라 순서 문제였다
- 남은 판단: 웹으로 파일럿을 돌려 무엇이 실제로 아쉬운지 본 뒤 전용 앱을 얹는다
- “브라우저 탭으로는 시간대 자동 전환이 안 된다”고 문서에 적어둔 게 사실과 달랐다
- 원인: 소리를 내고 있는 탭은 브라우저가 타이머를 조이지 않아서 전환이 정상 동작한다
- 해결: 문서에 정정 표시와 함께 바로잡음. 전용 앱이 필요한 진짜 이유는 자동 시작·오프라인·기기 제한·파일 추출 차단 네 가지로 좁혀졌다
- 음원을 파일째 빼가는 걸 막을 수 있는지가 방향을 갈랐다
- 결정 근거: 웹에서 그 수준을 맞추려면 큰 서비스들이 쓰는 DRM이 필요한데 지금 규모에 과하다. 전용 앱이면 음원을 암호화해두고 재생할 때만 풀어서 훨씬 싸게 된다
- 남은 한계: 스피커로 나온 소리를 녹음하는 건 어느 쪽으로도 못 막는다. 이건 감수하기로 했다
- Windows에서 빌드는 되는데 재생이 죽을 뻔했다
- 원인: 쓰던 오디오 패키지에 데스크탑 구현이 없어서 플러그인 목록이 비어 있었다. 빌드는 성공하고 실행할 때 터지는 종류였다
- 해결: 데스크탑용 오디오 백엔드를 따로 끼우고, 모바일과 데스크탑을 시작할 때 갈라줌
- 앱에서 백스페이스가 안 먹어 글자를 지울 수 없었다
- 원인: 한글 입력기와 얽힌 프레임워크 버그. 우리 코드 문제가 아니었다
- 해결: 프레임워크 버전을 올려서 해결. 조합이 끝났다고 잘못 알리는 문제가 최근 버전에서 고쳐져 있었다
- 프롬프트가 부실하면 자동 태깅이 소용없다는 걸 확인했다
- 원인: “집 편안” 두 단어짜리 프롬프트에서는 장르를 뽑을 수 없다. 반대로 악기와 장르가 적힌 프롬프트에서는 거의 다 뽑힌다
- 남은 판단: 도구를 고치기 전에 프롬프트를 자세히 쓰는 습관이 먼저다
다음에 할 일
- 음원을 암호화해서 파일째 빼가지 못하게 하기
- 시간대별로 재생목록이 알아서 바뀌게 하기
- 기기 1대만 재생되도록 묶기 (요금제의 과금 단위라서 필요)
- 기기를 켜면 앱이 알아서 시작되게 하기
- 음량 맞추는 걸 재생할 때가 아니라 곡을 올릴 때로 옮기기
- 실제 공간에 2주 틀어 보고 무엇이 실제로 아쉬운지 확인하기
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