Version 4.6.3 added a song tagging feature. You can now mark tag each song with multiple labels. These labels can be included or excluded from a search.
To add a tag to a song go to the song selector. Click on a song and then on the dots in the white square. That should open the tag selector from which you can select the tags you want to add
To create a new tag, type in the tag you want to search, and if it isn't available, click on the button. That will create the new tag and open the tag editor.
To rename tags, or change their color, click on the tag in the tag search selector. That will open the tag edit box.
To delete a tag from a song, go to the song in the song selector and click on the tag. This will open a new dialog that can be used to either modify the search setting, or to remove the tag from the song
To open the tag search setting click on the button, top right of the song selector. This will open the following tag selector.
Tag selection and limiting is done through three stages.
includes all songs that contain this tag. This is in effect a union of each of the marked entries. If no tags are marked with an include, then all songs are taken.
the second column allows us to mark all the tags that must be present in each song that is retained. This narrows down the set from the previous step.
in the last stage, we remove all songs that contain tags listed in this column. This narrows the set further down.
To give an example. Suppose we have
Song A: Disco House 80s
Song B: Electro House 80s
Song C: DnB
Song D: Techno
Song E: House 90s
If we say that we want House and Techno included then we end up with the song set A,B,D and E. (Song C is not include because it contains neither Techno nor House). If the must-have column marks House and 80s then only the songs marked with both these tags will remain. Thus: A and B. If the exclude column (the third) has Disco marked, then song A will be excluded, leaving only song B
Although the above explanation might seem difficult, it is useful to remember that the first column enlarges the set. The second column specifies what must be present and the third column excludes tags
Changing the include/must-have and exclude settings can also be done by clicking on a tag in the song selector
Behind each tag, two numbers can be shown. E.g: 15(465). The first number specifies, for this tag, at most how many songs can appear in the result set. The actual number might be lower due to other search constraints (E.g, search string, or tempo ranges). The number within parentheses specifies potentially how many songs exist on remote hosts.
We spend quite some time making the tags persistent across BpmDj installs. This is provided using two mechanisms. The first is a backup on a remote server. Every time BpmDj connects to a server it will synchronize the tags between them.
A second mechanism is a local journal on your device which is stored in /mnt/sdcard/BpmDj/tags/ When you reinstall BpmDj that journal is imported.