The StreetDeck API was initially designed with 2 goals in mind. 1 to be easy to use for anyone without knowing too much about programming and 2 to seperate out coding from interface and abstract the addins from the underlying platform. In theory, StreetDeck should be far easier to code for since it has a built in scripting enviornment and GUI that allows dragging and droppign of controls and coding behind them. You shouldn't have to install another IDE or have to worry about setting up a system to develop digitalmods or worry about dependancies as it all comes with StreetDeck. The reality is we haven't had the resources to making the development enviornment as easy to use as it should be and the easy to use vision has never been achieved. We realized this a year ago and opened up to the API to be used from C# or any COM capable language. This forces you to use both the development enviornment for skinning and visual studio for coding and is done as an after thought rather then how it was designed to be used and is really just something that lets us offer customizability until we can finish the development enviornment. It is still very much capable of doing a lot and we have and continue to use it internally for projects for other clients, its just not yet the end user enviornment it was designed to be.
We thought about open source models, but in general they are very hard to make into a business. In our case, I don't think it would work because 1, this is very much a niche market and 2 a significant part of the price of StreetDeck is to pay for dependancies so even if we gave away everything we do for free, it would actually end up costing more to buy all the dependancies seperatly.
The album flipping should be totally possible. You have direct access to the Direct3D objects in the StreetDeck API. I have only done this from a C++ addin though and don't know if it works from C# and in any case it wouldn't be a trivial thing to do or something you could do without knowledge of Direct3D programming.
YOu can get any panel you created in the skin editor through the following code:
for (uint iPos = module.GetHeadPanelPos();
iPos != 0;)
StreetDeck.IDualPanel p = module.GetNextPanel(ref iPos);
module.MsgBox(p.GetFunctionName(), "Panel Name");