musicpom/README.md
2025-04-15 13:46:13 -04:00

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