recup roadmap / idées mpdbox depuis github/jducastel/phatbeat (à supprimer)
This commit is contained in:
108
mpdbox.md
Normal file
108
mpdbox.md
Normal file
@ -0,0 +1,108 @@
|
||||
# MPD BOX on Pimoroni's Phat Beat / pirate radio
|
||||
1. Use [Python Music Player Daemon](https://www.musicpd.org/) as a service to play both local files and playlists (including radio urls) on the phat beat.
|
||||
|
||||
2. Use [beets](http://beets.io/) (optionnaly ?) to organize / import the local music library
|
||||
|
||||
3. Use [MPD client lib](https://www.musicpd.org/libs/python-musicpd/) in a python script running as a service. It will act as a MPD client to control the local MPD server service, through the phat beat buttons.
|
||||
|
||||
Others clients should be able to control played music through the local network. (Many android clients are available). Command-line client [mpc](https://linux.die.net/man/1/mpc) is available.
|
||||
|
||||
## Installation
|
||||
Install MPD (server/daemon) and MPC (client)
|
||||
```shell
|
||||
apt-get install mpd mpc
|
||||
```
|
||||
|
||||
`mpc` client won't be able to retrieve / adjust volume until editing configuration file at `/etc/mpd.conf` to replace line
|
||||
|
||||
```
|
||||
audio_output {
|
||||
mixer_type "hardware"
|
||||
}
|
||||
```
|
||||
|
||||
by
|
||||
|
||||
```
|
||||
audio_output {
|
||||
mixer_type "software"
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
### Disable PiVumeter
|
||||
|
||||
If you tried the VLC radio project before, you may have to [get rid of pivumter](https://forums.pimoroni.com/t/getting-rid-of-pivumeter/6187/2) like this :
|
||||
|
||||
> Try editing /etc/asound.conf and changing:
|
||||
```
|
||||
pcm.softvol_and_pivumeter {
|
||||
type softvol
|
||||
slave.pcm "pivumeter"
|
||||
control {
|
||||
name "PCM"
|
||||
card 0
|
||||
}
|
||||
}
|
||||
```
|
||||
> to:
|
||||
```
|
||||
pcm.softvol_and_pivumeter {
|
||||
type softvol
|
||||
slave.pcm "hw:0,0"
|
||||
control {
|
||||
name "PCM"
|
||||
card 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Removing `/etc/asound.conf` entirely will disable the `alsamixer` command, which may be used to set global sound level.
|
||||
|
||||
|
||||
## Roadmap
|
||||
client service script still to do. See ideas below.
|
||||
|
||||
### Controls
|
||||
Use button holding (next / prev) to cycle through available playlists.
|
||||
|
||||
### LED
|
||||
Visual feedback when using buttons (setting volume / browsing playlist(s)).
|
||||
|
||||
Replace Pimoroni's green pivumeter by a _rainbow_ one.
|
||||
Integrated within the _client_ service or decoupled ?
|
||||
|
||||
Something along this :
|
||||
|
||||
```python
|
||||
def set_volume(self, level=3):
|
||||
if level >= 0 and level <= 8:
|
||||
self.volume = level
|
||||
self.player.set_volume(self.volume*12) # 0-96
|
||||
self.show_volume(level)
|
||||
|
||||
def volume_up(self, pin):
|
||||
self.set_volume(self.volume + 1)
|
||||
|
||||
def volume_down(self, pin):
|
||||
self.set_volume(self.volume - 1)
|
||||
|
||||
def show_volume(self, level, saturation=1.0, value=0.2):
|
||||
phatbeat.clear()
|
||||
for i in range(0,8):
|
||||
# definition de la teinte en fonction de la "hauteur" du pixel
|
||||
# pour un effet "arc en ciel"
|
||||
# on divise 360° par 8 "crans" (=45°)
|
||||
# et on decale arbitrairement de 45° pour ne pas débuter sur rouge
|
||||
hue = 315 - 45*i # definition de la teinte (8 crans = 45°)
|
||||
if level > i:
|
||||
r, g, b = [int(x * 255) for x in colorsys.hsv_to_rgb(hue / 360.0, saturation, value)]
|
||||
phatbeat.set_pixel(7-i, r, g, b, 0.1, channel=0)
|
||||
phatbeat.set_pixel(7-i, r, g, b, 0.2, channel=1)
|
||||
phatbeat.show()
|
||||
|
||||
```
|
||||
|
||||
On the second led bar, show playlist or track progress ?
|
||||
|
||||
Maybe representing playlist as a color spectre and adjusting shown part of the spectre to available leds / size of the playlist ?
|
Reference in New Issue
Block a user