Beets: 음악 마니아를 위한 미디어 관리 도구
(beets.io)- Beets는 음악 컬렉션의 메타데이터를 자동 정리·보정해주는 오픈소스 음악 관리 도구
- MusicBrainz 데이터베이스를 활용해 앨범, 곡 정보 등을 자동으로 보완하고, 다양한 조작·검색 도구를 제공
- 플러그인 구조를 통해 앨범 아트, 가사, 장르, 템포, ReplayGain, 음향 지문 등 다양한 메타데이터를 가져오거나 계산 가능
- 중복 트랙 탐지, 누락된 트랙 확인, 오디오 포맷 변환, 웹 브라우저 기반 재생 등 기능 지원
- Python으로 직접 플러그인 개발이 용이해 확장성과 커스터마이징이 높은 음악 관리 환경 제공
Beets 개요
- Beets는 음악 컬렉션을 한 번에 정리하도록 설계된 음악 관리 자동화 도구
- 컬렉션을 카탈로그화하고, MusicBrainz 데이터베이스를 이용해 메타데이터를 자동 개선
- 이후 음악을 조작하고 접근할 수 있는 다양한 도구 세트를 제공
주요 기능
-
플러그인 기반 확장 구조로 거의 모든 음악 관리 작업 수행 가능
- 필요한 모든 메타데이터(앨범 아트, 가사, 장르, 템포, ReplayGain, 음향 지문) 를 가져오거나 계산
- MusicBrainz, Discogs, Beatport 등에서 메타데이터를 가져오거나, 파일명·음향 지문을 기반으로 추정
- 오디오 트랜스코딩을 통해 원하는 형식으로 변환
- 중복 트랙 및 누락된 트랙 탐지 기능 제공
- HTML5 Audio를 지원하는 웹 브라우저에서 그래픽 인터페이스로 탐색 및 재생 가능
확장성과 개발
- Beets가 원하는 기능을 지원하지 않을 경우, Python으로 간단히 플러그인 작성 가능
- 기본적인 Python 지식만으로 새로운 기능 추가 가능
설치 및 시작
- 설치 명령어:
pip install beets - 설치 후 Getting Started 가이드를 참고해 초기 설정 가능
- 업데이트는 Fosstodon의 @beets 계정을 통해 확인 가능
요약
- Beets는 자동 메타데이터 정리, 플러그인 확장성, 웹 기반 접근성을 갖춘 음악 관리 도구
- Python 생태계와의 결합으로 개발자 친화적 커스터마이징이 가능하며, 음악 애호가와 기술 사용자 모두에게 유용한 솔루션임
Hacker News 의견
-
내 컬렉션 중 일부가 어떤 DB에도 없다는 사람들에게는 직접 Musicbrainz에 추가하는 게 가장 좋은 해결책임
실제로 Musicbrainz에 항목을 추가하는 건 꽤 쉽고 재미있는 작업임.
스트리밍 릴리스나 Bandcamp의 경우 Harmony에 URL만 넣으면 대부분 자동으로 처리됨
Musicbrainz는 거의 모든 음악 관련 데이터를 표현할 수 있고, 전부 자유 라이선스로 제공됨. 대부분의 수정은 자동 적용되고, 일부만 7일간의 투표 절차를 거침- 하지만 모든 음악 메타데이터가 전 세계 DB에 들어가야 한다는 전제는 동의하지 않음
내 컬렉션에는 직접 편집한 하이브리드 트랙이나 친구 공연 녹음, 게임 사운드 캡처 등 개인적인 자료가 많음
이런 건 나만의 분류 체계로 관리하는 게 맞음. ISBN이 없는 스케치북을 도서관에 넣을 수 없는 것과 같음 - 와, Harmony는 진작 알았어야 했음. 그동안 Musicbrainz를 두 달 동안 수동으로 채우다가 포기했었음
- 하지만 모든 음악 메타데이터가 전 세계 DB에 들어가야 한다는 전제는 동의하지 않음
-
내 음악 라이브러리를 beets로 가져오느라 꽤 고생했음
상용 앨범은 문제없지만, 비상업적 릴리스나 팬 녹음은 모델이 맞지 않아 시간이 많이 걸림
그래도 beets는 훌륭한 도구임. 단, 상업 릴리스에서 벗어날수록 어려움이 커짐- Bandcamp나 Musicbrainz에 없는 상업 앨범 변형은 직접 Musicbrainz에 추가해서 해결했음. 10년 전 추가한 항목의 수정 알림도 아직 받음
- 팬 녹음이나 DIY CD-R은 표준 메타데이터가 없기 때문에 그냥 있는 그대로 가져오는 게 더 낫다고 생각함. 일단 첫 가져오기를 넘기면 beets는 정말 훌륭한 툴임
- 요즘은 어떤 툴로 음악 라이브러리를 관리하는지 궁금함. 스트리밍 시대에 직접 큐레이션의 즐거움을 다시 느끼고 싶음
- Bandcamp 자동 태깅 플러그인 beetcamp가 있어서 첫 문제는 어느 정도 해결됨
- 클래식 CD 태깅은 항상 어려웠음. Apple의 클래식 앱이 잘 해놨으니 그 방식을 참고해볼 생각임
-
Navidrome 같은 스트리밍 서버를 쓴다면 beets-alternatives를 추천함
라이브러리의 일부를 다른 구조로 동기화 및 변환할 수 있어서, 예를 들어 멀티디스크 앨범을 각 디스크별 폴더로 유지하면서도 스트리밍 서버 요구에 맞출 수 있음- 내가 좋아하는 프로젝트 중 하나는 beets-flask임
웹 UI로 자동 가져오기 파이프라인을 설정할 수 있고, 수동 단계도 쉽게 관리 가능함 - beets-alternatives로 앨범 아트 관리를 어떻게 하는지 궁금함
- 내가 좋아하는 프로젝트 중 하나는 beets-flask임
-
나는 장르(genre) 태그를 싫어함. 너무 단순화되어 있고 모호함
R.E.M. 같은 밴드를 뭐라고 분류해야 할지도 애매함. “라이브”나 “사운드트랙” 정도만 의미 있다고 생각함- 장르는 노래 공간의 한 볼륨(volume) 같은 개념임. 여러 장르를 동시에 지정할 수도 있고, crowd-sourced 사이트인 rateyourmusic.com처럼 투표로 조정할 수도 있음
- 장르 라벨링은 나쁘지 않다고 봄. “post hardcore 좋아하는데 비슷한 거 추천해줘”라고 말하는 게 훨씬 효율적임.
‘alternative’는 시대마다 의미가 달라졌을 뿐임 - King Gizzard and the Lizard Wizard — 장르: 예
- 나도 장르 태그를 싫어하는 편이라 반가움
- 아티스트 단위로는 별로지만 앨범 단위로는 유용하다고 생각함. 나는 rymscrap으로 RYM 데이터를 가져와 확장 메타데이터로 씀
-
며칠 동안 beets 설정을 다듬은 뒤로는 완전히 만족함
내 워크플로우는 Bandcamp에서 앨범 구매 → zip 다운로드 →beet import실행
그러면 beets가 자동으로 압축 해제, Musicbrainz 매칭, 메타데이터 업데이트, 파일 구조 정리까지 해줌- 나도 거의 같은 방식으로 씀. beets로 대부분 처리하고, 안 되는 건 Picard로 보완함
- 그런데 Picard에서 수정한 걸 beets가 덮어쓰지 않음?
-
Navidrome과 잘 맞는다는 이유로 beets를 써봤지만, 내 용도에는 노력 대비 효용이 낮아서 결국 포기했음
지금은 태깅을 거의 안 하고, KDE Elisa처럼 폴더 기반으로 즉석 재생목록을 만들 수 있는 대안을 찾고 있음 -
CD 리핑을 beets 워크플로우에 자동화하는 방법 아는 사람 있음?
-
beets를 좋아하지만, 장르를 너무 세분화하지 않고 넓은 카테고리로만 두고 싶음
그런데 자동 태깅이 수백 개의 세부 장르를 만들어냄- lastgenre canonicalization을 켜고 count=1로 설정하면 해결 가능함
- 나는 lastgenre 플러그인에 짧은 화이트리스트를 둬서 해결함
- 나도 같은 문제를 겪음. “Post Rock Jazz Fusion” 같은 태그는 쓸모없음
클래식처럼 여러 버전이 있는 음악은 태깅 구조가 대중음악 중심이라 어려움
-
beets를 살펴봤는데, 자동화 중심이라 새로 나온 앨범엔 잘 안 맞는 것 같음
지금은 MusicBee로 수동 태깅 후 Navidrome 서버에 복사하는 방식임
beets가 내 워크플로우에 맞을지 궁금함- 나도 MusicBee를 쓰고, Bandcamp 태그를 기반으로 Discogs 규칙에 맞게 정리함
예전 CDDB 시절의 엉망인 태그 경험 때문에 직접 커스터마이징을 하게 됨
FLAC으로 교체하려다 기존 MP3 메타데이터와 매칭이 너무 복잡해서 포기함. 결국 “320k면 충분함” 결론에 도달함 - 현재 태그만으로도 충분히 관리 가능해서 beets는 사용하지 않음
- Picard나 Foobar로도 가능하지만, beets는 파일명 기반 자동 태깅과 Navidrome 연동이 가능함
- 새 릴리스를 자주 추가한다면 MusicBrainz에 직접 등록해야 함. 나도 지금까지 2,697개 릴리스를 추가했음
- 나도 MusicBee를 쓰고, Bandcamp 태그를 기반으로 Discogs 규칙에 맞게 정리함
-
beets의 기능은 마음에 들지만, 대량 가져오기 시 진행 표시나 안정성이 부족함
충돌 시 진행 상태가 날아가는 게 아쉬움.
새로운 음악이 감지되면 자동으로 백그라운드에서 처리해주는 워커가 있으면 좋겠음
예전엔 betanin이 그 역할을 했지만 지금은 wrtag로 대체된 듯함
그래도 가져오기 이후에는 beets 방식이 꽤 잘 작동함