View Issue Details

IDProjectCategoryView StatusLast Update
0001460MediaMonkey AddonsNow Playingpublic2009-10-29 02:55
Reporterrusty Assigned To 
PriorityhighSeverityfeatureReproducibilityalways
Status feedbackResolutionopen 
Summary0001460: MediaMonkey Scheduler - MediaMonkey Professional
DescriptionThe attached text file describes the feature set.

It is designed as the key feature in a professional version of MediaMonkey that would be targetted at DJs/Restaurants/Background music applications.
Additional InformationDependent bugs/features
0000066 CD shouldn't interupt playback or delete NP list
0000182 Monitor clips in second sound channel
0001452 Ability to schedule <pauses> into Now Playing playlist
0000905 Now playing should show songs coming up
0001451 MM should show time remaining in songs
0001316 Now Playing status should always be shown (i.e. time remaining)
0001317 Start/End times of tracks would be useful in Now Playing
0000023 The Now Playing list should always show previously played Tracks even if shuffle is enabled
0001457 More fine grained autoplaylist constraints & better implementation of random subsets
0001453 0001455 Improved proximity sensing for autoplaylists
0000699 Proximity detection for playlists
0001459 New Rotation Playlists
0001458 New default genre/playlist entries
0001454 Ability to generate logs/reports of tracks played
0000117 Implement basic crossfading
#??? Live fadeout for announcements
#??? Live conntrols for jingles/commercials etc.

Relevant similar products:
http://www.spacialaudio.com/
http://www.virtualdj.com/
TagsNo tags attached.
Attached Files
auto-dj.txt (12,177 bytes)   
Auto-DJ description

This bug describes a feature set that can be implemented as a plugin. It can function as an Alarm, or as an automated DJ for a party or radio station. It supercedes features described in #829 (auto-play) and #470 (alarm).  To be fully functional, it is dependent upon the implementation of many other features in MM (see additional information), however, it can even be useful, though less so, with MediaMonkey's current feature set.

The primary objectives of the feature are:
1) Alarm: must be simple to configure MM to fade in music at any particular time on any particular set of days.  It should be a 2-3 step intuitive operation.
2) Allow MediaMonkey to suppress silence i.e. to automatically play 'something' when the Now Playing list has run out OR the Now Playing list contains nothing in it and the user presses Play.
3) Allow a Pro version of MediaMonkey to be sold that allows for sophisticated scheduling.
.i Support for scheduled Jingles/Ads (prioritized)
.ii Display scheduled events
.iii Ability to set weights on playlists (e.g. all tracks in playlist A on heavy rotation)

Note: Manual (unscheduled) Jingles/Ads should also be playable in some manner, however, this will be treated as a separate feature (that would also be part of the Pro version).

Description of Implementation:
------------------------------
a) The functionality should be accessible via:
-An alarm button on the advanced toolbar
-A menu entry just above 'Sleep'
-Selecting the plugin and pressing 'Configure'
-->Pressing either of these buttons --> Auto-DJ dialog appears

b) Auto-DJ must be localizable in the same manner as MediaMonkey is (i.e. using .pot file bundled with the installer & configured via the General|Language option)

c) It would be nice to utilize MediaMonkey themes within the plugin.  This can only be done if some level of support for this is added to the main app.

d) The dialog should have it's own Auto-DJ entry on the toolbar so that the user can control whether it or the MediaMonkey main panel is on top.

e) The plugin should make all features available if the user has upgraded to Professional.  If not, it should only allow support for a single alarm entry in addition to the silence suppression 'AutoPlay' entry (i.e. 2 entries in total).  If a non-Gold user attempts to add a third entry, the following message should appear 'MediaMonkey Auto-DJ provides advanced scheduling functionality so that you can create advanced playlist rotations for parties, bars, background music in shopping centers, or radio broadcasts. If you wish to add more than 2 Auto-DJ entries and use MediaMonkey for commercial use, you need to purchase the Professional version.

Auto-DJ dialog
The dialog should consist of three main sections:
1) List of all jobs (this section is where the user is able to add new jobs)
2) List of jobs on a specified date

f) Event list:
|--Event--|--------Event Schedule---------------|--Date Limiter--|---------------|Now Playing|          |
|--Name---|S M T W T F S . . Time(s) . |Priority| . Start - End .|-Playlist------|Queue Depth|--Actions-|
|[]<name>-|[][][][][][][]. .<times> . .|--<pri>-| <date> - <date>| <Playlist>----| . <x>. . .| <actions>| 
| . <Add new scheduled event>
---------------------------------------------------------------------------------------------------------------------------
The events list functions similarly to the criteria lists in the advanced autoplaylist panel:
-To create a new entry, the user simply clicks <Add new scheduled event> and the dialog described in j) appears.
-To edit an existing entry, the user clicks it to select it and then clicks again causing j) to appear.
-To enable an event, just click the checkbox next to it

g) Scheduled Events <Date> (set to todays date by default)
|----|--Event--|--------Event Schedule---------------|--Date Limiter--|---------------| Now Playing|Fade in|Fade out|
|Time|--Name---|S M T W T F S . . Time . .. |Priority| . Start - End .|-Playlist------| Queue depth| (min) | (min) .|
|time|-<name> -|[][][][][][][]. . <time> . .|--<pri>-| <date> - <date>| <tr/Playlist>-| . .<x>. . .| <min> | <min> .|
---------------------------------------------------------------------------------------------------------------------------
In the scheduled events list, any event that is 1 hour prior to Now or 10 hours after now appears in this window in chronological order.  Events that are currently occuring appear green.  Events about to occur next flash green. Any event set for the specified time but is inactive, is greyed out.

h) At the bottom of the dialog there are the following buttons: <Options>  <Close>  . At this point in time it's unclear what options would need to be configured. 

i) description of variables and their effects:
-[] - Checkbox indicates whether the event is active or not.

-Name: Shows a name for the scheduled event that is meaningful to the user

-The Play Time days indicator: indicates what day(s) the event will occur on

-The Play Time indicators: indicates, in 24hr notation, the duration for an event, or the end-time only, or the start-time(s) only, depending on the type of event (the implication being that depending on the type of event, sometimes a single duration needs to be set, sometimes a single end-time, and sometimes single or multiple start times)  IMPORTANT: If multiple equivalent priority events are scheduled for the same time, the events are played in round-robin fashion--provided they are of equivalent priority.  Otherwise, the higher priority event runs first.

-Priority: indicates the priority level of an event. High priority events finish before lower priority events scheduled for the same time slot can play. Possible values: high, normal, low. 'High' is generally used for events that interrupt others. 'Normal' is used for regular events. 'Low' is used for backup events that occur in case the user forgot to schedule a 'normal' event for a specified time.

-Date Limiter: this optional field sets a limit to the date timeframe during which the scheduled events occur. Otherwise the events have no date driven limitation.

-Playlist: determines what playlist is to be played for the event in question.   (note: as described earlier, the playlist or track is not necessarily played in its entirety)

-Queue depth <x>: Determines the minimum number of tracks that should be kept in the Now Playing queue. Valid values 0-x. If it's zero, then the queue is filled with the contents of that job (to the exclusion of other equal priority events scheduled in that time slot) up to a the maximum that can fit in the slot. If it is 1, the scheduler always ensures that there's 1 track in the Now Playing list after the currently playing track. If it is 2, the scheduler always ensures that there are 2 tracks in the Now Playing list after the currently playing track.

-Fade in: Determines the amount of time to be used for volume to fade from 20% to the current setting of the mixer

-Fade out: Determines the amount of time to be used for volume to fade from current mixer setting to 0%

j) Event editing dialog Layout:
----------------------------------------------------------------------------------------
| Schedule Event
----------------------------------------------------------------------------------------
| Name: Untitled1           | Event Schedule:
----------------------------|-----------------------------------------------------------
| Type:                     | Days:                | Time:
| ( ) Ad/Jingle (Mask)      | [x] Monday           | ( ) Set start time only (play entire playlist)
| ( ) Ad/Jingle             | [x] Tuesday          | ( ) Set time range
| ( ) Alarm                 | [x] Wednesday        | ( ) Set end time (plays now until end time)
| ( ) Sleep                 | [x] Thursday         | 
| (o) Normal Music          | [x] Friday           | From: ______   To: ______ <Add> 
| ( ) AutoPlay Music        | [x] Saturday         | Time1
|                           | [x] Sunday           | Time2
|                           |                      | Time3
|                           | [x] Limit Date Range:|
|                           | From: ____ To: _____ | Priority: <Priority drop down>
----------------------------------------------------------------------------------------
| Playlist Settings:                            | Actions:    
| Playlist: _____________________ <chooser>     | [ ] Fade in at start (minutes): ___ 
| Queue Depth: __ <up/down arrow>               | [ ] Fade out at end (minutes): ___
| Volume:                                       | [ ] Insert Break at end
|                                               | [ ] Turn off at end
|---------------------------------------------------------------------------------------
| <Reset Template>                                                      <OK> <Cancel>
----------------------------------------------------------------------------------------

Event Type Template descriptions:
-Event Type: Indicates the type of event being scheduled and determines how it is handled. There are several types:
--Alarm. Preconfigured with All days enabled, Priority=normal, date limiter not set, queue depth=0, fade-in set to 3 minutes + inserts <break> at end of playlist
--Sleep. Preconfigured with All days greyed out, Priority=normal, Start time: greyed out, End time=60 minutes from current time, date limiter greyed out, playlist=Now Playing, queue depth=0, fade out set to 10 minutes + inserts <break> at end of playlist.
--Normal Music. Preconfigured with Priority=normal, queue depth=3
--Ad/Jingle (Mask).  Preconfigured with priority=high, End Time greyed out, queue depth=0 (this is used for playing an ad/jingle playlist at a specified time while music continues to play)
--Ad/Jingle. Preconfigured with priority=normal, End Time greyed out, queue depth=0 (this is used for playing an ad/jingle playlist immediately following whatever song is playing at the specified time)
--AutoPlay Music. Preconfigured with All days enabled, all times enabled, Priority=low, depth=1 (this is used as a rule to play music from some playlist whenever no other rules have been set and music has stopped playing. 

Addiitonal Variable Descriptions:
-Volume: Values: Default, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%, 100% . This is used in case the user wishes to set a custom volume for the event in question. Always defaults to 'Default' (which is the current volume).
-Insert <Break> at end: causes the event to pause the Now Playing list after the event is complete. 
-Turn off at end: causes the computer to turn off after the event is complete.

Note: The time section is structured as it is because in some cases, a single start time is chosen, for others a single end time is chosen, for others a range is chosen, and for others multiple start times can be chosen).  It should be possible to choose times to the minute.

Tooltips:
-Ad/Jingle (Mask) -- Tooltip: This template is used for playing an ad/jingle playlist at a specified time while music continues to play
-Ad/Jingle -- Tooltip: This template is used for playing an ad/jingle playlist immediately following whatever song is playing at the specified time
-Alarm -- Tooltip: This template is used to set a timed alarm
-Sleep -- Tooltip: This template is used to cause MediaMonkey to stop playing music after a set time
-Normal Music -- Tooltip: This template is used to schedule music to play over a range of time
-AutoPlay Music -- Tooltip: This template causes MediaMonkey to play music when no other events have been scheduled and the Now Playing list has run out. 

k) Default AutoPlay entry:
By default an Entry called 'Default AutoPlay' should be created.  Uses the AutoPlay music template, and one of the default Auto-Playlists (preferable a rotation playlist). 

l) Standard functionality
User can't edit anything (but can view it).

m) Gold functionality
User can have and edit up to 3 entries in the list.

n) Pro functionality
User can do whatever they want.
auto-dj.txt (12,177 bytes)   
auto-dj-2.txt (20,025 bytes)   
Auto-DJ description

Version .2: June 29 2004: Updated several items:
 1) Clarified/modified the usecase for how new scheduled events can be created.  The previous suggestion was too complex when it came to adding new events, and did not have a usable usecase for editing the tracks in existing events.  The new proposal allows events to be scheduled in a manner similar to how playlists are constructed, while schedule details are set in a manner similar to how outlook recurring appointments are set. The new proposal more explicitly shows unscheduled blocks of time.
 2) Added ability to select Tracks or nodes (in addition to playlists) for scheduling. Otherwise there are too many steps as the user has to needlessly create playlists.
 3) Clarified usecase for how tracks/playlists are added to an event via d&d
 4) Added dependency on ability to query playlist membership for autoplaylists. This is needed to enable the user to combine autoplaylist rules with playlists (e.g. skip to skip tracks from the playlist if it was played recently)
 5) Added usescases describing how various event types can be scheduled
 6) Added indicator to notify the user that an event is scheduled

This bug describes a feature set that can be implemented as a plugin. It can function as an Alarm, or as an automated DJ for a party or radio station. It supercedes features described in #829 (auto-play) and #470 (alarm).  To be fully functional, it is dependent upon the implementation of many other features in MM (see additional information), however, it can even be useful, though less so, with MediaMonkey's current feature set.

The primary objectives of the feature are:
1) Alarm: must be simple to configure MM to fade in music at any particular time on any particular set of days.  It should be a 2-3 step intuitive operation.
2) Allow MediaMonkey to suppress silence i.e. to automatically play 'something' when the Now Playing list has run out OR the Now Playing list contains nothing in it and the user presses Play.
3) Allow a Pro version of MediaMonkey to be sold that allows for sophisticated scheduling.
.i Support for scheduled Jingles/Ads (prioritized)
.ii Display scheduled events
.iii Ability to set weights on playlists (e.g. all tracks in playlist A on heavy rotation)

Note: Manual (unscheduled) Jingles/Ads should also be playable in some manner, however, this will be treated as a separate feature (that would also be part of the Pro version).

Description of Implementation:
------------------------------
a) The functionality should be accessible by:
Pressing any of the following buttons which would lead to the appearance of the Auto-DJ dialog:
-An alarm/schedule button on the advanced toolbar
-Main Menu - View: Auto-DJ (toggle)
-Selecting the plugin and pressing 'Configure'

If the user right clicks on 'Send to: Scheduled Event' (this entry should be on the context Send-to context menus), then the Scheduler opens up in edit mode (section c) with the selected track/node/playlist having automatically been added to the edit dialog.  Note that this works only works when a _single_ item (track/node/playlist) is selected.

If the user enables Play: Auto-DJ, then events that have been scheduled will play (regardless of whether or not the Scheduled Events dialog appears).

b) Auto-DJ must be localizable in the same manner as MediaMonkey is (i.e. using .pot file bundled with the installer & configured via the General|Language option)

c) It would be nice to utilize MediaMonkey themes within the plugin.  This can only be done if some level of support for this is added to the main app.

d) The dialog should have its own Auto-DJ entry on the toolbar so that the user can control whether it or the MediaMonkey main panel is on top.

e) View: Auto DJ

|-------------------------|
| Auto-DJ                 | Right-click anywhere --> context menu entry (Close, Delete, Options) 
|-------------------------|
| <-   June 2004    ->    |
|  1  2  3  4  5  6  7    | Selected date is highlighted as in outlook.
|  8  9 10 11 12 13 14    | Todays date is highlighted as in outlook.
| 15 16 17 18 19 20 21    | Days with scheduled events are in bold.
|  ...                    |
|-------------------------|
|12:00 Late Night Rock    |
| [x]   R - P2            | Checkbox is used to activate/deactivate scheduled events.
|-------------------------| As described later, inactive events are greyed out.
| 1:00 Late Night Rock    |
| [x]   R - P2            |
|-------------------------|
| 2:00 Late Night Rock    |
| [x]  R - P2             |
|-------------------------|
| 3:00 Default AutoPlay   |
| [x]  R - P3             |
|-------------------------|
| 4:00 Default AutoPlay   |
| [x]  R - P3             |
|-------------------------|
| 5:00 Early Risers Show  |
| [x]  R - P2             |
|-------------------------|
 ...

This dialog provides a simple means to:
i) view schedule status at any time
ii) make minor schedule changes via drag and drop
iii) make detailed schedule changes by double-clicking an entry

In terms of viewing schedules: It works in a manner similar to Outlook: Default timeslots are every hour on the hour, though the user has the ability to edit the default times to any hours:minute combination via the edit event dialog.  Events appear as follows:
-enabled scheduled events: black
-disabled scheduled events: greyed out
-currently occuring event: green
-event scheduled to occur next: flashes green
Low priority events do not appear unless Normal or High priority events aren't scheduled.

Icons are used to communicate aspects re. the event:
-repeating event: shows events that occur more than once
-Priority: three icons are used for each of P1 (High), P2 (Normal), P3 (low)

To create a scheduled event when the dialog is shown: user drags a node/track/playlist into an emply slot and double-clicks the slot to edit the details.

To edit/delete a scheduled event: 
-user can double clicks the event to go to the Edit event dialog.
-user can drag and drop a track/node/playlist into the scheduled event to replace the existing track/node/playlist
-user can drag the time borders of an event to change it (confirmation dialog needed if the event is a repeating event)
-user can select the event and delete it (confirmation dialog needed if the event is a repeating event)

F) Edit Events dialog:
----------------------------------------------------------------------------------------------------
| Edit Events
|---------------------------------------------------------------------------------------------------
| Name: Untitled1           | Event Active: [x]                     
----------------------------|-----------------------------------------------------------------------
| Type:                     | Days:                | Time:
| ( ) Ad/Jingle (Mask)      | [x] Monday           | ( ) Set start time only (play entire playlist)
| ( ) Ad/Jingle             | [x] Tuesday          | ( ) Set time range
| ( ) Alarm                 | [x] Wednesday        | ( ) Set end time (plays now until end time)
| ( ) Sleep                 | [x] Thursday         | 
| (o) Normal Music          | [x] Friday           | From: ______   To: ______ <Add> 
| ( ) AutoPlay Music        | [x] Saturday         | Time1
|                           | [x] Sunday           | Time2
|                           |                      | Time3
|                           | [x] Limit Date Range:|
|                           | From: ____ To: _____ | Priority: <Priority drop down>
-----------------------------------------------------------------------------------------------------
| Track/Playlist                   # Tracks     | Actions:    
| Station ID (track)                  1         | [ ] Set volume:                 ___ %
| Jingle (playlist)                   1         | [ ] Play as mask:
| Hard Rock (playlist)                All       | [ ] Fade in at start (minutes): ___ 
|                                               | [ ] Fade out at end (minutes):  ___
| Queue Depth: __ <up/down arrow>               | [ ] Insert Break at end
| [ ] Repeat if time span not filled            | [ ] Turn off at end
|----------------------------------------------------------------------------------------------------
| <Reset Template>                                                                   <Save> <Cancel>
-----------------------------------------------------------------------------------------------------


Event Type Template descriptions:
-Event Type: Indicates the type of event being scheduled and determines how it is handled. There are several types:
--Alarm. Preconfigured with All days enabled, Priority=normal, date limiter not set, queue depth=0, fade-in set to 3 minutes + inserts <break> at end of playlist
--Sleep. Preconfigured with All days greyed out, Priority=normal, Start time: greyed out, End time=60 minutes from current time, date limiter greyed out, playlist=Now Playing, queue depth=0, fade out set to 10 minutes + inserts <break> at end of playlist.
--Normal Music. Preconfigured with Priority=normal, queue depth=3
--Ad/Jingle (Mask).  Preconfigured with priority=high, End Time greyed out, queue depth=0 (this is used for playing an ad/jingle playlist at a specified time while music continues to play)
--Ad/Jingle. Preconfigured with priority=normal, End Time greyed out, queue depth=0 (this is used for playing an ad/jingle playlist immediately following whatever song is playing at the specified time)
--AutoPlay Music. Preconfigured with All days enabled, all times enabled, Priority=low, depth=1 (this is used as a rule to play music from some playlist whenever no other rules have been set and music has stopped playing. 
<Chooser>: this allows the user to add/change the track/playlist that should be played, or create a new playlist if no suitable ones exist. Creating a dialog for this purpose might be too much work. A suggested hack would be that when the user clicks this button, focus is shifted back to MM, where the user is able to right-click on a track/node/playlist and click/right-click any of the schedule event buttons to cause it to be added to the 'Edit Event' dialog.  This isn't the greatest, but the alternative would involve setting up a Library tree and giving the user the ability to choose any track/node/playlist & give them the ability to create new playlists. We need to decide on the best tradeoff.

g) description of variables and their effects:
-[] Event Active Checkbox indicates whether the event is globally active or not.

-Name: Shows a name for the scheduled event that is meaningful to the user

-The Play Time days indicator: indicates what day(s) the event will occur on

-The Play Time indicators: indicates, in 24hr notation, the duration for an event, or the end-time only, or the start-time(s) only, depending on the type of event (the implication being that depending on the type of event, sometimes a single duration needs to be set, sometimes a single end-time, and sometimes single or multiple start/end times).  Times can be chosen to the minute.  If an event is scheduled to occur multiple times, each event is treated completely independently--playlists don't 'continue' from one event to the next.

-Priority: indicates the priority level of an event. High priority events finish before lower priority events scheduled for the same time slot can play. Possible values: high, normal, low. 'High' is generally used for events that interrupt others. 'Normal' is used for regular events. 'Low' is used for backup events that occur in case the user forgot to schedule a 'normal' event for a specified time. IMPORTANT: If multiple equivalent priority events are scheduled for the same time, the events are played in round-robin fashion--provided they are of equivalent priority.  Otherwise, the higher priority event runs first.

-Date Limiter: this optional field sets a limit to the date timeframe during which the scheduled events occur. Otherwise the events have no date driven limitation.

-Track/Playlist: determines what Track/Node/Playlist is to be played for the event in question (note: as described earlier, the playlist or track is not necessarily played in its entirety).

-Queue depth <x>: Determines the minimum number of tracks that should be kept in the Now Playing queue. Valid values 0-x. If it's zero, then the queue is filled with the contents of that job (to the exclusion of other equal priority events scheduled in that time slot) up to a the maximum that can fit in the slot. If it is 1, the scheduler always ensures that there's 1 track in the Now Playing list after the currently playing track. If it is 2, the scheduler always ensures that there are 2 tracks in the Now Playing list after the currently playing track.

-Fade in: Determines the amount of time to be used for volume to fade from 20% to the current setting of the mixer

-Fade out: Determines the amount of time to be used for volume to fade from current mixer setting to 0%

-Volume: Values: Default, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%, 100% . This is used in case the user wishes to set a custom volume for the event in question. Always defaults to 'Default' (which is the current volume).

-Insert <Break> at end: causes the event to pause the Now Playing list after the event is complete. 

-Turn off at end: causes the computer to turn off after the event is complete.

h) Tooltips:
-Ad/Jingle (Mask) -- Tooltip: This template is used for playing an ad/jingle playlist at a specified time while music continues to play
-Ad/Jingle -- Tooltip: This template is used for playing an ad/jingle playlist immediately following whatever song is playing at the specified time
-Alarm -- Tooltip: This template is used to set a timed alarm
-Sleep -- Tooltip: This template is used to cause MediaMonkey to stop playing music after a set time
-Normal Music -- Tooltip: This template is used to schedule music to play over a range of time
-AutoPlay Music -- Tooltip: This template causes MediaMonkey to play music when no other events have been scheduled and the Now Playing list has run out. 

i) Default AutoPlay entry:
By default an Entry called 'Default AutoPlay' should be created.  Uses the AutoPlay music template, and one of the default Auto-Playlists (preferable a rotation playlist). 

j) Schedule indicator: if there are events scheduled & active at any point in the future, the MediaMonkey UI must indicate this in some manner, even when the scheduler UI is not shown.  Currently MediaMonkey does this by flashing the 'Sleep' button between 2 states--this is one possible approach to use.  Another would be an indicator somewhere in the status bar.

k) Standard functionality
User can't edit anything (but can view it).  If the user tries to add/edit entries, the following appears: 'MediaMonkey Auto-DJ provides advanced scheduling functionality so that you can create advanced playlist rotations for parties, bars, background music in shopping centers, or radio broadcasts. If you wish to add/edit 3 Auto-DJ entries upgrade to MediaMonkey Gold.  If you need unlimited scheduling capabilities for commercial applications, you need to purchase the Professional version.'

l) Gold functionality
User can have and edit up to 3 entries in the list (the silence suppression 'AutoPlay' entry counts as 1 of these). If a non-Pro user attempts to add a third entry, the following message should appear 'MediaMonkey Auto-DJ provides more advanced scheduling functionality so that you can create advanced playlist rotations for parties, bars, background music in shopping centers, or radio broadcasts. If you wish to add more than 3 Auto-DJ entries and use MediaMonkey for commercial use, you need to purchase the Professional version.'

m) Pro functionality
User can do whatever they want.

n) Sample Usecases:
i) User wants to schedule '2 for Tuesdays - 2 consecutive tracks by the same artist on Tuesdays, iterspersed with commercials', and ensuring that Station ID is played on the hour.
 -User creates 'Same Artist' autoplaylist consisting of 2 tracks by a single randomly selected artist, where Artist wasn't heard within 3 hours (this assumes that bugs #1457 and #1453 are resolved)
 -User creates rotation playlist called 2 for Tuesdays consisting of:  1 Station ID, 1 Ad, 10 Same Artist, 1 Jingle, 1 Ad, 20 Same Artist
 -User drags '2 for Tuesdays' to an empty slot on the Tuesday schedule, double clicks it, and changes it to occur _every_ tuesday in a 3 hour time slot.
ii) User want to repeat a Jingle several times over the course of an event
 - Schedules the Jingle (a single track) to occur at several times ('normal' priority), by dragging it to a space on the schedule, double clicking it, and setting all the times at which it should occur.
 -->Since the other event is also schedule at 'normal' priority, the Jingle plays in a 'round-robin fashion'--i.e. after 1 song in the other event, the Jingle plays, then control is returned to the original event.
iii) User wants to rapidly create a playlist and schedule it for overnight play.
 - User creates PlaylistA exactly as they do today and saves it.
 - If the user wants to intersperse te playlist with other music, and/or cause it to repeat, they create a rotation playlist consisting of PlaylistA and PlaylistB.
 - User drags the rotation playlist into the scheduler and drags the edges to fill the entire night's schedule.

o) Open issues:
The major issue that I see is the fact that it's difficult to add tracks/playlists to a scheduled event from within the Edit Event dialog. This is the same problem that occurs with CD Burning: the easiest way to add tracks/playlists to a CD is to drag them to the Now Playing window, however, this has the downside of mucking with the list of tracks that are in the queue to be played. What is needed is some means of adding tracks/nodes/playlists by selecting them (i.e. some sort of chooser). 

p) Options: When the user accesses the options menu via the Auto-DJ dialog, it should provide
 i) the ability to configure the sound device for the mask
 ii) Global proximity sensing settings for the scheduler: This would be identical to the functionality described in bug #1453.  The reason for duplicating the functionality in the scheduler is to eliminate a dependency and to enable the setting to be global so it doesn't need to be set for each playlist individually except for specific cases.  

q) Deprecated Features:
The scheduled events list has been deprecated in favour of using the simpler outlook-like calendar to show scheduled events, with the user being able to edit details by double-clicking an event.
|--------------------------------------------------------------------------------------------------------------|
| Scheduled Events                                                                                             |
|--Event--|--------Event Schedule---------------|--Date Limiter--|---------------------|Now Playing|           |
|--Name---|S M T W T F S . . Time(s) . |Priority| . Start - End .|--Tracks/Playlist-----|Queue Depth|--Actions-|
|[]<name>-|[][][][][][][]. .<times> . .|--<pri>-| <date> - <date>|--<Tracks/Playlist>---| . <x>. . .| <actions>| 
| ...                                                                                                          |
----------------------------------------------------------------------------------------------------------------
The events list functions similarly to the criteria lists in the advanced autoplaylist panel:
-To create a new entry, the user simply clicks <Add new scheduled event> and the dialog described in j) appears.
-To edit an existing entry, the user clicks it to select it and then clicks again causing j) to appear.
-To enable an event, just click the checkbox next to it
auto-dj-2.txt (20,025 bytes)   
auto-dj Update .1.txt (2,972 bytes)   
Primary Objectives based on Specs .2:
1. Alarm: in three steps various ways (there is some difference in setting this for track/playlist)
  I) Select track/playlist(in playlistnode)
  II) Click on Alarm Button/rightclick/D&D to Button
  III) Completes UI Alarm Form or similar acording to specifications in Description of Implementation section F (Editing Event Dialog)
  
  Note: Abbility to export List of Alarms Via Script.

2. Supress Silence: Abbility to enable Supress and set Silence time in Options. Other things is needed to be more discusted like What if Player is set on rotation, how to set default and how to change it.

3. Pro Version: Need to be more specified which events are for Pro only, which will be partial supported, which are not supported.

Description of implementation :
-------------------------------

a) The functionality should be accessible by:
  - Alarm/schedule Button on advanced Toolbar (like Search Button with PopUp list to select approc. event)
  - Main Menu - view: Auto DJ (Toggle). I must say that I dissagree with Implementing new UI inside MM. If may I suggest Schedule events no matter what they are Alarms, Scheduled Events, AD/Jingles be in separate node (in files to edit or in main Named 'Scheduled') explained in Appendix A Section a. Main reason for my suggestion is a Question "Why introduce and force user to learn new user Interface if we can use existen om which are users familiar with?"
  - Plugin???? Little bit understandable?
  
  Regarding 'Send to' I agree with Idea as this is the best way to implement Scheduled events.
  
b) if Scheduled/Auto-DJ is a plugin MM should note in what LNG is localized l.e. like path to Lng (Sr - serbian, De - German, ....

c) This is same as 'b)' but name of theme will be used.

d) Please elaborate. Little bit confusing

e) It seems Ok as an idea I think that UI need to be simplier/familier for user. all other are Ok and more than OK.

f) Basicly OK, with all the functions needed for any of templates, but not all templates needs all of them.
 
Appendix A
-----------

a) Node look:
  ---------------------------------
  Scheduled->
             |Scheduled Playlist 1 (First next Scheduled date time)
             |Scheduled Playlist 2 (First next Scheduled date time)
             |Scheduled Playlist 3 (First next Scheduled date time)
             |Scheduled Playlist 4 (First next Scheduled date time)
             |...
  ---------------------------------
  Note: - When user clicks on root of node in Track list is shown Single Scheduled Tracks. 
        - When User Clicks on Scheduled Playlist in track list are shown tracks that are in coresponding Playlist.
        - When user clicks/rightclick/D&D on Show Proporties (Track/Playlist) it opens Form with proporties of that event with editing capabilities or if this track/playlist has multiple events a list with them with focus on selected one (like in section Q)
auto-dj Update .1.txt (2,972 bytes)   

Relationships

related to 0005924 resolvedLudek MMW 5 Framework: CUEPoint Support 
related to 0001459 feedbackrusty MMW v4 New Playlist Type: Rotation Playlist 

Activities

rusty

2004-06-18 16:50

administrator   ~0004310

Peke, as discussed, I've reviewed the scheduler implementation, tested numerous competitive products, and created a spec for what the plugin should do. Let me know what you think.

Note: As you can see there are a fair number of dependent features that need to be completed to make this a complete solution. In their absence, though, it would still be a valuable tool.

Please evaluate, and let me know how much effort would be involved.

rusty

2004-06-29 18:48

administrator   ~0004321

New text file supercedes the old one. It has been updated based on discussions with Peke to-date.

peke

2004-07-03 01:59

manager   ~0004326

I have read Description and I'm uploading my partial review.

rusty

2004-07-05 02:18

administrator   ~0004329

Peke, I reviewed your partial set of comments. Here are my answers:
-Primary objectives: I'm not sure I understand the point of these comments. They list only an partial subset of the objectives listed in the document (and in some cases list functionality that doesn't match the spec--e.g. 'D&D to Button'. Thus I'm not commenting on them except in cases where you've raised specific objections/questions re. the specification.
-Primary objectives 2. Silence suppression: There is nothing special about silence suppression that needs any kind of special configuration. It's just a low priority event that is scheduled for every day from 12am to 11:59 pm, that plays a rotation playlist.
-Primary objectives 3. Pro version: As specced, there's no difference between the pro, gold, and normal versions in terms of the type of events supported. The only difference is in the number of events that are supported for each version.

-Description of implementation
-a) Main Menu - view: The new UI that has been described is _necessary_ because the current UI cannot support displaying timed events. i.e. a Node is _not_ a suitable metaphor for the display of scheduled events if multiple events can be scheduled concurrently (imagine trying to use a 'tree' to schedule events in Outlook---it just doesn't work!!).
-b) Localization: You can check with Jiri how this works.
-d) Please let me know what is confusing so I know what to elaborate.

peke

2006-08-03 00:43

manager   ~0007650

Check http://www.mediamonkey.com/forum/viewtopic.php?t=11277
as it adds partial Radio Automatization/Commercial/Advertising/Announcments Handling to MM.

peke

2009-10-29 02:53

manager   ~0019385

Last edited: 2009-10-29 04:01

Windows 7 Adds Trigger Start Services and improves scheduling tasks on system level We could try to revise if we can find something useful in:
http://blogs.microsoft.co.il/blogs/sasha/archive/2009/02/25/windows-7-trigger-start-services.aspx
http://en.wikipedia.org/wiki/Task_Scheduler#Task_Scheduler_2.0
http://msdn.microsoft.com/en-us/library/dd405513%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/aa383614%28VS.85%29.aspx
http://rwandering.net/2008/02/28/unprivileged-tasks-in-windows-6-with-vbs/
http://www.keyongtech.com/728795-create-a-new-task-scheduler

More help:
http://support.microsoft.com/kb/939039

Additional Tutorial File is Uploaded to FTP