Using mopidy for hardware all-in-one device - features compatibility?

Hi, may I ask for help with assessing Mopidy suitability for my hobby hardware all-in-one audio player project?

My previous All-in-one project was written in python + MPV backend + arduino via serial port https://github.com/pavhofman/plabs-player/wiki . I chose MPV backend since it supports CD audio playback nicely, is easy to control via unix sockets, and provides detailed feedback by registering callback events.

My current project https://github.com/pavhofman/aio is more grown up - touch TFT hooked to STM32 for local control, same touch TFT/STM32 for remote control via wireless serial port, analog volume control and selecting audio inputs by the STM32 controller, web interface using websockets/remi . The python server (with MPV currently as backend) communicates with other modules (touch GUI in the case, touch GUI in the remote control, physical volume control, physical analog inputs, via serializable messages.

The python server under development increasingly duplicates functionalities covered by Mopidy - multiple playlists, intended http MPD API for the existing MPD clients, planned online music databases etc). Therefore I would love to replace the MPV+my custom playlists with Mopidy + custom extensions/modules. However, I am not sure if it is viable:

For ease of use as a device I define sources of playback:

  • Files locally, on flash drives
  • CD medium + musicbrainz integration
  • internet streams organized into tree
  • amplifier analog intputs, soundcard SPDIF inputs
  • possibly others

The source specifications:

  • Each source has availability status (CD inserted/removed for CD, internet connectivity present for streams, flash drive inserted/removed for files, etc.).

  • Only available sources are offered in the GUI. Only one source is active at a time, switched by user. If the source becomes unavailable, the GUI offers other available sources to select from.

  • Each source defines its own saved playlists. Saved playlists of unavailable sources cannot be offered to users.

  • Some sources offer tree structure of tracks/streams - files as they are stored in folders, radio streams organized into tree by various criteria.

I wonder if it is possible to implement this notion of dynamically available/unavailable sources with Mopidy frontend/backend APIs. Also the tree structure of playlists - is it possible somehow?

I understand I would still do a lot outside of mopidy but I would love to use it for

  • playback functionality
  • saved playlists functionality
  • MPD API to existing MPD clients
  • multitude of existing extensions for online music databases

Currently my project is GPL’d but I would make the modules/extensions with Apache Licence compatible with Mopidy.

I very much appreciate any suggestions and opinions.

Best regards,

Pavel.