Would it be possible to PFL items in the lists in the Browser panes?
The scenario I’m thinking of specifically is this: a live assist ‘all requests’ show, so the presenter is dragging tracks from the Browser into the Playlist. A listener phones in to request Superstar by The Carpenters. The presenter decides The Carpenters are too cheesy (!), does a Database Search in Browser, and finds a version by Jamelia. Perfect! He plays the Jamelia version and the listener calls in to complain that not only is it not The Carpenters’ version, it’s not the same song.
Actually, there are at least seven different songs named Superstar. Unless you decide to add (for example) [1], [2], [3], etc. at the end of the Title of each different song with the same title—which would look bad on a Web page or in the Title of a stream player—or you happen to know about every ‘different song with the same title’ in the world (!), this could easily happen with quite a lot of songs (like Ashes To Ashes, for instance).
Yes, you could drag each one into the Playlist, PFL them there, then delete the ones you decide not to play, but I think it would be easier to have some kind of PFL in the Browser, so you can listen to a track before you put it in the Playlist, where you could end up playing it by mistake.
What does everyone else think? Would this be a useful feature for you, or not worth Torben’s effort to implement it?
You mean something like the existing “PFL Player” screen object?
I’m planning to merge all of the existing PFL functions - in particular Extra PFL (PFL pane in Properties dialog) and the PFL Player screen object - into a new, unified PFL function. But that will be quite a lot of work.
Whilst I had forgotten about the PFL object, I think the ability to right-click a file in the file/database browser and PFL would be useful. Just my 2c
That would also be addressed by the unify-the-PFL-functions change I mentioned.
Here’s a little background (check out the scripting help for more information about the interfaces I am talking about below):
Generally, playback is performed using an IAudioSource object (which is created using the BuildSource method of a particular playlist item). That interface contains methods for starting, pausing and stopping the playback, retrieving and setting the current playback position and volume, and it does also send messages to its owner when a cue point is passed. Apart from that, IAudioSource is relatively dumb. For example, it does not advance to Cue In when the item is opened, and it does not stop the playback at Cue Out on its own.
When you open an item in a player, two IAudioSource objects are created, one for playback and one for PFL (as an optimizaiton, the latter isn’t created until you actually start PFL). The player object is responsible for passing the cue data to the IAudioSource, reacting to cue point messages etc. For example, when a “Cue Out is reached” message is received, it will perform a Stop operation on the source.
So until a while ago, using a player object was the only way to pre-listen to an item. That’s why there is an embedded player object in the Properties dialog for the Extra PFL function.
mAirList 3.0 introduces an additional way to pre-listen to items, namely the ISourceControl objects. That object does the same thing as the player (manage playback, handle cue points, etc.) but only for a single IAudioSource (either playback or PFL) at a time. ISourceControl is already used for the PFL Player screen object and the PFL facility in the mAirListDB application.
What I’m planning to do is:
Move the source handling code out of the player object completely - instead, use two ISourceControls which do the work.
Remove the embedded player from the Properties dialog, and use an ISourceControl instead. (less overhead)
Possibly introduce a global ISourceControl which can be shared by the Browser, the screen object, the Properties dialog etc. That means, no matter where you initiate the PFL from, it’s always the same ISourceControl being used, and it can be accessed by all corresponding GUI objects.