So I really really hate my phone, and with the headphone jack starting to wane in reliability I thought I'd take the opportunity to make some problems for myself.
Previously I'd use my phone with git-annex for Android to manage my music, but it was a chore with the on-screen keyboard and involved rooting my phone so I could manually trigger the media provider to recognise my new media.
So I promptly got on and ordered myself a Pi Zero, a Pimoroni pHat DAC and got to work making what has started out as a really ghetto mp3 player but turns out to be a really fun and exciting project.
I've been totally neglecting this project page, but not totally neglecting the Grimmplayer itself... Whilst I do bits and pieces here and there and never work on it full time, I'm now very much at a stage where it's a usable device which I can get a fast turnaround on user interface for. Since last update, it has:
Navigational buttons
An OLED display
A case (okay, a tobacco tin)
A rechargeable LiPo power supply
The beginnings of a library interface
skip/prev/vol+/vol-/play/pause controls
So here's a few images in the meantime until I get round to actually updating the parts list:
Yes, the battery is technically taped to the back. Yes I'm powering it over USB externally. Gotta do what you can so you can iterate - I don't doubt that I'll be looking to use a more suitable board with battery charging and a DAC integrated in to it at some point instead so I figure it's best to make the thing usable so you can figure out where to direct your efforts.
Not a lot to report over the last week, I've been too busy to really work on the player but I did do a couple of things:
Changed the address for the python client connecting to mpd from the loopback ipv4 address (127.0.0.1) to the host alias (localhost). This appears to have fixed a problem that when networked over USB the play button works because mpd is listening on ipv4, but when it's not it's onlly listening on ipv6 for reasons. No fucking idea, I'm going to blame systemd with no evidence and move on.
Added a .mpdignore file containing a splat to the .git directory of my music collection so that it will stop picking up on the actual media files and keep using the nicely named symlinks instead.
Not sure that I'll have much time to work on it, but the next step is probably adding the OLED screen.
Just added some super quick and super lightweight debounce code which I will likely have to delete very soon, but for now I can reliably pause and play music without having to press the button just right :)
Last night I took my breadboard proof-of-concept for having a button to play and pause the music (super simple using the super-easy python-mpd2 library) and made my first foray into veroboard prototyping, the result being what you can see in the picture here:
I was really lucky in that I managed to jam it on in such a way that I didn't have to solder it to the pi itself, so this is a really great stepping stone. I'd really like to use something a little more fun and multi-purpose for the actual final controls (I'm thinking a mouse wheel!), which makes being able to remove without desoldering a big plus point.
Additionally I managed to add some code in all of 10 minutes that will handle a long press and make it skip the current track, so already we're a long way ahead from the systemd (ew) script which just plays you that one 3TEETH album and you have to suck it up.
I'll be putting the current incarnation of the code on Github soonish. I also need to seperate out the ansible code for setting up the pi from a seperate project's repository.