Difference between pages "Expression Language" and "Release Notes MC32"

From JRiverWiki
(Difference between pages)
Jump to: navigation, search
(Date and Time Functions)
 
 
Line 1: Line 1:
{{Tocright}}
+
'''[https://yabb.jriver.com/interact/index.php/topic,138762.0.html 32.0.42 (4/27/2024)]'''
Media Center provides a simple programming language that enhances and enriches its overall user interface and usability.
+
<br>
This language, commonly called the expression language, is simple to learn, simple to use, and can greatly enhance your experience using Media Center.
+
1. Fixed: Subtitles with JRVR will be stretched properly when using anamorphic rendering.<br>
 
+
2. Fixed: Possible crashes starting playback in build 41.<br>
Expressions are ubiquitous throughout Media Center, used in areas such as:
+
<br>
:* The categories in a view
+
<br>
:* File list expression columns
+
'''[https://yabb.jriver.com/interact/index.php/topic,138752.0.html 32.0.41 (4/24/2024)]'''
:* Theater View
+
<br>
:* Customized view headers, grouping and sort criteria
+
1. Fixed: Theater View file info templates were not handling , as a decimal separator for FPS. (v2.9 of templates file)<br>
:* The library field manager (fields with data type Calculated data)
+
2. Fixed: If the VideoClock setting is on, changing from normal playback speed to slow motion speeds might not work initially.<br>
:* File and folder location definitions
+
3. Fixed: If playback of a video is stopped or a new file is started while doing slow-motion playback, playback of the next file would be marked as slow-motion, even though the actual playback speed is normal.<br>
:* Auto-import rules
+
4. Changed: Added a note on the direction of the subtitle shift to the video settings dialog.<br>
:* Custom DLNA titles
+
5. Changed: MCC commands to set the global JRVR profile can be called outside of playback (Output profiles will always refer to the primary display in this case).<br>
:* The player's display
+
6. Fixed: Maximizing some windows like Options could be a problem in the last builds on some displays.<br>
:* Captions and thumbnail text
+
<br>
:* The link manager (expressions help format link URLs)
+
<br>
:* Rename, Move, & Copy tool
+
<b>32.0.40 (4/23/2024)</b>
:* Tag assignment
+
<br />
:* Complex search queries
+
1. Changed: Cancelling the dialog to choose Blu-ray Menu or Title playback will stop playback, rather then choose a default option.<br />
 
+
2. Changed: Some MCWS calls default to false for switching into no UI mode (File/GetInfo, Files/Search, Files/GetInfo, etc.).<br />
An expression is a mixture of ordinary text, pre-defined functions, and a few reserved characters and constructs that have special meaning. An expression is evaluated by Media Center's expression engine and textual output is produced. This output is then used by Media Center to customize the user interface and affect its method of operation.
+
3. Fixed: Slow motion OSD menu was accidentally enabled for non-video playback types (image, audio, etc.).<br />
 
+
4. Fixed: Slow motion via OSD did not try to avoid conflict with VideoClock setting.<br />
== The Anatomy of an Expression ==
+
5. <b>NEW:</b> Add FPS icons to Theater View file info templates.  Video definition now uses ranges instead of exact heights. (v2.8 of templates file)<br />
 
+
<br />
As mentioned above, an expression is a mixture of text and function calls (and some reserved stuff described shortly).
+
<br />
The simplest expression would be some basic, literal text, such as <span style="font-family: monospace,monospace; font-size:1em;">A good movie</span>.
+
'''[https://yabb.jriver.com/interact/index.php/topic,138727.0.html 32.0.39 (4/22/2024)]'''
The expression engine evaluates this expression, finds nothing special, and then outputs the result: <span style="font-family: monospace,monospace; font-size:1em;">A good movie</span>. Simple.
+
<br />
 
+
1. Changed: Changed how slow-motion playback is invoked, so the DSP Studio window will not pop up.<br />
But simple text only has so much utility.
+
2. Fixed: Monitors could maximize too large since the change to not show them in the Alt+Tab list.<br />
The ability to transform or generate content is much more interesting and useful.
+
3. Changed: Updated Greek translation (thanks Panagiotis).<br />
And this is when [[#Functions|functions]] are employed.
+
4. <b>NEW:</b> OSD menu for Slow Motion Playback.<br />
Media Center [[#Function Index|provides many functions]], which when called, produce some output.
+
<br />
Most functions require some form of input, called arguments, and most functions generate output.
+
<br />
By supplying a function with various arguments, the function will return some output value which is just more text.
+
<b>32.0.38 (4/18/2024)</b>
And this output text can be the used by other functions, and so on.
+
<br />
Each function has a unique name, and calling upon a function to do some work requires little more that using its name anywhere in the expression.
+
1. Fixed: Manual shifting the video image could result in subtitles being drawn off-screen.<br />
 
+
2. <b>NEW:</b> Added an option to control subtitle position globally (as a percentage shift from the default position).<br />
A function call looks like this:
+
3. <b>NEW:</b> Added an option to limit subtitles to the active video rect, instead of using the black bars (if possible).<br />
 
+
4. <b>NEW:</b> Added list view display option to Panel.<br />
:{{monospace|<i>functionname</i><b>(</b><i>argument 1</i>, <i>argument 2</i>, ...<b>)</b>}}
+
5. Fixed: Buttons in Playing Now bar in Panel would sometimes overlap when resizing.<br />
 
+
<br />
The syntax of the function call is the function's case-insensitive name, immediately followed by an opening parenthesis character, one or more comma-separated arguments, and a closing parenthesis character.
+
<br />
Whitespace after the commas is optional, but helps readability and formatting.
+
'''[https://yabb.jriver.com/interact/index.php/topic,138687.0.html 32.0.37 (4/15/2024)]'''
And each argument itself is also just an expression. And some arguments are optional.
+
<br />
If an argument is optional, it can be omitted and its default value will be used.
+
1. Fixed: Rectangles drawn on an image in Image Editor or Image Face Tagger did not reposition correctly when the image window is resized (including resizing of MC main window).<br />
If the argument is omitted, a comma-separator will still be required if additional arguments follow.
+
2. Fixed: Some keyboard shortcuts did not work properly in the image editor.<br />
The following example uses the [[String_Manipulation_Functions#FixCase|FixCase()]] function to change its input to Title Case:
+
3. Fixed: The image editor could have problems when zooming and scrolling the image when cropping or using other tools.<br />
 
+
4. Fixed: The IsPlaying expression didn't work with DLNA files.<br />
:{{monospace|fixcase(A good movie)}}
+
<br />
 
+
<br />
The result is <span style="font-family: monospace,monospace; font-size:1em;">A Good Movie</span>.
+
<b>32.0.36 (4/10/2024)</b>
 
+
<br />
A slightly more complex expression example consists of both text and a nested function call:
+
1. <b>NEW:</b> The top image in a fanned stack of thumbnails is stored so if you stop on an image, it will be used (added a stack_tops.jmd file to the database).<br />
 
+
2. Changed: Image Face-tagging tool is no longer a part of Image Editor tools.<br />
:{{monospace|Wow! fixcase(replace(A good movie, good, great))}}
+
3. Fixed: Parallel processing of many files could crash due to a timing problem.<br />
 
+
4. Changed: Tools like Analyze Audio no longer show in the Alt+Tab list (they could duplicate in some cases).<br />
Inner functions are called before outer functions, so the [[String_Manipulation_Functions#Replace|Replace()]] function is call first:
+
5. Fixed: Some images could crash the EXIF parser.<br />
 
+
<br />
:{{monospace|replace(A good movie, good, great)}}
+
<br />
 
+
<b>32.0.35 (4/9/2024)</b>
and its output is then supplied as the input to the [[String_Manipulation_Functions#FixCase|FixCase()]] function.
+
<br />
[[String_Manipulation_Functions#Replace|Replace()]] does its work substituting {{monospace|good}} with {{monospace|great}}, and returns {{monospace|A great movie}}.
+
1. <b>NEW:</b> Added a new MC command (31010) and a context menu item for Image Face Tagging.<br />
This output is then supplied as the argument to [[String_Manipulation_Functions#FixCase|FixCase()]] which sees only the text {{monospace|A great movie}} (it knows nothing about how it was produced). So the function call:
+
2. Changed: Theater View file info movie template now shows small poster. (v2.7 of templates file)<br />
 
+
3. Changed: Updated to LAV Filters 0.79.2 for various fixes.<br />
:{{monospace|fixcase(A great movie)}}
+
4. Fixed: Bitstreaming AC3 audio could fail if the stream started with a corrupt or incomplete audio frame.<br />
 
+
5. Fixed: Buffering video from high latency sources was slower than expected in recent versions.<br />
in turn outputs {{monospace|A Great Movie}}.
+
6. Fixed: Spotlight &amp; Theater View Background images account for a movies IMDB Id to pick the right movie.<br />
Now that the functions have produced their output, the final output, including the literal {{monospace|Wow!}} leading text is
+
7. Changed: Slovak translation updated (thanks Peter Lukáč).<br />
 
+
8. <b>NEW:</b> Added the ability to configure the default profile used in JRVR, in the config dialog, context menu, as well as MCC (10080-10083).<br />
:{{monospace|Wow! A Great Movie}}
+
<br />
 
+
<br />
== Fields ==
+
<b>32.0.34 (4/4/2024)</b>
The expression examples thus far have been limited to static literal text.
+
<br />
Expressions have much more utility when they use data from other sources, such as a file's metadata.
+
1. Fixed: Theater View file info templates in Mac and Linux were not showing cast or recommended thumbnails. Also reduced default spacing between thumbnails so they render without wrapping.  (v2.6 of templates file)<br />
Media Center maintains this metadata in its defined fields.
+
2. Fixed: Sat&gt;IP channels that have been recently scanned/re-scanned did not play.<br />
This data is accessed using the [[Accessing_and_Storing_Functions#Field|Field()]] function, and its first argument is the case-insensitive name of the field to be accessed.
+
3. Fixed: Views configured for JRemote, Gizmo, etc. didn't work properly when a category was at the root.<br />
For example, the function call <span style="font-family: monospace,monospace; font-size:1em;">field(album)</span> will return the current* file's value for the album field (* more will be said later about the current file).
+
4. Changed: When adding padding channels with the new extra channels system, they are no longer marked as having data so they won't be used in mixes or show in Audio Path (feedback appreciated).<br />
If the album field contained the value <span style="font-family: monospace,monospace; font-size:1em;">After Hours</span>, the expression:
+
5. Changed: Made Audio Path report the number of filled channels instead of the number of total channels of audio.<br />
 
+
<br />
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">fixcase(field(album), 3)</span></div>
+
<br />
 
+
<b>32.0.33 (4/2/2024)</b>
would produce <span style="font-family: monospace,monospace; font-size:1em;">AFTER HOURS</span>.
+
<br />
First <span style="font-family: monospace,monospace; font-size:1em;">field(album)</span> is evaluated, returning <span style="font-family: monospace,monospace; font-size:1em;">After Hours</span>.
+
1. Changed: Reordered the web links menu so manage and reset are at the top and a link doesn't take the keyboard shortcut.<br />
The [[String_Manipulation_Functions#FixCase|FixCase()]] function is supplied with this output as its first argument, and its second argument is <span style="font-family: monospace,monospace; font-size:1em;">3</span>, which happens to specify that it should perform upper-casing.
+
<br />
 
+
<br />
Because fields are so frequently used in expressions, an abbreviated form called [[square bracket notation]] exists for accessing their values. This makes it easier to both read and write expressions.
+
'''[https://yabb.jriver.com/interact/index.php/topic,138568.0.html 32.0.32 (3/28/2024)]'''
Nonetheless, both forms are equivalent.
+
<br />
The abbreviated form is simple: immediately surround the field's name with opening and closing square brackets, for example, <span style="font-family: monospace,monospace; font-size:1em;">[album]</span>.
+
1. Changed: Updated to LAV Filters 0.79.1 to fix an issue with HEVC playback glitches.<br />
The previous example is now written more simply as:
+
<br />
 
+
<br />
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">fixcase([album], 3)</span></div>
+
<b>32.0.31 (3/28/2024)</b>
 
+
<br />
=== Field Values ===
+
1. Changed: When face-tagging an image, if a click falls on an existing region, that region is automatically selected. If the click hits outside of any existing region, the user will be prompted to choose an action (Add a new region, Edit selected existing region, Edit nearest existing region, or Cancel).<br />
For the sake of simplicity and clarity, the section above glossed over an important detail regarding how
+
2. Changed: When a field has a description, it is returned in the Library/Fields call.<br />
Media Center outputs field values.
+
3. Changed: When setting up auto-import on a Portable Install, the system drive is replaced with (Install Drive) to be more portable.<br />
Recall that [[Accessing_and_Storing_Functions#Field|Field()]] is the function used to return the value of a specified field.
+
4. Changed: When face-tagging an image, all existing regions' rectangles will be drawn on the image.<br />
But [[Accessing_and_Storing_Functions#Field|Field()]] also has a second argument that indicates the format of the value that it returns.
+
5. Changed: Updated the Catalan language (thanks Josep).<br />
Because field values are used in a variety of situations, the [[Accessing_and_Storing_Functions#Field|Field()]] function can produce output suitably formatted for the requirements.
+
<br />
There are two forms of output: one is a nice, friendly human-readable format suitable for use in views or other display locations; the other is a raw format which returns the representation stored internally by Media Center which is useful when uninterpreted values are necessary.
+
<br />
 
+
<b>32.0.30 (3/26/2024)</b>
By default, Media Center <i>always</i> outputs the friendly format, so expressions sometimes need to take this into account and chose the format accordingly.
+
<br />
 
+
1. Fixed: Updated Netflix integration to fix playback failures due to recent Netflix changes.<br />
Not used earlier because it is optional, the second argument to the [[Accessing_and_Storing_Functions#Field|Field()]] function selects the mode of output:
+
2. Fixed: Video playback with subtitles could hang since 32.0.28.<br />
the value <span style="font-family: monospace,monospace; font-size:1em;">0</span> selects the raw mode, and the default value of <span style="font-family: monospace,monospace; font-size:1em;">1</span> selects the friendly mode.
+
3. Changed: When resizing Rename, Move, &amp; Copy Files the extra height is spread between the two expression editors.<br />
Here are two examples using the date field, the first one outputs the date value in raw format, the second in the friendly format:
+
4. Changed: Updated to LAV Filters 0.79 for VVC video support, and improved reliability when streaming HLS content.<br />
 
+
<br />
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">field(date, 0)</span></div>
+
<br />
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">field(date, 1)</span></div>
+
<b>32.0.29 (3/22/2024)</b>
 
+
<br />
==== Field Values: Override the expression, and [This] ====
+
1. <b>NEW:</b> Added ShortTime date formatting string.<br />
[[File:ExpressionOverride.png|right]]
+
2. Changed: Tweaked Theater View file info templates (v2.5 of templates file).
When creating (or editing) an expression based field, there is an option, shown in the image on the right, to "Allow custom data to override the expression".
+
<ul><li>For TV Shows: Add option variable to show/hide director. Display small episode thumbnail.<br /></li>
When enabled, it becomes possible to open the tag for editing either inline or in the tag window, just as you would any other regular tag, and replace the expression derived data with any other static data. Complex expression based fields can very easily slow view loading times to a crawl, and in many cases, this option can help speed things up again. Imagine an expression based field that manipulates another, otherwise static field, such the [Date] field. The returned expression values will never change, so why waste time evaluating the same results over and over, when you can simply replace them with static data and so forego any future expression processing?
+
<li>For Shows and Movies: Add Watched status display. Use new ShortTime formatting for end times. Add option variable for date formatting which defaults to ShortDate. Add option variable to show/hide Recommended title text.<br /></li></ul>
 
+
<p>3. Changed: In Image Face-tagging, if a rectangle is created on the image (by user clicking in the image) while the list of regions is still empty, a new region is automatically created, and the user is prompted to enter more details.<br />
Media Center 28 saw the introduction of a [https://yabb.jriver.com/interact/index.php/topic,124543.msg906895.html#msg906895 [This]] variable that can also be invoked, so, using the example, ''=removeleft([This], 4)'' would remove four characters from the left of "this field".
+
4. <b>NEW:</b> Added a "Test output" command to Options &gt; Audio.  It will save the current settings and try playing a sample file with the current settings.<br />
 
+
5. Changed: Removed the Help menu option to leave error free mode since it's now in the view menu.<br />
The new [This] variable can be used to override expression data. Select one, or 1000s of files, then edit, either inline or in the tag window, using the simple expression ''=[this]'' and apply to have MC replace the expression result with, the expression result, which from that point forwards, will be static data and the expression will no longer run ''<u>for those files</u>''.
+
6. Changed: The view extras submenu no longer hits the filesystem when it's added to a menu (only when the menu is opened).<br />
 
+
<br />
To remove the static data and return to expression evaluated data instead, simply edit again, deleting the static data, which when applied, will cause the expression evaluated result to return.
+
<br />
 
+
'''[https://yabb.jriver.com/interact/index.php/topic,138498.0.html 32.0.28 (3/21/2024)]'''
'''<u>Note:</u>''' Use this "override" option with care. It requires least maintenance when used in situations where ''all'' expression values for all files for that field will be replaced with static data. Currently (October 2022) there is no way to differentiate between static data and expression derived data meaning the potential for things to get very confusing, very quickly, is very high indeed.
+
<br />
 
+
1. <b>NEW:</b> Added an error free toolbar button to show the status and allow toggling.  Also added to the view menu.<br />
==== Field Values: Empty, 0, and 1 ====
+
2. Fixed: Double-click on the play button was not stopping.<br />
The Media Center expression language does not strongly differentiate between the numeric value zero <span style="font-family: monospace,monospace; font-size:1em;">0</span> and emptiness
+
3. <b>NEW:</b> The brightness of PGS subtitles on HDR movies is checked to determine if they are proper HDR subtitles, and are treated as SDR subtitles if not.<br />
for numeric field types Integer and Decimal.
+
4. Fixed: XMP image tagging did not work with some non-ASCII characters. <br />
And in some cases, the numeric value of <span style="font-family: monospace,monospace; font-size:1em;">1</span> is treated similarly to the empty value.
+
<br />
 
+
<br />
When a value of 0 is entered as a numeric field's value, the raw value will be shown as <span style="font-family: monospace,monospace; font-size:1em;">0</span>,
+
<b>32.0.27 (3/19/2024)</b>
but the display format (as in the file list) will be shown as empty.
+
<br />
The empty display allows for less visual noise in the user interface, since a column full of <span style="font-family: monospace,monospace; font-size:1em;">0</span> values is not usually helpful.
+
1. Fixed: Some Sat&gt;IP channels scanned since MC29 would not play because a tuner type matching failed.<br />
In fact, if you attempt to set a numeric field's value to <span style="font-family: monospace,monospace; font-size:1em;">0</span> in the file list, it will immediately be displayed as empty.
+
2. Changed: Running a command line argument or double-clicking files exits error free mode.<br />
 
+
3. Changed: "lr" is added to "words" that should be always all-capitalized during auto case correction.<br />
Generally this difference is unimportant, except when testing numeric values with [[Test_and_Comparison_Functions#IsEmpty|IsEmpty()]] or [[Test_and_Comparison_Functions#IsEqual|IsEqual()]].
+
4. Changed: Updated Spanish translation (thanks Leandro Botella Penalva).<br />
It is easy to be fooled when testing such a value if the value shown in a file list is empty.
+
<br />
The values shown in the Tag Action Window will reveal the actual raw value, as will an expression column using the field's raw format.
+
<br />
 
+
'''[https://yabb.jriver.com/interact/index.php/topic,138447.0.html 32.0.26 (3/14/2024)]'''
Another consideration for integer fields is that when sorting, a <span style="font-family: monospace,monospace; font-size:1em;">1</span> value can sometimes sort indistinguishably from an empty value.
+
<br />
The Integer type <span style="font-family: monospace,monospace; font-size:1em;">disc #</span> field is typically empty when an album consists of only one disc, and as such, Media Center will sort
+
1. Fixed: Merging of image [People] and [Image Regions] did not work if the latter is empty.<br />
the <span style="font-family: monospace,monospace; font-size:1em;">disc #</span> values of empty (<span style="font-family: monospace,monospace; font-size:1em;">0</span>) and <span style="font-family: monospace,monospace; font-size:1em;">1</span> identically.
+
2. <b>NEW:</b> Added Theater View file info template for TV Shows using Spotlight data. (v2.4 of templates file)<br />
 
+
3. Changed: Particle creation from chapters works on blu-rays.<br />
The friendly output of a field can differ, depending on context.
+
<br />
For example, in a file list, and empty field will be shown as blank, but in the Rename, Move & Copy tool,
+
<br />
it will be output as <span style="font-family: monospace,monospace; font-size:1em;">Unknown Disc #</span> (this ensures no blank values are generated as path components).
+
'''[https://yabb.jriver.com/interact/index.php/topic,138420.0.html 32.0.25 (3/12/2024)]'''
To test such a field, always use and test against the raw format, and then expressions will be context agnostic.
+
<br />
 
+
1. Changed: Updated German translation file (thanks Bytestar).<br />
===Field Assignment===
+
2. <b>NEW:</b> Added Spotlight item to context menu in Theater View which will show Spotlight for the first file.<br />
<div>
+
3. Fixed: Spotlight stopped retrieving albums for artists.<br />
The output of an expression can be used to assign a value to a tag.
+
4. <b>NEW:</b> Introduced a new Tonemapping Curve setting in JRVR Advanced Output selection to pick between different Spline curves for tonemapping.<br />
This is accomplished by preceding the expression with an <span style="font-family: monospace,monospace; font-size:1em;">=</span> character.
+
5. Changed: The default JRVR tonemapping spline curve has been changed to favor a more lively "popping" image in dark scenes.<br />
The <span style="font-family: monospace,monospace; font-size:1em;">=</span> character causes the tagging engine to invoke the expression evaluator first,
+
6. Fixed: Setting the media network client conversion for audio was not working.<br />
and then to use its output as the value to assign to the field.
+
7. <b>NEW:</b> Added the ability to create particles from chapters in a video (requires a video that plays with chapters, does not work with DVDs currently).<br />
[[File:Field_Assignment_with_Expression.png|right]]
+
8. <b>NEW:</b> JPEG image [People] field is written to XMP "PersonInImage" tag.<br />
Without the prepended <span style="font-family: monospace,monospace; font-size:1em;">=</span> character, the literal expression text itself and not its evaluated value would be stored in the tag.
+
9. Changed: Image data in [People] field and the Regions data are always merged, so they will be as consistent with each other as possible. Users are encouraged to use Face-tagging tool to make changes and editing [People] field directly is discouraged.<br />
The expression can refer to the field's own value to modify itself, and this offers a convenient way to perform complex transformations on field values.
+
<br />
For example, the assignment expression
+
<br />
 
+
<b>32.0.24 (3/7/2024)</b>
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">=removeleft([name], 4)</span></div>
+
<br />
 
+
1. Changed: When loading images for Theater View backdrop, images that do not have a language specification is considered a match, in addition to those that match the required language strictly.<br />
entered into an edit cell for the  <span style="font-family: monospace,monospace; font-size:1em;">name</span> field would remove
+
2. Changed: Updated German translation file (thanks Bytestar).<br />
four characters from the left of the <span style="font-family: monospace,monospace; font-size:1em;">name</span> field's current value.
+
3. Fixed: Recordings made on Google Pixel phones are properly identified as Home Videos.<br />
An assignment expression can be entered into the Tag Action Window, or by using inline editing in the file list or a pane entry.
+
4. Fixed: MC Television properties page (TV Options) tried to error check recordig settings (in particular, folders for TV recordings) even if recording option was off.<br />
The image on the right shows in-place field assignment.
+
5. Changed: Updated to WavPack 5.7.<br />
 
+
6. Changed: Tuned the JRVR Peak Detection parameters to be more conservative to reduce noticeable brightness changes from dynamic tone mapping.<br />
Note: Undo is supported, reverting each tag to its value prior to the assignment.
+
7. Changed: When image face-tagging is finished, the [People] field is automatically updated. <br />
Redo is also supported, reapplying the most recent Undo.
+
<br />
</div>
+
<br />
 
+
<b>32.0.23 (3/5/2024)</b>
== Expression Language Syntax ==
+
<br />
Now that the basics have been covered, the more rigorous rules of the expression language syntax can be described.
+
1. Changed: Updated Chinese (simplified) translation file (thanks YanJun Sun).<br />
 
+
2. Changed: The view header alphabet uses the text over color instead of the text selected color on mouse over.<br />
:* An expression is any sequence of literal text and any number of function calls.
+
3. <b>NEW:</b> Support for FLAC files with 32-bit audio.<br />
:* Expressions are read and evaluated left to right. Literal text is output unmodified, function calls are evaluated and their return values output.
+
4. Fixed: The setting "Allow custom data to override the expression" did not allow itself to be turned off.<br />
:* Fields designated using [[square bracket notation]] are expanded into the equivalent [[Accessing_and_Storing_Functions#Field|Field()]] function call.
+
5. Fixed: While playing a live TV channel on a client using a server TV tuner, switching to a different media type (e.g. Audio or Video) without explicitly clicking the Stop button would cause the server tuner not to be released (for an hour).<br />
:* Nested function calls are evaluated from the innermost function to outermost function, and again, left to right when one function follows another.
+
<br />
:* A function is evaluated and its returned value contextually replaces the function call in the expression
+
<br />
:* Within a function's argument list, whitespace is ignored before and after commas, after an opening parenthesis, and before a closing parenthesis.
+
'''32.0.22 (2/29/2024)'''
:* The forward-slash escape character <span style="font-family: monospace,monospace; font-size:1em;">/</span> disables the special meaning of the character that follows it.
+
<br>
:* The escape sequence <span style="font-family: monospace,monospace; font-size:1em;">/#</span> followed by <span style="font-family: monospace,monospace; font-size:1em;">#/</span> escapes everything inside.
+
1. Changed: Updated the new / improved this version link to v32.<br>
:* The escape sequence <nowiki>/* followed by /*</nowiki> will escape everything inside returning it as given without formatting or processing.
+
2. Changed: Updated German translation file (thanks Bytestar).<br>
:* To use a literal parenthesis, comma, or whitespace inside of function argument lists, escape them.  Whitespace within an argument's value is literal and does not need to be escaped when it is surrounded by other non-whitespace text.
+
3. Fixed: Navigating a view could switch the focus to the tree instead of the file lists.<br>
:* An expression may be split into multiple lines, but when it does not satisfy the conditions above regarding whitespace around function parenthesis and commas, use a forward-slash escape as the last character before the newline.  Extraneous newlines in the expression editor will produce a trailing ellipsis (...) in the output.
+
4. Changed: Moved the numbers to the start of the navigation alphabet (since they come before letters in the sorting).<br>
 
+
5. '''NEW:''' Face-tagging for JPEG images (select an area in the image and tag who/what it is).  The result is saved in an XMP regions tag.<br>
=== How Expressions Are Evaluated ===
+
<br>
Expressions are evaluated in the context where they are used.
+
<br>
For example, an expression column in a file list is evaluated relative to those files in the file list.
+
'''32.0.21 (2/27/2024)'''
And the general flow is that for each file in the list, the expression is evaluated and produces output.
+
<br>
The expression only has access to the fields available for the file currently being evaluated.
+
1. Changed: Theater View movie file info uses full description in large view (v2.3 of templates file).<br>
This is important to remember, so it bears repeating.
+
2. Fixed: The EXIF parser could crash on malformed files.<br>
One file after another, an expression is evaluated against that single file, its output is produced and stored away for use later,
+
3. '''NEW:''' Added IsOverridden expression function to test if an expression field has a stored value.<br>
and then the result of that evaluation is entirely forgotten before the next file is evaluated.
+
4. Changed: The links tracks command disables when only one track is selected (when it's in the MRU menu).<br>
This means, the expression evaluator cannot use the results from one file's evaluated expression with the results of another
+
5. Changed: More MCWS functions have the parameter NoUI to put the player in error free mode (and all default to true) (playback from JRemote is less likely to show an error, etc.).<br>
file's evaluation.
+
6. Fixed: Commas in Aspect Ratio were not being handled in Theater View movie file template.<br>
 
+
7. Fixed: Missing director images were messing up Theater View movie file template cast display.<br>
=== Expressions and Locales ===
+
<br>
Media Center will respect the Windows locale setting for output values produced by certain functions,
+
<br>
and within the values of certain fields.
+
'''[https://yabb.jriver.com/interact/index.php/topic,138245.0.html 32.0.20 (2/22/2024)]'''
This is important to consider when writing expressions that consume such values.
+
<br>
Under most circumstances, such values cause no harm.
+
1. Changed: If middle click closes a tab, it will no longer also fire a mode change.<br>
However special care must be taken with functions that require the use of period as the decimal point.
+
2. Changed: List drawing supports the alpha parameter on text.<br>
One such function is [[Miscellaneous_Functions#Math|Math()]], which always uses period as the decimal point.
+
3. Changed: The view header alphabet allows clicks in the space around letters instead of only on the letters.<br>
If your locale uses some other character such as comma, these characters will have to be converted into periods before the
+
4. Changed: Removed the keyboard shortcut to flip Playing Now and added a menu choice instead.<br>
critical function is called.
+
5. Changed: The "Name" field is no longer being filled from video file metadata, as its values are largely not desirable and prevent AutoTag (Carnac) from running.<br>
Handling this problem is not difficult. Before passing to [[Miscellaneous_Functions#Math|Math()]] any floating point number,
+
6. Changed: Updated Greek translation (thanks Panagiotis).<br>
use [[String_Manipulation_Functions#Replace|Replace()]] first when necessary to convert the locale's decimal character into a period.
+
<br>
Fields that cause problems are any fields that produce floating-point values,
+
<br>
such as any Date type field in raw format (e.g. <span style="font-family: monospace,monospace; font-size:1em;">[date,0]</span>, <span style="font-family: monospace,monospace; font-size:1em;">[last played,0]</span>, <span style="font-family: monospace,monospace; font-size:1em;">[date modified,0]</span>, and <span style="font-family: monospace,monospace; font-size:1em;">[date imported,0]</span>),
+
'''32.0.19 (2/19/2024)'''
or any textual field that contains floating-point values that will be used for various calculations
+
<br>
(e.g. any of the Dynamic Range variants).
+
1. Changed: Slovak translation updated (thanks Peter Lukáč).<br>
Certain functions such as [[Date_and_Time_Functions#Now|Now()]] and [[Date_and_Time_Functions#ConvertTime|ConvertTime()]] also return localized floating-point values.
+
2. Changed: Minor tweak to volume protection so that it works more evenly.<br>
Consider also that the expression parser uses comma as the argument separator.
+
3. Fixed: The handheld filename rule wasn't saving since our change a couple builds back.<br>
Any literal numeric values specified as a function argument must have any embedded commas escaped.
+
4. Changed: Equalizer sliders move 0.5 dB to the arrows and mouse wheel.<br>
 
+
5. Changed: Made the alphabet above a file list stretch to the full width instead of being all left aligned.<br>
=== A Complex Expression Example ===
+
6. Changed: The alphabet uses the text selected color instead of the text hot color on mouse over.<br>
[[File:Expression_Editor.png|right]]
+
7. Fixed: Resolved a build issue that caused Media Center to crash on older processors.<br>
Here is a more complex expression example that illustrates the various rules discussed above regarding expressions:
+
<br>
 
+
<br>
<span style="font-family: monospace,monospace; font-size:1em;">
+
'''[https://yabb.jriver.com/interact/index.php/topic,138193.0.html 32.0.18 (2/15/2024)]'''
<div style="margin-left: 20pt">if(  IsEmpty(  [Disc #]  ),</div>
+
<br>
<div style="margin-left: 40pt">Disc number is empty,</div>
+
1. Changed: Added a help button to the Acquire Images Action Window that links to the wiki.<br>
<div style="margin-left: 40pt">Delimit(</div>
+
2. Changed: When acquiring images, the destination path is checked to make sure it can be written to.<br>
<div style="margin-left: 60pt">field(disc #) , </div>
+
3. Fixed: Library/CreateField better updates when expressions are changed.<br>
<div style="margin-left: 60pt">/)    ,</div>
+
4. Changed: Renamed "Migrate Library" to "Change Media Location" and reworded the instructions accordingly.<br>
<div style="margin-left: 60pt">DISC /(</div>
+
5. '''NEW:''' Added a Library/DeleteField MCWS function.<br>
<div style="margin-left: 40pt">)</div>
+
6. Fixed: Tab controls didn't stretch to the right since we removed dead space to expand middle click.  Reverted the sizing but handle middle click another way.<br>
<div style="margin-left: 20pt">)</div>
+
7. Changed: IPTC/XMP "Category" and "Supplemental Categories" tags are mapped to "Image Category" and "Image Subcategory" custom fields (instead of "LR Category", and "Subcateories").<br>
</span>
+
8. Changed: Multiple changes to Theater View movie file info template based on feedback (v2.2 of templates file).<br>
 
+
<br>
The expression demonstrates that
+
<br>
:* whitespace before and after commas or opening and closing parenthesis is ignored
+
'''32.0.17 (2/13/2024)'''
:* expressions can be safely split into multiple lines using the whitespace rules just mentioned
+
<br>
:* function and field names are case insensitive
+
1. Fixed: HTML encoded characters (eg. "&quot;") in plain text subtitles are properly replaced by their respective characters.<br>
:* forward slash is used and required to escape parenthesis (see inside the [[Formatting_Functions#Delimit|Delimit()]] function)
+
2. Fixed: Removed some dead space to the right of the tabs so middle click works for a bigger area.<br>
:* whitespace does not require escapement when surrounded by other characters (see after the <span style="font-family: monospace,monospace; font-size:1em;">C</span> in <span style="font-family: monospace,monospace; font-size:1em;">DISC</span>)
+
3. Changed: Showing the playing file always centers the playing file in Playing Now instead of showing a few files above and below.<br>
:* literal text is output unmodified (<span style="font-family: monospace,monospace; font-size:1em;">Disc number is empty</span>)
+
4. Changed: Library/CreateField can update a field if it already exists.<br>
:* functions can be nested (Both [[Test_and_Comparison_Functions#IsEmpty|IsEmpty()]] and [[Formatting_Functions#Delimit|Delimit()]] are nested within the [[Conditional_Functions#If|If()]] function, and the [[Accessing_and_Storing_Functions#Field|Field()]] function is nested within [[Formatting_Functions#Delimit|Delimit()]]
+
5. Fixed: Importing Theater View file info templates with an older version would fail.<br>
 
+
6. Fixed: Language choices made in DVD menus would get overriden by the default language selected in the MC settings.<br>
When the expression is run, files that have no disc number will produce <span style="font-family: monospace,monospace; font-size:1em;">Disc number is empty</span>,
+
7. '''NEW:''' Added a "Plain (no border)" cover art drawing mode.<br>
and files that have, say, a disc number value of <span style="font-family: monospace,monospace; font-size:1em;">3</span> will produce <span style="font-family: monospace,monospace; font-size:1em;">DISC (3)</span>.
+
8. Changed: Ctrl+T will toggle the zone but not toggle the layout of Playing Now (even though Ctrl is down).<br>
 
+
<br>
== Functions ==
+
<br>
 
+
'''[https://yabb.jriver.com/interact/index.php/topic,138129.0.html 32.0.16 (2/9/2024)]'''
Functions enable you to transform or generate content automatically. For background information on how functions are used in expressions, refer to [[#The Anatomy of an Expression|The Anatomy of an Expression]] section above.
+
<br>
 
+
1. Changed: The flip state of Playing Now is saved between program restarts.<br>
This section describes all the various functions provided by Media Center's Expression Language.
+
2. Changed: Updated our TIFF library to the latest (makes a crashing TIF somebody sent load).<br>
 
+
<br>
=== Function Arguments ===
+
<br>
 
+
'''32.0.15 (2/8/2024)'''
As discussed [[#The_Anatomy_of_an_Expression|above]], a function call consists of the function's case-insensitive name, immediately followed by an opening parenthesis character, one or more comma-separated arguments, and a closing parenthesis character:
+
<br>
 
+
1. Changed: Made the new confirmation before installing an update an option (Options > General > Advanced > Confirm before installing an update on launch).<br>
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;"><i>functionname</i><b>(</b><i>argument 1</i>, <i>argument 2</i>, ...<b>)</b></span></div>
+
<br>
 
+
<br>
Functions may have one or more arguments. In some cases, these arguments are optional, and will automatically use a default value if omitted. For example, these two expressions are equivalent because the mode argument for [[Test_and_Comparison_Functions#IsEmpty|IsEmpty()]] is optional and defaults to 0:
+
'''32.0.14 (2/8/2024)'''
:<span style="font-family: monospace,monospace; font-size:1em;">isempty([comment], 0)</span>
+
<br>
:<span style="font-family: monospace,monospace; font-size:1em;">isempty([comment])</span>
+
1. Fixed: Spotlight images in Theater View file info panel were sometimes not drawing properly.<br>
 
+
2. Changed: Loading views starts in the saved views folder under the library.<br>
In this case, a comma-separator will still be required if additional arguments follow the optional one. Whitespace after the commas is also optional, but helps readability and formatting. However, if any extra arguments are included in a function call which are not valid for that function, they are dropped and omitted from output. This is of particular importance when using string-manipulation functions on text. If the text you enter contains any commas, these must be escaped or the expression engine will consider text after the comma to be additional arguments.
+
3. Changed: The import and export all templates Theater View tools start in the backup folder under the library (or just the library folder if the backup folder doesn't exist).<br>
 
+
4. Changed: When you launch the program and an updated is pending, it will ask if you want to install the update instead of just doing it (times out and cancels in 30 seconds for headless servers).<br>
The arguments themselves are also just expressions, and you can nest multiple functions to achieve complex logic:
+
5. Changed: Added video definition icon to Theater View movie file info template (v2.1 of templates file).<br>
:<span style="font-family: monospace,monospace; font-size:1em;">if(isequal([artist], [album], 1), Eponymous, [album])</span>
+
6. '''NEW:''' "Migrate Library" wizard to help update the library after swapping Operating System or otherwise moving media files into a different location.<br>
 
+
7. Changed: spotlight_list() values in file info templates are "hexified" to handle special characters.<br>
Nested function calls are always treated as a ''single'' argument when used as the input to another function (so that commas in the output of one function do not need to be escaped to be used as input in another function). This includes fields, since they are expanded to the equivalent [[Accessing_and_Storing_Functions#Field|Field()]] function call.
+
<br>
 
+
<br>
:'''''Please Note:''''' In some cases below, such as with [[String_Manipulation_Functions#Unswap|Unswap()]], we have ignored this detail in order to simplify the examples. If you enter any text manually into a function, all commas ''must be'' escaped in order to achieve the correct result. This detail is unimportant in most real-world usages, however, because you will typically use either field values or the output of other functions as the arguments in your expressions. However, if you need to include commas in a string literal argument to a function, you need to escape every one, or block escape the entire argument.
+
'''32.0.13 (2/6/2024)'''
 
+
<br>
=== [[Function Index]] ===
+
1. Changed: When a field is deleted, that column will no longer be loaded.<br>
Unfortunately, ''when'' these were actually introduced has ''not'' been tracked. The only way to be certain you have access to all of the functions below is to make sure you have the most current build of Media Center installed.<br>
+
2. Changed: Allow user to specify high version number in Theater View file info template file so that it is never overwritten with defaults.<br>
The available functions are grouped below based on the type of operation they might perform. If you prefer, a [[Complete Expression Language Alphabetical List|flat, alphabetically sorted function list is available here.]]<br>
+
3. Changed: The after playback expression in Options opens an expression editor instead of just being an edit box.<br>
Over time, as Media Center evolves, expression functions are added or changed. Those changes are typically not reflected here immediately. In the list available [https://yabb.jriver.com/interact/index.php/topic,125477.msg868288.html#msg868288 here, on interact], any entries in red text are currently missing from these wiki pages.
+
4. Changed: An expression editor is shown for the Theater View option for playing now expression.<br>
 
+
5. Fixed: Closing an empty tab could fail to work in some cases.<br>
==== [[Accessing and Storing Functions]] ====
+
6. '''NEW:''' Middle-click on the close button will relaunch Media Center.<br>
* '''[[Accessing_and_Storing_Functions#Field|Field(&hellip;)]]''': Returns a field's value.
+
7. Changed: When toggling the list style of Playing Now, the playing file is shown.<br>
* '''[[Accessing_and_Storing_Functions#FieldQuery|FieldQuery(&hellip;)]]''': Return a list of matches based on a list of fields to search, from a selected scope of files.
+
8. Changed: Track Info uses the list background skin color instead of white when drawing cover art.<br>
* '''[[Accessing_and_Storing_Functions#ItemCount|ItemCount(&hellip;)]]''': Counts the number of files that have the exact same value of the given expression as the file the expression runs in the context of.
+
9. '''NEW:''' Double-click on the player text area goes in and out of mini view.<br>
* '''[[Accessing_and_Storing_Functions#Load|Load(&hellip;)]]''': Outputs the value of a [[global variable]].
+
10. Changed: Audio Filename Rule is now simply Filename Rule for handhelds since the rule is used for other media types.<br>
* '''[[Accessing_and_Storing_Functions#Note|Note(&hellip;)]]''': Retrieve note fields.
+
11. '''NEW:''' Added a FileExtension expression function.<br>
* '''[[Accessing_and_Storing_Functions#Save|Save(&hellip;)]]''': Saves a value to a [[global variable]].
+
<br>
* '''[[Accessing_and_Storing_Functions#SaveAdd|SaveAdd(&hellip;)]]''': Adds to a [[global variable]].
+
<br>
* '''[[Accessing_and_Storing_Functions#SetField|SetField(&hellip;)]]''': Sets a field's value.
+
'''32.0.12 (2/1/2024)'''
* '''[[Accessing_and_Storing_Functions#Tag|Tag(&hellip;)]]''': Returns a file's physical tag.
+
<br>
 
+
1. Changed: Use .xml extension for the Theater View file info template backups and put them in "Backup" folder. Remove old Movie file info template.<br>
==== [[Conditional Functions]] ====
+
<br>
* '''[[Conditional Functions#And|And(&hellip;)]]''': Tests a set of values and returns 1 if all are true.
+
<br>
* '''[[Conditional Functions#FirstNotEmpty|FirstNotEmpty(&hellip;)]]''': Returns the first non-empty argument.
+
'''32.0.11 (2/1/2024)'''
* '''[[Conditional Functions#If|If(&hellip;)]]''': Conditional ifelse evaluator.
+
<br>
* '''[[Conditional Functions#IfCase|IfCase(&hellip;)]]''': Functions as a switch or select case statement.
+
1. '''NEW:''' Added Options > General > Advanced > Split Playing Now vertically.<br>
* '''[[Conditional Functions#IfElse|IfElse(&hellip;)]]''': Conditional if-elseif evaluator.
+
2. '''NEW:''' Holding CTRL while picking Playing Now opens the view split in the other direction than the setting.<br>
* '''[[Conditional Functions#Not|Not(&hellip;)]]''': Negates the results of funtions.
+
3. '''NEW:''' Added a new field "Digital Source Type" for image media type and mapped it to the XMP DigitalSourceType tag.  Users can select from a controlled vocabulary list.<br>
* '''[[Conditional Functions#Or|Or(&hellip;)]]''': Tests a set of values and returns 1 if any are true.
+
4. '''NEW:''' Added a new field editing type - PRESET_LIST, which only allows changing field value by selecting from a pre-set list of values. Currently it is used only for "Digital Source Type" field.<br>
 
+
5. '''NEW:''' Added new default Theater View file info panel template for movies that shows Spotlight data. The current user templates are backed up and overwritten.<br>
==== [[Date and Time Functions]] ====
+
<br>
* '''[[Date and Time Functions#CompareDates|CompareDates(&hellip;)]]''': Compares two dates, returning a formatted elapsed period between them
+
<br>
* '''[[Date and Time Functions#ConvertDate|ConvertDate(&hellip;)]]''': Converts a human-readable date to the internal format required for use in date fields
+
'''32.0.10 (1/30/2024)'''
* '''[[Date and Time Functions#DateInRange|DateInRange(&hellip;)]]''': Compares a date with a range of dates
+
<br>
* '''[[Date and Time Functions#FormatDate|FormatDate(&hellip;)]]''': Formats a date value in a specified manner
+
1. Fixed: When reading GPS tags from image EXIF segment, Longitude and Latitude were displayed incorrectly, with the degree symbol mangled.<br>
* '''[[Date and Time Functions#Now|Now(&hellip;)]]''': Retrieve and display the system date
+
2. Changed: When importing settings from another OS, various settings will be migrated or adjusted to ensure MediaCenter functions properly.<br>
* '''[[Date and Time Functions#PlaylistTime|PlaylistTime(&hellip;)]]''': Returns the time of a track in the current playlist (a sum of all previous durations)
+
3. Changed: When writing [Comment] field to EXIF "User Comment" tag, MC will determine the encoding method (Unicode or ASCII) according to the actual text, instead of using Unicode for all, to improve compatibility with other Apps that may not handle Unicode correcctly.<br>
 
+
<br>
==== [[File Path and Identifier Functions]] ====
+
<br>
* '''[[File Path and Identifier Functions#DBLocation|DBLocation(&hellip;)]]''': Identifies a file's databases
+
'''32.0.9 (1/29/2024)'''
* '''[[File Path and Identifier Functions#Enviro|Enviro(&hellip;)]]''': Returns the full path to a host system variable
+
<br>
* '''[[File Path and Identifier Functions#FileDBLocation|FileDBLocation(&hellip;)]]''': Identifies a file's databases
+
1. Fixed: MC loaded XMP "Source" and "Label" tags into custom "Source" and "Label"fields after it already loaded them into stock "Source (Supply Chain)" and "Image Label" fields. It should now only read these tags into the two stock fields.<br>
* '''[[File Path and Identifier Functions#FileFolder|FileFolder(&hellip;)]]''': Returns the name of a file's parent
+
2. Fixed: When loading a DSP preset, it was not restoring numeric fields properly so they became strings and sometimes didn't work.<br>
* '''[[File Path and Identifier Functions#FileKey|FileKey(&hellip;)]]''': Returns a file's unique internal identifier
+
3. Changed: Updated the Catalan language (thanks Josep).<br>
* '''[[Miscellaneous Functions#FileLookup()|FileLookup()]]''': Looks up a file based on its filename
+
4. Changed: MCWS Playback/PlayByKey honors zone switch.<br>
* '''[[File Path and Identifier Functions#FileName|FileName(&hellip;)]]''': Returns a file's name component
+
<br>
* '''[[File Path and Identifier Functions#FilePath|FilePath(&hellip;)]]''': Returns a file's path component
+
<br>
* '''[[File Path and Identifier Functions#FileVolume|FileVolume(&hellip;)]]''': Returns a file's volume name component
+
'''[https://yabb.jriver.com/interact/index.php/topic,137984.0.html 32.0.8 (1/25/2024)]'''
 
+
<br>
==== [[Formatting Functions]] ====
+
1. Fixed: MCWS Browse/Rules wasn't parsing the type properly.<br>
* '''[[Formatting Functions#Delimit|Delimit(&hellip;)]]''': Outputs a value with head/tail strings when value is non-empty
+
2. Changed: Slovak translation updated (thanks Peter Lukáč).<br>
* '''[[Formatting Functions#FormatBoolean|FormatBoolean(&hellip;)]]''': Formats a boolean (true / false) value in a specified manner
+
3. Changed: Switched from DLNA to Remote for MCWS Browse/Rules.<br>
* '''[[Formatting Functions#FormatDuration|FormatDuration(&hellip;)]]''': Presents a duration of seconds in a reader friendly format
+
4. Fixed: The manage library fields dialog could be very small when showing for the first time.<br>
* '''[[Formatting Functions#FormatFileSize|FormatFileSize(&hellip;)]]''': Presents a number of bytes in a reader friendly format
+
5. Fixed: MC could not load EXIF "User Comment" tag written by other apps (e.g. Lightroom) if the image was previously tagged by MC.<br>
* '''[[Formatting Functions#FormatNumber|FormatNumber(&hellip;)]]''': Formats and rounds a number to a specified number of decimal places
+
<br>
* '''[[Formatting Functions#FormatRange|FormatRange(&hellip;)]]''': Formats a value as a range
+
<br>
* '''[[Formatting Functions#Orientation|Orientation(&hellip;)]]''': Outputs the orientation of an image
+
'''32.0.7 (1/23/2024)'''
* '''[[Formatting Functions#PadNumber|PadNumber(&hellip;)]]''': Adds leading zeros to any given number
+
<br>
* '''[[Formatting Functions#RatingStars|RatingStars(&hellip;)]]''': Outputs the value of Rating as a number of star characters
+
1. Changed: The MCWS function Browse/Rules takes an optional type parameter and you can specify "tree" or "DLNA".<br>
* '''[[Formatting Functions#RatingStars10|RatingStars10(&hellip;)]]''': Outputs the value of a 10 star rating field as a number of star characters
+
2. Fixed: View extras playback would always start on file zero instead of the selected file.<br>
* '''[[Formatting Functions#Watched|Watched(&hellip;)]]''': Outputs a formatted video bookmark
+
3. Changed: The MCWS function to show the user interface returns that it's not able to run if a library is currently loading.<br>
 
+
4. Changed: XMP "Event" tag is mapped to MC's "Album" field.  Removed support for custom field "Event".<br>
==== [[Grouping Functions]] ====
+
5. Changed: MCC_TREE_SET_EXPANDED with -1 saves and restores again (but Ctrl;G still uses 0 to collapse all).<br>
* '''[[Grouping Functions#GroupCount|GroupCount(&hellip;)]]''': Counts the members of a specified group (in a category or field).
+
6. Changed: MCC_TREE_SET_EXPANDED with 1 expands the tree roots but not everything (because that was overly slow).<br>
* '''[[Grouping Functions#GroupCountQuery|GroupCountQuery(&hellip;)]]''': Globally counts the number of items in a specified group.
+
7. Changed: Updated German translation file (thanks Bytestar).<br>
* '''[[Grouping Functions#GroupSummary|GroupSummary(&hellip;)]]''': Smartly summarizes the members of a specified group (mode, mean, min, max, etc as is most logical for that grouping).
+
8. Changed: Added Type to the MCWS Library/Fields so it can report if the field is a user field, saved in the tag, etc.<br>
* '''[[Grouping Functions#GroupSummaryQuery|GroupSummaryQuery(&hellip;)]]''': Get a summary for the current group of files based on another matching field.
+
9. Fixed: The "List (loose)" data type did not show in the Manage Library Fields dialog (list fields that don't check acceptable values).<br>
 
+
10. Changed: MC "Genre" field is mapped to IPTC:ObjectAttributeReference array tags, and to XMP:IntellectualGenre tag.<br>
==== [[List Manipulation Functions]] ====
+
11. Changed: Reversed the change on "Camera" field made in build 5.  Now "Camera" will be editable.  MC will split the fields into Make and Model when saving to tags.<br>
* '''[[List Manipulation Functions#ListBuild|ListBuild(&hellip;)]]''': Constructs a list from a series of items
+
12. Changed: MC will simplify camera make and model strings by removing duplicates and wordy phrases.  For example,"NIKON CORPORATION" will become "Nikon" for Make tag, and "NIKON D310" will become "D310" for Model.<br>
* '''[[List Manipulation Functions#ListClean|ListClean(&hellip;)]]''': Various list operations
+
<br>
* '''[[List Manipulation Functions#ListCombine|ListCombine(&hellip;)]]''': Combines two delimited lists into a single delimited list
+
<br>
* '''[[List Manipulation Functions#ListContains|ListContains(&hellip;)]]''': Checks for a value being in a list
+
'''[https://yabb.jriver.com/interact/index.php/topic,137893.0.html 32.0.6 (1/18/2024)]'''
* '''[[List Manipulation Functions#ListCount|ListCount(&hellip;)]]''': Returns the number of items in a list
+
<br>
* '''[[List Manipulation Functions#ListEqual|ListEqual(&hellip;)]]''': Checks for equality between two lists
+
1. Fixed: Theater View playback of "Play All" did not start on the selected file.<br>
* '''[[List Manipulation Functions#ListFilter|ListFilter(&hellip;)]]''': Filter any list, returning only values within a given range
+
2. Changed: MC will not only remove XMP, IPTC, MJMD image segments, but also remove the entire EXIF segment when executing "Remove Tags".<br>
* '''[[List Manipulation Functions#ListFind|ListFind(&hellip;)]]''': Search a list for a value and return that value, or its index # in the list
+
3. Changed: Removed the Media Library node at the root of Browse/Rules in MCWS.<br>
* '''[[List Manipulation Functions#ListFormat|ListFormat(&hellip;)]]''': Outputs a given list in a reader friendly format.
+
4. Fixed: The new version of the upgrade installer didn't handle remote libraries and libraries in non-standard paths.<br>
* '''[[List Manipulation Functions#ListGrep|ListGrep(&hellip;)]]''': Returns list items containing specified text
+
5. '''NEW:''' Skins and Trackinfos courtesy of English Tiger.<br>
* '''[[List Manipulation Functions#ListItem|ListItem(&hellip;)]]''': Returns an item from a location in a list
+
6. '''NEW:''' TrackInfo_InsertURL(fieldname) used to load a Hexified version of the named field into a TrackInfo Plugin.<br>
* '''[[List Manipulation Functions#ListLimit|ListLimit(&hellip;)]]''': Limits the length of a list
+
<br>
* '''[[List Manipulation Functions#ListMath|ListMath(&hellip;)]]''': Perform one of 4 specific math functions on a list containing numbers
+
<br>
* '''[[List Manipulation Functions#ListMix|ListMix(&hellip;)]]''': Combine corresponding values from multiple lists into a new list, using a template to process each item
+
'''[https://yabb.jriver.com/interact/index.php/topic,137872.0.html 32.0.5 (1/17/2024)]'''
* '''[[List Manipulation Functions#ListRemove|ListRemove(&hellip;)]]''': Removes a string from a list
+
<br>
* '''[[List Manipulation Functions#ListShuffle|ListShuffle(&hellip;)]]''': Shuffles a list
+
1. '''NEW:''' Holding shift while pressing right arrow in the tree expands all (like the recently added menu item).<br>
* '''[[List Manipulation Functions#ListSort|ListSort(&hellip;)]]''': Sort a list of values
+
2. Fixed: The combobox height could be too tall when editing list fields.<br>
 
+
3. Changed: Some tuning to the new Browse/Rules function (use full path, named categories, etc.).<br>
==== [[Miscellaneous Functions]] ====
+
4. Changed: "Camera" field is made "Clear-only", so users will not be able to change camera Make and Model in EXIF image tags.  Also user-defined custom fields "Make" and "Model" will not be supported in EXIF handling.<br>
* '''[[Miscellaneous Functions#AlbumArtist|AlbumArtist(&hellip;)]]''': Returns a file's calculated album artist
+
<br>
* '''[[Miscellaneous Functions#AlbumKey|AlbumKey(&hellip;)]]''': Returns a unique album key for a file
+
<br>
* '''[[Miscellaneous Functions#AlbumType|AlbumType(&hellip;)]]''': Returns the album type for a file
+
'''32.0.4 (1/16/2024)'''
* '''[[Miscellaneous Functions#AudioAnalysisState|AudioAnalysisState(&hellip;)]]''': Returns the state of audio analysis for a file
+
<br>
* '''[[Miscellaneous Functions#Char|Char(&hellip;)]]''': Returns a character from the numeric code of that character
+
1. Changed: Removed the Back to Exit function from Theater View introduced in 32.0.1.<br>
* '''[[Miscellaneous Functions#CustomData|CustomData(&hellip;)]]''': Returns internal data to the expression language
+
2. '''NEW:''' Added Browse/Rules to MCWS to return the rules used building the browse tree.<br>
* '''[[Miscellaneous Functions#FilePlaylists()|FilePlaylists(&hellip;)]]''': Returns a list of playlists a file belongs to (Can also be used to search)
+
3. Changed: MC's "Genre" field is no longer mapped to ITPC/XMP Category tag.<br>
* '''[[Miscellaneous Functions#Literal()|Literal(&hellip;)]]''': Returns a string as given without any formatting or processing
+
4. Fixed: Some navigation issues for Prime Video in Theater View.<br>
* '''[[Miscellaneous Functions#Repeat|Repeat(&hellip;)]]''': Returns any given string repeated the specified number of times
+
<br>
* '''[[Miscellaneous Functions#Row|Row(&hellip;)]]''': Returns the row number of a list entry
+
<br>
* '''[[Miscellaneous Functions#Size|Size(&hellip;)]]''': Returns a file's size in a format specific to the media type
+
'''32.0.3 (1/15/2024)'''
* '''[[Miscellaneous Functions#Translate|Translate(&hellip;)]]''': Converts an English string found in the program to the current language selected in the language menu
+
<br>
* '''[[Miscellaneous Functions#TreeNode|TreeNode(&hellip;)]]''': Returns the selected tree path
+
1. Fixed: Analyzer could show extreme numbers when playing noise files (for not a number values) but now it simply shows a question mark.<br>
* '''[[Miscellaneous Functions#TVInfo|TVInfo(&hellip;)]]''': Miscellaneous television and other pre-formatted information
+
2. Changed: In the tag window, list data type fields show the values as a list (instead of list edit type fields) which makes genre, artist, etc. show lists.<br>
 
+
3. Changed: The MCWS UserInterface/Show now returns success if it doesn't need to change the selection.<br>
==== [[Number Functions]] ====
+
4. Changed: Back to exit Theater View only exits if a half second has passed since the last back click.<br>
* '''[[Number Functions#Avg|Avg(&hellip;)]]''': Returns the average from a set of numbers
+
5. Fixed: The new track info colors had the red and blue channels reversed.<br>
* '''[[Number Functions#Counter|Counter(&hellip;)]]''': Counts upwards in specified increments
+
6. Changed: When saving to XMP and ITPC image tags, "Artist" field that contains semi-colon separated list in MC will be saved in multiple "creator" (XMP) and "by-line" (IPTC) tags, instead of a single one.<br>
* '''[[Number Functions#Math|Math(&hellip;)]]''': Evaluates a given mathematical formula
+
7. Fixed: MC did not read XMP tags "xmp:Label" and "xmp:Rating" from the XMP segment.<br>
* '''[[Number Functions#Max|Max(&hellip;)]]''': Returns the largest value from a set of numbers
+
<br>
* '''[[Number Functions#Min|Min(&hellip;)]]''': Returns the smallest value from a set of numbers
+
<br>
* '''[[Number Functions#Number|Number(&hellip;)]]''': Returns the first number , including decimals, from a given string
+
'''32.0.2 (1/12/2024)'''
* '''[[Number Functions#Rand|Rand(&hellip;)]]''': Returns a random number anywhere between two given numbers
+
<br>
* '''[[Number Functions#Range|Range(&hellip;)]]''': Creates a semi-colon delimited list of numbers in a field
+
1. Changed: Updated the copyrights to 2024.<br>
* '''[[Number Functions#Roman|Roman(&hellip;)]]''': Converts any given number to, or from, roman numerals
+
2. Changed: Made a few improvements to the new download library and files tool.<br>
* '''[[Number Functions#StackCount|StackCount(&hellip;)]]''': Returns the number of files in a stack
+
3. Fixed: TRACKINFO_INSERT_BACK_COLOR / TRACKINFO_INSERT_TEXT_COLOR were not working.<br>
* '''[[Number Functions#Sum|Sum(&hellip;)]]''': Returns the sum of a set of numbers
+
4. '''NEW:''' Added the right-click tree option to expand all the items under a selection (instead of just the selection).<br>
* '''[[Number Functions#TrackNumber|TrackNumber(&hellip;)]]''': Returns a file's track # value
+
5. Fixed: Some XMP image tags that involve alternate language arrays were not saved properly.<br>
 
+
<br>
==== [[String Manipulation Functions]] ====
+
<br>
* '''[[String Manipulation Functions#Clean|Clean(&hellip;)]]''': Clean a string to be used for various operations
+
'''32.0.1 (1/9/2024)'''
* '''[[String Manipulation Functions#Extract|Extract(&hellip;)]]''': Returns a portion of a string bounded by another substring
+
<br>
* '''[[String Manipulation Functions#Find|Find(&hellip;)]]''': Finds a string or character in another string, returning its zero-based position in that string
+
1. Fixed: When playing an ATSC channel, the context menu item "Audio Programs -> Use current audio stream as default" did not work for some channels.<br>
* '''[[String Manipulation Functions#FixCase|FixCase(&hellip;)]]''': Changes the case of a given string
+
2. Changed: Improved how ATSC channels' audio streams are saved, to make sure maximum amount of valid data are saved.<br>
* '''[[String Manipulation Functions#FixSpacing|FixSpacing(&hellip;)]]''': Intelligently splits adjacent camel-cased words
+
3. '''NEW:''' Improved the upgrade process to be faster when there are several previous versions.<br>
* '''[[String Manipulation Functions#Hexify|Hexify(&hellip;)]]''': Hexifies a string to make it suitable for web usage
+
4. Changed: Improved data completeness when showing ATSC television audio streams in the "Audio Programs" context menu.<br>
* '''[[String Manipulation Functions#Left|Left(&hellip;)]]''': Retrieves a specified number of characters from the left of a string
+
5. Changed: Updated all translations to the latest strings from the code.<br>
* '''[[String Manipulation Functions#Length|Length(&hellip;)]]''': Returns the number of characters in a string
+
6. '''NEW:''' Added an advanced option to sort incoming playback files because the order coming from shell extensions could be shuffled (on by default).<br>
* '''[[String Manipulation Functions#Letter|Letter(&hellip;)]]''': Returns the starting letter or letters of a given string
+
7. Changed: Added media sub types: Business; Blog; Concert.<br>
* '''[[String Manipulation Functions#Mid|Mid(&hellip;)]]''': Retrieves specified characters from a string
+
8. Changed: Made collapsing all the tree items simply always collapse (was saving and loading the expanded items).<br>
* '''[[String Manipulation Functions#MoveArticles|MoveArticles(&hellip;)]]''': Takes "The Beatles" and reverses it to "Beatles, The"
+
9. Changed: Updated Greek translation (thanks Panagiotis).<br>
* '''[[String Manipulation Functions#NoArticles|NoArticles(&hellip;)]]''': Takes "The Beatles" and returns "Beatles"
+
10. Changed: Updated the Catalan language (thanks Josep).<br>
* '''[[String Manipulation Functions#PadLeft|PadLeft(&hellip;)]]''': Pad any string with any character, to the left
+
11. '''NEW:''' Added an Enable ZoneSwitch toolbar button.<br>
* '''[[String Manipulation Functions#PadRight|PadRight(&hellip;)]]''': Pad any string with any character, to the right
+
12. Changed: [TV Channel Number] field is now available for Media Type "Video", in addition to Media Type "TV" (for TV Channels).<br>
* '''[[String Manipulation Functions#Regex|Regex(&hellip;)]]''': Regular expression pattern matching and capture
+
13. '''NEW:''' If the remote control button "Recorded TV" can not find "Video\Shows" in Theater View, a few additional locations are tried to locate it, including root level "Shows" and "Recorded TV" and "Video\Recorded TV", etc.<br>
* '''[[String Manipulation Functions#RemoveCharacters|RemoveCharacters(&hellip;)]]''': Removes a list of characters from a string
+
14. '''NEW:''' Full screen video window will have a Minimize button in addition to the Window Size button and Close button.<br>
* '''[[String Manipulation Functions#RemoveLeft|RemoveLeft(&hellip;)]]''': Trims characters from the beginning of a string
+
15. Changed: When adding cover art to a file, if no art is found next to the file it will search known subfolders as well (https://wiki.jriver.com/index.php/View_Extras).<br>
* '''[[String Manipulation Functions#RemoveRight|RemoveRight(&hellip;)]]''': Trims characters from the end of a string
+
16. '''NEW:''' Added "Minimize" to the list of MC commands in remote control setup.<br>
* '''[[String Manipulation Functions#Replace|Replace(&hellip;)]]''': Replace or remove a string segment
+
17. Changed: Theater View uses 20% larger fonts.<br>
* '''[[String Manipulation Functions#Right|Right(&hellip;)]]''': Retrieves a specified number of characters from the right of a string
+
18. Changed: Added standard view to the loop of modes shown on F11 / Green Button.<br>
* '''[[String Manipulation Functions#Swap|Swap(&hellip;)]]''': Takes Firstname Lastname and swaps to Lastname, Firstname
+
19. Changed: Pressing back or escape in Theater View when there's no place farther to go back closes Theater View by simulating F11.<br>
* '''[[String Manipulation Functions#Trim|Trim(&hellip;)]]''': Removes leading and trailing non-printable characters and new lines from a string
+
20. Fixed: If Theater View was configured to switch to a zone on load, sometimes the load could not finish properly.<br>
* '''[[String Manipulation Functions#TrimLines|TrimLines(&hellip;)]]''': Removes leading and trailing non-printable characters and new lines from a string
+
21. '''NEW:''' Added the ability to download the library and all the media files when connected to a library server.<br>
* '''[[String Manipulation Functions#UnMoveArticles|UnMoveArticles(&hellip;)]]''': Takes "Beatles, The" and reverses it to restore the normal word order, "The Beatles"
+
22. '''NEW:''' When recording TV shows, "TV Channel Number" field is filled with appropriate data for all channel types that carry such data (<major channel>-<minor channel> for ATSC, <logical channel number> for other types).  For ATSC and DVB, if recording is in WTV format the file is tagged with this data too.<br>
* '''[[String Manipulation Functions#Unswap|Unswap(&hellip;)]]''': Takes Lastname, Firstname and reverses it to Firstname Lastname
+
23. '''NEW:''' Added a Display View toolbar button.<br>
* '''[[String Manipulation Functions#Urlify|Urlify(&hellip;)]]''': Takes a string and applies html formatting for browser consumption
+
24. '''NEW:''' TV recording in WTV format will save "time recording ended" into the tag "WM/WMRVEndTime".<br>
 
+
25. Changed: Updated Dutch translation (thanks Maarten).<br>
==== [[Test and Comparison Functions]] ====
+
26. Fixed: Genius lyrics lookup was failing on songs with parenthesis in the name.<br>
* '''[[Test and Comparison Functions#Compare|Compare(&hellip;)]]''': Compares two numbers
+
27. '''NEW:''' Added a Reset Search Cache menu item to links to cause the search to be run again after editing a media type, etc.<br>
* '''[[Test and Comparison Functions#IsDigit|IsDigit(&hellip;)]]''': Determines whether or not a given value is digits
+
28. Fixed: The image preview icon could not show in mixed lists.<br>
* '''[[Test and Comparison Functions#IsDriveMissing|IsDriveMissing(&hellip;)]]''': Checks if a drive is missing
+
29. Changed: The default value of the first parameter of MCWS function Television/GetRecordingScheduleXML will be "168", instead of "-1".<br>
* '''[[Test and Comparison Functions#IsEmpty|IsEmpty(&hellip;)]]''': Tests a value for emptiness
+
30. '''NEW:''' Added "Sorting" roller to Theater View library views to allow sorting using any of the default rules.<br>
* '''[[Test and Comparison Functions#IsEqual|IsEqual(&hellip;)]]''': Compares two values in one of seventeen specified modes
+
31. '''NEW:''' Added optional AlternatingColors property for Flush visualization component. It is of the form "N;HexColor1;HexColor2..." where N is the number of seconds between color changes. For example, "10;0x0000FF;0xFF0000;0x00FF00" would alternate between red, green, and blue every 10 seconds.<br>
* '''[[Test and Comparison Functions#IsInPlayingNow|IsInPlayingNow(&hellip;)]]''': Tests to see if a file is in the Playing Now playlist
+
32. Changed: Removed some old code that no longer has any effect for playing a live TV channel on a Library Server client (using a tuner on the server).<br>
* '''[[Test and Comparison Functions#IsLowerCase|IsLowerCase(&hellip;)]]''': Tests to see if a value is lower case
+
33. '''NEW:''' Added "Duplicate" to the right-click menu on library views to make a new copy of the view.<br>
* '''[[Test and Comparison Functions#IsMissing|IsMissing(&hellip;)]]''': Tests to see if a file exists on the system
+
34. '''NEW:''' Added TRACKINFO_INSERT_BACK_COLOR and TRACKINFO_INSERT_TEXT_COLOR to track info pages so the hex of each color can be loaded.<br>
* '''[[Test and Comparison Functions#IsPlaying|IsPlaying(&hellip;)]]''': Tests to see if a file is in currently being played
+
35. Fixed: Improved support for JPEG images with uncommon color encoding.<br>
* '''[[Test and Comparison Functions#IsRange|IsRange(&hellip;)]]''': Tests a value for inclusion within a given range
+
36. Fixed: Starting playback of a grouping of tracks with shuffle on would always start at the same track.<br>
* '''[[Test and Comparison Functions#IsRemovable|IsRemovable(&hellip;)]]''': Tests to see if a file is stored on removable media
+
37. Fixed (possibly): bda TV might crash on stop (if stopping happened shortly after start up).<br>
* '''[[Test and Comparison Functions#IsUpperCase|IsUpperCase(&hellip;)]]''': Tests to see if a value is upper case
+
38. Changed: An empty password is no longer accepted to enter party mode.<br>
* '''[[Test and Comparison Functions#SearchTags|SearchTags(&hellip;)]]''': Finds all fields that contain a value
+
39. Changed: A 400 error is returned from MCWS when the function name is not found.<br>
 
+
40. Changed: Slovak translation updated (thanks Peter Lukáč).<br>
== Data Types ==
+
41. Fixed: Calling MCWS Playback/PlayByFilename with invalid filenames now returns an error.<br>
It was mentioned already that the Media Center expression language is primarily a textual language - it consumes and produces text.
+
42. Fixed: TV tuner event code was being repeatedly executed unnecessarily when playing DVB TV with Transport Stream Time-shifting.<br>
Nonetheless, certain areas of Media Center are influenced by the type of data used or presented,
+
43. '''NEW:''' Implement the DLNA AVTransport command GetCurrentTransportActions dynamically according to play state.<br>
and sometimes it is useful or necessary to coerce expression output into one data type or another.
+
44. Fixed: For the DLNA transport state, Always return 1 for the playspeed. Was 0 (when stopped) which appears to be incorrect.<br>
Each Media Center field is defined to be of a certain data type,
+
45. Fixed: Make precision zone sync feature option determine whether or not it's exposed in the AVTransport XML play command. Fixes non-compliance with the spec.<br>
listed in the [[File_Properties_%28tags%29#Field_Specifications|Field Data Types]] table.
+
46. Changed: Updated XMP library.<br>
These types influence how values are output, sorted, and interpreted on input.
+
47. Changed: Updated GnuTLS and supporting libraries.<br>
And expressions always output data of type String.
+
48. Changed: Updated WebP library.<br>
By coercing the data type of an expression, output formatting and sorting can be controlled in various ways.
+
49. Changed: Re-enabled writing of custom field "Event" to XMP metadata in images.<br>
 
+
50. Fixed: MC wrote an new entry "State/Province" into a jpg image file's MJMD segment each time tags are saved to the image, resulting in multiple entries in the image.<br>
Data types are forced by appending to an expression the string:
+
51. Changed: Updated libplacebo in JRVR to the latest version.<br>
 
+
52. Fixed: SRT subtitles with size parameters would render generally too small.<br>
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">&datatype=[<i>type</i>]</span></div>
+
53. '''NEW:''' Added support for "pt" and "px" size definitions in inline string <font> parameters.<br>
 
+
54. Changed: Empty text tokens no longer contribute vertical height when rendering text, resulting in a more consistent vertical spacing.<br>
where <i><span style="font-family: monospace,monospace; font-size:1em;">type</span></i> is one of the following values:
+
<br>
 
+
<br>
<div style="margin-left: 20pt;"><table style="border-spacing:0px; border-collapse:collapse">
+
[[Release_Notes|<---Back to version table]]
<tr><td style="text-align:left; padding-right:20pt"><b>list</b></td><td>A list of strings, separated by semicolons</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b>string</b></td><td>Sorts as strings (with smart number handling)</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b>number</b></td><td>Sorts values as numbers (decimal or integer)</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b>integer</b></td><td>Sorts values as integers</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b>path</b></td><td>Sorts using a smart filename compare style</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b>month</b></td><td>Sorts string month names (i.e. January, February, etc.)</td></tr>
 
</table></div>
 
 
 
=== Calculated Fields and Search ===
 
 
 
Media Center's [[Search Language]] supports some simple numeric [[Search Language#Comparison_Operators|comparison operators]].
 
Because expressions always evaluate as a String type, these operators would be unavailable for use in a search query to compare numeric values from a calculated expression field.
 
In order to use the numeric comparison operators, a calculated expression field can be cast into one of the numeric types.
 
In your numeric calculated fields, to allow the use Search's numeric comparison operators, add either of the casts:
 
 
 
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">&datatype=[integer]</span></div>
 
 
 
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">&datatype=[number]</span></div>
 
 
 
to the end of the field's calculated expression.
 
 
 
=== Lists and Trees ===
 
<div>
 
[[File:Datatype_List.png|right]]
 
The list of output in view categories and pane columns can be modified by forcing the data type to a List type.
 
Two things happen when the data type is List:
 
The values within a List type are split into their individual (semicolon-separated) list items
 
The backslash character takes on a special meaning and becomes another form of separator that creates tree-like hierarchies,
 
collapsible in panes columns and creates drill-down categories in any category view type (Standard View > Categories, Theater View, DLNA, Gizmo/WebGizmo).
 
Forcing an expression's type to <span style="font-family: monospace,monospace; font-size:1em;">list</span> causes this list item separation and hierarchy generation.
 
Alternatively, forcing a List type to <span style="font-family: monospace,monospace; font-size:1em;">string</span> defeats this.
 
Add the cast:
 
 
 
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">&datatype=[list]</span></div>
 
 
 
to the end of an expression to force an expression's output to be considered as a List type.
 
Conversely, a List type may be forced into a String type by adding the cast:
 
 
 
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">&datatype=[string]</span></div>
 
 
 
to the end of an expression.
 
</div>
 
 
 
=== Sort Order ===
 
<div>
 
[[File:Datatype_Month.png|right]]
 
Normally strings are sorted ASCII-betically with some smart numeric sorting.
 
But this form of sort may not always be desired.
 
 
 
==== Sorting by Month ====
 
Generally it is more useful to see month names sorting such that January sorts before April, instead of alphabetically where April would sort before January.
 
Forcing an expression's type to Month forces string month values to be treated instead as their equivalent numerical month numbers.
 
For example, the first month January and the third month March sort before the fourth month April.
 
Add the cast:
 
 
 
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">&datatype=[month]</span></div>
 
 
 
to the end of an expression to force an expression's output to be sorted by numeric month values.
 
 
 
==== Sorting by Path ====
 
 
 
Path data types sort using smart filename comparisons.
 
 
 
XXX: Note: This section is incomplete.  I cannot distingish any difference between using a datatype of <span style="font-family: monospace,monospace; font-size:1em;">path</span> vs. <span style="font-family: monospace,monospace; font-size:1em;">string</span>.  It seems <span style="font-family: monospace,monospace; font-size:1em;">path</span> sort order is always engaged.
 
 
 
Add the cast:
 
 
 
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">&datatype=[path]</span></div>
 
 
 
to the end of an expression to force an expression's output to be smart-sorted by path components.
 
 
 
</div>
 
 
 
== Expressions and Search ==
 
The expression language is fully available to the search query engine (Search, Set rules for file display, etc.).
 
This allows creation of more complex search queries than would otherwise be possible.
 
An expression-based search query is any valid expression that produces a zero or non-zero numeric output.
 
The syntax of the query is:
 
 
 
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;"><b>[=</b><i>expression</i><b>]=</b><i>numval</i></span></div>
 
 
 
where expression is any valid expression, and numval is the expected numeric output produced by the expression.
 
The expression is evaluated against the current list of available files and the expression output numerically compared against numval.
 
All files for which the comparison is true are returned as part of the file list produced by the query and all files that fail the comparison are winnowed from the file list.
 
 
 
The following example illustrates an expression-based search query:
 
 
 
<div style="margin-left: 20pt"><span style="font-family: monospace,monospace; font-size:1em;">[=ismissing([filename (path)]\Folder.jpg)]=1</span></div>
 
 
 
The [[Test_and_Comparison_Functions#IsMissing|IsMissing()]] function is run using the file name argument <span style="font-family: monospace,monospace; font-size:1em;">[filename (path)]</span> appended by <span style="font-family: monospace,monospace; font-size:1em;">\Folder.jpg</span>,
 
and returns a Boolean value <span style="font-family: monospace,monospace; font-size:1em;">1</span> for files that are missing, and this <span style="font-family: monospace,monospace; font-size:1em;">1</span> is compared against the value <i>numval</i>.
 
All these files where there was a successful comparison are returned in the file list,
 
and all those for which the expression produced <span style="font-family: monospace,monospace; font-size:1em;">0</span> are filtered from the file list.
 
By inverting the comparison and using a <span style="font-family: monospace,monospace; font-size:1em;">0</span> numval, the set of files remaining in the file list would be those that did not match.
 
 
 
== HTML Font Properties ==
 
The expression language recognizes a limited set of HTML font properties and attributes. These can be used to set font styles in most text drawing areas, such as captions, thumbnail text and in the configuration of Theater View.
 
HTML tags are used by surrounding the desired content with an opening and closing tag, in the form of:
 
 
 
: <span style="font-family: monospace,monospace; font-size:1em;"><<i>tag</i>><i>desired content</i><//<i>tag</i>></span>
 
 
 
The supported HTML tags are:
 
<div style="margin-left: 20pt;"><table style="border-spacing:0px; border-collapse:collapse">
 
<tr><td style="text-align:left; padding-right:20pt"><b><nowiki><b></nowiki></b></td><td>Bold</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b><nowiki><i></nowiki></b></td><td>Italics</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b><nowiki><u></nowiki></b></td><td>Underline</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b><nowiki><font></nowiki></b></td><td>Font properties (see attributes below)</td></tr>
 
</table></div>
 
 
 
The <b>font</b> tag supports the following attributes:
 
<div style="margin-left: 20pt;"><table style="border-spacing:0px; border-collapse:collapse">
 
<tr><td style="text-align:left; padding-right:20pt"><b>alpha</b></td><td>Sets alpha-blending percentage (0 - 100)</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b>color</b></td><td>Sets the foreground color (RGB hex values from 00 to ff in the form of rrggbb)</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b>bgcolor</b></td><td>Sets the background color (same values as color)</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b>face</b></td><td>Sets the font face (a font name)</td></tr>
 
<tr><td style="text-align:left; padding-right:20pt"><b>size</b></td><td>Sets the font size (a percentage scaling value)</td></tr>
 
</table></div>
 
 
 
Any combination of HTML tags and font attributes can be used.
 
An HTML tag must have an opening and closing tag.
 
Nesting is allowed, but be sure to properly balance like opening and closing tags.
 
Attribute values must be double quoted. The closing tag's forward slash requires escapement with an extra forward slash.
 
The following examples illustrate using HTML font properties:
 
 
 
: <span style="font-family: monospace,monospace; font-size:1em;"><nowiki><i>This is in italics<//i></nowiki></span>
 
 
 
: <span style="font-family: monospace,monospace; font-size:1em;"><nowiki><i><b>And this is bold and italic<//b><//i></nowiki></span>
 
 
 
: <span style="font-family: monospace,monospace; font-size:1em;"><nowiki><b>The<font color=&quot;ff0000&quot; size=&quot;80&quot; alpha=&quot;50&quot;> Great <//font>Gatsby<//b></nowiki></span>
 
 
 
== Expression Editors ==
 
There are a couple of variations of dialog or edit field used to enter expressions.
 
Some allow multi-line expressions, while others are single line, but can be expanded to multi-line editors.
 
Unfortunately, some single-line editors flatten multi-line expressions into a single line, replacing the newlines with spaces.
 
 
 
== Acknowledgements ==
 
A big tip of hat to [[User:Marko|marko]] who tackled the enormous challenge of documenting the MC Expression Language in detail. His work was instrumental and through which has brought clarity and great assistance to Media Center users worldwide.
 
 
 
Also, a huge thanks to user [[User:MrC|MrC]] who built [[Expression_Language_Archive|the amazing and long-lived previous version of this page]], upon which this is still heavily based.
 
 
 
The current caretaker of this documentation is forever in their debts.
 
 
 
[[Category:Frequently Asked Questions]]
 
[[Category:Developer]]
 
[[Category:Expression Language]]
 

Latest revision as of 04:10, 28 April 2024

32.0.42 (4/27/2024)
1. Fixed: Subtitles with JRVR will be stretched properly when using anamorphic rendering.
2. Fixed: Possible crashes starting playback in build 41.


32.0.41 (4/24/2024)
1. Fixed: Theater View file info templates were not handling , as a decimal separator for FPS. (v2.9 of templates file)
2. Fixed: If the VideoClock setting is on, changing from normal playback speed to slow motion speeds might not work initially.
3. Fixed: If playback of a video is stopped or a new file is started while doing slow-motion playback, playback of the next file would be marked as slow-motion, even though the actual playback speed is normal.
4. Changed: Added a note on the direction of the subtitle shift to the video settings dialog.
5. Changed: MCC commands to set the global JRVR profile can be called outside of playback (Output profiles will always refer to the primary display in this case).
6. Fixed: Maximizing some windows like Options could be a problem in the last builds on some displays.


32.0.40 (4/23/2024)
1. Changed: Cancelling the dialog to choose Blu-ray Menu or Title playback will stop playback, rather then choose a default option.
2. Changed: Some MCWS calls default to false for switching into no UI mode (File/GetInfo, Files/Search, Files/GetInfo, etc.).
3. Fixed: Slow motion OSD menu was accidentally enabled for non-video playback types (image, audio, etc.).
4. Fixed: Slow motion via OSD did not try to avoid conflict with VideoClock setting.
5. NEW: Add FPS icons to Theater View file info templates. Video definition now uses ranges instead of exact heights. (v2.8 of templates file)


32.0.39 (4/22/2024)
1. Changed: Changed how slow-motion playback is invoked, so the DSP Studio window will not pop up.
2. Fixed: Monitors could maximize too large since the change to not show them in the Alt+Tab list.
3. Changed: Updated Greek translation (thanks Panagiotis).
4. NEW: OSD menu for Slow Motion Playback.


32.0.38 (4/18/2024)
1. Fixed: Manual shifting the video image could result in subtitles being drawn off-screen.
2. NEW: Added an option to control subtitle position globally (as a percentage shift from the default position).
3. NEW: Added an option to limit subtitles to the active video rect, instead of using the black bars (if possible).
4. NEW: Added list view display option to Panel.
5. Fixed: Buttons in Playing Now bar in Panel would sometimes overlap when resizing.


32.0.37 (4/15/2024)
1. Fixed: Rectangles drawn on an image in Image Editor or Image Face Tagger did not reposition correctly when the image window is resized (including resizing of MC main window).
2. Fixed: Some keyboard shortcuts did not work properly in the image editor.
3. Fixed: The image editor could have problems when zooming and scrolling the image when cropping or using other tools.
4. Fixed: The IsPlaying expression didn't work with DLNA files.


32.0.36 (4/10/2024)
1. NEW: The top image in a fanned stack of thumbnails is stored so if you stop on an image, it will be used (added a stack_tops.jmd file to the database).
2. Changed: Image Face-tagging tool is no longer a part of Image Editor tools.
3. Fixed: Parallel processing of many files could crash due to a timing problem.
4. Changed: Tools like Analyze Audio no longer show in the Alt+Tab list (they could duplicate in some cases).
5. Fixed: Some images could crash the EXIF parser.


32.0.35 (4/9/2024)
1. NEW: Added a new MC command (31010) and a context menu item for Image Face Tagging.
2. Changed: Theater View file info movie template now shows small poster. (v2.7 of templates file)
3. Changed: Updated to LAV Filters 0.79.2 for various fixes.
4. Fixed: Bitstreaming AC3 audio could fail if the stream started with a corrupt or incomplete audio frame.
5. Fixed: Buffering video from high latency sources was slower than expected in recent versions.
6. Fixed: Spotlight & Theater View Background images account for a movies IMDB Id to pick the right movie.
7. Changed: Slovak translation updated (thanks Peter Lukáč).
8. NEW: Added the ability to configure the default profile used in JRVR, in the config dialog, context menu, as well as MCC (10080-10083).


32.0.34 (4/4/2024)
1. Fixed: Theater View file info templates in Mac and Linux were not showing cast or recommended thumbnails. Also reduced default spacing between thumbnails so they render without wrapping. (v2.6 of templates file)
2. Fixed: Sat>IP channels that have been recently scanned/re-scanned did not play.
3. Fixed: Views configured for JRemote, Gizmo, etc. didn't work properly when a category was at the root.
4. Changed: When adding padding channels with the new extra channels system, they are no longer marked as having data so they won't be used in mixes or show in Audio Path (feedback appreciated).
5. Changed: Made Audio Path report the number of filled channels instead of the number of total channels of audio.


32.0.33 (4/2/2024)
1. Changed: Reordered the web links menu so manage and reset are at the top and a link doesn't take the keyboard shortcut.


32.0.32 (3/28/2024)
1. Changed: Updated to LAV Filters 0.79.1 to fix an issue with HEVC playback glitches.


32.0.31 (3/28/2024)
1. Changed: When face-tagging an image, if a click falls on an existing region, that region is automatically selected. If the click hits outside of any existing region, the user will be prompted to choose an action (Add a new region, Edit selected existing region, Edit nearest existing region, or Cancel).
2. Changed: When a field has a description, it is returned in the Library/Fields call.
3. Changed: When setting up auto-import on a Portable Install, the system drive is replaced with (Install Drive) to be more portable.
4. Changed: When face-tagging an image, all existing regions' rectangles will be drawn on the image.
5. Changed: Updated the Catalan language (thanks Josep).


32.0.30 (3/26/2024)
1. Fixed: Updated Netflix integration to fix playback failures due to recent Netflix changes.
2. Fixed: Video playback with subtitles could hang since 32.0.28.
3. Changed: When resizing Rename, Move, & Copy Files the extra height is spread between the two expression editors.
4. Changed: Updated to LAV Filters 0.79 for VVC video support, and improved reliability when streaming HLS content.


32.0.29 (3/22/2024)
1. NEW: Added ShortTime date formatting string.
2. Changed: Tweaked Theater View file info templates (v2.5 of templates file).

  • For TV Shows: Add option variable to show/hide director. Display small episode thumbnail.
  • For Shows and Movies: Add Watched status display. Use new ShortTime formatting for end times. Add option variable for date formatting which defaults to ShortDate. Add option variable to show/hide Recommended title text.

3. Changed: In Image Face-tagging, if a rectangle is created on the image (by user clicking in the image) while the list of regions is still empty, a new region is automatically created, and the user is prompted to enter more details.
4. NEW: Added a "Test output" command to Options > Audio. It will save the current settings and try playing a sample file with the current settings.
5. Changed: Removed the Help menu option to leave error free mode since it's now in the view menu.
6. Changed: The view extras submenu no longer hits the filesystem when it's added to a menu (only when the menu is opened).


32.0.28 (3/21/2024)
1. NEW: Added an error free toolbar button to show the status and allow toggling. Also added to the view menu.
2. Fixed: Double-click on the play button was not stopping.
3. NEW: The brightness of PGS subtitles on HDR movies is checked to determine if they are proper HDR subtitles, and are treated as SDR subtitles if not.
4. Fixed: XMP image tagging did not work with some non-ASCII characters.


32.0.27 (3/19/2024)
1. Fixed: Some Sat>IP channels scanned since MC29 would not play because a tuner type matching failed.
2. Changed: Running a command line argument or double-clicking files exits error free mode.
3. Changed: "lr" is added to "words" that should be always all-capitalized during auto case correction.
4. Changed: Updated Spanish translation (thanks Leandro Botella Penalva).


32.0.26 (3/14/2024)
1. Fixed: Merging of image [People] and [Image Regions] did not work if the latter is empty.
2. NEW: Added Theater View file info template for TV Shows using Spotlight data. (v2.4 of templates file)
3. Changed: Particle creation from chapters works on blu-rays.


32.0.25 (3/12/2024)
1. Changed: Updated German translation file (thanks Bytestar).
2. NEW: Added Spotlight item to context menu in Theater View which will show Spotlight for the first file.
3. Fixed: Spotlight stopped retrieving albums for artists.
4. NEW: Introduced a new Tonemapping Curve setting in JRVR Advanced Output selection to pick between different Spline curves for tonemapping.
5. Changed: The default JRVR tonemapping spline curve has been changed to favor a more lively "popping" image in dark scenes.
6. Fixed: Setting the media network client conversion for audio was not working.
7. NEW: Added the ability to create particles from chapters in a video (requires a video that plays with chapters, does not work with DVDs currently).
8. NEW: JPEG image [People] field is written to XMP "PersonInImage" tag.
9. Changed: Image data in [People] field and the Regions data are always merged, so they will be as consistent with each other as possible. Users are encouraged to use Face-tagging tool to make changes and editing [People] field directly is discouraged.


32.0.24 (3/7/2024)
1. Changed: When loading images for Theater View backdrop, images that do not have a language specification is considered a match, in addition to those that match the required language strictly.
2. Changed: Updated German translation file (thanks Bytestar).
3. Fixed: Recordings made on Google Pixel phones are properly identified as Home Videos.
4. Fixed: MC Television properties page (TV Options) tried to error check recordig settings (in particular, folders for TV recordings) even if recording option was off.
5. Changed: Updated to WavPack 5.7.
6. Changed: Tuned the JRVR Peak Detection parameters to be more conservative to reduce noticeable brightness changes from dynamic tone mapping.
7. Changed: When image face-tagging is finished, the [People] field is automatically updated.


32.0.23 (3/5/2024)
1. Changed: Updated Chinese (simplified) translation file (thanks YanJun Sun).
2. Changed: The view header alphabet uses the text over color instead of the text selected color on mouse over.
3. NEW: Support for FLAC files with 32-bit audio.
4. Fixed: The setting "Allow custom data to override the expression" did not allow itself to be turned off.
5. Fixed: While playing a live TV channel on a client using a server TV tuner, switching to a different media type (e.g. Audio or Video) without explicitly clicking the Stop button would cause the server tuner not to be released (for an hour).


32.0.22 (2/29/2024)
1. Changed: Updated the new / improved this version link to v32.
2. Changed: Updated German translation file (thanks Bytestar).
3. Fixed: Navigating a view could switch the focus to the tree instead of the file lists.
4. Changed: Moved the numbers to the start of the navigation alphabet (since they come before letters in the sorting).
5. NEW: Face-tagging for JPEG images (select an area in the image and tag who/what it is). The result is saved in an XMP regions tag.


32.0.21 (2/27/2024)
1. Changed: Theater View movie file info uses full description in large view (v2.3 of templates file).
2. Fixed: The EXIF parser could crash on malformed files.
3. NEW: Added IsOverridden expression function to test if an expression field has a stored value.
4. Changed: The links tracks command disables when only one track is selected (when it's in the MRU menu).
5. Changed: More MCWS functions have the parameter NoUI to put the player in error free mode (and all default to true) (playback from JRemote is less likely to show an error, etc.).
6. Fixed: Commas in Aspect Ratio were not being handled in Theater View movie file template.
7. Fixed: Missing director images were messing up Theater View movie file template cast display.


32.0.20 (2/22/2024)
1. Changed: If middle click closes a tab, it will no longer also fire a mode change.
2. Changed: List drawing supports the alpha parameter on text.
3. Changed: The view header alphabet allows clicks in the space around letters instead of only on the letters.
4. Changed: Removed the keyboard shortcut to flip Playing Now and added a menu choice instead.
5. Changed: The "Name" field is no longer being filled from video file metadata, as its values are largely not desirable and prevent AutoTag (Carnac) from running.
6. Changed: Updated Greek translation (thanks Panagiotis).


32.0.19 (2/19/2024)
1. Changed: Slovak translation updated (thanks Peter Lukáč).
2. Changed: Minor tweak to volume protection so that it works more evenly.
3. Fixed: The handheld filename rule wasn't saving since our change a couple builds back.
4. Changed: Equalizer sliders move 0.5 dB to the arrows and mouse wheel.
5. Changed: Made the alphabet above a file list stretch to the full width instead of being all left aligned.
6. Changed: The alphabet uses the text selected color instead of the text hot color on mouse over.
7. Fixed: Resolved a build issue that caused Media Center to crash on older processors.


32.0.18 (2/15/2024)
1. Changed: Added a help button to the Acquire Images Action Window that links to the wiki.
2. Changed: When acquiring images, the destination path is checked to make sure it can be written to.
3. Fixed: Library/CreateField better updates when expressions are changed.
4. Changed: Renamed "Migrate Library" to "Change Media Location" and reworded the instructions accordingly.
5. NEW: Added a Library/DeleteField MCWS function.
6. Fixed: Tab controls didn't stretch to the right since we removed dead space to expand middle click. Reverted the sizing but handle middle click another way.
7. Changed: IPTC/XMP "Category" and "Supplemental Categories" tags are mapped to "Image Category" and "Image Subcategory" custom fields (instead of "LR Category", and "Subcateories").
8. Changed: Multiple changes to Theater View movie file info template based on feedback (v2.2 of templates file).


32.0.17 (2/13/2024)
1. Fixed: HTML encoded characters (eg. """) in plain text subtitles are properly replaced by their respective characters.
2. Fixed: Removed some dead space to the right of the tabs so middle click works for a bigger area.
3. Changed: Showing the playing file always centers the playing file in Playing Now instead of showing a few files above and below.
4. Changed: Library/CreateField can update a field if it already exists.
5. Fixed: Importing Theater View file info templates with an older version would fail.
6. Fixed: Language choices made in DVD menus would get overriden by the default language selected in the MC settings.
7. NEW: Added a "Plain (no border)" cover art drawing mode.
8. Changed: Ctrl+T will toggle the zone but not toggle the layout of Playing Now (even though Ctrl is down).


32.0.16 (2/9/2024)
1. Changed: The flip state of Playing Now is saved between program restarts.
2. Changed: Updated our TIFF library to the latest (makes a crashing TIF somebody sent load).


32.0.15 (2/8/2024)
1. Changed: Made the new confirmation before installing an update an option (Options > General > Advanced > Confirm before installing an update on launch).


32.0.14 (2/8/2024)
1. Fixed: Spotlight images in Theater View file info panel were sometimes not drawing properly.
2. Changed: Loading views starts in the saved views folder under the library.
3. Changed: The import and export all templates Theater View tools start in the backup folder under the library (or just the library folder if the backup folder doesn't exist).
4. Changed: When you launch the program and an updated is pending, it will ask if you want to install the update instead of just doing it (times out and cancels in 30 seconds for headless servers).
5. Changed: Added video definition icon to Theater View movie file info template (v2.1 of templates file).
6. NEW: "Migrate Library" wizard to help update the library after swapping Operating System or otherwise moving media files into a different location.
7. Changed: spotlight_list() values in file info templates are "hexified" to handle special characters.


32.0.13 (2/6/2024)
1. Changed: When a field is deleted, that column will no longer be loaded.
2. Changed: Allow user to specify high version number in Theater View file info template file so that it is never overwritten with defaults.
3. Changed: The after playback expression in Options opens an expression editor instead of just being an edit box.
4. Changed: An expression editor is shown for the Theater View option for playing now expression.
5. Fixed: Closing an empty tab could fail to work in some cases.
6. NEW: Middle-click on the close button will relaunch Media Center.
7. Changed: When toggling the list style of Playing Now, the playing file is shown.
8. Changed: Track Info uses the list background skin color instead of white when drawing cover art.
9. NEW: Double-click on the player text area goes in and out of mini view.
10. Changed: Audio Filename Rule is now simply Filename Rule for handhelds since the rule is used for other media types.
11. NEW: Added a FileExtension expression function.


32.0.12 (2/1/2024)
1. Changed: Use .xml extension for the Theater View file info template backups and put them in "Backup" folder. Remove old Movie file info template.


32.0.11 (2/1/2024)
1. NEW: Added Options > General > Advanced > Split Playing Now vertically.
2. NEW: Holding CTRL while picking Playing Now opens the view split in the other direction than the setting.
3. NEW: Added a new field "Digital Source Type" for image media type and mapped it to the XMP DigitalSourceType tag. Users can select from a controlled vocabulary list.
4. NEW: Added a new field editing type - PRESET_LIST, which only allows changing field value by selecting from a pre-set list of values. Currently it is used only for "Digital Source Type" field.
5. NEW: Added new default Theater View file info panel template for movies that shows Spotlight data. The current user templates are backed up and overwritten.


32.0.10 (1/30/2024)
1. Fixed: When reading GPS tags from image EXIF segment, Longitude and Latitude were displayed incorrectly, with the degree symbol mangled.
2. Changed: When importing settings from another OS, various settings will be migrated or adjusted to ensure MediaCenter functions properly.
3. Changed: When writing [Comment] field to EXIF "User Comment" tag, MC will determine the encoding method (Unicode or ASCII) according to the actual text, instead of using Unicode for all, to improve compatibility with other Apps that may not handle Unicode correcctly.


32.0.9 (1/29/2024)
1. Fixed: MC loaded XMP "Source" and "Label" tags into custom "Source" and "Label"fields after it already loaded them into stock "Source (Supply Chain)" and "Image Label" fields. It should now only read these tags into the two stock fields.
2. Fixed: When loading a DSP preset, it was not restoring numeric fields properly so they became strings and sometimes didn't work.
3. Changed: Updated the Catalan language (thanks Josep).
4. Changed: MCWS Playback/PlayByKey honors zone switch.


32.0.8 (1/25/2024)
1. Fixed: MCWS Browse/Rules wasn't parsing the type properly.
2. Changed: Slovak translation updated (thanks Peter Lukáč).
3. Changed: Switched from DLNA to Remote for MCWS Browse/Rules.
4. Fixed: The manage library fields dialog could be very small when showing for the first time.
5. Fixed: MC could not load EXIF "User Comment" tag written by other apps (e.g. Lightroom) if the image was previously tagged by MC.


32.0.7 (1/23/2024)
1. Changed: The MCWS function Browse/Rules takes an optional type parameter and you can specify "tree" or "DLNA".
2. Fixed: View extras playback would always start on file zero instead of the selected file.
3. Changed: The MCWS function to show the user interface returns that it's not able to run if a library is currently loading.
4. Changed: XMP "Event" tag is mapped to MC's "Album" field. Removed support for custom field "Event".
5. Changed: MCC_TREE_SET_EXPANDED with -1 saves and restores again (but Ctrl;G still uses 0 to collapse all).
6. Changed: MCC_TREE_SET_EXPANDED with 1 expands the tree roots but not everything (because that was overly slow).
7. Changed: Updated German translation file (thanks Bytestar).
8. Changed: Added Type to the MCWS Library/Fields so it can report if the field is a user field, saved in the tag, etc.
9. Fixed: The "List (loose)" data type did not show in the Manage Library Fields dialog (list fields that don't check acceptable values).
10. Changed: MC "Genre" field is mapped to IPTC:ObjectAttributeReference array tags, and to XMP:IntellectualGenre tag.
11. Changed: Reversed the change on "Camera" field made in build 5. Now "Camera" will be editable. MC will split the fields into Make and Model when saving to tags.
12. Changed: MC will simplify camera make and model strings by removing duplicates and wordy phrases. For example,"NIKON CORPORATION" will become "Nikon" for Make tag, and "NIKON D310" will become "D310" for Model.


32.0.6 (1/18/2024)
1. Fixed: Theater View playback of "Play All" did not start on the selected file.
2. Changed: MC will not only remove XMP, IPTC, MJMD image segments, but also remove the entire EXIF segment when executing "Remove Tags".
3. Changed: Removed the Media Library node at the root of Browse/Rules in MCWS.
4. Fixed: The new version of the upgrade installer didn't handle remote libraries and libraries in non-standard paths.
5. NEW: Skins and Trackinfos courtesy of English Tiger.
6. NEW: TrackInfo_InsertURL(fieldname) used to load a Hexified version of the named field into a TrackInfo Plugin.


32.0.5 (1/17/2024)
1. NEW: Holding shift while pressing right arrow in the tree expands all (like the recently added menu item).
2. Fixed: The combobox height could be too tall when editing list fields.
3. Changed: Some tuning to the new Browse/Rules function (use full path, named categories, etc.).
4. Changed: "Camera" field is made "Clear-only", so users will not be able to change camera Make and Model in EXIF image tags. Also user-defined custom fields "Make" and "Model" will not be supported in EXIF handling.


32.0.4 (1/16/2024)
1. Changed: Removed the Back to Exit function from Theater View introduced in 32.0.1.
2. NEW: Added Browse/Rules to MCWS to return the rules used building the browse tree.
3. Changed: MC's "Genre" field is no longer mapped to ITPC/XMP Category tag.
4. Fixed: Some navigation issues for Prime Video in Theater View.


32.0.3 (1/15/2024)
1. Fixed: Analyzer could show extreme numbers when playing noise files (for not a number values) but now it simply shows a question mark.
2. Changed: In the tag window, list data type fields show the values as a list (instead of list edit type fields) which makes genre, artist, etc. show lists.
3. Changed: The MCWS UserInterface/Show now returns success if it doesn't need to change the selection.
4. Changed: Back to exit Theater View only exits if a half second has passed since the last back click.
5. Fixed: The new track info colors had the red and blue channels reversed.
6. Changed: When saving to XMP and ITPC image tags, "Artist" field that contains semi-colon separated list in MC will be saved in multiple "creator" (XMP) and "by-line" (IPTC) tags, instead of a single one.
7. Fixed: MC did not read XMP tags "xmp:Label" and "xmp:Rating" from the XMP segment.


32.0.2 (1/12/2024)
1. Changed: Updated the copyrights to 2024.
2. Changed: Made a few improvements to the new download library and files tool.
3. Fixed: TRACKINFO_INSERT_BACK_COLOR / TRACKINFO_INSERT_TEXT_COLOR were not working.
4. NEW: Added the right-click tree option to expand all the items under a selection (instead of just the selection).
5. Fixed: Some XMP image tags that involve alternate language arrays were not saved properly.


32.0.1 (1/9/2024)
1. Fixed: When playing an ATSC channel, the context menu item "Audio Programs -> Use current audio stream as default" did not work for some channels.
2. Changed: Improved how ATSC channels' audio streams are saved, to make sure maximum amount of valid data are saved.
3. NEW: Improved the upgrade process to be faster when there are several previous versions.
4. Changed: Improved data completeness when showing ATSC television audio streams in the "Audio Programs" context menu.
5. Changed: Updated all translations to the latest strings from the code.
6. NEW: Added an advanced option to sort incoming playback files because the order coming from shell extensions could be shuffled (on by default).
7. Changed: Added media sub types: Business; Blog; Concert.
8. Changed: Made collapsing all the tree items simply always collapse (was saving and loading the expanded items).
9. Changed: Updated Greek translation (thanks Panagiotis).
10. Changed: Updated the Catalan language (thanks Josep).
11. NEW: Added an Enable ZoneSwitch toolbar button.
12. Changed: [TV Channel Number] field is now available for Media Type "Video", in addition to Media Type "TV" (for TV Channels).
13. NEW: If the remote control button "Recorded TV" can not find "Video\Shows" in Theater View, a few additional locations are tried to locate it, including root level "Shows" and "Recorded TV" and "Video\Recorded TV", etc.
14. NEW: Full screen video window will have a Minimize button in addition to the Window Size button and Close button.
15. Changed: When adding cover art to a file, if no art is found next to the file it will search known subfolders as well (https://wiki.jriver.com/index.php/View_Extras).
16. NEW: Added "Minimize" to the list of MC commands in remote control setup.
17. Changed: Theater View uses 20% larger fonts.
18. Changed: Added standard view to the loop of modes shown on F11 / Green Button.
19. Changed: Pressing back or escape in Theater View when there's no place farther to go back closes Theater View by simulating F11.
20. Fixed: If Theater View was configured to switch to a zone on load, sometimes the load could not finish properly.
21. NEW: Added the ability to download the library and all the media files when connected to a library server.
22. NEW: When recording TV shows, "TV Channel Number" field is filled with appropriate data for all channel types that carry such data (<major channel>-<minor channel> for ATSC, <logical channel number> for other types). For ATSC and DVB, if recording is in WTV format the file is tagged with this data too.
23. NEW: Added a Display View toolbar button.
24. NEW: TV recording in WTV format will save "time recording ended" into the tag "WM/WMRVEndTime".
25. Changed: Updated Dutch translation (thanks Maarten).
26. Fixed: Genius lyrics lookup was failing on songs with parenthesis in the name.
27. NEW: Added a Reset Search Cache menu item to links to cause the search to be run again after editing a media type, etc.
28. Fixed: The image preview icon could not show in mixed lists.
29. Changed: The default value of the first parameter of MCWS function Television/GetRecordingScheduleXML will be "168", instead of "-1".
30. NEW: Added "Sorting" roller to Theater View library views to allow sorting using any of the default rules.
31. NEW: Added optional AlternatingColors property for Flush visualization component. It is of the form "N;HexColor1;HexColor2..." where N is the number of seconds between color changes. For example, "10;0x0000FF;0xFF0000;0x00FF00" would alternate between red, green, and blue every 10 seconds.
32. Changed: Removed some old code that no longer has any effect for playing a live TV channel on a Library Server client (using a tuner on the server).
33. NEW: Added "Duplicate" to the right-click menu on library views to make a new copy of the view.
34. NEW: Added TRACKINFO_INSERT_BACK_COLOR and TRACKINFO_INSERT_TEXT_COLOR to track info pages so the hex of each color can be loaded.
35. Fixed: Improved support for JPEG images with uncommon color encoding.
36. Fixed: Starting playback of a grouping of tracks with shuffle on would always start at the same track.
37. Fixed (possibly): bda TV might crash on stop (if stopping happened shortly after start up).
38. Changed: An empty password is no longer accepted to enter party mode.
39. Changed: A 400 error is returned from MCWS when the function name is not found.
40. Changed: Slovak translation updated (thanks Peter Lukáč).
41. Fixed: Calling MCWS Playback/PlayByFilename with invalid filenames now returns an error.
42. Fixed: TV tuner event code was being repeatedly executed unnecessarily when playing DVB TV with Transport Stream Time-shifting.
43. NEW: Implement the DLNA AVTransport command GetCurrentTransportActions dynamically according to play state.
44. Fixed: For the DLNA transport state, Always return 1 for the playspeed. Was 0 (when stopped) which appears to be incorrect.
45. Fixed: Make precision zone sync feature option determine whether or not it's exposed in the AVTransport XML play command. Fixes non-compliance with the spec.
46. Changed: Updated XMP library.
47. Changed: Updated GnuTLS and supporting libraries.
48. Changed: Updated WebP library.
49. Changed: Re-enabled writing of custom field "Event" to XMP metadata in images.
50. Fixed: MC wrote an new entry "State/Province" into a jpg image file's MJMD segment each time tags are saved to the image, resulting in multiple entries in the image.
51. Changed: Updated libplacebo in JRVR to the latest version.
52. Fixed: SRT subtitles with size parameters would render generally too small.
53. NEW: Added support for "pt" and "px" size definitions in inline string parameters.
54. Changed: Empty text tokens no longer contribute vertical height when rendering text, resulting in a more consistent vertical spacing.


<---Back to version table