This is not a thread to debate whether we need the MediaAPI or not but just to see what ideas or guidance is living out there.
In HS2 we had a musicAPI which was pretty much hidden from any HS control screens and just a way to communicate between PIs and HS Touch enable devices. The API was limited and rigid and had pre-baked in limited ways to navigate content, but only music content. The good thing was it didn't clutter any device management pages AND it allowed a user friendly solution for those who were creating HSTouch screens.
In HS3 we had a MediaAPI which had all the right intentions, and I'm sure opinions will differ here, but couldn't get enough support from the HS team to really make this live up to its potential. In my opinion, it appeared that when it was actively being working on, it was pulled towards making the MediaAPI work like the musicAPI, so that (by now long abandoned) PIs such as iTunes and MediaPlayer would work in HS3. I think most of us developers who implemented the MediaAPI got most of it working, but for me, it needed a lot more TLC to make it a robust interface. I never got the "new navigation" mechanisms to work for other content then music and the biggest concern was that it was chatty like crazy. I could see HS Touch screens, over and over, requesting large parts of the track database creating very unresponsive HST screens. So let's put that aside ...
In HS3, we had a new way to create parent/child relationships and we had device types that could (at some point in the future) be used to create HST screen without using the MediaAPI. So I ended up creating something like 20-ish devices PER PLAYER. Things like player control, track info, next track, player position, Art, next track Art ......
So here is where hopefully this discussion starts, what do we do different for HS4?
In my opinion, my HS3 implementation for the Sonos PI was bad but I followed the guidance that was available then and I've seen some users create amazing HST implementation (albeit some of them ended up scripting the heck out of it all). I have 18 or so players so I have a few hundred devices that the PI created ..... just to be used for creating HST screens. Guess what ..... I stopped believing in managing a complex device like a Sonos player from an HST screen so they just clutter my device management pages and I'm sure it did for many reading this. So I actually would not like to repeat this, if I want to do better in HS4.
I like to simplify my thinking, so I see 2 major components to controlling media:
1. Player Control
It is my recommendation that these controls stay as HS device controls but all attached to the same root/parent, it could all be exact like it was provided in HS3 (the DeviceTypeInfo class). It is my recommendation that we revisit the class and add eTypes that we believe are missing. Then it is my second recommendation that the HS team provides a more optimized "device view" for a media device. See the example below turn the current device layout a bit into a mini player layout. This could be a defined layout by the HS team or allow us developers to customize it.
2. Content control
This part tends to have a few pieces to it. Some sort of a pane where you start navigating up/down, select etc and some other pane which tends to represent your selection (or queue). The latter when used to mimic the content of the player's queue will show what is currently playing, allow you to select other items etc.
It is my recommendation that these functions will NOT be represented as HS Devices with tons of children. I think the solution here is a substitute or a completion of something like our MediaAPI. Given that navigating content or representing a queue is in essence a Listbox. I would further recommended that the HS team focuses on creating an enhanced listbox HS device and how to best show it on the future UIs. Let us PI developers manage the content! I would NOT store the content of the listbox in the HS database (to prevent you store 100,000 track items) but use the same mechanism you have today to inform a PI that a device was activated. I could see events such as "load content", "single click", "double click", "selection". There is a lot more to it, but just wanted to describe the high-level here as a proposal. As an FYI, I believe a listbox like this can be used for non-media PI developers to show for example list like, action items, email, log items that require action etc.
So what are other developers thinking and more importantly, how does the HS team see the future of managing and automating Media devices around the house?
Dirk
In HS2 we had a musicAPI which was pretty much hidden from any HS control screens and just a way to communicate between PIs and HS Touch enable devices. The API was limited and rigid and had pre-baked in limited ways to navigate content, but only music content. The good thing was it didn't clutter any device management pages AND it allowed a user friendly solution for those who were creating HSTouch screens.
In HS3 we had a MediaAPI which had all the right intentions, and I'm sure opinions will differ here, but couldn't get enough support from the HS team to really make this live up to its potential. In my opinion, it appeared that when it was actively being working on, it was pulled towards making the MediaAPI work like the musicAPI, so that (by now long abandoned) PIs such as iTunes and MediaPlayer would work in HS3. I think most of us developers who implemented the MediaAPI got most of it working, but for me, it needed a lot more TLC to make it a robust interface. I never got the "new navigation" mechanisms to work for other content then music and the biggest concern was that it was chatty like crazy. I could see HS Touch screens, over and over, requesting large parts of the track database creating very unresponsive HST screens. So let's put that aside ...
In HS3, we had a new way to create parent/child relationships and we had device types that could (at some point in the future) be used to create HST screen without using the MediaAPI. So I ended up creating something like 20-ish devices PER PLAYER. Things like player control, track info, next track, player position, Art, next track Art ......
So here is where hopefully this discussion starts, what do we do different for HS4?
In my opinion, my HS3 implementation for the Sonos PI was bad but I followed the guidance that was available then and I've seen some users create amazing HST implementation (albeit some of them ended up scripting the heck out of it all). I have 18 or so players so I have a few hundred devices that the PI created ..... just to be used for creating HST screens. Guess what ..... I stopped believing in managing a complex device like a Sonos player from an HST screen so they just clutter my device management pages and I'm sure it did for many reading this. So I actually would not like to repeat this, if I want to do better in HS4.
I like to simplify my thinking, so I see 2 major components to controlling media:
- Player control
- This is things like, pause/play/stop/next/prev/Volume/position/track info/position info/art ....
- Content control
- This is navigating content, starting with any particular root and then navigate down or up, select ....
1. Player Control
It is my recommendation that these controls stay as HS device controls but all attached to the same root/parent, it could all be exact like it was provided in HS3 (the DeviceTypeInfo class). It is my recommendation that we revisit the class and add eTypes that we believe are missing. Then it is my second recommendation that the HS team provides a more optimized "device view" for a media device. See the example below turn the current device layout a bit into a mini player layout. This could be a defined layout by the HS team or allow us developers to customize it.
2. Content control
This part tends to have a few pieces to it. Some sort of a pane where you start navigating up/down, select etc and some other pane which tends to represent your selection (or queue). The latter when used to mimic the content of the player's queue will show what is currently playing, allow you to select other items etc.
It is my recommendation that these functions will NOT be represented as HS Devices with tons of children. I think the solution here is a substitute or a completion of something like our MediaAPI. Given that navigating content or representing a queue is in essence a Listbox. I would further recommended that the HS team focuses on creating an enhanced listbox HS device and how to best show it on the future UIs. Let us PI developers manage the content! I would NOT store the content of the listbox in the HS database (to prevent you store 100,000 track items) but use the same mechanism you have today to inform a PI that a device was activated. I could see events such as "load content", "single click", "double click", "selection". There is a lot more to it, but just wanted to describe the high-level here as a proposal. As an FYI, I believe a listbox like this can be used for non-media PI developers to show for example list like, action items, email, log items that require action etc.
So what are other developers thinking and more importantly, how does the HS team see the future of managing and automating Media devices around the house?
Dirk
Comment