INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: Overriding Player Behaviour? (Squeezebox integration)  (Read 3577 times)

MahlerFreak

  • Recent member
  • *
  • Posts: 49
Overriding Player Behaviour? (Squeezebox integration)
« on: July 17, 2006, 09:18:38 pm »

Yeah, I know - first post newbie wants to know how to get man to the moon  :)

Context: I've been an audiophile and serious music listener for 25 years. I have an all-Meridian 5 speaker system now, in a treated room. I have a ~1500 CD collection (would be much bigger if I hadn't given so many away to public libraries) that consists 2/3 of Classical music. Heretofore, I wasn't much interested in software-based music repositories, due to Classical-unfriendly music tagging/browsing and a lack of audiophile-quality audio renderer devices. Now, though, we have MC, which is flexible enough to create the kind of database and browsing capabilities to be Classical-friendly. We also have the Squeezebox 3, which has an excellent reputation among audiophiles as a low-jitter digital audio transport. And finally, we have software-based automation systems like Charmed Quark to knit these pieces together in a home automation environment.

The key piece to making all of this work for me is to be able to create libraries and playlists in MC and then play them on Squeezeboxes over the network. The SlimServer software that comes with the SqueezeBox has pretty good extensibility, via CLI or plugins, for feeding now-playing lists to, and controlling playback of, attached SqueezeBox hardware. MC has powerful automation interfaces for extracting playlists from the running program instance. So what's the problem? Well, in theory (he says naively), writing an interface plugin that simply extracts the current playlist from MC and feeding it to SlimServer is pretty easy. But what if I wanted to use the MC player controls to actually start, stop, pause playback on the Squeezebox? As far as I can figure out from the online docs, this can't be done?

At first, I thought that if uPnP could be implemented via plugin, that meant the player control must somehow be extensible via plugin APIs. Now I realize that uPnP devices are currently the "control points": they work only as "pull" devices. MC doesn't "push" control or music data to the uPnP hardware - correct?

Essentially, what I'm trying to do amounts to creating my own implementation of an MJPlaybackAutomation interface, and making that interface the "currently active" interface for the player widget. Am I correct in assuming that can't be done today? And if that's true, can anyone think of another way of accomplishing the same thing? I suppose I could create a duplicate player control ...

Many thanks in advance for any thoughts or advice.

Logged

scthom

  • Citizen of the Universe
  • *****
  • Posts: 621
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #1 on: July 17, 2006, 09:26:58 pm »

I think you are correct on all counts.

I've got a SqueezeBox (original) that I'd love to control from MC, so if you figure this out, please let me know  :)
Logged

mesue

  • Galactic Citizen
  • ****
  • Posts: 395
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #2 on: July 17, 2006, 09:57:51 pm »

Another Squeezebox owner here who uses MC. I don't know squat about programming, but I would love it if these two could work together. I don't even want the MC transport controls  — just the ability to access and use my MC Smartlists, ratings, last played data, etc. from the Squeezebox/Slimserver.

Anyone who can get MC talking to Squeezebox would be my hero.
Logged
Sue

MahlerFreak

  • Recent member
  • *
  • Posts: 49
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #3 on: July 17, 2006, 10:10:20 pm »

Well, I wrote a ton of C++ once upon a time, and some Web stuff recently, but COM, ATL, ObjectX, XML, xAP, Perl, MySQL, et al are still mostly new to me from a programmer's perspective. But I just sunk $300 into a copy of Visual Studio .NET for this project, so I have that "sunk cost" incentive to figure it all out  :)

Thanks for the responses, it gives me incentive to get this done for more than just me.
Logged

mesue

  • Galactic Citizen
  • ****
  • Posts: 395
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #4 on: July 17, 2006, 10:18:15 pm »

Good luck... holler if you need a tester!
Logged
Sue

John Gateley

  • Citizen of the Universe
  • *****
  • Posts: 4957
  • Nice haircut
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #5 on: July 18, 2006, 10:05:43 am »

Yeah, I know - first post newbie wants to know how to get man to the moon  :)

At first, I thought that if uPnP could be implemented via plugin, that meant the player control must somehow be extensible via plugin APIs. Now I realize that uPnP devices are currently the "control points": they work only as "pull" devices. MC doesn't "push" control or music data to the uPnP hardware - correct?


UPnP is pretty complicated, and there are at least 3 relevant pieces:
the media server device, the media renderer device, and the control point.

If the set top box (I find it confusing to call this a device) exposes a media renderer device, then you could control it by pushing data (writing your own control point). Some do expose this, some don't.

Our plugin currently only is the media server device, it is the "pull" option you talk about above.

j

MahlerFreak

  • Recent member
  • *
  • Posts: 49
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #6 on: July 18, 2006, 02:30:14 pm »

Our plugin currently only is the media server device, it is the "pull" option you talk about above.

j


Yeah, I was referring to the MC implementation specifically rather than the UPnP spec generally. But if you *wanted* to implement an interface to "push" to a UPnP media renderer, using the existing automation API, could you do it? Given the need, presumably, to extend/override player control behavior? If you could, that answers one of my questions in a very positive way.

Logged

John Gateley

  • Citizen of the Universe
  • *****
  • Posts: 4957
  • Nice haircut
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #7 on: July 18, 2006, 02:43:06 pm »

No promises, but I think you can.

j

Craig

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 612
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #8 on: July 28, 2006, 09:09:17 am »

I Just posted a message about Delphi for this very reason.
My Idea is to make a now playing plugin that rather than displaying the info on screen controls the squeezebox via a telnet connection.

any thoughts?

Craig
Logged
MC2Slim - Windows Shell and JRiver Media Center Integration for Squeezebox.

http://www.duff-zapp.co.uk

MahlerFreak

  • Recent member
  • *
  • Posts: 49
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #9 on: July 29, 2006, 05:12:46 pm »

I Just posted a message about Delphi for this very reason.
My Idea is to make a now playing plugin that rather than displaying the info on screen controls the squeezebox via a telnet connection.

any thoughts?

Craig

Sorry I didn't see this earlier, seemed like this thread had gone dead. A track info plugin is a pretty clever thought - you could feed the file path to SlimServer and get it to play via command line or HTTP APIs.

I suppose you could interrogate current volume settings, etc and feed them too. Of course, MC would be simultaneously playing the current track to the sound driver of its host PC - which may not matter.

I'm currently trying to proceed down a slightly different path, by building an AJAX-style Web interface, using MC as a back end music DB. The thought is to do searching and selection from the Web UI, and feed the resulting playlist to SlimServer when the play button is pushed. I'm trying this out because I want better classical music searching than SS provides (not even MC is ideal in this regard), and a Web UI integrates well with other control software and hardware solutions. We'll see how it goes.

The first big challenge is to get MC to act as an HTTP server, responding to various queries via GETs or POSTs. There is already a remote server plugin, but it does not seem to be documented. I may have to write a plugin to act as an HTTP server.

Logged

Craig

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 612
Re: Overriding Player Behaviour? (Squeezebox integration)
« Reply #10 on: July 31, 2006, 04:13:36 am »

Thinking about it a bit more, the 'What I'm Listening To' plugin does almost all we need already. It would just need to telnet the info to SlimServer rather than pipe it to MSN Messenger.

Craig
Logged
MC2Slim - Windows Shell and JRiver Media Center Integration for Squeezebox.

http://www.duff-zapp.co.uk
Pages: [1]   Go Up