TAGS

PolyHarp is a very tag-friendly program.

Tags can be applied to PolyHarps (.polyharp patch files) and Chord types (.phchord files).
As used in many other systems, tags are metadata which help describe the actual data. Tag searching is often made so that a logical combination of tags is used to winnow down a large list of things. PolyHarp expands this somewhat by allowing some tags to be parameterized , so that as well as just searching for a combination of tags, you can also make some simple comparisons on tag values.

PolyHarp file Tags

In the case of patch file tags, you can search on ratings, number of string areas, and how many divisions of an octave it may be using. For example, the search string "edo:>12" can be used to find PolyHarps that are tagged as using a scale with more than 12 divisions of an octave.

When you want to add or change tags on a PolyHarp file, the keyboard conveniently has a list of the tags in a list over the keyboard. The same is true when searching tags.

PolyHarp also creates a few tags dynamically for more specific searches.

You can also reverse the sense of a tag in a search by prefixing it with "!". Tag keys themselves are case insensitive, but the values are not, unless it's for author, name, description, or text, which is a combo of all three.

PolyHarp also automatically creates tags for "today" and "yesterday" if there are patches or chords that were created then.

Here is a more technical look at tags:

User-created tags are comma delimited, and case insensitive. If they have a ":" in them, the values will be searched for as an integer. That way, you can make up a parameter tag, and query it.

Each PolyHarp's metadata gets turned into searchable tags with these names:

Tag What it stands for Notes
name: Name searches for a substring
desc: Description searches for a substring
author: Author searches for a substring
text the text of name, description, and author so you can match on them all
cdate: Creation date searches as a date
mdate: Modified date searches as a date
rating: Rating searches as an integer
version: Version searches as a string
sa#: String Area Count searches as an integer
cb#: Chord Bar Count searches as an integer
built-in ro Built-in PolyHarps (read only) used in the distributed PolyHarp files
user-made rw PolyHarps saved by the user (read/write) these are custom PolyHarp files
hammer At least one chord bar is a hammered on chord a dynamically created tag
lock At least one chord bar is a lock bar a dynamically created tag
relative At least one chord bar is a relative bar a dynamically created tag
additive The chords are additive (undamping) a dynamically created tag
yesterday made since yesterday a dynamically created tag

Most of this is self expanatory, but date searches can be tricky. You can specify a complete date like "2015/12/22T12:45:22", but that can be cumbersome. You can instead use a shorter form like:

Normally, all the other parts of a date are set to the earliest qualifying date-time, but if you use < in the query, and one of these shorter dates, it fills out the rest of it with the last second of that period. So cdate:<2017 means to look for objects created before the second before midnight Jan 1, 2018 (which to say, Dec 31, 2017 at 11:59:59). A search seeking the PolyHarps made on a specific day (May 3, 2014) would be: cd:>20140503,cd:<20140503

The text fields for entering and searching for tags have been enhanced with a list of all possible tags. It's just a faster way to type them in, and also, selecting a few tags will automatically comma delimit them. Parameterized tags like "rating:" will require you to provide a value, or a test if it's a search. there's a sidebar of buttons that let you clear (X) or type <,=,or > a little more easily.

More Examples of patch tags and Searching

These search queries are to be typed into the search area over the list of PolyHarps.

Search query example Explanation
ro show all read-only files
name:z show all files with a 'z' in their name
author:J H H L show files I authored (case insensitive value there)
today,!just files I made today without the 'just' tag
cdate:<2016 files created before the last second of 2016.