프로젝트 소개

Kalinka는 Raspberry Pi 또는 모든 Linux 머신을 스마트폰, 데스크톱 앱 또는 브라우저에서 제어하는 자체 호스팅 음악 플레이어로 바꿔줍니다. 서버가 라이브러리를 보관하고, 별도의 렌더러가 ALSA에 직접 접근하여 재생을 수행하므로 같은 머신이나 각 앰프 옆의 Pi에서 실행할 수 있습니다. 파일은 로컬에 유지됩니다: 계정도, 텔레메트리도 없으며, 시맨틱 검색은 기기에서 실행됩니다. 두 가지 선택적 네트워크 기능이 있습니다 — 메타데이터 조회(MusicBrainz, Wikidata, Deezer, Cover Art Archive)와 매시간 릴리스 확인입니다. 설치 옵션으로는 Raspberry Pi용 완성 이미지 플래싱, Debian 13, Raspberry Pi OS(64비트) 또는 Ubuntu 24.04용 원커맨드 설치 스크립트, 가상 머신 사용이 있습니다. 앱이나 브라우저의 설정 마법사가 음악이 어디에 있고 소리가 어디로 나가야 하는지 묻으며, 편집할 설정 파일이 없습니다. 주요 기능: - 디렉터리 감시와 메타데이터 복구를 포함한 라이브러리 인덱싱. 키를 제공하면 AcoustID 지문 인식도 포함되며, 아트워크 추출, 캐싱 및 생성도 지원합니다. - Smart Search: "dreamy ambient guitar"와 같은 자연어 쿼리를 CLAP 모델로 오디오를 분석하여 매칭합니다. Jamendo는 미리 빌드된 인덱스와 매칭됩니다. 플러그인별로 선택적 활성화됩니다. - C++ 렌더러를 통한 비트 퍼펙트 재생으로 ALSA에 직접 접근하며, 최대 192 kHz / 24비트의 FLAC 및 MP3를 지원하고, 동일 포맷 트랙 간 갭리스 재생이 가능하며, 소프트웨어 볼륨이 활성화되지 않는 한 샘플을 변경하지 않습니다. - 네트워크상의 모든 박스에 있는 렌더러가 출력으로 나타나고, mDNS로 서버를 검색하며, 자체 업그레이드합니다. - 브라우저 플레이어는 모든 브라우저를 리모컨이자 출력으로 만듭니다. - 플러그인은 런타임에 발견되는 일반 Python 패키지입니다. My Library와 Jamendo가 기본 포함되어 있으며, MusicCast는 Yamaha 볼륨과 전원을 처리합니다. - Settings에서의 실시간 구성으로, 일반 필드의 간단한 계층과 about:config 스타일 검색을 제공합니다. - 자체 업데이트: 서버가 매시간 릴리스를 확인하고 재생이 중지된 조용한 시간에 자동 업그레이드할 수 있습니다. 서버, 플러그인, 브라우저 플레이어 및 렌더러가 함께 업데이트되며, 렌더러가 먼저입니다. 요구 사항: 64비트 OS(arm64 또는 amd64). 재생과 라이브러리에는 Raspberry Pi 3 / Zero 2 W 또는 512 MB RAM을 갖춘 모든 arm64/amd64 박스가 필요합니다(1 GB가 쾌적함). Smart Search에는 2 GB RAM을 갖춘 Raspberry Pi 4B 또는 2 GB 이상의 모든 arm64/amd64 박스가 필요하며, 약 1 GB의 추가 디스크가 필요합니다. 설치별로 토글할 수 있습니다. 비트 퍼펙트 동작은 렌더러에 달려 있습니다. 기본 C++ 렌더러는 사운드 카드와 직접 통신하며 지시하지 않는 한 오디오를 변경하지 않습니다. 소프트웨어 볼륨이 예외입니다. 앱은 경로가 1:1인지 표시합니다: hw:는 샘플을 변경 없이 받고, plughw:는 리샘플링 및 리포맷하며, default 또는 사운드 서버는 믹싱합니다. 브라우저 내 재생은 브라우저 오디오 스택을 거치므로 갭리스나 비트 퍼펙트를 보장하지 않습니다. 문서는 설치, 첫 실행 설정, 앱 매뉴얼, 아키텍처, 개발, 렌더러 설계, 어플라이언스 이미지 및 릴리스를 다룹니다. 프로젝트는 토론 스레드에서 테스트 피드백을 환영합니다. 소스 코드는 GPL-3.0-or-later이며, 시각적 자산은 저자 허가가 필요한 별도 라이선스를 사용합니다. 제3자 약관은 THIRD-PARTY-NOTICES.md에 나열되어 있습니다.