Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Absolute Pitch

Lightweight FastAPI backend serving as a track embedding store for OpenSubsonic servers. Uses SQLite and sqlite-vec for 1024-dimensional vector similarity searches.

Run with Docker

docker run -d \
  -p 8100:8100 \
  -v ./data:/data \
  ghcr.io/xoconoch/abspitch:latest

Database is saved at /data/abspitch.db.

This is supposed to run in the same machine as your subsonic server. Since it lacks any form of authentication, it is highly encouraged not to expose to the public internet.

Once you have this running, you must populate it with the absmouth client so that you can actually start exploring your music collection.

Integrations

abspitch-nv: Navidrome plugin

Development

# Set up virtual environment and dependencies
python -m venv .venv
source .venv/bin/activate
pip install -e .

# Run the server locally
abspitch --host 127.0.0.1 --port 8100 --db abspitch.db

API Endpoints

Tracks

  • POST /tracks - Insert or replace track and its 1024-d embedding.
  • DELETE /tracks/{id} - Delete track and refresh artist average embedding.
  • GET /tracks - Paginated track list.
  • GET /tracks/count - Get total track count.

Similarity & Recommendations

  • GET /tracks/{id}/neighbors - K-nearest tracks (cosine similarity).
  • GET /tracks/{id}/neighbors/by-artists - K-nearest tracks filtered to list of artist IDs.
  • GET /artists/{id}/neighbors - K-nearest artists (cosine similarity of averaged track embeddings).
  • GET /sonic-path - Greedy path (playlist) connecting start and end track in embedding space.

About

Absolute Pitch: Lightweight recommendation engine for Subsonic servers

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages