I am ripping this apart into pieces. Once I finish incorporating streaming media sources in it, hopefully all the moving pieces will fall again together. Also, I badly want to replan the UI.
under development
Exploratory music player
Blackbird lets you explore your beets library in acoustic feature space.
-
Initialize a beets library
-
Install blackbird
npm install -g lepisma/blackbird
-
Install python dependencies
# Navigate to source (in local node installation directory, or clone this repo) cd ./utils pip install -r requirements.txt
-
Run
blackbird-setup init
to initialize configuration files. -
You might need to rebuild
sqlite3
. See here. -
Compile sass with
npm run build
if changes are made. -
beets
imports will automatically put songs in blackbird database. Following commands are added tobeets
.# Generate sequential features for given query beet features # Generate coordinates from the sequential features using specified method beet coords --type [mean, lstm]
-
Start with
blackbird
MFCC coefficients of size (20, N) are generated when beet features
is called. N depends on length of song, block_reduced (mean) using a block of size (1, 100).
When beet coords
is called with mean
option, a clipped mean vector of size 20 is used as representation of each song. With lstm
option, a keras lstm encoder-decoder model is loaded and resulting middle vector is used as representation. Both cases use TSNE to reduce the 20 vector to 2 and provide coordinates for visualization. Lookout for training notebook and pre-trained models in ./utils
.
-
a
/artist
→ Artist modeView songs by artist of current song
-
am
/album
→ Album modeView songs from album of current song
-
s <term>
/search <term>
→ Search modeFilter using search query.
_space_
in query is intersection,+
is union,-
is except -
f
/free
→ Free mode. View all items -
sim
/similar
→ Sort in-mode according to similarity with current song -
cap <n>
/artistcap <n>
→ Filter artists with less thann
songs -
n <n>
/new <n>
→n
recent imports -
r
/repeat
→ Toggle repeat -
slp <n>
/sleep <n>
→ Sleep after playingn
songs. Set negativen
for reset. -
l
/love
→ Mark songs as loved in last.fm -
lfm
/lastfm
→ Toggle last.fm integration -
d
/download
→ Download music from youtube. First command opens youtube, second lets you check metadata for download. Needs ffmpeg for saving mp3s.
- ctrl+alt+<right> → Next song
- ctrl+alt+<left> → Previous song
- ctrl+alt+<space> → Play/pause
- ctrl+alt+<down> → Hide to tray
- ctrl+alt+<up> → Pop to front
- alt+x → Enter command (while window active)
- ctrl+w → Exit
There is an emacs package for reading lyrics of current song (./utils/emacs/blackbird.el
).
blackbird is under development and therefore has crappy code structure and documentation. Feature addition/removal (and occasional refactoring) keeps happening. Please file issues here.