Skins (146)
Visuals (115)
Input Plug-ins (35)
Output Plug-ins (5)
General Plug-ins (11)
Archive Reader (16)
Input Plug-ins (40)
DSP Plug-ins (10)
External Add-ons (16)
XMPlay Archive (69)
Extra ToolsSkins (146)
Visuals (115)
Input Plug-ins (35)
Output Plug-ins (5)
General Plug-ins (11)
Archive Reader (16)
Input Plug-ins (40)
DSP Plug-ins (10)
External Add-ons (16)
XMPlay Archive (69)
Extra ToolsYou can have XMPlay execute lots of function by sending a key-command to it via DDE. Using an info-command, you can request information of the file currently being played. See the DDE command list for a full list of available commands, and the DDE code example page for some examples.
Files, folders and URLs can be passed to XMPlay via DDE. To do so, set the Application to XMPlay, the Topic to System and send the message [open("filename")] (to open a file) or [list("filename")] (to add a file to the playlist). Note that the message includes the brackets and parenthesis. Multiple files should be sent in multiple messages. XMPlay will treat files coming in quickly after each other as a single batch, so it can auto-sort them.
These DDE commands are used in Explorer for the associated filetypes on Windows XP and older.
The contents of the Info Window can be fetched via DDE by sending an info# message to XMPlay, where you replace # with the number from the list below.
info | Result tab |
---|---|
1 | General |
2 | Message |
3 | Samples |
Note that the returned text is in UTF-8 on Windows NT, XP and newer.
Below is a list of DDE control commands. The commands are executed by sending a key# message to XMPlay, where you replace # with the number found in the list.
key | Command |
---|---|
641 | Bookmark - Resume |
642 | Bookmark - Resume after queue |
640 | Bookmark - Set |
128 | Change track - Next |
129 | Change track - Previous |
130 | Change track - Random |
131 | Change track - Random from library |
10 | Close |
16 | Close and restart |
15 | Close at end of track/list |
11 | Close with position saved |
525 | Crossfade on/off |
83 | Current track - Back |
91 | Current track - Download / Extract |
82 | Current track - Forward |
92 | Current track - Go to time |
9 | Current track - Looping |
86 | Current track - Next subsong |
80 | Current track - Play / Pause |
89 | Current track - Plugin info |
85 | Current track - Prev subsong |
113 | Current track - Rating - 1 |
114 | Current track - Rating - 2 |
115 | Current track - Rating - 3 |
116 | Current track - Rating - 4 |
117 | Current track - Rating - 5 |
118 | Current track - Rating - down |
112 | Current track - Rating - none |
120 | Current track - Rating - show |
119 | Current track - Rating - up |
84 | Current track - Restart |
81 | Current track - Stop |
90 | Current track - Stop at end |
87 | Current track - Track info |
88 | Current track - Tray title bubble |
515 | DSP - Amplification down |
521 | DSP - Amplification reset |
514 | DSP - Amplification up |
522 | DSP - Auto amplification |
519 | DSP - Balance left |
520 | DSP - Balance right |
526 | DSP - Bypass |
516 | DSP - Equalizer on/off |
518 | DSP - Options |
524 | DSP - Replaygain |
517 | DSP - Reverb on/off |
513 | DSP - Volume down |
523 | DSP - Volume mute |
512 | DSP - Volume up |
264 | Info - Copy to clipboard |
261 | Info - Extended list |
265 | Info - Fullscreen visuals |
257 | Info - General |
608 | Info - Library |
258 | Info - Message |
256 | Info - Open/close window |
259 | Info - Samples |
263 | Info - Scroll down |
262 | Info - Scroll up |
266 | Info - Text size decrease |
267 | Info - Text size increase |
260 | Info - Visuals |
368 | List - Add files/URL |
369 | List - Add folder |
381 | List - Add from clipboard |
380 | List - Auto advance |
375 | List - Clear queue |
402 | List - Looping |
313 | List - Random play order |
383 | List - Remove after playing |
386 | List - Replace from library |
378 | List - Save |
377 | List - Show filenames in ext.list |
379 | List - Show queue in list |
400 | List - Undo |
347 | List nav - Bottom |
337 | List nav - Down |
352 | List nav - Find |
355 | List nav - Find all |
353 | List nav - Find next |
354 | List nav - Find previous |
356 | List nav - Find quick |
342 | List nav - Invert selection |
340 | List nav - Jump to current |
339 | List nav - Page down |
338 | List nav - Page up |
341 | List nav - Select all |
343 | List nav - Select dead |
345 | List nav - Select extend down |
349 | List nav - Select extend page down |
348 | List nav - Select extend page up |
344 | List nav - Select extend up |
418 | List nav - Select same album |
417 | List nav - Select same artist |
422 | List nav - Select same comment |
421 | List nav - Select same genre |
424 | List nav - Select same path |
416 | List nav - Select same title |
420 | List nav - Select same track |
423 | List nav - Select same type |
419 | List nav - Select same year |
346 | List nav - Top |
336 | List nav - Up |
334 | List sort - Filename |
322 | List sort - Filename - Full path |
323 | List sort - Filetype |
333 | List sort - Rating |
324 | List sort - Reverse |
325 | List sort - Selected to top |
320 | List sort - Shuffle |
328 | List sort - Tag - Album |
327 | List sort - Tag - Artist |
332 | List sort - Tag - Comment |
331 | List sort - Tag - Genre |
326 | List sort - Tag - Title |
330 | List sort - Tag - Track |
329 | List sort - Tag - Year |
321 | List sort - Title |
384 | List track - Add to/from library |
382 | List track - Dequeue |
389 | List track - Don't auto-remove |
403 | List track - Explore folder |
372 | List track - Play |
385 | List track - Plugin info |
374 | List track - Queue |
121 | List track - Rating - 1 |
122 | List track - Rating - 2 |
123 | List track - Rating - 3 |
124 | List track - Rating - 4 |
125 | List track - Rating - 5 |
126 | List track - Rating - down |
127 | List track - Rating - up |
370 | List track - Remove |
371 | List track - Remove & delete file |
387 | List track - Separate subsongs |
373 | List track - Skip |
376 | List track - Track info |
388 | List track - Unseparate subsongs |
300 | MOD - Force VBlank timing |
297 | MOD - Interpolation |
296 | MOD - MOD playback mode |
298 | MOD - Ramping |
299 | MOD - Surround sound |
293 | MOD pattern - Invert all |
291 | MOD pattern - Mute channel |
290 | MOD pattern - Next channel |
289 | MOD pattern - Prev channel |
292 | MOD pattern - Unmute all |
6 | Open files/URL |
12 | Open folder |
13 | Open from clipboard |
5 | Options and stuff |
624 | Output options |
97 | Plugins - DSP & general |
96 | Plugins - Input |
593 | Saved settings - Load current |
592 | Saved settings - Options |
17 | UI - Big |
14 | UI - Info bubbles |
1 | UI - Mini mode |
2 | UI - Minimize / Restore |
3 | UI - Minimize to tray / Restore |
7 | UI - On top |
4 | UI - Reload skin |
8 | UI - Time display mode |
XMPlay Controller is a standalone application which uses DDE to send commands to XMPlay. See the included manual for more information.
DDE_run is a command line application which can send DDE messages to any other program. The code to send the Play/Pause command is DDE_run -s XMPlay -t System -c key80, where -s flags the target application name, -t the link topic and -c the command. You can replace key80 with any of the keys from the DDE command list, or with a file opening command.
Create a new VB project, and dump two text boxes and a pair of command buttons on the form. Do whatever you like to them, but you'll want to make Text2 reasonably large with MultiLine enabled. Add the following code to the form (changing the names if you changed them):
Private Sub Command1_Click()
' Use this one to retrieve data, e.g. infox topics
Text2.LinkTopic = "XMPlay|" & Text1.Text ' Init link topic
Text2.LinkMode = 2 ' Open connection
Text2.LinkRequest ' Grab data
Text2.LinkMode = 0 ' Close connecton
'''' EDIT: remove next line if you get a blank line between every line ''''
Text2 = Replace(Text2, vbLf, vbCrLf) ' Reformat string as textbox needs CRLF
End Sub
Private Sub Command2_Click()
' Use this one to execute a function, e.g. keyxxx topics or playlist manipulation
Text2.LinkTopic = "XMPlay|XMPlay" ' Init link topic. The second part (after the '|') doesn't appear to matter but must not be empty.
Text2.LinkMode = 2 ' Open connection
Text2.LinkExecute Text1.Text ' Execute function
Text2.LinkMode = 0 ' Close connection
End Sub
This code example is made by BoggyB (a long time ago).