82 lines
2.4 KiB
Markdown
82 lines
2.4 KiB
Markdown
# musicpom
|
|
|
|
PyQt5 music library manager and audio player for Linux, inspired by MusicBee & iTunes
|
|
|
|
## Installation:
|
|
___
|
|
clone the repo
|
|
|
|
install system packages
|
|
```bash
|
|
sudo apt install ffmpeg python3-pyqt5 virtualenv
|
|
```
|
|
|
|
additional packages needed for wsl
|
|
```bash
|
|
sudo apt install gstreamer1.0-plugins-good
|
|
```
|
|
|
|
create environment
|
|
```bash
|
|
cd musicpom
|
|
virtualenv venv
|
|
source venv/bin/activate
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
run
|
|
```bash
|
|
python3 main.py
|
|
```
|
|
## Editing the UI
|
|
___
|
|
i use Qt Designer, so download that if you want to try editing the UI. good luck
|
|
```bash
|
|
# generate python ui from qt designer .ui file
|
|
pyuic5 ui.ui -o ui.py
|
|
# shell script to do the same thing
|
|
./create_ui.sh
|
|
```
|
|
## Config
|
|
___
|
|
config file and databases (libraries) are stored in user home directory `.config` folder
|
|
```bash
|
|
cd ~/.config/musicpom
|
|
# you should see config file and db folder
|
|
config.ini db/
|
|
```
|
|
|
|
## Todo:
|
|
|
|
- ~~right-click menu~~
|
|
- ~~editable lyrics window~~
|
|
- ~~batch metadata changer (red highlight fields that have differing info)~~
|
|
- ~~playlists~~
|
|
- ~~delete songs from library (del key || right-click delete)~~
|
|
- ~~improve audio visualizer - logarithmic x-axis ISO octave bands - see Renoise~~
|
|
- ~~when table is focused, start typing to match against the primary sort column~~
|
|
- ~~remember last window size~~
|
|
- ~~automatically fix broken config before loading app (new config options added)~~
|
|
- ~~allow spectrum analyzer to fall when playback stops or song is paused~~
|
|
- ~~ability to delete playlist~~
|
|
- ~~jump to currently playing song~~
|
|
##### QMediaPlaylist
|
|
https://doc.qt.io/qtforpython-5/PySide2/QtMultimedia/QMediaPlaylist.html#PySide2.QtMultimedia.PySide2.QtMultimedia.QMediaPlaylist
|
|
- playback modes (normal, repeat playlist, repeat 1 song, shuffle)
|
|
> Use `PySide2.QtMultimedia.QMediaPlaylist.PlaybackMode` ?
|
|
> Use `PySide2.QtMultimedia.QMediaPlaylist.shuffle()` ?
|
|
- autoplay next song in all modes
|
|
> Use `PySide2.QtMultimedia.QMediaPlaylist.next()` after implementing playlist?
|
|
- playback rate audio quality fix?
|
|
> https://doc.qt.io/qtforpython-5/PySide2/QtMultimedia/QAudioDecoder.html#qaudiodecoder
|
|
> Since Qt 5.12.2, the url scheme gst-pipeline provides custom pipelines for the GStreamer backend.
|
|
```py
|
|
player = new QMediaPlayer;
|
|
player->setMedia(QUrl("gst-pipeline: videotestsrc ! autovideosink"));
|
|
player->play();
|
|
```
|
|
##### misc
|
|
- database playlist autoexporting
|
|
- .wav, .ogg, .flac convertor
|
|
- automatic "radio" based on artist or genre
|