-edit-
I should have prefaced this with "This is my understanding of the difference between
<URL> and
<URLs>. But I might be wrong."
...I have learned that for some purposes URL does not work well, and URLs does.
1. Could somebody with better insights in this provide some explanations on its exact workings?
It might be confusing because
URL is singular and
URLs is plural.
MusicBee will always send the file path of
all selected files, regardless of which one you use.
The difference is how MusicBee sends the file paths when you have multiple tracks selected.
What happens next depends on how the external program interprets those file paths.
Say you have a program to edit audio files called "AwesomeEdit.exe".
Also say you have selected three tracks, "C:\Music\One.flac", "C:\Music\Two.flac" and "C:\Music\Three.flac" because in our hypothetical scenario we're just that imaginative.
If you set up an external command to AwesomeEdit using
"<URL>" (singular) as the parameter MusicBee will actually ask Windows to start three separate instances of AwesomeEdit like so:
AwesomeEdit.exe "C:\Music\One.flac"
AwesomeEdit.exe "C:\Music\Two.flac"
AwesomeEdit.exe "C:\Music\Three.flac"
If instead you use
"<URLs>" (plural) as the parameter MusicBee will only ask Windows to start one process for all three files like so:
AwesomeEdit.exe "C:\Music\One.flac" "C:\Music\Two.flac" "C:\Music\Three.flac"
But hang on, I hear you hypothetically interrupt,
if I use <URL> (singular) I still only get one instance of AwesomeEdit.Many programs are written such that when they are asked to run they will first check if an instance is already running and reuse that one instead, usually by opening each file in a separate window or tab. So whether you use
<URL> or
<URLs> for those programs is irrelevant, unless it has a setting of its own to allow multiple instances.
But hang on, I hear you hypothetically interrupt again (rude!),
if I use <URLs> (plural) I still only get one instance of AwesomeEdit.Some programs aren't written to accept more than one file at a time and will only open the first file and ignore the rest (or possibly even interpret them as some other parameter).
So you should use
<URL> for those programs.
Incidentally, you may have wondered what the
Wait checkbox next to the parameters field is for.
If you only have one file selected or use
<URLs> this won't have any effect, as MusicBee is only asking Windows to start one process anyway.
If you use
<URLs> and you have multiple files selected
and the external program opens each file in a new instance, MusicBee will not send the second and subsequent requests until the previous program window has closed.
As a simple experiment, you can set up an external command to the Windows
Notepad app (which only opens one file per instance).
# Files | Parameter | Wait? | Result
============================================================================================================================
Single | <URL> | No | Single Notepad window
| | Yes | Single Notepad window
| <URLs> | No | Single Notepad window
| | Yes | Single Notepad window
Multiple | <URL> | No | Separate Notepad window per file, all at once
| | Yes | Separate Notepad window per file (Second file doesn't open until first window is closed)
| <URLs> | No | Single Notepad window for first file only (Notepad doesn't support multiple files)
| | Yes | Single Notepad window for first file only (Notepad doesn't support multiple files)
If your external program hasn't properly documented how it handles supplied file paths, you just to have use to trial and error to find out what works best.
tldr;The difference between
<URL> and
<URLs> (and
Wait) is how MusicBee requests Windows to open your files.
How the external program interprets the request is up to them, and why you will get different results from different programs.
2. Could users that use this feature and use something other than 'URL' or 'URLs' share what they use, and explain why and for what applications?
You can include any MusicBee tags and functions, so any information about a selected track could potentially be passed to an external application.
I can't think of any specific examples, but a program that downloads album artwork might accept
Artist and
Album values as command line parameters.