PM123 playlist location strings

PM123 uses a special notation to store playing positions. These strings are used at

A location string defines an exact point inside a playlist or song. In case of playlists it is an entire call stack. A call stack in genera consists of several parts separated by ';' or new-line (if the new-line character is allowed). URLs in the parts may be enclosed with double quotes (") to avoid confusion with special characters.

Examples:

my_nested_playlist.lst
my_favorite_song.mp3[2]
3:44
or
my_nested_playlist.lst;"my_favorite_song.mp3"[2];3:44

The first part navigates to the first occurrence of the file my_nested_playlist.lst in the current playlist.
The second part navigates to the second occurrence of my_favorite_song.mp3 in my_nested_playlist.lst. It is enclosed with quotes. In this case this is optional because the relative URL contains neither a semicolon nor square brackets at the end.
The last part navigates to the offset 3:44 within my_favorite_song.mp3.

my_playlist.lst
 +- my_favorite_song.mp3 (1)
 +- another_song.mp3
 +- my_nested_playlist.lst
     +- my_favorite_song.mp3 (2)
     +- my_playlist.lst (3)
     +- another_song.mp3
     +- my_favorite_song.mp3
        Offset: 3:44
     +- song_#3.mp3
     +- my_favorite_song.mp3
 +- song_#4.mp3
 +- another_nested playlist.lst
Notes:
  1. While this song is part of the location string it is not addressed because the navigation goes into the nested playlist my_nested_playlist.lst first.
  2. This item is skipped because the indexer [2] searches for the second location of this song.
  3. This recursive entry is skipped anyway.

All the following location strings also navigate to the same location as above.

[3]
[4]
3:44

The above utilizes the index navigation. If you omit the URL in a part all items within the particular playlist count. Note that this includes items that are skipped because they would create a recursion as in note 3. However, it is an error to address this item.

*"my_favorite_song.mp3"[3]
3:44

The flat navigation is identified by the leading asterisk. Flat navigation means that all all non-recursive songs in the nested playlists are taken as one linear playlist. Within this context it is the third instance of my_favorite_song.mp3. Therefore the index [3].

my_nested_playlist.lst[-1]
my_favorite_song[2]
-1:34
*my_favorite_song[-2]
-1:34

Using negative numbers you may do reverse navigation at some parts which may be applied to playlists as well as to songs. It is assumed that my_favorite_song.mp3 has a length of 5:18 in this case. Reverse navigation may be combined with flat navigation as shown in the second example.

*21:06

Flat time navigation can be used to navigate within all songs of a playlist based on the total playing time. Assuming that another_song.mp3 has a length of 3:23 the total time index of our playing location is 21:06.

Playlist location syntax reference

To locate a playlist item use one of the following syntax variants:

It is an error to

If relative navigation is used remember that the current location is always a song. So you need at least one '..;' to get to the deep most playlist.

Time syntax

If the current item is a song you may only specify a time offset from the beginning. Syntax:

It is valid to specify offsets larger the one minute as seconds and so on.
Using a sufficient number of fractional digits it is possible to address locations with an accuracy of one sample. However, some decoder plug-ins may bend it.