<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://oldwiki.arcadecontrols.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Unclet</id>
	<title>BYOAC OLD Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://oldwiki.arcadecontrols.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Unclet"/>
	<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php/Special:Contributions/Unclet"/>
	<updated>2026-05-18T02:52:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=12375</id>
		<title>UncleT's Jukebox</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=12375"/>
		<updated>2010-12-03T03:18:20Z</updated>

		<summary type="html">&lt;p&gt;Unclet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=12374</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=12374"/>
		<updated>2010-12-03T03:16:42Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.jukeplugsys.com Jukebox Plugins]''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
[[Image:http://www.jukeplugsys.com/logo.png]]&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was designed by '''Space Fractal''' (MultiJuke) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties ('''loadman''' and '''headkaze''') a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt; (or '''[http://www.jukeplugsys.com JukePlugSys]''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jukebox software which supports the JPS standard are listed below:'''&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.multijuke.com MultiJuke]''' By Space Fractal&lt;br /&gt;
* '''[http://www.freeboxjukebox.com Freebox Jukebox]''' By Barcrest ''&amp;lt;--- currently in progress of adding JPS standard''&lt;br /&gt;
* '''[http://www.audiovisualdevices.com.au/software/aussiejuke/aussiejuke.php Aussie Juke]''' By David Duffy&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
Note: This development section is only of any real interest to Jukebox software authors and Plug-in authors. Any details on how to use a plug-in will be provided with that plug-in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(JUKE_PLUGIN_EVENT_CREATE, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ON OFF&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
'''Please Note: Some jukebox software does not like &amp;quot; in the returned string, so do NOT add them here'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more|filename&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The filename to the song with full path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please Note:&lt;br /&gt;
If a application use JUKE_SONGLIST_ADD_SONG to add songs after the current played song (used only as a queue), this command is NOT used. Hence default value set to 0.&lt;br /&gt;
&lt;br /&gt;
Plugin Writers:&lt;br /&gt;
If you want to support all songlist/playlist/queue scremes, you can convert a JUKE_SONG_START command to a JUKE_SONGLIST_ADD_SONG using position 0 in your parser, if this command have a value 0 (ETC never sent).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum|filename&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The filename to the song with full path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum|filename&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The filename to the song with full path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=12373</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=12373"/>
		<updated>2010-12-03T03:16:07Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.jukeplugsys.com Jukebox Plugins]''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
[[Image:http://www.jukeplugsys.com/logo.png]]&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software author '''Space Fractal''' (MultiJuke) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties ('''loadman''' and '''headkaze''') a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt; (or '''[http://www.jukeplugsys.com JukePlugSys]''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jukebox software which supports the JPS standard are listed below:'''&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.multijuke.com MultiJuke]''' By Space Fractal&lt;br /&gt;
* '''[http://www.freeboxjukebox.com Freebox Jukebox]''' By Barcrest ''&amp;lt;--- currently in progress of adding JPS standard''&lt;br /&gt;
* '''[http://www.audiovisualdevices.com.au/software/aussiejuke/aussiejuke.php Aussie Juke]''' By David Duffy&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
Note: This development section is only of any real interest to Jukebox software authors and Plug-in authors. Any details on how to use a plug-in will be provided with that plug-in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(JUKE_PLUGIN_EVENT_CREATE, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ON OFF&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
'''Please Note: Some jukebox software does not like &amp;quot; in the returned string, so do NOT add them here'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more|filename&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The filename to the song with full path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please Note:&lt;br /&gt;
If a application use JUKE_SONGLIST_ADD_SONG to add songs after the current played song (used only as a queue), this command is NOT used. Hence default value set to 0.&lt;br /&gt;
&lt;br /&gt;
Plugin Writers:&lt;br /&gt;
If you want to support all songlist/playlist/queue scremes, you can convert a JUKE_SONG_START command to a JUKE_SONGLIST_ADD_SONG using position 0 in your parser, if this command have a value 0 (ETC never sent).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum|filename&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The filename to the song with full path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum|filename&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The filename to the song with full path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Software&amp;diff=12372</id>
		<title>Jukebox Software</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Software&amp;diff=12372"/>
		<updated>2010-12-03T03:12:46Z</updated>

		<summary type="html">&lt;p&gt;Unclet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox software''' is designed to allow your PC to act and look like a jukebox. Much like [[emulators|game emulators]], there are graphical user interfaces (GUIs) to enhance this effect. Jukeboxes often require you to [[CD Ripping|rip your music]] from CDs to your PC. &lt;br /&gt;
&lt;br /&gt;
Software is available for several different operating systems and may or may not be freeware.  Often, if the software is freeware, a donation link is present on the homepage of the software to allow you to show your appreciation for the developer's efforts in creating software that frequently rivals and/or bests commercial software!&lt;br /&gt;
&lt;br /&gt;
Jukebox software may also be &amp;quot;skinnable&amp;quot;, meaning the appearance of the software may be changed by the end-user based on their preferences.  This may take the form of preset skins within the software, or the ability to develop and share skins with other end-users.&lt;br /&gt;
&lt;br /&gt;
Lastly, touchscreens may be utilized if the software supports it, and can be used to eliminate the need for buttons or a keyboard/mouse combination altogether.&lt;br /&gt;
&lt;br /&gt;
==List of jukebox software==&lt;br /&gt;
Below is the jukebox software comparison table for '''Windows''' only. SilverJuke now exists to Mac, and Doscab is for DOS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''''Please be aware that this may be incomplete! The individual pages will have the software's homepage for you to verify any information or questions you may have!'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| Width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;background:white; color:black; border:1px solid silver;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:navy; color:white&amp;quot;&lt;br /&gt;
|'''Software'''&lt;br /&gt;
|'''Format&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''BYOAC&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''OS'''&lt;br /&gt;
|'''License&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Skin&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Monitor'''&lt;br /&gt;
|'''Media&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Resolutions&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Main Control(s)&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Arcade Jukebox]]&lt;br /&gt;
| Singles&lt;br /&gt;
| Mark&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 400x300 640x480 800x600&lt;br /&gt;
| '''Joystick''' Trackball&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Aussie Juke]]&lt;br /&gt;
| Both&lt;br /&gt;
| AussieJuke&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3, wma (audio) and mpg, wmv, avi (video) files &lt;br /&gt;
| 800x600+&lt;br /&gt;
| '''Joystick''' Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Arcade Music Box]]&lt;br /&gt;
| List&lt;br /&gt;
| Space Fractal&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| Many&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; cdg radio video &lt;br /&gt;
| 320x240 400x300 640x480 ''ANY''&lt;br /&gt;
| '''Joystick''' Spinner&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[DAM Jukebox]]&lt;br /&gt;
| Singles&lt;br /&gt;
| DamSoft&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 1024x768&lt;br /&gt;
| '''Buttons'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[DWJukebox]] (DOSCab/WinCab)&lt;br /&gt;
| Both&lt;br /&gt;
| Chris&lt;br /&gt;
| [[Image:OS windows icon.gif]][[Image:OS DOS icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| mp3 ogg mid&lt;br /&gt;
| MonitorLess, Any&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
| '''Buttons''' Joystick Keypad Touchscreen&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; Mouse &lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[E-Touch]]&lt;br /&gt;
| Album&lt;br /&gt;
| Barcrest&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| mp3 m4a wma cdg video&lt;br /&gt;
| 800x600 1024x768 ''ANY'' &lt;br /&gt;
| '''Touchscreen''' Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Juke Blaster Pro]]&lt;br /&gt;
| Both&lt;br /&gt;
| Steve&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Commercial&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 wma&lt;br /&gt;
| Auto size&lt;br /&gt;
| '''Touchscreen''', Keyboard, USB '''Coin Acceptor'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Jukebox Arcade]]&lt;br /&gt;
| Both&lt;br /&gt;
| NebulaSleuth&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Freeware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| WMP&lt;br /&gt;
| 1024x768 ''ANY''&lt;br /&gt;
| '''Mouse''' Trackball Buttons Touchscreen&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[MultiJuke]]&lt;br /&gt;
| Multi&lt;br /&gt;
| Space Fractal&lt;br /&gt;
| [[Image:OS windows icon.gif]][[Image:OS linux icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| Many&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; cdg&lt;br /&gt;
| MonitorLess, 640x480+ ''ANY''&lt;br /&gt;
| '''Joystick''' '''Spinner''' '''Keypad''' Trackball &lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Nowtro Jukebox]]&lt;br /&gt;
| Singles&lt;br /&gt;
| AdamMF&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 800x600+&lt;br /&gt;
| '''Keypad'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[SK Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| SalmonKing&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| WMP video&lt;br /&gt;
| 800x600+&lt;br /&gt;
| '''Keypad''' Mouse Touchscreen&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Virtual Music Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| VMJ Team&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| mp3 wma wmv&lt;br /&gt;
| 800x600 1024x768&lt;br /&gt;
| '''Keypad''' '''Touchscreen''' Mouse &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background:navy; color:white&amp;quot;&lt;br /&gt;
|'''Software'''&lt;br /&gt;
|'''Format&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''BYOAC&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''OS'''&lt;br /&gt;
|'''License&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Skin&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Monitor'''&lt;br /&gt;
|'''Media&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Resolutions&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Controls&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[AlbumPlayer]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Shareware&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| Many&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; cdg video&lt;br /&gt;
| 800x480+&lt;br /&gt;
| Touchscreen Mouse &lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[BoxEasy]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 ogg wma m4a&lt;br /&gt;
| 1024x768 1280x1024&lt;br /&gt;
| Keyboard Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[GlobeCOM Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| '''Web'''&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Freeware&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 800x600+&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Jukebox Jockey Media Player]]&lt;br /&gt;
| Both&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard, Web based homepage&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| Music, Video, Karaoke (mp3, wma, mpeg, mp4, + much more)&lt;br /&gt;
| 800x600+, ANY&lt;br /&gt;
| '''Touchscreen''', '''Infared Remote''', Keyboard, Keypad, Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Jukebox Simulator]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[MP3 Susi]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS MAC icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| None&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 ?&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Title Track]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS MAC icon.gif]] [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| None&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 wav aiff sd2&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[The JukeBox'er]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| wma mp3 ogg wav cda cdg radio video&lt;br /&gt;
| 800x600+&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Nordbeat's Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| WMP AMP&lt;br /&gt;
| 800x600 1024x768&lt;br /&gt;
| Touchscreen Keyboard Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[The PC Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 wma wav video&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Touchscreen Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[PartyTime Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| AMP&lt;br /&gt;
| 800x600 1024x768&lt;br /&gt;
| Touchscreen Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Python Jukebox]] &lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| '''Web'''&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Open Source&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| MP3 more?&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse Touchscreen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Silverjuke]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]][[Image:OS MAC icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| AMP&lt;br /&gt;
| 640x480+&lt;br /&gt;
| Touchscreen Mouse Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Tunez]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| '''Web'''&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Open Source&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 ogg&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Touchtone]]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| AMP video&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Touchscreen Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[YoDJ]] &lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| '''Web'''&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Freeware&lt;br /&gt;
| CCS&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt;&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| Many &amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| From 640x480+&lt;br /&gt;
| Mouse/Keyboard&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''1) Format Orientation:'''&lt;br /&gt;
&lt;br /&gt;
With type of format do the software use. This tell it Singles or album based (or both). There are some exceptions:&lt;br /&gt;
&lt;br /&gt;
* Arcade Music Box use a list based screme like Mamewah, but it support both Singles and Albums formats.&lt;br /&gt;
* Wincab/Doscab acts best as a singles-based jukebox (it is very popular), but it also supports album as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Byoac Member?'''&lt;br /&gt;
&lt;br /&gt;
If this software is registered and supported by a BYOAC member, the name is showed here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) License:'''&lt;br /&gt;
* ''Freeware:'' is fully functional without payment.  A nag screen or ads are not considered a loss of functionality. &lt;br /&gt;
* ''Shareware:'' has limited functionality until payment is made. &lt;br /&gt;
* ''Commercial:'' software is fully functional for a limited time, after which payment must be made.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4) About skinning:''' &lt;br /&gt;
&lt;br /&gt;
How can the software being skinned and changed?&lt;br /&gt;
&lt;br /&gt;
{| Width=&amp;quot;550&amp;quot; valign=&amp;quot;top&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;background:white; color:black; border:1px solid silver;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#333333; color:white&amp;quot;&lt;br /&gt;
|'''Grade'''&lt;br /&gt;
|'''Fonts'''&lt;br /&gt;
|'''Background'''&lt;br /&gt;
|'''Elements'''&lt;br /&gt;
|'''Resizeable'''&lt;br /&gt;
|'''Moveable'''&lt;br /&gt;
|'''Resolutions'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Font Only'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Basic'''&lt;br /&gt;
|Maybe&lt;br /&gt;
|Yes&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Standard'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Some&lt;br /&gt;
|Some&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Advanced'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|All&lt;br /&gt;
|Some&lt;br /&gt;
|Some&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Full'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|All&lt;br /&gt;
|All&lt;br /&gt;
|Most&lt;br /&gt;
|Any&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
* '''Basic:''' Only the background may be changed or colors adjusted, but not the fonts or control placements.&lt;br /&gt;
* '''Standard:''' A software may only support one &amp;quot;Some&amp;quot;, not the both.&lt;br /&gt;
* '''Advanced:''' A software may only support one &amp;quot;Some&amp;quot;, not the both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5) Media:'''&lt;br /&gt;
* If WMP ([http://www.microsoft.com/windows/windowsmedia/default.mspx Windows Media Player]) or AMP ([http://www.winamp.com Winamp]) are listed, that jukebox software is simply a frontend for those programs and handle all formats and codecs WMP/AMP support.  WMP/AMP are '''REQUIRED''' for the jukebox software to operate.&lt;br /&gt;
* If video and/or image is listed, the individual page will list all video or image file types supported.&lt;br /&gt;
* Some software may support MP3+G (a karaoke system), wich is stated as cdg (but they may need to being ripped from the cd).&lt;br /&gt;
&lt;br /&gt;
'''6) Resolutions:''' &lt;br /&gt;
* If software has a + after the resolutions, this meams it uses an autoscaling scheme. You can show it on a higher monitor, but the skin may just be rescaled.&lt;br /&gt;
* If software stated with any, this mean any resolution is supported by a added skin.&lt;br /&gt;
* DWJukebox autoscales all skins to all resolutions and orientations; skins designed specifically for very low resolutions (320x240) are included.&lt;br /&gt;
* Other software may look best at the stated resolution(s), even if it supports any resolution with a new skin.&lt;br /&gt;
&lt;br /&gt;
'''7) Controls:''' &lt;br /&gt;
* '''Main Controls''' marked in '''bold''' indicate the controls the software was originally designed for and works best with.&lt;br /&gt;
* '''Buttons''' is typical used for limited use like insert a letter and number (like D3 to insert a song).&lt;br /&gt;
* '''Joystick''' is meant for using with arcade joystick (and few buttons), but technical been a keyboard encoder and/or gameport.&lt;br /&gt;
* '''Keyboard''' shortcuts (Skip, Pause, Show Queue etc) are not counted as main controls, due nearly all software support it in many ways. Some software can have many shortcuts.&lt;br /&gt;
* '''Keypad''' support in many software can also been remmapped.&lt;br /&gt;
* '''Mouse''' can been a trackball as well (if mouse course is hided, use trackball term insted).&lt;br /&gt;
* '''Touchscreen''' support in DWJukebox is limited to DOS and Windows XP.&lt;br /&gt;
&lt;br /&gt;
'''8) Web based skin:'''&lt;br /&gt;
* Some application can used as webbased software. So skins is based on css in that case.&lt;br /&gt;
&lt;br /&gt;
'''9) Many Extensions:''' &lt;br /&gt;
* These software support many extensions as it could listed here. So they may support 10+ extensions.&lt;br /&gt;
* '''Arcade Music Box''' and '''Album Player''' is based on BASS engine, and support these extensions as well.&lt;br /&gt;
* Bass is an external engine, [http://www.un4seen.com Bass] wich also supports a variety of extensions and is included with the software. Some software is based on it, but not all software support plugins (like '''The JukeBox'er''').&lt;br /&gt;
&lt;br /&gt;
'''10) Webbased:''' &lt;br /&gt;
* These software is writting in a web based language, like php perl and python. because of it, it good to use with a Apache server or like that. It should of course run on all platform (a least on Windows, linux and Mac)&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Software&amp;diff=12366</id>
		<title>Jukebox Software</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Software&amp;diff=12366"/>
		<updated>2010-08-29T23:07:32Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* List of jukebox software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox software''' is designed to allow your PC to act and look like a jukebox. Much like [[emulators|game emulators]], there are graphical user interfaces (GUIs) to enhance this effect. Jukeboxes often require you to [[CD Ripping|rip your music]] from CDs to your PC. &lt;br /&gt;
&lt;br /&gt;
Software is available for several different operating systems and may or may not be freeware.  Often, if the software is freeware, a donation link is present on the homepage of the software to allow you to show your appreciation for the developer's efforts in creating software that frequently rivals and/or bests commercial software!&lt;br /&gt;
&lt;br /&gt;
Jukebox software may also be &amp;quot;skinnable&amp;quot;, meaning the appearance of the software may be changed by the end-user based on their preferences.  This may take the form of preset skins within the software, or the ability to develop and share skins with other end-users.&lt;br /&gt;
&lt;br /&gt;
Lastly, touchscreens may be utilized if the software supports it, and can be used to eliminate the need for buttons or a keyboard/mouse combination altogether.&lt;br /&gt;
&lt;br /&gt;
==List of jukebox software==&lt;br /&gt;
Below is the jukebox software comparison table for '''Windows''' only. SilverJuke now exists to Mac, and Doscab is for DOS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''''Please be aware that this may be incomplete! The individual pages will have the software's homepage for you to verify any information or questions you may have!'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| Width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;background:white; color:black; border:1px solid silver;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:navy; color:white&amp;quot;&lt;br /&gt;
|'''Software'''&lt;br /&gt;
|'''Format&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''BYOAC&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''OS'''&lt;br /&gt;
|'''License&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Skin&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Monitor'''&lt;br /&gt;
|'''Media&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Resolutions&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Main Control(s)&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Arcade Jukebox]]&lt;br /&gt;
| Singles&lt;br /&gt;
| Mark&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 400x300 640x480 800x600&lt;br /&gt;
| '''Joystick''' Trackball&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Aussie Juke]]&lt;br /&gt;
| Both&lt;br /&gt;
| AussieJuke&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3, wma (audio) and mpg, wmv, avi (video) files &lt;br /&gt;
| 800x600+&lt;br /&gt;
| '''Joystick''' Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Arcade Music Box]]&lt;br /&gt;
| List&lt;br /&gt;
| Space Fractal&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| Many&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; cdg radio video &lt;br /&gt;
| 320x240 400x300 640x480 ''ANY''&lt;br /&gt;
| '''Joystick''' Spinner&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[DAM Jukebox]]&lt;br /&gt;
| Singles&lt;br /&gt;
| DamSoft&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 1024x768&lt;br /&gt;
| '''Buttons'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[DWJukebox]] (DOSCab/WinCab)&lt;br /&gt;
| Both&lt;br /&gt;
| Chris&lt;br /&gt;
| [[Image:OS windows icon.gif]][[Image:OS DOS icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| mp3 ogg mid&lt;br /&gt;
| MonitorLess, Any&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
| '''Buttons''' Joystick Keypad Touchscreen&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; Mouse &lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[E-Touch]]&lt;br /&gt;
| Album&lt;br /&gt;
| Barcrest&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| mp3 m4a wma cdg video&lt;br /&gt;
| 800x600 1024x768 ''ANY'' &lt;br /&gt;
| '''Touchscreen''' Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Juke Blaster Pro]]&lt;br /&gt;
| Both&lt;br /&gt;
| Steve&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Commercial&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 wma&lt;br /&gt;
| Auto size&lt;br /&gt;
| '''Touchscreen''', Keyboard, USB '''Coin Acceptor'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Jukebox Arcade]]&lt;br /&gt;
| Both&lt;br /&gt;
| NebulaSleuth&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Freeware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| WMP&lt;br /&gt;
| 1024x768 ''ANY''&lt;br /&gt;
| '''Mouse''' Trackball Buttons Touchscreen&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[MultiJuke]]&lt;br /&gt;
| Multi&lt;br /&gt;
| Space Fractal&lt;br /&gt;
| [[Image:OS windows icon.gif]][[Image:OS linux icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| Many&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; cdg&lt;br /&gt;
| MonitorLess, 640x480+ ''ANY''&lt;br /&gt;
| '''Joystick''' '''Spinner''' '''Keypad''' Trackball &lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Nowtro Jukebox]]&lt;br /&gt;
| Singles&lt;br /&gt;
| AdamMF&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 800x600+&lt;br /&gt;
| '''Keypad'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[SK Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| SalmonKing&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| WMP video&lt;br /&gt;
| 800x600+&lt;br /&gt;
| '''Keypad''' Mouse Touchscreen&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[UncleT's Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| UncleT&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| WMP video/audio&lt;br /&gt;
| 1024x768+&lt;br /&gt;
| '''Mouse Touchscreen''' Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Virtual Music Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| VMJ Team&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| mp3 wma wmv&lt;br /&gt;
| 800x600 1024x768&lt;br /&gt;
| '''Keypad''' '''Touchscreen''' Mouse &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background:navy; color:white&amp;quot;&lt;br /&gt;
|'''Software'''&lt;br /&gt;
|'''Format&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''BYOAC&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''OS'''&lt;br /&gt;
|'''License&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Skin&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Monitor'''&lt;br /&gt;
|'''Media&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Resolutions&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Controls&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[AlbumPlayer]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Shareware&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| Many&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; cdg video&lt;br /&gt;
| 800x480+&lt;br /&gt;
| Touchscreen Mouse &lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[BoxEasy]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 ogg wma m4a&lt;br /&gt;
| 1024x768 1280x1024&lt;br /&gt;
| Keyboard Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[GlobeCOM Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| '''Web'''&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Freeware&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 800x600+&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Jukebox Jockey Media Player]]&lt;br /&gt;
| Both&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard, Web based homepage&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| Music, Video, Karaoke (mp3, wma, mpeg, mp4, + much more)&lt;br /&gt;
| 800x600+, ANY&lt;br /&gt;
| '''Touchscreen''', '''Infared Remote''', Keyboard, Keypad, Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Jukebox Simulator]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[MP3 Susi]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS MAC icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| None&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 ?&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Title Track]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS MAC icon.gif]] [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| None&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 wav aiff sd2&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[The JukeBox'er]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| wma mp3 ogg wav cda cdg radio video&lt;br /&gt;
| 800x600+&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Nordbeat's Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| WMP AMP&lt;br /&gt;
| 800x600 1024x768&lt;br /&gt;
| Touchscreen Keyboard Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[The PC Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 wma wav video&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Touchscreen Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[PartyTime Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| AMP&lt;br /&gt;
| 800x600 1024x768&lt;br /&gt;
| Touchscreen Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Python Jukebox]] &lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| '''Web'''&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Open Source&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| MP3 more?&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse Touchscreen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Silverjuke]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]][[Image:OS MAC icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| AMP&lt;br /&gt;
| 640x480+&lt;br /&gt;
| Touchscreen Mouse Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Tunez]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| '''Web'''&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Open Source&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 ogg&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Touchtone]]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| AMP video&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Touchscreen Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[YoDJ]] &lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| '''Web'''&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Freeware&lt;br /&gt;
| CCS&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt;&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| Many &amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| From 640x480+&lt;br /&gt;
| Mouse/Keyboard&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''1) Format Orientation:'''&lt;br /&gt;
&lt;br /&gt;
With type of format do the software use. This tell it Singles or album based (or both). There are some exceptions:&lt;br /&gt;
&lt;br /&gt;
* Arcade Music Box use a list based screme like Mamewah, but it support both Singles and Albums formats.&lt;br /&gt;
* Wincab/Doscab acts best as a singles-based jukebox (it is very popular), but it also supports album as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Byoac Member?'''&lt;br /&gt;
&lt;br /&gt;
If this software is registered and supported by a BYOAC member, the name is showed here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) License:'''&lt;br /&gt;
* ''Freeware:'' is fully functional without payment.  A nag screen or ads are not considered a loss of functionality. &lt;br /&gt;
* ''Shareware:'' has limited functionality until payment is made. &lt;br /&gt;
* ''Commercial:'' software is fully functional for a limited time, after which payment must be made.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4) About skinning:''' &lt;br /&gt;
&lt;br /&gt;
How can the software being skinned and changed?&lt;br /&gt;
&lt;br /&gt;
{| Width=&amp;quot;550&amp;quot; valign=&amp;quot;top&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;background:white; color:black; border:1px solid silver;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#333333; color:white&amp;quot;&lt;br /&gt;
|'''Grade'''&lt;br /&gt;
|'''Fonts'''&lt;br /&gt;
|'''Background'''&lt;br /&gt;
|'''Elements'''&lt;br /&gt;
|'''Resizeable'''&lt;br /&gt;
|'''Moveable'''&lt;br /&gt;
|'''Resolutions'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Font Only'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Basic'''&lt;br /&gt;
|Maybe&lt;br /&gt;
|Yes&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Standard'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Some&lt;br /&gt;
|Some&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Advanced'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|All&lt;br /&gt;
|Some&lt;br /&gt;
|Some&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Full'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|All&lt;br /&gt;
|All&lt;br /&gt;
|Most&lt;br /&gt;
|Any&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
* '''Basic:''' Only the background may be changed or colors adjusted, but not the fonts or control placements.&lt;br /&gt;
* '''Standard:''' A software may only support one &amp;quot;Some&amp;quot;, not the both.&lt;br /&gt;
* '''Advanced:''' A software may only support one &amp;quot;Some&amp;quot;, not the both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5) Media:'''&lt;br /&gt;
* If WMP ([http://www.microsoft.com/windows/windowsmedia/default.mspx Windows Media Player]) or AMP ([http://www.winamp.com Winamp]) are listed, that jukebox software is simply a frontend for those programs and handle all formats and codecs WMP/AMP support.  WMP/AMP are '''REQUIRED''' for the jukebox software to operate.&lt;br /&gt;
* If video and/or image is listed, the individual page will list all video or image file types supported.&lt;br /&gt;
* Some software may support MP3+G (a karaoke system), wich is stated as cdg (but they may need to being ripped from the cd).&lt;br /&gt;
&lt;br /&gt;
'''6) Resolutions:''' &lt;br /&gt;
* If software has a + after the resolutions, this meams it uses an autoscaling scheme. You can show it on a higher monitor, but the skin may just be rescaled.&lt;br /&gt;
* If software stated with any, this mean any resolution is supported by a added skin.&lt;br /&gt;
* DWJukebox autoscales all skins to all resolutions and orientations; skins designed specifically for very low resolutions (320x240) are included.&lt;br /&gt;
* Other software may look best at the stated resolution(s), even if it supports any resolution with a new skin.&lt;br /&gt;
&lt;br /&gt;
'''7) Controls:''' &lt;br /&gt;
* '''Main Controls''' marked in '''bold''' indicate the controls the software was originally designed for and works best with.&lt;br /&gt;
* '''Buttons''' is typical used for limited use like insert a letter and number (like D3 to insert a song).&lt;br /&gt;
* '''Joystick''' is meant for using with arcade joystick (and few buttons), but technical been a keyboard encoder and/or gameport.&lt;br /&gt;
* '''Keyboard''' shortcuts (Skip, Pause, Show Queue etc) are not counted as main controls, due nearly all software support it in many ways. Some software can have many shortcuts.&lt;br /&gt;
* '''Keypad''' support in many software can also been remmapped.&lt;br /&gt;
* '''Mouse''' can been a trackball as well (if mouse course is hided, use trackball term insted).&lt;br /&gt;
* '''Touchscreen''' support in DWJukebox is limited to DOS and Windows XP.&lt;br /&gt;
&lt;br /&gt;
'''8) Web based skin:'''&lt;br /&gt;
* Some application can used as webbased software. So skins is based on css in that case.&lt;br /&gt;
&lt;br /&gt;
'''9) Many Extensions:''' &lt;br /&gt;
* These software support many extensions as it could listed here. So they may support 10+ extensions.&lt;br /&gt;
* '''Arcade Music Box''' and '''Album Player''' is based on BASS engine, and support these extensions as well.&lt;br /&gt;
* Bass is an external engine, [http://www.un4seen.com Bass] wich also supports a variety of extensions and is included with the software. Some software is based on it, but not all software support plugins (like '''The JukeBox'er''').&lt;br /&gt;
&lt;br /&gt;
'''10) Webbased:''' &lt;br /&gt;
* These software is writting in a web based language, like php perl and python. because of it, it good to use with a Apache server or like that. It should of course run on all platform (a least on Windows, linux and Mac)&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=File:UncleTs_Dads_Arcade.jpg&amp;diff=10460</id>
		<title>File:UncleTs Dads Arcade.jpg</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=File:UncleTs_Dads_Arcade.jpg&amp;diff=10460"/>
		<updated>2008-03-04T21:45:51Z</updated>

		<summary type="html">&lt;p&gt;Unclet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9725</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9725"/>
		<updated>2008-01-24T17:50:00Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* JPS SDK description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.jukeplugsys.com Jukebox Plugins]''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors '''Space Fractal''' (MultiJuke) and '''UncleT''' (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties ('''loadman''' and '''headkaze''') a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt; (or '''[http://www.jukeplugsys.com JukePlugSys]''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jukebox software which supports the JPS standard are listed below:'''&lt;br /&gt;
&lt;br /&gt;
* '''[http://unclet.arcadecontrols.com/Jukebox UncleT's Jukebox]''' By Uncle'T&lt;br /&gt;
* '''[http://www.multijuke.com MultiJuke]''' By Space Fractal&lt;br /&gt;
* '''[http://www.freeboxjukebox.com Freebox Jukebox]''' By Barcrest ''&amp;lt;--- currently in progress of adding JPS standard''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(JUKE_PLUGIN_EVENT_CREATE, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ON OFF&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;   (double-quotes are not included in the text string which is sent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9724</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9724"/>
		<updated>2008-01-24T17:48:57Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* JPS SDK description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.jukeplugsys.com Jukebox Plugins]''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors '''Space Fractal''' (MultiJuke) and '''UncleT''' (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties ('''loadman''' and '''headkaze''') a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt; (or '''[http://www.jukeplugsys.com JukePlugSys]''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jukebox software which supports the JPS standard are listed below:'''&lt;br /&gt;
&lt;br /&gt;
* '''[http://unclet.arcadecontrols.com/Jukebox UncleT's Jukebox]''' By Uncle'T&lt;br /&gt;
* '''[http://www.multijuke.com MultiJuke]''' By Space Fractal&lt;br /&gt;
* '''[http://www.freeboxjukebox.com Freebox Jukebox]''' By Barcrest ''&amp;lt;--- currently in progress of adding JPS standard''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS: (double-quotes are not included in the text string which is sent)&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(JUKE_PLUGIN_EVENT_CREATE, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ON OFF&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9723</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9723"/>
		<updated>2008-01-24T17:48:11Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* JPS SDK description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.jukeplugsys.com Jukebox Plugins]''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors '''Space Fractal''' (MultiJuke) and '''UncleT''' (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties ('''loadman''' and '''headkaze''') a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt; (or '''[http://www.jukeplugsys.com JukePlugSys]''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jukebox software which supports the JPS standard are listed below:'''&lt;br /&gt;
&lt;br /&gt;
* '''[http://unclet.arcadecontrols.com/Jukebox UncleT's Jukebox]''' By Uncle'T&lt;br /&gt;
* '''[http://www.multijuke.com MultiJuke]''' By Space Fractal&lt;br /&gt;
* '''[http://www.freeboxjukebox.com Freebox Jukebox]''' By Barcrest ''&amp;lt;--- currently in progress of adding JPS standard''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(JUKE_PLUGIN_EVENT_CREATE, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ON OFF&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9722</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9722"/>
		<updated>2008-01-24T17:47:40Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* JPS SDK description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.jukeplugsys.com Jukebox Plugins]''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors '''Space Fractal''' (MultiJuke) and '''UncleT''' (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties ('''loadman''' and '''headkaze''') a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt; (or '''[http://www.jukeplugsys.com JukePlugSys]''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jukebox software which supports the JPS standard are listed below:'''&lt;br /&gt;
&lt;br /&gt;
* '''[http://unclet.arcadecontrols.com/Jukebox UncleT's Jukebox]''' By Uncle'T&lt;br /&gt;
* '''[http://www.multijuke.com MultiJuke]''' By Space Fractal&lt;br /&gt;
* '''[http://www.freeboxjukebox.com Freebox Jukebox]''' By Barcrest ''&amp;lt;--- currently in progress of adding JPS standard''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(JUKE_PLUGIN_EVENT_CREATE, PLUGIN_EVENT_(name)|createValueStr)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ON OFF&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|ENABLE DISABLE NUMBER LETTER&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9721</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9721"/>
		<updated>2008-01-24T00:41:24Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.jukeplugsys.com Jukebox Plugins]''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors '''Space Fractal''' (MultiJuke) and '''UncleT''' (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties ('''loadman''' and '''headkaze''') a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt; (or '''[http://www.jukeplugsys.com JukePlugSys]''').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jukebox software which supports the JPS standard are listed below:'''&lt;br /&gt;
&lt;br /&gt;
* '''[http://unclet.arcadecontrols.com/Jukebox UncleT's Jukebox]''' By Uncle'T&lt;br /&gt;
* '''[http://www.multijuke.com MultiJuke]''' By Space Fractal&lt;br /&gt;
* '''[http://www.freeboxjukebox.com Freebox Jukebox]''' By Barcrest ''&amp;lt;--- currently in progress of adding JPS standard''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9711</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9711"/>
		<updated>2008-01-21T19:53:07Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors &amp;lt;b&amp;gt;Space Fractal&amp;lt;/b&amp;gt; (MultiJuke) and &amp;lt;b&amp;gt;UncleT&amp;lt;/b&amp;gt; (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;loadman&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;headkaze&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently in progress of adding JPS standard&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9710</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9710"/>
		<updated>2008-01-21T19:51:33Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors &amp;lt;b&amp;gt;Space Fractal&amp;lt;/b&amp;gt; (MultiJuke) and &amp;lt;b&amp;gt;UncleT&amp;lt;/b&amp;gt; (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;loadman&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;headkaze&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;UncleT’s Jukebox&amp;lt;/i&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;MultiJuke&amp;lt;/i&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;Freebox Jukebox&amp;lt;/i&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently in progress of adding JPS standard&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9709</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9709"/>
		<updated>2008-01-21T19:51:01Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors &amp;lt;b&amp;gt;Space Fractal&amp;lt;/b&amp;gt; (MultiJuke) and &amp;lt;b&amp;gt;UncleT&amp;lt;/b&amp;gt; (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;loadman&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;headkaze&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently in progress of adding JPS standard&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9708</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9708"/>
		<updated>2008-01-21T19:50:24Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* How To Use a Plug-In */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors &amp;lt;b&amp;gt;Space Fractal&amp;lt;/b&amp;gt; (MultiJuke) and &amp;lt;b&amp;gt;UncleT&amp;lt;/b&amp;gt; (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;loadman&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;headkaze&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently in progress of adding JPS standard&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9707</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9707"/>
		<updated>2008-01-21T19:50:00Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors &amp;lt;b&amp;gt;Space Fractal&amp;lt;/b&amp;gt; (MultiJuke) and &amp;lt;b&amp;gt;UncleT&amp;lt;/b&amp;gt; (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;loadman&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;headkaze&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently in progress of adding JPS standard&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9706</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9706"/>
		<updated>2008-01-21T19:49:07Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors &amp;lt;b&amp;gt;Space Fractal&amp;lt;/b&amp;gt; (MultiJuke) and &amp;lt;b&amp;gt;UncleT&amp;lt;/b&amp;gt; (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;loadman&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;headkaze&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox PlugIn System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently adding JPS standard&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9705</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9705"/>
		<updated>2008-01-21T19:48:43Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors &amp;lt;b&amp;gt;Space Fractal&amp;lt;/b&amp;gt; (MultiJuke) and &amp;lt;b&amp;gt;UncleT&amp;lt;/b&amp;gt; (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;loadman&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;headkaze&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently adding JPS standard&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9704</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9704"/>
		<updated>2008-01-21T19:48:26Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors &amp;lt;b&amp;gt;Space Fractal&amp;lt;/b&amp;gt; (&amp;lt;i&amp;gt;MultiJuke&amp;lt;/i&amp;gt;) and &amp;lt;b&amp;gt;UncleT&amp;lt;/b&amp;gt; (&amp;lt;i&amp;gt;UncleT's Jukebox&amp;lt;/i&amp;gt;) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;loadman&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;headkaze&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently adding JPS standard&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9703</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9703"/>
		<updated>2008-01-21T19:47:08Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by jukebox software authors &amp;lt;b&amp;gt;Space Fractal&amp;lt;/b&amp;gt; (MultiJuke) and &amp;lt;b&amp;gt;UncleT&amp;lt;/b&amp;gt; (UncleT's Jukebox) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently adding JPS standard&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9702</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9702"/>
		<updated>2008-01-21T19:45:54Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a couple of jukebox software authors (Space Fractal[MultiJuke] and UncleT[UncleT's Jukebox]) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; ..........http://www.freeboxjukebox.com  &amp;lt;--- currently adding JPS standard&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9701</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9701"/>
		<updated>2008-01-21T19:45:42Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a couple of jukebox software authors (Space Fractal[MultiJuke] and UncleT[UncleT's Jukebox]) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; ..........http://unclet.arcadecontrols.com/Jukebox&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt; .......................http://www.multijuke.com&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; ..........http://www.freeboxjukebox.com   &amp;lt;--- currently adding JPS standard&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9700</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9700"/>
		<updated>2008-01-21T19:43:31Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a couple of jukebox software authors (Space Fractal[MultiJuke] and UncleT[UncleT's Jukebox]) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;UncleT’s Jukebox&amp;lt;/b&amp;gt; (http://unclet.arcadecontrols.com/Jukebox/)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MultiJuke&amp;lt;/b&amp;gt;(http://www.multijuke.com/)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Freebox Jukebox&amp;lt;/b&amp;gt; (http://www.freeboxjukebox.com/) --- currently being updated to support JPS&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9699</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9699"/>
		<updated>2008-01-21T19:43:09Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a couple of jukebox software authors (Space Fractal[MultiJuke] and UncleT[UncleT's Jukebox]) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Jukebox software which supports the JPS standard are listed below:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
UncleT’s Jukebox (http://unclet.arcadecontrols.com/Jukebox/)&amp;lt;br&amp;gt;&lt;br /&gt;
MultiJuke (http://www.multijuke.com/)&amp;lt;br&amp;gt;&lt;br /&gt;
Freebox Jukebox (http://www.freeboxjukebox.com/) --- currently being updated to support JPS&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9698</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9698"/>
		<updated>2008-01-21T19:41:59Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a couple of jukebox software authors (Space Fractal[MultiJuke] and UncleT[UncleT's Jukebox]) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The jukebox software which follows this standard are listed below:&lt;br /&gt;
&lt;br /&gt;
UncleT’s Jukebox (http://unclet.arcadecontrols.com/Jukebox/)&amp;lt;br&amp;gt;&lt;br /&gt;
MultiJuke (http://www.multijuke.com/)&amp;lt;br&amp;gt;&lt;br /&gt;
Freebox Jukebox (http://www.freeboxjukebox.com/) --- currently being updated to support JPS&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9697</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9697"/>
		<updated>2008-01-21T19:40:32Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a couple of jukebox software authors (Space Fractal[MultiJuke] and UncleT[UncleT's Jukebox]) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following jukebox software follows this standard:&lt;br /&gt;
&lt;br /&gt;
UncleT’s Jukebox --------- http://unclet.arcadecontrols.com/Jukebox/&amp;lt;br&amp;gt;&lt;br /&gt;
MultiJuke ---------------- http://www.multijuke.com/&amp;lt;br&amp;gt;&lt;br /&gt;
Freebox Jukebox --------- http://www.freeboxjukebox.com/&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9696</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9696"/>
		<updated>2008-01-21T19:34:21Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a few Jukebox software authors (Space Fractal and UncleT) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9695</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9695"/>
		<updated>2008-01-21T19:34:04Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* How To Use a Plug-In */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a few Jukebox software authors (Space Fractal and UncleT) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9694</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9694"/>
		<updated>2008-01-21T19:33:50Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* Description of the JPS SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a few Jukebox software authors (Space Fractal and UncleT) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JPS SDK description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9693</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9693"/>
		<updated>2008-01-21T19:33:15Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* How To Use a Plug-In */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a few Jukebox software authors (Space Fractal and UncleT) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9692</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9692"/>
		<updated>2008-01-21T19:32:49Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a few Jukebox software authors (Space Fractal and UncleT) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9691</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9691"/>
		<updated>2008-01-21T19:32:40Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* How To Use a Plug-In */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a few Jukebox software authors (Space Fractal and UncleT) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9690</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9690"/>
		<updated>2008-01-21T19:32:21Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* BackGround */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a standard set of commands was agreed upon by a few Jukebox software authors (Space Fractal and UncleT) with a goal of allowing plugIns to be created which would be compatible with any jukebox software which supports this standard.  With some input from other interested parties (loadman, headkaze) a global standard was created.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard is known as the &amp;lt;b&amp;gt;Jukebox Plug-in System (JPS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9689</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9689"/>
		<updated>2008-01-21T19:26:44Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* How To Use a Plug-In */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a 'standard' set of commands was agreed upon by a few Jukebox software Authors. With some input from other interested parties a Global standard was created. The goal was a plug-in could be created and with a view most if not al functionality would be compatible with any Jukebox software applying this standard.&lt;br /&gt;
&lt;br /&gt;
The standard is known as 'The Jukebox Plug-in System' or '''JPS'''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your jukebox software.  You can then configure the plugin with your specific requirements by going into the jukebox software, locating the plugin and clicking the provided configuration button.&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9688</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9688"/>
		<updated>2008-01-21T19:23:23Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* Description of the JPS SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a 'standard' set of commands was agreed upon by a few Jukebox software Authors. With some input from other interested parties a Global standard was created. The goal was a plug-in could be created and with a view most if not al functionality would be compatible with any Jukebox software applying this standard.&lt;br /&gt;
&lt;br /&gt;
The standard is known as 'The Jukebox Plug-in System' or '''JPS'''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your Jukebox software. You then need to configure it by.......&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created/defined jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously created by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values listed above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9687</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9687"/>
		<updated>2008-01-21T19:21:26Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* Description of the JPS SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a 'standard' set of commands was agreed upon by a few Jukebox software Authors. With some input from other interested parties a Global standard was created. The goal was a plug-in could be created and with a view most if not al functionality would be compatible with any Jukebox software applying this standard.&lt;br /&gt;
&lt;br /&gt;
The standard is known as 'The Jukebox Plug-in System' or '''JPS'''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your Jukebox software. You then need to configure it by.......&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created(defined) jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously create by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values described above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total album number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;digitStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;digitStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = The total track number digits which have currently been entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9686</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9686"/>
		<updated>2008-01-21T19:15:48Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* Description of the JPS SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a 'standard' set of commands was agreed upon by a few Jukebox software Authors. With some input from other interested parties a Global standard was created. The goal was a plug-in could be created and with a view most if not al functionality would be compatible with any Jukebox software applying this standard.&lt;br /&gt;
&lt;br /&gt;
The standard is known as 'The Jukebox Plug-in System' or '''JPS'''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your Jukebox software. You then need to configure it by.......&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|createValueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;createValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Examples:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) To indicate whether something is on or off then the following command would be created:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ON OFF&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To indicate a number or letter can be associated with the event:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) To indicate you can enable or disable (like lights) something as well as indicating you can receive some keyEvent for it:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE KEYDOWN KEYUP KEYCLICK&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Now, &amp;quot;just for fun&amp;quot; lets say there is an event which allows the plugin to enable/disable it, also allows it to enter a number and a letter:&lt;br /&gt;
&amp;lt;i&amp;gt;JukeCommand(&amp;quot;PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|&amp;quot;ENABLE DISABLE NUMBER LETTER&amp;quot;&amp;quot;)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|sendValueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created(defined) jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = event name previously create by the &amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot; command&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;sendValueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = one of the &amp;quot;createValueStr&amp;quot; values described above                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string in the following format --&amp;gt; &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;value&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;value&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9685</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9685"/>
		<updated>2008-01-21T19:08:30Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* Description of the JPS SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a 'standard' set of commands was agreed upon by a few Jukebox software Authors. With some input from other interested parties a Global standard was created. The goal was a plug-in could be created and with a view most if not al functionality would be compatible with any Jukebox software applying this standard.&lt;br /&gt;
&lt;br /&gt;
The standard is known as 'The Jukebox Plug-in System' or '''JPS'''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your Jukebox software. You then need to configure it by.......&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;valueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created(defined) jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string which describes the current jukebox mode (ex: Random Mode, Radio Mode, Attract Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;value&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;value&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9684</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9684"/>
		<updated>2008-01-21T19:05:32Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* Description of the JPS SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a 'standard' set of commands was agreed upon by a few Jukebox software Authors. With some input from other interested parties a Global standard was created. The goal was a plug-in could be created and with a view most if not al functionality would be compatible with any Jukebox software applying this standard.&lt;br /&gt;
&lt;br /&gt;
The standard is known as 'The Jukebox Plug-in System' or '''JPS'''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your Jukebox software. You then need to configure it by.......&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;valueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created(defined) jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&amp;lt;br&amp;gt;&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONG PLAYING COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;, &lt;br /&gt;
               &amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
New song has just started to play.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_NEXT&amp;quot;,&amp;quot;system|title|artist|album|genre|totalDuration|trackNum|albumNum&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Information about the next song to be played.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system started the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This is sent when a song HAS NOT finished playing and is requested to start playing from the beginning again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAYMODE&amp;quot;, &amp;quot;modeTextString&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
The playmode the jukebox.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;modeTextString&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = Any text string at all (ex: Random Mode, Radio Mode, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
  Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;, curPosSecs|totalDuration)&amp;lt;br&amp;gt;&lt;br /&gt;
The number of seconds into the current song. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curPosSecs&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = how many seconds the song has been played&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;DIGIT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;value&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the album number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;value&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
All digits which have been currently entered for the track number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;VOLUME COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_CHANGE&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the volume has been set to another value&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system changed the volume (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;curVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current volume level&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;minVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = minimum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;maxVolumeLevel&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = maximum volume level allowed to be entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates whether volume mute is active&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9683</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9683"/>
		<updated>2008-01-21T18:55:13Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* Description of the JPS SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a 'standard' set of commands was agreed upon by a few Jukebox software Authors. With some input from other interested parties a Global standard was created. The goal was a plug-in could be created and with a view most if not al functionality would be compatible with any Jukebox software applying this standard.&lt;br /&gt;
&lt;br /&gt;
The standard is known as 'The Jukebox Plug-in System' or '''JPS'''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your Jukebox software. You then need to configure it by.......&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;valueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created(defined) jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,&amp;lt;br&amp;gt;&lt;br /&gt;
               &amp;quot;system|position|title|artist|album|genre|totalDuration|trackNum|albumNum|more&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been added to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NOTE: Some song information might not be supplied if it could not be determined at the time the event was sent.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;system&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = whether user or system added the song (0=user 1=system)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position the song has been added&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;artist&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's artist name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;album&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's album name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;genre&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = song's associated genre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;totalDuration&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = total amount of seconds in the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;trackNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned track number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;albumNum&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox's assigned album number&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;more&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = if more songs are going to be added to the queue immediately after this event is sent then we can inform the plugin this is going to happen and that more of these events are going to be sent. (0=no more, 1=more)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been removed from the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;oldPosition|newPosition&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates a song has been moved in the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;oldPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = old/previous queue position of the song&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;newPosition&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = new/current queue position of the song&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the song queue has been cleared (ie: either by the user or as a result of all the songs being removed for playing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;position&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Indicates the position of the highlighted song within the song list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;position&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = queue position which the song was removed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  FILE  Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;file&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Obtain a playlist file from the plugin.  This command can been used when the songlist is empty or last song is played/finished from the playlist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;file&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = playlist file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SONG PLAYING COMMANDS:'''&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;,&amp;quot;&amp;quot;)'''&lt;br /&gt;
New song is just started.&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;,&amp;quot;&amp;quot;)'''&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has been restarted&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;,curPosSecs)&lt;br /&gt;
The number of seconds into the current song. This command is also still invoked under FASTREV or FASTFWD commands.&lt;br /&gt;
&lt;br /&gt;
The Jukebox Software Do allways send this info when the secs is changed due to above reason. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VOLUME COMMANDS:&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_VOLUME_SET&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&lt;br /&gt;
A new value volume have been set.&lt;br /&gt;
&lt;br /&gt;
If system is set the volume, the last argument would set to one.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Set Mute Status to TRUE or FALSE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DIGIT COMMANDS:&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;VALUE&amp;quot;)&lt;br /&gt;
Send the value string on the marked album, when the have entered a album number or letter.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;VALUE&amp;quot;)&lt;br /&gt;
Send the value string on the marked track or singles, when the have entered a album number or letter.&lt;br /&gt;
&lt;br /&gt;
A Track number and or letter have been selected. Send the whole value, user seen on screen and not one digit at one time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KEY_EVENT COMMANDS&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_KEY_EVENT_SEND&amp;quot;, &amp;quot;KEYEVENT|ENABLE or DISABLE&amp;quot;)&lt;br /&gt;
Is event is disabled or enabled? If the EVENT dosent need that, it might just send a &amp;quot;&amp;quot; string. Hence it allways enabled.&lt;br /&gt;
&lt;br /&gt;
EVENT=Juke_Command(&amp;quot;JUKE_KEY_EVENT_GET&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
A KEY_EVENT have sendt from plugin to the jukebox software, and the command EVENT would been accour.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9682</id>
		<title>Jukebox Plug-Ins</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Plug-Ins&amp;diff=9682"/>
		<updated>2008-01-21T18:41:57Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* How To Write your own Plug-In */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox Plugins''' are bit of 'add on' software that is controlled by your Juke-box software.&lt;br /&gt;
&lt;br /&gt;
==BackGround==&lt;br /&gt;
&lt;br /&gt;
In early 2008 a 'standard' set of commands was agreed upon by a few Jukebox software Authors. With some input from other interested parties a Global standard was created. The goal was a plug-in could be created and with a view most if not al functionality would be compatible with any Jukebox software applying this standard.&lt;br /&gt;
&lt;br /&gt;
The standard is known as 'The Jukebox Plug-in System' or '''JPS'''&lt;br /&gt;
&lt;br /&gt;
==How To Use a Plug-In==&lt;br /&gt;
&lt;br /&gt;
Download the plug-in and place it in the 'plugins' subfolder of your Jukebox software. You then need to configure it by.......&lt;br /&gt;
&lt;br /&gt;
==Description of the JPS SDK==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;MAIN PLUGIN CONTROL FUNCTIONS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_GetPluginInfo()&amp;lt;br&amp;gt;&lt;br /&gt;
Return a string with plugin info in the following format ---&amp;gt; &lt;br /&gt;
&amp;quot;NAME + | + AUTHOR + | + VERSION + | + DESCRIPTION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Initialize(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Inits the plugin when the Jukebox Software starts.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Shutdown(value)&amp;lt;br&amp;gt;&lt;br /&gt;
Shuts down the plugin when the Jukebox Software ends.  Returns 1 when successful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 int  Juke_Configure(HWND hWndParent)&amp;lt;br&amp;gt;&lt;br /&gt;
Invokes the plugin configuration screen with the jukebox application's window ID.  The plugin can use this as it's parent window, so the configuration window can have the current focus.  If a jukebox application does not know what it is, this can been set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PCHAR  Juke_Command(PChar Name, PChar Value)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a command(event) (ASCII formatted) with a name and a value to the plugin.  The plugin can return a string pointer to a jukebox software (ASCII formatted) as well (when required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;PLUGIN EVENT COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_CREATE&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;)&amp;lt;br&amp;gt;            &lt;br /&gt;
This command is used to create(define) a jukebox-specific event which can be sent/received to/from the plugin at any time.  One of these commands are sent for each specific event which is defined and are sent to the plugin when the jukebox first starts.  The command informs the plugin about &amp;quot;extra&amp;quot; events (which are not defined by the JPS standard).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;PLUGIN_EVENT_(name)&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = jukebox-specific event name&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;valueStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = text string indicating which types of values are allowed to be sent/received to/from the plugin.  This string consists of any of the following text values listed below.  Multiple values are space delimited.                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ENABLE&amp;lt;/i&amp;gt;   = allow the user to provide input or invoke change  (ie: allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;DISABLE&amp;lt;/i&amp;gt;  = do not allow user to provide input or invoke change (ex: do not allow users to delete queued songs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;NUMBER&amp;lt;/i&amp;gt;   = number can be provided (ex: set volume level)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;LETTER&amp;lt;/i&amp;gt;   = letter can be provided (ex: jump to album covers starting with a certain letter). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;ON&amp;lt;/i&amp;gt;       = feature/setting was turned on (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;OFF&amp;lt;/i&amp;gt;      = feature/setting was turned off (ex: mute volume, repeat song)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYDOWN&amp;lt;/i&amp;gt;  = button has been pressed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYUP&amp;lt;/i&amp;gt;    = button has been released&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;KEYCLICK&amp;lt;/i&amp;gt; = button has been pressed and released&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_SEND&amp;quot;, &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a previously created(defined) jukebox-specific event to the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  retValStr =  Juke_Command(&amp;quot;JUKE_PLUGIN_EVENT_GET&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
This command is continuously sent to the plugin so the plugin can then return an event string value to indicate an event in which the jukebox software should execute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;retValStr&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; = &amp;quot;PLUGIN_EVENT_(name)|valueStr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;APPLICATION COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_GAINFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window becomes the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_LOSTFOCUS&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox window is no longer the active window in the user's environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_RESTORED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is restored from being minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_MINIMIZED&amp;quot;, nullString)&amp;lt;br&amp;gt;&lt;br /&gt;
When the jukebox application is minimized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_UNICODE&amp;quot;, &amp;quot;TRUE/FALSE&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Whether the Jukebox supports Unicode or not? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Juke_Command(&amp;quot;JUKE_APP_HOST&amp;quot;, &amp;quot;JukeboxName&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Informs the plugin with the jukebox's name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;SONGLIST COMMANDS:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Jukebox Authors: If the song contain a | char (I never seen that), remove that before send the string.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_SONGLIST_ADD_SONG&amp;quot;,'''&lt;br /&gt;
&amp;quot;system|postition|title|artist|album|genre|totalDuration|TrackNr|AlbumNr|more&amp;quot;)&lt;br /&gt;
Add a song into that position in the queue.&lt;br /&gt;
&lt;br /&gt;
Some Jukebox Software might add a song directly as a first song, so it play directly. Here set a value to 0.&lt;br /&gt;
If a positionis to big, it would just added next to the queue.&lt;br /&gt;
&lt;br /&gt;
Info about arguments:&lt;br /&gt;
&lt;br /&gt;
* Auto means if it was added by the &amp;quot;USER&amp;quot; or by &amp;quot;SYSTEM&amp;quot;.&lt;br /&gt;
* TrackNr and AlbumNr is the same values gave by DIGIT COMMANDS.&lt;br /&gt;
* Some songinfo &amp;quot;tags&amp;quot; might been empty if not used.&lt;br /&gt;
* Some songs might not even contain TotalDuration if it is unknown.&lt;br /&gt;
* If more songs is going to submit at once, the more vaule is set to 1. The last submitted song would have a value set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_SONGLIST_REMOVE_SONG&amp;quot;, &amp;quot;System|position&amp;quot;)'''&lt;br /&gt;
Song removed from the queue by user or system or a song is played finished (using queuePosNum=1 as value).&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_SONGLIST_MOVE_SONG&amp;quot;, &amp;quot;System|oldPosition|newPosition&amp;quot;)'''&lt;br /&gt;
Song has been moved in the queue by user or system.&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_SONGLIST_CLEAR&amp;quot;, &amp;quot;System&amp;quot;)'''&lt;br /&gt;
The song queue has been cleared by user or system.&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_SONGLIST_CURRENTPOSITION&amp;quot;, &amp;quot;System&amp;quot;)'''&lt;br /&gt;
Some software do NOT delete queue after played song, like a PLAYLIST system in Winamp. These software would tell which song that is curretly playing. Queue based Jukebox Software might not use this command.&lt;br /&gt;
&lt;br /&gt;
FILE=Juke_Command(&amp;quot;JUKE_SONGLIST_SUGGESTION&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Get a playlist file from a plugin. This command can been used when the queue is empty or last song is played finish from the PlayList. neat for applications like MUSIC_IP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SONG PLAYING COMMANDS:'''&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_SONG_START&amp;quot;,&amp;quot;&amp;quot;)'''&lt;br /&gt;
New song is just started.&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_SONG_FINISH&amp;quot;,&amp;quot;&amp;quot;)'''&lt;br /&gt;
Current song has finished.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_RESTART&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has been restarted&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_SKIP&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has been skipped.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_PAUSE&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has been paused.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_RESUME&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has been resumed from pause state&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_START&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has started being fast forwarded.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_FASTFWD_FINISH&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has finished being fast forwarded&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_FASTREV_START&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has started being fast reversed&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_FASTREV_FINISH&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
Current song has finished being fast reversed&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_SONG_PLAY_POSITION&amp;quot;,curPosSecs)&lt;br /&gt;
The number of seconds into the current song. This command is also still invoked under FASTREV or FASTFWD commands.&lt;br /&gt;
&lt;br /&gt;
The Jukebox Software Do allways send this info when the secs is changed due to above reason. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VOLUME COMMANDS:&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_VOLUME_SET&amp;quot;, &amp;quot;system|curVolumeLevel|minVolumeLevel|maxVolumeLevel&amp;quot;)&lt;br /&gt;
A new value volume have been set.&lt;br /&gt;
&lt;br /&gt;
If system is set the volume, the last argument would set to one.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_VOLUME_MUTE&amp;quot;, &amp;quot;TRUE or FALSE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Set Mute Status to TRUE or FALSE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DIGIT COMMANDS:&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_ENTER_ALBUM_VALUE&amp;quot;, &amp;quot;VALUE&amp;quot;)&lt;br /&gt;
Send the value string on the marked album, when the have entered a album number or letter.&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_ENTER_TRACK_VALUE&amp;quot;, &amp;quot;VALUE&amp;quot;)&lt;br /&gt;
Send the value string on the marked track or singles, when the have entered a album number or letter.&lt;br /&gt;
&lt;br /&gt;
A Track number and or letter have been selected. Send the whole value, user seen on screen and not one digit at one time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KEY_EVENT COMMANDS&lt;br /&gt;
&lt;br /&gt;
Juke_Command(&amp;quot;JUKE_KEY_EVENT_SEND&amp;quot;, &amp;quot;KEYEVENT|ENABLE or DISABLE&amp;quot;)&lt;br /&gt;
Is event is disabled or enabled? If the EVENT dosent need that, it might just send a &amp;quot;&amp;quot; string. Hence it allways enabled.&lt;br /&gt;
&lt;br /&gt;
EVENT=Juke_Command(&amp;quot;JUKE_KEY_EVENT_GET&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
A KEY_EVENT have sendt from plugin to the jukebox software, and the command EVENT would been accour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FEATURE COMMANDS:'''&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_FEATURE_ATTRACT_MODE&amp;quot;, onActive or onNotActive or Off)'''&lt;br /&gt;
&lt;br /&gt;
onActive (attract mode has been activated by the user and is currently running)&lt;br /&gt;
onNotActive (attract mode has been activated by the user and is NOT currently running)&lt;br /&gt;
off (attract mode has NOT been activated by the user)&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_FEATURE_GENRE_LOCK&amp;quot;, TRUE or FALSE)'''&lt;br /&gt;
Genre Lock feature is enabled (TRUE) or disabled (FALSE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_FEATURE_PARTY_LOCK&amp;quot;, TRUE or FALSE)'''&lt;br /&gt;
Party Lock feature is enabled (TRUE) or disabled (FALSE)&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_FEATURE_RANDOM_MODE&amp;quot;, TRUE or FALSE)'''&lt;br /&gt;
Radio or Random mode is enabled(TRUE) or disabled(FALSE)&lt;br /&gt;
&lt;br /&gt;
'''Juke_Command(&amp;quot;JUKE_FEATURE_SCREENSAVER_MODE&amp;quot;, TRUE or FALSE)'''&lt;br /&gt;
&lt;br /&gt;
TRUE: screensaver is started&lt;br /&gt;
FALSE: screensaver is ended&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Mala_Bugs&amp;diff=8945</id>
		<title>Mala Bugs</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Mala_Bugs&amp;diff=8945"/>
		<updated>2007-05-19T18:08:13Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* Possible MaLa Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Possible MaLa Bugs==&lt;br /&gt;
&lt;br /&gt;
This page exists for constructive purposes. The idea being if we can give details on the occurrences of the possible bugs it will give Swindus a good chance of fixing it quickly as his time is limited. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Possible MaLa Bugs&lt;br /&gt;
! MaLa Version !! Possible Bug !! Work-around/ Notes !! Swindus Note &lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| After installing V1.0 RC9 it was noticed that fast acceleration through the gamelist no longer worked when holding the DOWN button continuously.   The &amp;quot;Controller/Options/Use Scrolling Acceleration&amp;quot; was checked and the &amp;quot;Acceleration speed&amp;quot; was set to 20.   Holding the DOWN arrow did nothing.   If I change the &amp;quot;acceleration speed&amp;quot; to 9 or below, then fast scrolling through the gamelist will work.  A second observation is if the &amp;quot;acceleration speed&amp;quot; is set to 20 and I &amp;quot;uncheck (ie: turn off)&amp;quot; the &amp;quot;Controller/Options/Use Scrolling Acceleration&amp;quot; option, then fast scrolling &amp;quot;does&amp;quot; work.  This is weird since the option was turned off.&lt;br /&gt;
| Alter the scrolling acceleration to a value under 10  (controller-options-use scrolling acceleration &amp;lt;10)&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| Mame config editor (options-mame config-basic) does not appear to cater for all the events in the latest versions of mame. &lt;br /&gt;
| Edit Mame.ini manually for the effected items. This is beacuse some items have been added and some removed on the latest mame versions&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| When Mala is started(either from a reboot, through a desktop shortcut or from Mala.exe), the screensaver only works if the video option is enabled, whether that is the selection when Mala starts or if another selection is made at startup, then switched to video after.  Once the video option is enabled and the screensaver fires up once, then I can switch between the other options (picture or plugin only), and they both work.  One thing that I get with all of them is that the No Files Found screen comes up every time, even if I have files in the target directories or not.&lt;br /&gt;
| ?&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| MaLa Tree:  I can't create any new &amp;quot;sections&amp;quot; that are populated with lnk or bat files... Every one I create now has the &amp;quot;Error Code 2&amp;quot; error.  Since my last post I also accidentally edited my &amp;quot;Music Game&amp;quot; section, and now they don't work at all, even though the settings are the same as before.  Sections I have not touched do work, though, such as my Playstation (bat) and Doom Collection (bat) sections..&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| Video Screensaver:videos seem to work great -- except for after some time (I am on random mode) a windows error box pops up saying &amp;quot;The file cannot be read&amp;quot;. It seem to increase in frequency over time.  WI first start MaLa it takes quite a while for the error message to pop up, but then the next time it seems shorter, and the next time it is even shorter, and the next time ...  and so on and so forth.  This would lead me to believe that there is some sort of memory corruption going on that is causing my issue.&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| The intro video running slowly, but I'm getting the audio from the preview video of whichever rom is selected in the FE playing behind it. Ideally the layout video should not start until the intro video is finished&lt;br /&gt;
| *&lt;br /&gt;
| Swindus is aware of this one&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
{{Mala-Wiki}}&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Mala_Bugs&amp;diff=8944</id>
		<title>Mala Bugs</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Mala_Bugs&amp;diff=8944"/>
		<updated>2007-05-19T18:07:39Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* Possible MaLa Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Possible MaLa Bugs==&lt;br /&gt;
&lt;br /&gt;
This page exists for constructive purposes. The idea being if we can give details on the occurrences of the possible bugs it will give Swindus a good chance of fixing it quickly as his time is limited. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Possible MaLa Bugs&lt;br /&gt;
! MaLa Version !! Possible Bug !! Work-around/ Notes !! Swindus Note &lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| After installing V1.0 RC9 it was noticed that fast acceleration through the gamelist no longer worked when holding the DOWN button continuously.   The &amp;quot;Controller/Options/Use Scrolling Acceleration&amp;quot; was checked and the &amp;quot;Acceleration speed&amp;quot; was set to 20.   Holding the DOWN arrow did nothing.   If I change the &amp;quot;acceleration speed&amp;quot; to 9 or below, then fast scrolling through the gamelist will work.  A second observation is if the &amp;quot;acceleration speed&amp;quot; is set to 20 and I &amp;quot;uncheck (ie: turn off)&amp;quot; the &amp;quot;Controller/Options/Use Scrolling Acceleration&amp;quot; option, then fast scrolling &amp;quot;does&amp;quot; work.  This is weird sine the option was turned off.&lt;br /&gt;
| Alter the scrolling acceleration to a value under 10  (controller-options-use scrolling acceleration &amp;lt;10)&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| Mame config editor (options-mame config-basic) does not appear to cater for all the events in the latest versions of mame. &lt;br /&gt;
| Edit Mame.ini manually for the effected items. This is beacuse some items have been added and some removed on the latest mame versions&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| When Mala is started(either from a reboot, through a desktop shortcut or from Mala.exe), the screensaver only works if the video option is enabled, whether that is the selection when Mala starts or if another selection is made at startup, then switched to video after.  Once the video option is enabled and the screensaver fires up once, then I can switch between the other options (picture or plugin only), and they both work.  One thing that I get with all of them is that the No Files Found screen comes up every time, even if I have files in the target directories or not.&lt;br /&gt;
| ?&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| MaLa Tree:  I can't create any new &amp;quot;sections&amp;quot; that are populated with lnk or bat files... Every one I create now has the &amp;quot;Error Code 2&amp;quot; error.  Since my last post I also accidentally edited my &amp;quot;Music Game&amp;quot; section, and now they don't work at all, even though the settings are the same as before.  Sections I have not touched do work, though, such as my Playstation (bat) and Doom Collection (bat) sections..&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| Video Screensaver:videos seem to work great -- except for after some time (I am on random mode) a windows error box pops up saying &amp;quot;The file cannot be read&amp;quot;. It seem to increase in frequency over time.  WI first start MaLa it takes quite a while for the error message to pop up, but then the next time it seems shorter, and the next time it is even shorter, and the next time ...  and so on and so forth.  This would lead me to believe that there is some sort of memory corruption going on that is causing my issue.&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| The intro video running slowly, but I'm getting the audio from the preview video of whichever rom is selected in the FE playing behind it. Ideally the layout video should not start until the intro video is finished&lt;br /&gt;
| *&lt;br /&gt;
| Swindus is aware of this one&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! V1.0 RC9&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|-&lt;br /&gt;
! *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
{{Mala-Wiki}}&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Mala_Wiki&amp;diff=8517</id>
		<title>Mala Wiki</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Mala_Wiki&amp;diff=8517"/>
		<updated>2007-04-10T20:02:20Z</updated>

		<summary type="html">&lt;p&gt;Unclet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Image:Malaw.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Note: This is under Construction'''&lt;br /&gt;
&lt;br /&gt;
Feel free to add data under the approriate Heading&lt;br /&gt;
&lt;br /&gt;
== General M.A.L.A ==&lt;br /&gt;
* [[Mala_Setup|Quick MAME Set-up]]&lt;br /&gt;
* [[Mala_Cool|Cool Mala Things]]&lt;br /&gt;
* [[MaLa_FAQ|Mala FAQ]]&lt;br /&gt;
* [[JukeBox]]&lt;br /&gt;
&lt;br /&gt;
== Config Options (Complete list ‘Tab by Tab’) ==&lt;br /&gt;
* [[Mala_Config|Mala Config]]&lt;br /&gt;
&lt;br /&gt;
== Other Emu-Set-up ==&lt;br /&gt;
* [http://forum.arcadecontrols.com/index.php?topic=56010.0 MaLa &amp;quot;How to&amp;quot; guide] - Install and configure emulators (as well as Visual Pinball) (BYOAC Forum Link)&lt;br /&gt;
* [http://mala.arcadezentrum.com/easytrack.php?id=emuguideaddon Zinc and ePSXe Help] - It from MaLa website&lt;br /&gt;
&lt;br /&gt;
== Game Lists ==&lt;br /&gt;
* [[Mala_Creation|Creation]]&lt;br /&gt;
* [[Mala_Filtering|Filering Game Lists]]&lt;br /&gt;
* [[Mala_Tree|Trees]]&lt;br /&gt;
&lt;br /&gt;
== Plug-Ins ==&lt;br /&gt;
* [http://mala.arcadezentrum.com/plugins.html List of various plugins]&lt;br /&gt;
* [[Mala_Plugins]] how to create and install them&lt;br /&gt;
&lt;br /&gt;
== Layouts ==&lt;br /&gt;
* [[Mala_Layout|MaLa Layouts]] How to create and install Layouts&lt;br /&gt;
* [http://mala.arcadezentrum.com/layouts.html Completed Layouts] - Lists of completed Layouts&lt;br /&gt;
&lt;br /&gt;
== MaLa Hardware ==&lt;br /&gt;
* [http://mala.arcadezentrum.com/hardware.html What is this hardware do?]&lt;br /&gt;
* [http://www.members.optushome.com.au/backwash/malahw Install] - How to install it.&lt;br /&gt;
* [http://forum.arcadecontrols.com/index.php?topic=57516.msg566089#msg566089 MaLaLED Attract Mode] - How To (BYOAC Forum Link)&lt;br /&gt;
&lt;br /&gt;
{{Mala-Wiki}}&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Mala_Wiki&amp;diff=8516</id>
		<title>Mala Wiki</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Mala_Wiki&amp;diff=8516"/>
		<updated>2007-04-10T20:01:52Z</updated>

		<summary type="html">&lt;p&gt;Unclet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Image:Malaw.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Note: This is under Construction'''&lt;br /&gt;
&lt;br /&gt;
Feel free to add data under the approriate Heading&lt;br /&gt;
&lt;br /&gt;
== General M.A.L.A ==&lt;br /&gt;
* [[Mala_Setup|Quick MAME Set-up]]&lt;br /&gt;
* [[Mala_Cool|Cool Mala Things]]&lt;br /&gt;
* [[MaLa_FAQ|Mala FAQ]]&lt;br /&gt;
* [[JukeBox]]&lt;br /&gt;
&lt;br /&gt;
== Config Options (Complete list ‘Tab by Tab’) ==&lt;br /&gt;
* [[Mala_Config|Mala Config]]&lt;br /&gt;
&lt;br /&gt;
== Other Emu-Set-up ==&lt;br /&gt;
* [http://forum.arcadecontrols.com/index.php?topic=56010.0 MaLa &amp;quot;How to&amp;quot; guide] - Install and configure emulators, including Visual Pinball) (BYOAC Forum Link)&lt;br /&gt;
* [http://mala.arcadezentrum.com/easytrack.php?id=emuguideaddon Zinc and ePSXe Help] - It from MaLa website&lt;br /&gt;
&lt;br /&gt;
== Game Lists ==&lt;br /&gt;
* [[Mala_Creation|Creation]]&lt;br /&gt;
* [[Mala_Filtering|Filering Game Lists]]&lt;br /&gt;
* [[Mala_Tree|Trees]]&lt;br /&gt;
&lt;br /&gt;
== Plug-Ins ==&lt;br /&gt;
* [http://mala.arcadezentrum.com/plugins.html List of various plugins]&lt;br /&gt;
* [[Mala_Plugins]] how to create and install them&lt;br /&gt;
&lt;br /&gt;
== Layouts ==&lt;br /&gt;
* [[Mala_Layout|MaLa Layouts]] How to create and install Layouts&lt;br /&gt;
* [http://mala.arcadezentrum.com/layouts.html Completed Layouts] - Lists of completed Layouts&lt;br /&gt;
&lt;br /&gt;
== MaLa Hardware ==&lt;br /&gt;
* [http://mala.arcadezentrum.com/hardware.html What is this hardware do?]&lt;br /&gt;
* [http://www.members.optushome.com.au/backwash/malahw Install] - How to install it.&lt;br /&gt;
* [http://forum.arcadecontrols.com/index.php?topic=57516.msg566089#msg566089 MaLaLED Attract Mode] - How To (BYOAC Forum Link)&lt;br /&gt;
&lt;br /&gt;
{{Mala-Wiki}}&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=8306</id>
		<title>UncleT's Jukebox</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=8306"/>
		<updated>2007-03-26T12:57:29Z</updated>

		<summary type="html">&lt;p&gt;Unclet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:UncleTsJukebox.jpg|thumb|UncleT's Jukebox Screenshot|320px|right]]&lt;br /&gt;
* '''OS:  ''' Win98(untested), WinME, Win2k, WinXP&lt;br /&gt;
* '''Cost:  ''' Freeware&lt;br /&gt;
* '''Skinnable:  ''' Advanced (colors, fonts, images, hide buttons, etc..)&lt;br /&gt;
* '''Re-mappable keys:  ''' Yes (over 70+ keys allowed to be remapped)&lt;br /&gt;
* '''Monitor orientation(s):  ''' Horizontal &lt;br /&gt;
* '''Screen resolution(s):  ''' 1024x768 and greater&lt;br /&gt;
* '''Controller(s):  ''' Touchscreen, Mouse and Keyboard&lt;br /&gt;
* '''Supported media format(s):''' All WMP audio and video formats&lt;br /&gt;
* '''Format Orientation(s):''' Album-oriented&lt;br /&gt;
* '''Additional Requirements:''' Microsoft Media Player requried&lt;br /&gt;
* '''Homepage:  '''http://unclet.arcadecontrols.com/Jukebox/&lt;br /&gt;
* '''Additional Details:'''&lt;br /&gt;
&lt;br /&gt;
:Have you ever wanted to categorize your MP3 files and/or Video files into a music library and access them on demand via a jukebox interface? Now you can with UncleT's Jukebox.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:Features:&lt;br /&gt;
&lt;br /&gt;
:* Touchscreen monitor support&lt;br /&gt;
:* Dual monitors supported&lt;br /&gt;
:* Plays video and audio files (via Windows Media Player)&lt;br /&gt;
:* Displays 1, 4, 9, 16, 25 album covers at once&lt;br /&gt;
:* Allows creation of playlists (My Favorites, Mom's music, etc..)&lt;br /&gt;
:* Clicking on currently playing album cover displays all song tracks&lt;br /&gt;
:* Display song lyrics for all songs&lt;br /&gt;
:* Interface via arcade controls by assigning required key mappings&lt;br /&gt;
:* Display windows are skinnable (images, colors, fonts and text)&lt;br /&gt;
:* View song tracks currently in the queue waiting to be played&lt;br /&gt;
:* Randomly play songs from a selected genre only&lt;br /&gt;
:* Randomly play songs from Top10, Top25, Top50 or Top100 lists&lt;br /&gt;
:* Search for songs by Artist, by Album or by Song Track title name&lt;br /&gt;
:* &amp;quot;Party Lock&amp;quot; feature offers the ability to hide/disable controls&lt;br /&gt;
:* &amp;quot;Attract Mode&amp;quot; feature provides animation when system is idle&lt;br /&gt;
:* Sort album collection by Artist name or Album name&lt;br /&gt;
:* Scrollable lyrics&lt;br /&gt;
:* Virtual keyboard with transparency settings&lt;br /&gt;
:* Cycle lyrics, album cover and media for current song with one click&lt;br /&gt;
:* Fullscreen supported&lt;br /&gt;
:* When not in fullscreen, the window can be resized&lt;br /&gt;
:* Supports 1024x768 and greater resolutions&lt;br /&gt;
:* Determine how many songs to be displayed in the song queue&lt;br /&gt;
:* Songs added to the song queue can be added at random locations&lt;br /&gt;
:* Change the order of songs once they are already in the song queue&lt;br /&gt;
:* Clear and delete songs from the song queue&lt;br /&gt;
:* Repeat option allows a song to be placed back into the queue&lt;br /&gt;
:* Separate album cover page to maintain your search results&lt;br /&gt;
:* Jump to albums starting with one (or two) entered letters&lt;br /&gt;
:* Pullout menus provided which have buttons not used regularly&lt;br /&gt;
:* Ability to hide pullout menu buttons&lt;br /&gt;
:* Albums can have video and audio files associated together&lt;br /&gt;
:* One song can have a video and audio file present at the same time&lt;br /&gt;
:* FastForward/FastReverse seek capabilities provides&lt;br /&gt;
:* Over 70 key mappings provided&lt;br /&gt;
:* Exit the application or windows within via the ESC key&lt;br /&gt;
:* Sliders provide easy way to hide certain sections of the display&lt;br /&gt;
:* Album numbers can be displayed over top-right corner of cover art&lt;br /&gt;
:* Assign genres to each album easily&lt;br /&gt;
:* Animation provided when flipping to a page of album covers&lt;br /&gt;
:* Settings available to set the page flip speed&lt;br /&gt;
:* Sounds are provided (page flip, entering digits, etc..)&lt;br /&gt;
:* Cycle buttons are provided to easily traverse through choices&lt;br /&gt;
:* Settings available to set the lyrics scrolling speed&lt;br /&gt;
:* Ability to hide album search scrollbars, pullout menus, etc...&lt;br /&gt;
:* View the Top100 songs and alter the list as well&lt;br /&gt;
:* Display album covers associated with a certain genre only&lt;br /&gt;
:* Display only albums which have not been assigned a genre yet&lt;br /&gt;
:* Assign numbers to song tracks automatically or use provided ones&lt;br /&gt;
:* Set the search limit for album search results&lt;br /&gt;
:* Show a tool tip at startp&lt;br /&gt;
:* Start the application in fullscreen mode&lt;br /&gt;
:* Automatically start a song when the application starts&lt;br /&gt;
:* Determine which page location should be displayed when starting&lt;br /&gt;
:* Hide the cursor (for touchscreen monitors)&lt;br /&gt;
:* Double-click the album cover art to display an expanded view&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:''UncleT's Jukebox was created by [http://forum.arcadecontrols.com/index.php?action=profile;u=1538 UncleT], who is an active member in the [http://forum.arcadecontrols.com/index.php BYOAC forums]. This software has the own [http://forum.arcadecontrols.com/index.php?board=22 support board].''&lt;br /&gt;
&lt;br /&gt;
{{JukeboxSoftware}}&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Software&amp;diff=8305</id>
		<title>Jukebox Software</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=Jukebox_Software&amp;diff=8305"/>
		<updated>2007-03-26T12:56:53Z</updated>

		<summary type="html">&lt;p&gt;Unclet: /* List of jukebox software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Jukebox software''' is designed to allow your PC to act and appear as a jukebox. Much like [[emulators|game emulators]], there is a GUI to enhance this effect. Jukeboxes often require you to [[CD Ripping|rip your music]] from CD's to your PC. &lt;br /&gt;
&lt;br /&gt;
Software is available for several different operating systems and may or may not be freeware.  Often, if the software is freeware, a donation link is present on the homepage of the software to allow you to show your appreciation for the developer's efforts in creating software that frequently rivals and/or bests commercial software!&lt;br /&gt;
&lt;br /&gt;
Jukebox software may also be &amp;quot;skinnable&amp;quot;, meaning the appearance of the software may be changed by the end-user based on their preferences.  This may take the form of preset skins within the software, or the ability to develop and share skins with other end-users.&lt;br /&gt;
&lt;br /&gt;
Lastly, touchscreens may be utilized if the software supports it, and can be used to eliminate the need for buttons or a keyboard/mouse combination altogether.&lt;br /&gt;
&lt;br /&gt;
==List of jukebox software==&lt;br /&gt;
Below is the jukebox software comparison table for '''Windows''' only. SilverJuke now exists to Mac, and Doscab is for DOS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''''Please be aware that this may be incomplete! The individual pages will have the software's homepage for you to verify any information or questions you may have!'''''&lt;br /&gt;
&lt;br /&gt;
{| Width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;background:white; color:black; border:1px solid silver;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:navy; color:white&amp;quot;&lt;br /&gt;
|'''Software'''&lt;br /&gt;
|'''Format&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''BYOAC&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''OS'''&lt;br /&gt;
|'''License&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Skin&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Monitor'''&lt;br /&gt;
|'''Media&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Resolutions&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
|'''Controls&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[AlbumPlayer]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Shareware&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| Many&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; cdg video&lt;br /&gt;
| 800x480+&lt;br /&gt;
| Touchscreen Mouse &lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Arcade Jukebox]]&lt;br /&gt;
| Singles&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]] &lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 400x300 640x480 800x600&lt;br /&gt;
| Keyboard Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Arcade Music Box]]&lt;br /&gt;
| List&lt;br /&gt;
| Space Fractal&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| Many&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; cdg radio video &lt;br /&gt;
| 320x240 400x300 640x480 ''ANY''&lt;br /&gt;
| Keyboard Joystick Spinner&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[BoxEasy]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 ogg wma m4a&lt;br /&gt;
| 1024x768 1280x1024&lt;br /&gt;
| Keyboard Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[DAM Jukebox]]&lt;br /&gt;
| Singles&lt;br /&gt;
| DamSoft&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Freebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| Barcrest&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| mp3 m4a wma cdg video&lt;br /&gt;
| 800x600 1024x768 ''Any'' &lt;br /&gt;
| Touchscreen Mouse Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[GlobeCOM Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Web Based.gif]]&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Freeware&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 800x600+&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Jukebox Simulator]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[MP3 Susi]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS MAC icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| None&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 ?&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Nordbeat's Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| WMP AMP&lt;br /&gt;
| 800x600 1024x768&lt;br /&gt;
| Touchscreen Keyboard Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[PartyTime Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| AMP&lt;br /&gt;
| 800x600 1024x768&lt;br /&gt;
| Touchscreen Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Python Jukebox]] &lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Web Based.gif]]&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Open Source&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| MP3 more?&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse Touchscreen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Silverjuke]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]][[Image:OS MAC icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| AMP&lt;br /&gt;
| 640x480+&lt;br /&gt;
| Touchscreen Mouse Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[SK Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| SalmonKing&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| Many&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; video&lt;br /&gt;
| 800x600+&lt;br /&gt;
| Touchscreen Mouse Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Title Track]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS MAC icon.gif]] [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| None&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 wav aiff sd2&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[The JukeBox'er]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| wma mp3 ogg wav cda cdg radio video&lt;br /&gt;
| 800x600+&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[The PC Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 wma wav video&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Touchscreen Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Tunez]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Web Based.gif]]&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Open Source&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| mp3 ogg&lt;br /&gt;
| ?&lt;br /&gt;
| Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Touchtone]]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Shareware&lt;br /&gt;
| Basic&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| AMP video&lt;br /&gt;
| 1024x768&lt;br /&gt;
| Touchscreen Mouse&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[UncleT's Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| UncleT&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Advanced&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| WMP video/audio&lt;br /&gt;
| 1024x768+&lt;br /&gt;
| Touchscreen Mouse Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Virtual Music Jukebox]]&lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:OS windows icon.gif]]&lt;br /&gt;
| Commercial&lt;br /&gt;
| Standard&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor dualscreen icon.gif]]&lt;br /&gt;
| mp3 wma wmv&lt;br /&gt;
| 800x600 1024x768&lt;br /&gt;
| Touchscreen Mouse Keyboard&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Wincab/Doscab]]&lt;br /&gt;
| Both&lt;br /&gt;
| Chris&lt;br /&gt;
| [[Image:OS windows icon.gif]][[Image:OS DOS icon.gif]]&lt;br /&gt;
| Freeware&lt;br /&gt;
| Full&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]][[Image:Monitor vertical icon.gif]]&lt;br /&gt;
| mp3 ogg mid&lt;br /&gt;
| Any&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Touchscreen Mouse Keyboard Joystick&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[YoDJ]] &lt;br /&gt;
| Album&lt;br /&gt;
| -&lt;br /&gt;
| [[Image:Web Based.gif]]&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Freeware&lt;br /&gt;
| CCS&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt;&lt;br /&gt;
| [[Image:Monitor horizontal icon.gif]]&lt;br /&gt;
| Many &amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&lt;br /&gt;
| From 640x480+&lt;br /&gt;
| Mouse/Keyboard&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''1) Format Orientation:'''&lt;br /&gt;
&lt;br /&gt;
With type of format do the software use. This tell it Singles or album based (or both). There are some exceptions:&lt;br /&gt;
&lt;br /&gt;
* Arcade Music Box use a list based screme like Mamewah, but it support both Singles and Albums formats.&lt;br /&gt;
* Wincab/Doscab acts best as a singles-based jukebox (it is very popular), but it also supports album as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Byoac Member?'''&lt;br /&gt;
&lt;br /&gt;
If this software is registered and supported by a BYOAC member, the name is showed here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) License:'''&lt;br /&gt;
* ''Freeware:'' is fully functional without payment.  A nag screen or ads are not considered a loss of functionality. &lt;br /&gt;
* ''Shareware:'' has limited functionality until payment is made. &lt;br /&gt;
* ''Commercial:'' software is fully functional for a limited time, after which payment must be made.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4) About skinning:''' &lt;br /&gt;
&lt;br /&gt;
How can the software being skinned and changed?&lt;br /&gt;
&lt;br /&gt;
{| Width=&amp;quot;550&amp;quot; valign=&amp;quot;top&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; style=&amp;quot;background:white; color:black; border:1px solid silver;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#333333; color:white&amp;quot;&lt;br /&gt;
|'''Grade'''&lt;br /&gt;
|'''Fonts'''&lt;br /&gt;
|'''Background'''&lt;br /&gt;
|'''Elements'''&lt;br /&gt;
|'''Resizeable'''&lt;br /&gt;
|'''Moveable'''&lt;br /&gt;
|'''Resolutions'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Font Only'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Basic'''&lt;br /&gt;
|Maybe&lt;br /&gt;
|Yes&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Standard'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Some&lt;br /&gt;
|Some&lt;br /&gt;
|Fixed&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Advanced'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|All&lt;br /&gt;
|Some&lt;br /&gt;
|Some&lt;br /&gt;
|Fixed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Full'''&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|All&lt;br /&gt;
|All&lt;br /&gt;
|Most&lt;br /&gt;
|Any&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
* '''Basic:''' Only the background may been changed or colored in some software, but not the font.&lt;br /&gt;
* '''Standard:''' A software may only support one &amp;quot;Some&amp;quot;, not the both.&lt;br /&gt;
* '''Advanced:''' A software may only support one &amp;quot;Some&amp;quot;, not the both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5) Media:'''&lt;br /&gt;
* If WMP ([http://www.microsoft.com/windows/windowsmedia/default.mspx Windows Media Player]) or AMP ([http://www.winamp.com Winamp]) are listed, that jukebox software is simply a frontend for those programs and handle all formats and codecs WMP/AMP support.  WMP/AMP are '''REQUIRED''' for the jukebox software to operate.&lt;br /&gt;
* If video and/or image is listed, the individual page will list all video or image file types supported.&lt;br /&gt;
* Some software may support MP3+G (a karaoke system), wich is stated as cdg (but they may need to being ripped from the cd).&lt;br /&gt;
&lt;br /&gt;
'''6) Resolutions:''' &lt;br /&gt;
* If software has a + after the resolutions, this meams it uses an autoscaling scheme. You can show it on a higher monitor, but the skin may just be rescaled.&lt;br /&gt;
* If software stated with any, this mean any resolution is supported by a added skin.&lt;br /&gt;
* Wincab/Doscab autoscales all skins to all resolutions and orientations; skins designed specifically for very low resolutions (320x240) are included.&lt;br /&gt;
* Other software may look best at the stated resolution(s), even if it supports any resolution with a new skin.&lt;br /&gt;
&lt;br /&gt;
'''7) Controls:''' &lt;br /&gt;
* Wincab/Doscab only supports touchscreens in DOS and Windows XP.&lt;br /&gt;
&lt;br /&gt;
'''8) Web based skin:'''&lt;br /&gt;
* Some application can used as webbased software. So skins is based on css on that chase.&lt;br /&gt;
&lt;br /&gt;
'''9) Many Extensions:''' &lt;br /&gt;
* These software support many extensions as it could listed here. So they may support 10+ extensions.&lt;br /&gt;
* '''Arcade Music Box''' and '''Album Player''' is based on BASS engine, and support these extensions as well.&lt;br /&gt;
* '''Sk Jukebox'''support mp3 ogg wav wma aiff flac aac mp4 (sound only) ac3 and alac. It does not list wich engine it use.&lt;br /&gt;
* Bass is An external engine, [http://www.un4seen.com Bass] wich also supports a variety of extensions and is included with the software. Some software is based on it, but not all software support plugins (like '''The JukeBox'er''').&lt;br /&gt;
&lt;br /&gt;
'''10) Webbased:''' &lt;br /&gt;
* These software is writting in a web based language, like php perl and python. because of it, it good to use with a Apache server or like that. It should of course run on all platform (a least on Windows, linux and Mac)&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Software]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=8304</id>
		<title>UncleT's Jukebox</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=8304"/>
		<updated>2007-03-26T12:47:44Z</updated>

		<summary type="html">&lt;p&gt;Unclet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:UncleTsJukebox.jpg|thumb|UncleT's Jukebox Screenshot|320px|right]]&lt;br /&gt;
* '''OS:  ''' Win98(untested), WinME, Win2k, WinXP&lt;br /&gt;
* '''Cost:  ''' Freeware&lt;br /&gt;
* '''Skinnable:  ''' Standard (change colors, fonts, images, hide buttons, etc..)&lt;br /&gt;
* '''Re-mappable keys:  ''' Yes (over 70+ keys allowed to be remapped)&lt;br /&gt;
* '''Monitor orientation(s):  ''' Horizontal &lt;br /&gt;
* '''Screen resolution(s):  ''' 1024x768 and greater&lt;br /&gt;
* '''Controller(s):  ''' Touchscreen, Mouse and Keyboard&lt;br /&gt;
* '''Supported media format(s):''' All WMP audio and video formats&lt;br /&gt;
* '''Format Orientation(s):''' Album-oriented&lt;br /&gt;
* '''Additional Requirements:''' Microsoft Media Player requried&lt;br /&gt;
* '''Homepage:  '''http://unclet.arcadecontrols.com/Jukebox/&lt;br /&gt;
* '''Additional Details:'''&lt;br /&gt;
&lt;br /&gt;
:Have you ever wanted to categorize your MP3 files and/or Video files into a music library and access them on demand via a jukebox interface? Now you can with UncleT's Jukebox.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:Features:&lt;br /&gt;
&lt;br /&gt;
:* Touchscreen monitor support&lt;br /&gt;
:* Dual monitors supported&lt;br /&gt;
:* Plays video and audio files (via Windows Media Player)&lt;br /&gt;
:* Displays 1, 4, 9, 16, 25 album covers at once&lt;br /&gt;
:* Allows creation of playlists (My Favorites, Mom's music, etc..)&lt;br /&gt;
:* Clicking on currently playing album cover displays all song tracks&lt;br /&gt;
:* Display song lyrics for all songs&lt;br /&gt;
:* Interface via arcade controls by assigning required key mappings&lt;br /&gt;
:* Display windows are skinnable (images, colors, fonts and text)&lt;br /&gt;
:* View song tracks currently in the queue waiting to be played&lt;br /&gt;
:* Randomly play songs from a selected genre only&lt;br /&gt;
:* Randomly play songs from Top10, Top25, Top50 or Top100 lists&lt;br /&gt;
:* Search for songs by Artist, by Album or by Song Track title name&lt;br /&gt;
:* &amp;quot;Party Lock&amp;quot; feature offers the ability to hide/disable controls&lt;br /&gt;
:* &amp;quot;Attract Mode&amp;quot; feature provides animation when system is idle&lt;br /&gt;
:* Sort album collection by Artist name or Album name&lt;br /&gt;
:* Scrollable lyrics&lt;br /&gt;
:* Virtual keyboard with transparency settings&lt;br /&gt;
:* Cycle lyrics, album cover and media for current song with one click&lt;br /&gt;
:* Fullscreen supported&lt;br /&gt;
:* When not in fullscreen, the window can be resized&lt;br /&gt;
:* Supports 1024x768 and greater resolutions&lt;br /&gt;
:* Determine how many songs to be displayed in the song queue&lt;br /&gt;
:* Songs added to the song queue can be added at random locations&lt;br /&gt;
:* Change the order of songs once they are already in the song queue&lt;br /&gt;
:* Clear and delete songs from the song queue&lt;br /&gt;
:* Repeat option allows a song to be placed back into the queue&lt;br /&gt;
:* Separate album cover page to maintain your search results&lt;br /&gt;
:* Jump to albums starting with one (or two) entered letters&lt;br /&gt;
:* Pullout menus provided which have buttons not used regularly&lt;br /&gt;
:* Ability to hide pullout menu buttons&lt;br /&gt;
:* Albums can have video and audio files associated together&lt;br /&gt;
:* One song can have a video and audio file present at the same time&lt;br /&gt;
:* FastForward/FastReverse seek capabilities provides&lt;br /&gt;
:* Over 70 key mappings provided&lt;br /&gt;
:* Exit the application or windows within via the ESC key&lt;br /&gt;
:* Sliders provide easy way to hide certain sections of the display&lt;br /&gt;
:* Album numbers can be displayed over top-right corner of cover art&lt;br /&gt;
:* Assign genres to each album easily&lt;br /&gt;
:* Animation provided when flipping to a page of album covers&lt;br /&gt;
:* Settings available to set the page flip speed&lt;br /&gt;
:* Sounds are provided (page flip, entering digits, etc..)&lt;br /&gt;
:* Cycle buttons are provided to easily traverse through choices&lt;br /&gt;
:* Settings available to set the lyrics scrolling speed&lt;br /&gt;
:* Ability to hide album search scrollbars, pullout menus, etc...&lt;br /&gt;
:* View the Top100 songs and alter the list as well&lt;br /&gt;
:* Display album covers associated with a certain genre only&lt;br /&gt;
:* Display only albums which have not been assigned a genre yet&lt;br /&gt;
:* Assign numbers to song tracks automatically or use provided ones&lt;br /&gt;
:* Set the search limit for album search results&lt;br /&gt;
:* Show a tool tip at startp&lt;br /&gt;
:* Start the application in fullscreen mode&lt;br /&gt;
:* Automatically start a song when the application starts&lt;br /&gt;
:* Determine which page location should be displayed when starting&lt;br /&gt;
:* Hide the cursor (for touchscreen monitors)&lt;br /&gt;
:* Double-click the album cover art to display an expanded view&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:''UncleT's Jukebox was created by [http://forum.arcadecontrols.com/index.php?action=profile;u=1538 UncleT], who is an active member in the [http://forum.arcadecontrols.com/index.php BYOAC forums]. This software has the own [http://forum.arcadecontrols.com/index.php?board=22 support board].''&lt;br /&gt;
&lt;br /&gt;
{{JukeboxSoftware}}&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=8303</id>
		<title>UncleT's Jukebox</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=8303"/>
		<updated>2007-03-26T12:46:59Z</updated>

		<summary type="html">&lt;p&gt;Unclet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:UncleTsJukebox.jpg|thumb|UncleT's Jukebox Screenshot|320px|right]]&lt;br /&gt;
* '''OS:  ''' WinME, WinXp, Win2K, possibly Win98(untested).&lt;br /&gt;
* '''Cost:  ''' Freeware&lt;br /&gt;
* '''Skinnable:  ''' Standard (change colors, fonts, images, hide buttons, etc..)&lt;br /&gt;
* '''Re-mappable keys:  ''' Yes (over 70+ keys allowed to be remapped)&lt;br /&gt;
* '''Monitor orientation(s):  ''' Horizontal &lt;br /&gt;
* '''Screen resolution(s):  ''' 1024x768 and greater&lt;br /&gt;
* '''Controller(s):  ''' Touchscreen, Mouse and Keyboard&lt;br /&gt;
* '''Supported media format(s):''' All WMP audio and video formats&lt;br /&gt;
* '''Format Orientation(s):''' Album-oriented&lt;br /&gt;
* '''Additional Requirements:''' Microsoft Media Player requried&lt;br /&gt;
* '''Homepage:  '''http://unclet.arcadecontrols.com/Jukebox/&lt;br /&gt;
* '''Additional Details:'''&lt;br /&gt;
&lt;br /&gt;
:Have you ever wanted to categorize your MP3 files and/or Video files into a music library and access them on demand via a jukebox interface? Now you can with UncleT's Jukebox.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:Features:&lt;br /&gt;
&lt;br /&gt;
:* Touchscreen monitor support&lt;br /&gt;
:* Dual monitors supported&lt;br /&gt;
:* Plays video and audio files (via Windows Media Player)&lt;br /&gt;
:* Displays 1, 4, 9, 16, 25 album covers at once&lt;br /&gt;
:* Allows creation of playlists (My Favorites, Mom's music, etc..)&lt;br /&gt;
:* Clicking on currently playing album cover displays all song tracks&lt;br /&gt;
:* Display song lyrics for all songs&lt;br /&gt;
:* Interface via arcade controls by assigning required key mappings&lt;br /&gt;
:* Display windows are skinnable (images, colors, fonts and text)&lt;br /&gt;
:* View song tracks currently in the queue waiting to be played&lt;br /&gt;
:* Randomly play songs from a selected genre only&lt;br /&gt;
:* Randomly play songs from Top10, Top25, Top50 or Top100 lists&lt;br /&gt;
:* Search for songs by Artist, by Album or by Song Track title name&lt;br /&gt;
:* &amp;quot;Party Lock&amp;quot; feature offers the ability to hide/disable controls&lt;br /&gt;
:* &amp;quot;Attract Mode&amp;quot; feature provides animation when system is idle&lt;br /&gt;
:* Sort album collection by Artist name or Album name&lt;br /&gt;
:* Scrollable lyrics&lt;br /&gt;
:* Virtual keyboard with transparency settings&lt;br /&gt;
:* Cycle lyrics, album cover and media for current song with one click&lt;br /&gt;
:* Fullscreen supported&lt;br /&gt;
:* When not in fullscreen, the window can be resized&lt;br /&gt;
:* Supports 1024x768 and greater resolutions&lt;br /&gt;
:* Determine how many songs to be displayed in the song queue&lt;br /&gt;
:* Songs added to the song queue can be added at random locations&lt;br /&gt;
:* Change the order of songs once they are already in the song queue&lt;br /&gt;
:* Clear and delete songs from the song queue&lt;br /&gt;
:* Repeat option allows a song to be placed back into the queue&lt;br /&gt;
:* Separate album cover page to maintain your search results&lt;br /&gt;
:* Jump to albums starting with one (or two) entered letters&lt;br /&gt;
:* Pullout menus provided which have buttons not used regularly&lt;br /&gt;
:* Ability to hide pullout menu buttons&lt;br /&gt;
:* Albums can have video and audio files associated together&lt;br /&gt;
:* One song can have a video and audio file present at the same time&lt;br /&gt;
:* FastForward/FastReverse seek capabilities provides&lt;br /&gt;
:* Over 70 key mappings provided&lt;br /&gt;
:* Exit the application or windows within via the ESC key&lt;br /&gt;
:* Sliders provide easy way to hide certain sections of the display&lt;br /&gt;
:* Album numbers can be displayed over top-right corner of cover art&lt;br /&gt;
:* Assign genres to each album easily&lt;br /&gt;
:* Animation provided when flipping to a page of album covers&lt;br /&gt;
:* Settings available to set the page flip speed&lt;br /&gt;
:* Sounds are provided (page flip, entering digits, etc..)&lt;br /&gt;
:* Cycle buttons are provided to easily traverse through choices&lt;br /&gt;
:* Settings available to set the lyrics scrolling speed&lt;br /&gt;
:* Ability to hide album search scrollbars, pullout menus, etc...&lt;br /&gt;
:* View the Top100 songs and alter the list as well&lt;br /&gt;
:* Display album covers associated with a certain genre only&lt;br /&gt;
:* Display only albums which have not been assigned a genre yet&lt;br /&gt;
:* Assign numbers to song tracks automatically or use provided ones&lt;br /&gt;
:* Set the search limit for album search results&lt;br /&gt;
:* Show a tool tip at startp&lt;br /&gt;
:* Start the application in fullscreen mode&lt;br /&gt;
:* Automatically start a song when the application starts&lt;br /&gt;
:* Determine which page location should be displayed when starting&lt;br /&gt;
:* Hide the cursor (for touchscreen monitors)&lt;br /&gt;
:* Double-click the album cover art to display an expanded view&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:''UncleT's Jukebox was created by [http://forum.arcadecontrols.com/index.php?action=profile;u=1538 UncleT], who is an active member in the [http://forum.arcadecontrols.com/index.php BYOAC forums]. This software has the own [http://forum.arcadecontrols.com/index.php?board=22 support board].''&lt;br /&gt;
&lt;br /&gt;
{{JukeboxSoftware}}&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
	<entry>
		<id>http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=8302</id>
		<title>UncleT's Jukebox</title>
		<link rel="alternate" type="text/html" href="http://oldwiki.arcadecontrols.com/index.php?title=UncleT%27s_Jukebox&amp;diff=8302"/>
		<updated>2007-03-26T12:46:41Z</updated>

		<summary type="html">&lt;p&gt;Unclet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:UncleTsJukebox.jpg|thumb|UncleT's Jukebox Screenshot|320px|right]]&lt;br /&gt;
* '''OS:  ''' WinME, WinXp, Win2K, possibly Win98(untested).&lt;br /&gt;
* '''Cost:  ''' Freeware&lt;br /&gt;
* '''Skinnable:  ''' Standard (change colors, fonts, images, hide buttons, etc..)&lt;br /&gt;
* '''Re-mappable keys:  ''' YES(over 70+ keys allowed to be remapped)&lt;br /&gt;
* '''Monitor orientation(s):  ''' Horizontal &lt;br /&gt;
* '''Screen resolution(s):  ''' 1024x768 and greater&lt;br /&gt;
* '''Controller(s):  ''' TOUCHSCREEN, Mouse and Keyboard&lt;br /&gt;
* '''Supported media format(s):''' All WMP audio and video formats&lt;br /&gt;
* '''Format Orientation(s):''' Album-oriented&lt;br /&gt;
* '''Additional Requirements:''' Microsoft Media Player requried&lt;br /&gt;
* '''Homepage:  '''http://unclet.arcadecontrols.com/Jukebox/&lt;br /&gt;
* '''Additional Details:'''&lt;br /&gt;
&lt;br /&gt;
:Have you ever wanted to categorize your MP3 files and/or Video files into a music library and access them on demand via a jukebox interface? Now you can with UncleT's Jukebox.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:Features:&lt;br /&gt;
&lt;br /&gt;
:* Touchscreen monitor support&lt;br /&gt;
:* Dual monitors supported&lt;br /&gt;
:* Plays video and audio files (via Windows Media Player)&lt;br /&gt;
:* Displays 1, 4, 9, 16, 25 album covers at once&lt;br /&gt;
:* Allows creation of playlists (My Favorites, Mom's music, etc..)&lt;br /&gt;
:* Clicking on currently playing album cover displays all song tracks&lt;br /&gt;
:* Display song lyrics for all songs&lt;br /&gt;
:* Interface via arcade controls by assigning required key mappings&lt;br /&gt;
:* Display windows are skinnable (images, colors, fonts and text)&lt;br /&gt;
:* View song tracks currently in the queue waiting to be played&lt;br /&gt;
:* Randomly play songs from a selected genre only&lt;br /&gt;
:* Randomly play songs from Top10, Top25, Top50 or Top100 lists&lt;br /&gt;
:* Search for songs by Artist, by Album or by Song Track title name&lt;br /&gt;
:* &amp;quot;Party Lock&amp;quot; feature offers the ability to hide/disable controls&lt;br /&gt;
:* &amp;quot;Attract Mode&amp;quot; feature provides animation when system is idle&lt;br /&gt;
:* Sort album collection by Artist name or Album name&lt;br /&gt;
:* Scrollable lyrics&lt;br /&gt;
:* Virtual keyboard with transparency settings&lt;br /&gt;
:* Cycle lyrics, album cover and media for current song with one click&lt;br /&gt;
:* Fullscreen supported&lt;br /&gt;
:* When not in fullscreen, the window can be resized&lt;br /&gt;
:* Supports 1024x768 and greater resolutions&lt;br /&gt;
:* Determine how many songs to be displayed in the song queue&lt;br /&gt;
:* Songs added to the song queue can be added at random locations&lt;br /&gt;
:* Change the order of songs once they are already in the song queue&lt;br /&gt;
:* Clear and delete songs from the song queue&lt;br /&gt;
:* Repeat option allows a song to be placed back into the queue&lt;br /&gt;
:* Separate album cover page to maintain your search results&lt;br /&gt;
:* Jump to albums starting with one (or two) entered letters&lt;br /&gt;
:* Pullout menus provided which have buttons not used regularly&lt;br /&gt;
:* Ability to hide pullout menu buttons&lt;br /&gt;
:* Albums can have video and audio files associated together&lt;br /&gt;
:* One song can have a video and audio file present at the same time&lt;br /&gt;
:* FastForward/FastReverse seek capabilities provides&lt;br /&gt;
:* Over 70 key mappings provided&lt;br /&gt;
:* Exit the application or windows within via the ESC key&lt;br /&gt;
:* Sliders provide easy way to hide certain sections of the display&lt;br /&gt;
:* Album numbers can be displayed over top-right corner of cover art&lt;br /&gt;
:* Assign genres to each album easily&lt;br /&gt;
:* Animation provided when flipping to a page of album covers&lt;br /&gt;
:* Settings available to set the page flip speed&lt;br /&gt;
:* Sounds are provided (page flip, entering digits, etc..)&lt;br /&gt;
:* Cycle buttons are provided to easily traverse through choices&lt;br /&gt;
:* Settings available to set the lyrics scrolling speed&lt;br /&gt;
:* Ability to hide album search scrollbars, pullout menus, etc...&lt;br /&gt;
:* View the Top100 songs and alter the list as well&lt;br /&gt;
:* Display album covers associated with a certain genre only&lt;br /&gt;
:* Display only albums which have not been assigned a genre yet&lt;br /&gt;
:* Assign numbers to song tracks automatically or use provided ones&lt;br /&gt;
:* Set the search limit for album search results&lt;br /&gt;
:* Show a tool tip at startp&lt;br /&gt;
:* Start the application in fullscreen mode&lt;br /&gt;
:* Automatically start a song when the application starts&lt;br /&gt;
:* Determine which page location should be displayed when starting&lt;br /&gt;
:* Hide the cursor (for touchscreen monitors)&lt;br /&gt;
:* Double-click the album cover art to display an expanded view&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
:''UncleT's Jukebox was created by [http://forum.arcadecontrols.com/index.php?action=profile;u=1538 UncleT], who is an active member in the [http://forum.arcadecontrols.com/index.php BYOAC forums]. This software has the own [http://forum.arcadecontrols.com/index.php?board=22 support board].''&lt;br /&gt;
&lt;br /&gt;
{{JukeboxSoftware}}&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Unclet</name></author>
		
	</entry>
</feed>