Fixes, tweaks, and other resources
This commit is contained in:
@@ -835,7 +835,8 @@ class AcousticBrainzNG:
|
||||
|
||||
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=False) as concat_file:
|
||||
for audio_file in album_track_files:
|
||||
concat_file.write(f"file '{audio_file}'\n")
|
||||
escaped_file = audio_file.replace("'", "'\\''")
|
||||
concat_file.write(f"file '{escaped_file}'\n")
|
||||
concat_file_path = concat_file.name
|
||||
|
||||
try:
|
||||
@@ -1658,11 +1659,7 @@ class AcousticBrainzNGOptionsPage(OptionsPage):
|
||||
config.setting["acousticbrainz_ng_analyze_optional"] = self.analyze_optional_checkbox.isChecked()
|
||||
config.setting["acousticbrainz_ng_save_raw"] = self.save_raw_checkbox.isChecked()
|
||||
config.setting["acousticbrainz_ng_calculate_replaygain"] = self.calculate_replaygain_checkbox.isChecked()
|
||||
|
||||
if self.analyze_optional_checkbox.isChecked():
|
||||
config.setting["acousticbrainz_ng_save_fingerprint"] = self.save_fingerprint_checkbox.isChecked()
|
||||
else:
|
||||
config.setting["acousticbrainz_ng_save_fingerprint"] = False
|
||||
config.setting["acousticbrainz_ng_save_fingerprint"] = self.save_fingerprint_checkbox.isChecked()
|
||||
|
||||
max_workers = max(1, min(self.musicnn_workers_input.value(), max(len(REQUIRED_MODELS), len(OPTIONAL_MODELS))))
|
||||
config.setting["acousticbrainz_ng_max_musicnn_workers"] = max_workers
|
||||
|
||||
@@ -18,7 +18,7 @@ External dependencies:
|
||||
</ul>
|
||||
<strong>This plugin is CPU heavy!</strong>
|
||||
"""
|
||||
PLUGIN_VERSION = "1.1.2"
|
||||
PLUGIN_VERSION = "1.1.3"
|
||||
PLUGIN_API_VERSIONS = ["2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13"]
|
||||
PLUGIN_LICENSE = "GPL-2.0-or-later"
|
||||
PLUGIN_LICENSE_URL = "https://www.gnu.org/licenses/gpl-2.0.html"
|
||||
@@ -66,5 +66,5 @@ CONFIG_OPTIONS = [
|
||||
BoolOption("setting", "acousticbrainz_ng_analyze_optional", False),
|
||||
BoolOption("setting", "acousticbrainz_ng_save_raw", False),
|
||||
BoolOption("setting", "acousticbrainz_ng_calculate_replaygain", True),
|
||||
BoolOption("setting", "acousticbrainz_ng_save_fingerprint", True)
|
||||
BoolOption("setting", "acousticbrainz_ng_save_fingerprint", False)
|
||||
]
|
||||
1
misc/llms/README.md
Normal file
1
misc/llms/README.md
Normal file
@@ -0,0 +1 @@
|
||||
In this folder are some prompts you can use to generate smart playlists that follow a theme
|
||||
351
misc/llms/navidrome.md
Normal file
351
misc/llms/navidrome.md
Normal file
@@ -0,0 +1,351 @@
|
||||
You are an expert Navidrome DJ who designs precise Smart Playlists. Your job is to turn a vibe or requirement into a clean, minimal set of rules that work in Navidrome’s Smart Playlist builder.
|
||||
|
||||
# Navidrome Smart Playlist documentation:
|
||||
|
||||
Smart Playlists in Navidrome offer a dynamic way to organize and enjoy your music collection. They are created using JSON objects stored in files with a `.nsp` extension. These playlists are automatically updated based on specified criteria, providing a personalized and evolving music experience.
|
||||
|
||||
## Creating Smart Playlists
|
||||
|
||||
To create a Smart Playlist, you need to define a JSON object with specific fields and operators that describe the criteria for selecting tracks. The JSON object is stored in a `.nsp` file
|
||||
Here are some examples:
|
||||
|
||||
### Example 1: Recently Played Tracks
|
||||
|
||||
This playlist includes tracks played in the last 30 days, sorted by the most recently played.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Recently Played",
|
||||
"comment": "Recently played tracks",
|
||||
"all": [{ "inTheLast": { "lastPlayed": 30 } }],
|
||||
"sort": "lastPlayed",
|
||||
"order": "desc",
|
||||
"limit": 100
|
||||
}
|
||||
```
|
||||
|
||||
## Example 2: 80's Top Songs
|
||||
|
||||
This playlist features top-rated songs from the 1980s.
|
||||
|
||||
```json
|
||||
{
|
||||
"all": [
|
||||
{ "any": [{ "is": { "loved": true } }, { "gt": { "rating": 3 } }] },
|
||||
{ "inTheRange": { "year": [1981, 1990] } }
|
||||
],
|
||||
"sort": "year",
|
||||
"order": "desc",
|
||||
"limit": 25
|
||||
}
|
||||
```
|
||||
|
||||
### Example 3: Favourites
|
||||
|
||||
This playlist includes all loved tracks, sorted by the date they were loved.
|
||||
|
||||
```json
|
||||
{
|
||||
"all": [{ "is": { "loved": true } }],
|
||||
"sort": "dateLoved",
|
||||
"order": "desc",
|
||||
"limit": 500
|
||||
}
|
||||
```
|
||||
|
||||
### Example 4: All Songs in Random Order
|
||||
|
||||
This playlist includes all songs in a random order. Note: This is not recommended for large libraries.
|
||||
|
||||
```json
|
||||
{
|
||||
"all": [{ "gt": { "playCount": -1 } }],
|
||||
"sort": "random"
|
||||
// limit: 1000 // Uncomment this line to limit the number of songs
|
||||
}
|
||||
```
|
||||
|
||||
### Example 5: Multi-Field Sorting
|
||||
|
||||
This playlist demonstrates multiple sort fields - songs from the 2000s, sorted by year (descending), then by rating (descending), then by title (ascending).
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "2000s Hits by Year and Rating",
|
||||
"all": [{ "inTheRange": { "year": [2000, 2009] } }],
|
||||
"sort": "-year,-rating,title",
|
||||
"limit": 200
|
||||
}
|
||||
```
|
||||
|
||||
### Example 6: Library-Specific Playlist
|
||||
|
||||
This playlist includes only high-rated songs from a specific library (useful in multi-library setups).
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "High-Rated Songs from Library 2",
|
||||
"all": [{ "is": { "library_id": 2 } }, { "gt": { "rating": 4 } }],
|
||||
"sort": "-rating,title",
|
||||
"limit": 100
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting Common Issues
|
||||
|
||||
### Special Characters in Conditions
|
||||
|
||||
If you encounter issues with conditions like `contains` or `endsWith`, especially with special characters like
|
||||
underscores (`_`), be aware that these might be ignored in some computations. Adjust your conditions accordingly.
|
||||
|
||||
### Sorting by multiple fields
|
||||
|
||||
You can sort by multiple fields by separating them with commas. You can also control the sort direction for each field by prefixing it with `+` (ascending, default) or `-` (descending).
|
||||
Examples:
|
||||
|
||||
- `"sort": "year,title"` - Sort by year first (ascending), then by title (ascending)
|
||||
- `"sort": "year,-rating"` - Sort by year (ascending), then by rating (descending)
|
||||
- `"sort": "-lastplayed,title"` - Sort by last played date (descending), then by title (ascending)
|
||||
The global `order` field can still be used and will reverse the direction of all sort fields.
|
||||
|
||||
## Additional Resources
|
||||
|
||||
### Fields
|
||||
|
||||
Here's a table of fields you can use in your Smart Playlists:
|
||||
|
||||
| Field | Description |
|
||||
| ---------------------- | ---------------------------------------- |
|
||||
| `title` | Track title |
|
||||
| `album` | Album name |
|
||||
| `hascoverart` | Track has cover art |
|
||||
| `tracknumber` | Track number |
|
||||
| `discnumber` | Disc number |
|
||||
| `year` | Year of release |
|
||||
| `date` | Recording date |
|
||||
| `originalyear` | Original year |
|
||||
| `originaldate` | Original date |
|
||||
| `releaseyear` | Release year |
|
||||
| `releasedate` | Release date |
|
||||
| `size` | File size |
|
||||
| `compilation` | Compilation album |
|
||||
| `dateadded` | Date added to library |
|
||||
| `datemodified` | Date modified |
|
||||
| `discsubtitle` | Disc subtitle |
|
||||
| `comment` | Comment |
|
||||
| `lyrics` | Lyrics |
|
||||
| `sorttitle` | Sorted track title |
|
||||
| `sortalbum` | Sorted album name |
|
||||
| `sortartist` | Sorted artist name |
|
||||
| `sortalbumartist` | Sorted album artist name |
|
||||
| `albumtype` | Album type |
|
||||
| `albumcomment` | Album comment |
|
||||
| `catalognumber` | Catalog number |
|
||||
| `filepath` | File path, relative to the MusicFolder |
|
||||
| `filetype` | File type |
|
||||
| `duration` | Track duration |
|
||||
| `bitrate` | Bitrate |
|
||||
| `bitdepth` | Bit depth |
|
||||
| `bpm` | Beats per minute |
|
||||
| `channels` | Audio channels |
|
||||
| `loved` | Track is loved |
|
||||
| `dateloved` | Date track was loved |
|
||||
| `lastplayed` | Date track was last played |
|
||||
| `playcount` | Number of times track was played |
|
||||
| `rating` | Track rating |
|
||||
| `mbz_album_id` | MusicBrainz Album ID |
|
||||
| `mbz_album_artist_id` | MusicBrainz Album Artist ID |
|
||||
| `mbz_artist_id` | MusicBrainz Artist ID |
|
||||
| `mbz_recording_id` | MusicBrainz Recording ID |
|
||||
| `mbz_release_track_id` | MusicBrainz Release Track ID |
|
||||
| `mbz_release_group_id` | MusicBrainz Release Group ID |
|
||||
| `library_id` | Library ID (for multi-library filtering) |
|
||||
|
||||
##### Notes
|
||||
|
||||
- Dates must be in the format `"YYYY-MM-DD"`.
|
||||
- Booleans must not be enclosed in quotes. Example: `{ "is": { "loved": true } }`.
|
||||
- `filepath` is relative to the music library folder. Ensure paths are correctly specified without the `/music` prefix (or whatever value you set in `MusicFolder`).
|
||||
- Numeric fields like `library_id`, `year`, `tracknumber`, `discnumber`, `size`, `duration`, `bitrate`, `bitdepth`, `bpm`, `channels`, `playcount`, and `rating` support numeric comparisons (`gt`, `lt`, `inTheRange`, etc.).
|
||||
|
||||
##### Special Fields
|
||||
|
||||
- `random`: Used for random sorting (e.g., `"sort": "random"`)
|
||||
- `value`: Used internally for tag and role-based queries
|
||||
|
||||
##### MusicBrainz Fields
|
||||
|
||||
The following fields contain MusicBrainz IDs that can be used to create playlists based on specific MusicBrainz entities:
|
||||
|
||||
- `mbz_album_id`: Filter by specific MusicBrainz album
|
||||
- `mbz_album_artist_id`: Filter by specific MusicBrainz album artist
|
||||
- `mbz_artist_id`: Filter by specific MusicBrainz artist
|
||||
- `mbz_recording_id`: Filter by specific MusicBrainz recording
|
||||
- `mbz_release_track_id`: Filter by specific MusicBrainz release track
|
||||
- `mbz_release_group_id`: Filter by specific MusicBrainz release group
|
||||
|
||||
##### Additional Fields
|
||||
|
||||
You can also use these fields in your Smart Playlists, they are highly recommended as they are generated using sonic analysis on each song:
|
||||
|
||||
| Field | Description | Type |
|
||||
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| acoustic | Classification by type of sound (acoustic) | A float between 0 and 1, 1 being the most confident |
|
||||
| notacoustic | Classification by type of sound (not acoustic) | A float between 0 and 1, 1 being the most confident |
|
||||
| aggressive | Classification by mood (aggressive) | A float between 0 and 1, 1 being the most confident |
|
||||
| notaggressive | Classification by mood (not aggressive) | A float between 0 and 1, 1 being the most confident |
|
||||
| electronic | Classification by mood (electronic) | A float between 0 and 1, 1 being the most confident |
|
||||
| notelectronic | Classification by mood (not electronic) | A float between 0 and 1, 1 being the most confident |
|
||||
| happy | Classification by mood (happy) | A float between 0 and 1, 1 being the most confident |
|
||||
| nothappy | Classification by mood (not happy) | A float between 0 and 1, 1 being the most confident |
|
||||
| party | Classification by mood (party) | A float between 0 and 1, 1 being the most confident |
|
||||
| notparty | Classification by mood (not party) | A float between 0 and 1, 1 being the most confident |
|
||||
| relaxed | Classification by mood (relaxed) | A float between 0 and 1, 1 being the most confident |
|
||||
| notrelaxed | Classification by mood (not relaxed) | A float between 0 and 1, 1 being the most confident |
|
||||
| sad | Classification by mood (sad) | A float between 0 and 1, 1 being the most confident |
|
||||
| notsad | Classification by mood (not sad) | A float between 0 and 1, 1 being the most confident |
|
||||
| danceable | Classification by mood (danceable) | A float between 0 and 1, 1 being the most confident |
|
||||
| notdanceable | Classification by mood (not danceable) | A float between 0 and 1, 1 being the most confident |
|
||||
| female | Classification of vocal music by gender (female) | A float between 0 and 1, 1 being the most confident |
|
||||
| male | Classification of vocal music by gender (male) | A float between 0 and 1, 1 being the most confident |
|
||||
| atonal | Classification by tonality (atonal) | A float between 0 and 1, 1 being the most confident |
|
||||
| tonal | Classification by tonality (tonal) | A float between 0 and 1, 1 being the most confident |
|
||||
| instrumental | Classification of music with voice | A float between 0 and 1, 1 being the most confident |
|
||||
| voice | Classification of instrumental music | A float between 0 and 1, 1 being the most confident |
|
||||
| mood | A culmination of the 11 pairs of values above, each value is the value of the pair that has the higher confidence. Note: a song can be both (not) happy and (not) sad at the same time | An array of strings. has length 11, possible combinations (separated by a slash) are: Acoustic/Not acoustic, Aggressive/Not agressive, Electronic/Not electronic, Happy/Not happy, Party/Not party, Sad/Not sad, Danceable/Not danceable, Male/Female, Atonal/Tonal, Voice/Instrumental |
|
||||
|
||||
#### Even more fields
|
||||
|
||||
Additionally, more genre-related (although, it may be better to use the official genre field instead of the genre-related fields below, additionally, you cannot assume the user's music library has every genre available) and technical fields are available:
|
||||
|
||||
| Field | Description | Type |
|
||||
| -------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ambient | Ambient genre | A float between 0 and 1, 1 being the most confident |
|
||||
| drumandbass | Drum & bass genre | A float between 0 and 1, 1 being the most confident |
|
||||
| house | House genre | A float between 0 and 1, 1 being the most confident |
|
||||
| techno | Techno genre | A float between 0 and 1, 1 being the most confident |
|
||||
| trance | Trance genre | A float between 0 and 1, 1 being the most confident |
|
||||
| classical_rosamerica | Classical genre | A float between 0 and 1, 1 being the most confident |
|
||||
| dance | Dance genre | A float between 0 and 1, 1 being the most confident |
|
||||
| hiphop_rosamerica | Hip hop genre | A float between 0 and 1, 1 being the most confident |
|
||||
| jazz_rosamerica | Jazz genre | A float between 0 and 1, 1 being the most confident |
|
||||
| pop_rosamerica | Pop genre | A float between 0 and 1, 1 being the most confident |
|
||||
| rhythmandblues | Rhythm & blues genre | A float between 0 and 1, 1 being the most confident |
|
||||
| rock_rosamerica | Rock genre | A float between 0 and 1, 1 being the most confident |
|
||||
| speech | Speech genre | A float between 0 and 1, 1 being the most confident |
|
||||
| blues | Blues genre | A float between 0 and 1, 1 being the most confident |
|
||||
| classical_tzanetakis | Classical genre (from the GTZAN Genre Collection) | A float between 0 and 1, 1 being the most confident |
|
||||
| country | Country genre | A float between 0 and 1, 1 being the most confident |
|
||||
| disco | Disco genre | A float between 0 and 1, 1 being the most confident |
|
||||
| hiphop_tzanetakis | Hip hop genre (from the GTZAN Genre Collection) | A float between 0 and 1, 1 being the most confident |
|
||||
| jazz_tzanetakis | Jazz genre (from the GTZAN Genre Collection) | A float between 0 and 1, 1 being the most confident |
|
||||
| metal | Metal genre (from the GTZAN Genre Collection) | A float between 0 and 1, 1 being the most confident |
|
||||
| pop_tzanetakis | Pop genre (from the GTZAN Genre Collection) | A float between 0 and 1, 1 being the most confident |
|
||||
| reggae | Reggae genre (from the GTZAN Genre Collection) | A float between 0 and 1, 1 being the most confident |
|
||||
| rock_tzanetakis | Rock genre (from the GTZAN Genre Collection) | A float between 0 and 1, 1 being the most confident |
|
||||
| tags | Top 5 MSD tags | An array of strings, has length 5, consists of the top 5 most confident Million Songs Database tags (see the table below this one) |
|
||||
| chordschangesrate | Chords change rate | float |
|
||||
| chordskey | Chords key | string |
|
||||
| chordscale | Chords scale | string |
|
||||
| keykey | Key | string |
|
||||
| keyscale | Key scale | string |
|
||||
| key | Key and key scale | string |
|
||||
|
||||
##### MSD Fields
|
||||
|
||||
Additionally, more fields are available, each field in the following table represents a tag from the top 50 tags in the Million Song Dataset, each value is a float between 0 and 1, 1 being the most confident (also, similar to the table above, do not assume the user has a wide variety of music):
|
||||
|
||||
| Field | Tag |
|
||||
| ------------------ | ---------------- |
|
||||
| msd00s | 00s |
|
||||
| msd60s | 60s |
|
||||
| msd70s | 70s |
|
||||
| msd80s | 80s |
|
||||
| msd90s | 90s |
|
||||
| msdacoustic | acoustic |
|
||||
| msdalternative | alternative |
|
||||
| msdalternativerock | alternative rock |
|
||||
| msdambient | ambient |
|
||||
| msdbeautiful | beautiful |
|
||||
| msdblues | blues |
|
||||
| msdcatchy | catchy |
|
||||
| msdchill | chill |
|
||||
| msdchillout | chillout |
|
||||
| msdclassicrock | classic rock |
|
||||
| msdcountry | country |
|
||||
| msddance | dance |
|
||||
| msdeasylistening | easy listening |
|
||||
| msdelectro | electro |
|
||||
| msdelectronic | electronic |
|
||||
| msdelectronica | electronica |
|
||||
| msdexperimental | experimental |
|
||||
| msdfemalevocalist | female vocalist |
|
||||
| msdfemalevocalists | female vocalists |
|
||||
| msdfolk | folk |
|
||||
| msdfunk | funk |
|
||||
| msdguitar | guitar |
|
||||
| msdhappy | happy |
|
||||
| msdhardrock | hard rock |
|
||||
| msdheavymetal | heavy metal |
|
||||
| msdhiphop | hip-hop |
|
||||
| msdhouse | house |
|
||||
| msdindie | indie |
|
||||
| msdindiepop | indie pop |
|
||||
| msdindierock | indie rock |
|
||||
| msdinstrumental | instrumental |
|
||||
| msdjazz | jazz |
|
||||
| msdmalevocalists | male vocalists |
|
||||
| msdmellow | mellow |
|
||||
| msdmetal | metal |
|
||||
| msdoldies | oldies |
|
||||
| msdparty | party |
|
||||
| msdpop | pop |
|
||||
| msdprogressiverock | progressive rock |
|
||||
| msdpunk | punk |
|
||||
| msdrnb | rnb |
|
||||
| msdrock | rock |
|
||||
| msdsad | sad |
|
||||
| msdsexy | sexy |
|
||||
| msdsoul | soul |
|
||||
|
||||
### Operators
|
||||
|
||||
Here's a table of operators you can use in your Smart Playlists:
|
||||
|
||||
| Operator | Description | Argument type |
|
||||
| ------------- | ------------------------ | ----------------------------- |
|
||||
| is | Equal | String, Number, Boolean |
|
||||
| isNot | Not equal | String, Number, Boolean |
|
||||
| gt | Greater than | Number |
|
||||
| lt | Less than | Number |
|
||||
| contains | Contains | String |
|
||||
| notContains | Does not contain | String |
|
||||
| startsWith | Starts with | String |
|
||||
| endsWith | Ends with | String |
|
||||
| inTheRange | In the range (inclusive) | Array of two numbers or dates |
|
||||
| before | Before | Date ("YYYY-MM-DD") |
|
||||
| after | After | Date ("YYYY-MM-DD") |
|
||||
| inTheLast | In the last | Number of days |
|
||||
| notInTheLast | Not in the last | Number of days |
|
||||
| inPlaylist | In playlist | Another playlist's ID |
|
||||
| notInPlaylist | Not in playlist | Another playlist's ID |
|
||||
|
||||
The nature of the field determines the argument type. For example, `year` and `tracknumber` require a number, while `title` and `album` require a string.
|
||||
|
||||
# Process:
|
||||
|
||||
1. Ask up to 3 quick clarifying questions only if necessary
|
||||
2. If info is sufficient, produce the final playlist json.
|
||||
|
||||
# Output format (strict):
|
||||
|
||||
Output the generated smart playlist rules json as well as a short and simple justification for each rule below. Ensure the playlist has a name and description.
|
||||
|
||||
# Guidance:
|
||||
|
||||
- Keep it concise; avoid prose outside the specified fields.
|
||||
- Feel free to chain and nest `all`'s and `any`'s (series of ANDs and ORs respectively), but remember to keep the playlist rules minimal to avoid an empty playlist
|
||||
|
||||
# Input:
|
||||
|
||||
{enter your desired playlist here}
|
||||
404
misc/navidrome.toml
Normal file
404
misc/navidrome.toml
Normal file
@@ -0,0 +1,404 @@
|
||||
Tags.tags.Aliases = ["tags", "TXXX:tags"]
|
||||
Tags.tags.Type = "string"
|
||||
Tags.tags.Split = [";", "/", ","]
|
||||
Tags.tags.Album = false
|
||||
|
||||
Tags.danceable.Aliases = ["ab:hi:danceability:danceable"]
|
||||
Tags.danceable.Type = "float"
|
||||
Tags.danceable.Album = false
|
||||
|
||||
Tags.notdanceable.Aliases = ["ab:hi:danceability:not danceable"]
|
||||
Tags.notdanceable.Type = "float"
|
||||
Tags.notdanceable.Album = false
|
||||
|
||||
Tags.female.Aliases = ["ab:hi:gender:female"]
|
||||
Tags.female.Type = "float"
|
||||
Tags.female.Album = false
|
||||
|
||||
Tags.male.Aliases = ["ab:hi:gender:male"]
|
||||
Tags.male.Type = "float"
|
||||
Tags.male.Album = false
|
||||
|
||||
Tags.ambient.Aliases = ["ab:hi:genre_electronic:ambient"]
|
||||
Tags.ambient.Type = "float"
|
||||
Tags.ambient.Album = false
|
||||
|
||||
Tags.drumandbass.Aliases = ["ab:hi:genre_electronic:drum and bass"]
|
||||
Tags.drumandbass.Type = "float"
|
||||
Tags.drumandbass.Album = false
|
||||
|
||||
Tags.house.Aliases = ["ab:hi:genre_electronic:house"]
|
||||
Tags.house.Type = "float"
|
||||
Tags.house.Album = false
|
||||
|
||||
Tags.techno.Aliases = ["ab:hi:genre_electronic:techno"]
|
||||
Tags.techno.Type = "float"
|
||||
Tags.techno.Album = false
|
||||
|
||||
Tags.trance.Aliases = ["ab:hi:genre_electronic:trance"]
|
||||
Tags.trance.Type = "float"
|
||||
Tags.trance.Album = false
|
||||
|
||||
Tags.classical_rosamerica.Aliases = ["ab:hi:genre_rosamerica:classical"]
|
||||
Tags.classical_rosamerica.Type = "float"
|
||||
Tags.classical_rosamerica.Album = false
|
||||
|
||||
Tags.dance.Aliases = ["ab:hi:genre_rosamerica:dance"]
|
||||
Tags.dance.Type = "float"
|
||||
Tags.dance.Album = false
|
||||
|
||||
Tags.hiphop_rosamerica.Aliases = ["ab:hi:genre_rosamerica:hiphop"]
|
||||
Tags.hiphop_rosamerica.Type = "float"
|
||||
Tags.hiphop_rosamerica.Album = false
|
||||
|
||||
Tags.jazz_rosamerica.Aliases = ["ab:hi:genre_rosamerica:jazz"]
|
||||
Tags.jazz_rosamerica.Type = "float"
|
||||
Tags.jazz_rosamerica.Album = false
|
||||
|
||||
Tags.pop_rosamerica.Aliases = ["ab:hi:genre_rosamerica:pop"]
|
||||
Tags.pop_rosamerica.Type = "float"
|
||||
Tags.pop_rosamerica.Album = false
|
||||
|
||||
Tags.rhythmandblues.Aliases = ["ab:hi:genre_rosamerica:rhythm and blues"]
|
||||
Tags.rhythmandblues.Type = "float"
|
||||
Tags.rhythmandblues.Album = false
|
||||
|
||||
Tags.rock_rosamerica.Aliases = ["ab:hi:genre_rosamerica:rock"]
|
||||
Tags.rock_rosamerica.Type = "float"
|
||||
Tags.rock_rosamerica.Album = false
|
||||
|
||||
Tags.speech.Aliases = ["ab:hi:genre_rosamerica:speech"]
|
||||
Tags.speech.Type = "float"
|
||||
Tags.speech.Album = false
|
||||
|
||||
Tags.blues.Aliases = ["ab:hi:genre_tzanetakis:blues"]
|
||||
Tags.blues.Type = "float"
|
||||
Tags.blues.Album = false
|
||||
|
||||
Tags.classical_tzanetakis.Aliases = ["ab:hi:genre_tzanetakis:classical"]
|
||||
Tags.classical_tzanetakis.Type = "float"
|
||||
Tags.classical_tzanetakis.Album = false
|
||||
|
||||
Tags.country.Aliases = ["ab:hi:genre_tzanetakis:country"]
|
||||
Tags.country.Type = "float"
|
||||
Tags.country.Album = false
|
||||
|
||||
Tags.disco.Aliases = ["ab:hi:genre_tzanetakis:disco"]
|
||||
Tags.disco.Type = "float"
|
||||
Tags.disco.Album = false
|
||||
|
||||
Tags.hiphop_tzanetakis.Aliases = ["ab:hi:genre_tzanetakis:hiphop"]
|
||||
Tags.hiphop_tzanetakis.Type = "float"
|
||||
Tags.hiphop_tzanetakis.Album = false
|
||||
|
||||
Tags.jazz_tzanetakis.Aliases = ["ab:hi:genre_tzanetakis:jazz"]
|
||||
Tags.jazz_tzanetakis.Type = "float"
|
||||
Tags.jazz_tzanetakis.Album = false
|
||||
|
||||
Tags.metal.Aliases = ["ab:hi:genre_tzanetakis:metal"]
|
||||
Tags.metal.Type = "float"
|
||||
Tags.metal.Album = false
|
||||
|
||||
Tags.pop_tzanetakis.Aliases = ["ab:hi:genre_tzanetakis:pop"]
|
||||
Tags.pop_tzanetakis.Type = "float"
|
||||
Tags.pop_tzanetakis.Album = false
|
||||
|
||||
Tags.reggae.Aliases = ["ab:hi:genre_tzanetakis:reggae"]
|
||||
Tags.reggae.Type = "float"
|
||||
Tags.reggae.Album = false
|
||||
|
||||
Tags.rock_tzanetakis.Aliases = ["ab:hi:genre_tzanetakis:rock"]
|
||||
Tags.rock_tzanetakis.Type = "float"
|
||||
Tags.rock_tzanetakis.Album = false
|
||||
|
||||
Tags.acoustic.Aliases = ["ab:hi:mood_acoustic:acoustic"]
|
||||
Tags.acoustic.Type = "float"
|
||||
Tags.acoustic.Album = false
|
||||
|
||||
Tags.notacoustic.Aliases = ["ab:hi:mood_acoustic:not acoustic"]
|
||||
Tags.notacoustic.Type = "float"
|
||||
Tags.notacoustic.Album = false
|
||||
|
||||
Tags.aggressive.Aliases = ["ab:hi:mood_aggressive:aggressive"]
|
||||
Tags.aggressive.Type = "float"
|
||||
Tags.aggressive.Album = false
|
||||
|
||||
Tags.notaggressive.Aliases = ["ab:hi:mood_aggressive:not aggressive"]
|
||||
Tags.notaggressive.Type = "float"
|
||||
Tags.notaggressive.Album = false
|
||||
|
||||
Tags.electronic.Aliases = ["ab:hi:mood_electronic:electronic"]
|
||||
Tags.electronic.Type = "float"
|
||||
Tags.electronic.Album = false
|
||||
|
||||
Tags.notelectronic.Aliases = ["ab:hi:mood_electronic:not electronic"]
|
||||
Tags.notelectronic.Type = "float"
|
||||
Tags.notelectronic.Album = false
|
||||
|
||||
Tags.happy.Aliases = ["ab:hi:mood_happy:happy"]
|
||||
Tags.happy.Type = "float"
|
||||
Tags.happy.Album = false
|
||||
|
||||
Tags.nothappy.Aliases = ["ab:hi:mood_happy:not happy"]
|
||||
Tags.nothappy.Type = "float"
|
||||
Tags.nothappy.Album = false
|
||||
|
||||
Tags.party.Aliases = ["ab:hi:mood_party:party"]
|
||||
Tags.party.Type = "float"
|
||||
Tags.party.Album = false
|
||||
|
||||
Tags.notparty.Aliases = ["ab:hi:mood_party:not party"]
|
||||
Tags.notparty.Type = "float"
|
||||
Tags.notparty.Album = false
|
||||
|
||||
Tags.relaxed.Aliases = ["ab:hi:mood_relaxed:relaxed"]
|
||||
Tags.relaxed.Type = "float"
|
||||
Tags.relaxed.Album = false
|
||||
|
||||
Tags.notrelaxed.Aliases = ["ab:hi:mood_relaxed:not relaxed"]
|
||||
Tags.notrelaxed.Type = "float"
|
||||
Tags.notrelaxed.Album = false
|
||||
|
||||
Tags.sad.Aliases = ["ab:hi:mood_sad:sad"]
|
||||
Tags.sad.Type = "float"
|
||||
Tags.sad.Album = false
|
||||
|
||||
Tags.notsad.Aliases = ["ab:hi:mood_sad:not sad"]
|
||||
Tags.notsad.Type = "float"
|
||||
Tags.notsad.Album = false
|
||||
|
||||
Tags.msd00s.Aliases = ["ab:hi:msd:00s"]
|
||||
Tags.msd00s.Type = "float"
|
||||
Tags.msd00s.Album = false
|
||||
|
||||
Tags.msd60s.Aliases = ["ab:hi:msd:60s"]
|
||||
Tags.msd60s.Type = "float"
|
||||
Tags.msd60s.Album = false
|
||||
|
||||
Tags.msd70s.Aliases = ["ab:hi:msd:70s"]
|
||||
Tags.msd70s.Type = "float"
|
||||
Tags.msd70s.Album = false
|
||||
|
||||
Tags.msd80s.Aliases = ["ab:hi:msd:80s"]
|
||||
Tags.msd80s.Type = "float"
|
||||
Tags.msd80s.Album = false
|
||||
|
||||
Tags.msd90s.Aliases = ["ab:hi:msd:90s"]
|
||||
Tags.msd90s.Type = "float"
|
||||
Tags.msd90s.Album = false
|
||||
|
||||
Tags.msdacoustic.Aliases = ["ab:hi:msd:acoustic"]
|
||||
Tags.msdacoustic.Type = "float"
|
||||
Tags.msdacoustic.Album = false
|
||||
|
||||
Tags.msdalternative.Aliases = ["ab:hi:msd:alternative"]
|
||||
Tags.msdalternative.Type = "float"
|
||||
Tags.msdalternative.Album = false
|
||||
|
||||
Tags.msdalternativerock.Aliases = ["ab:hi:msd:alternative rock"]
|
||||
Tags.msdalternativerock.Type = "float"
|
||||
Tags.msdalternativerock.Album = false
|
||||
|
||||
Tags.msdambient.Aliases = ["ab:hi:msd:ambient"]
|
||||
Tags.msdambient.Type = "float"
|
||||
Tags.msdambient.Album = false
|
||||
|
||||
Tags.msdbeautiful.Aliases = ["ab:hi:msd:beautiful"]
|
||||
Tags.msdbeautiful.Type = "float"
|
||||
Tags.msdbeautiful.Album = false
|
||||
|
||||
Tags.msdblues.Aliases = ["ab:hi:msd:blues"]
|
||||
Tags.msdblues.Type = "float"
|
||||
Tags.msdblues.Album = false
|
||||
|
||||
Tags.msdcatchy.Aliases = ["ab:hi:msd:catchy"]
|
||||
Tags.msdcatchy.Type = "float"
|
||||
Tags.msdcatchy.Album = false
|
||||
|
||||
Tags.msdchill.Aliases = ["ab:hi:msd:chill"]
|
||||
Tags.msdchill.Type = "float"
|
||||
Tags.msdchill.Album = false
|
||||
|
||||
Tags.msdchillout.Aliases = ["ab:hi:msd:chillout"]
|
||||
Tags.msdchillout.Type = "float"
|
||||
Tags.msdchillout.Album = false
|
||||
|
||||
Tags.msdclassicrock.Aliases = ["ab:hi:msd:classic rock"]
|
||||
Tags.msdclassicrock.Type = "float"
|
||||
Tags.msdclassicrock.Album = false
|
||||
|
||||
Tags.msdcountry.Aliases = ["ab:hi:msd:country"]
|
||||
Tags.msdcountry.Type = "float"
|
||||
Tags.msdcountry.Album = false
|
||||
|
||||
Tags.msddance.Aliases = ["ab:hi:msd:dance"]
|
||||
Tags.msddance.Type = "float"
|
||||
Tags.msddance.Album = false
|
||||
|
||||
Tags.msdeasylistening.Aliases = ["ab:hi:msd:easy listening"]
|
||||
Tags.msdeasylistening.Type = "float"
|
||||
Tags.msdeasylistening.Album = false
|
||||
|
||||
Tags.msdelectro.Aliases = ["ab:hi:msd:electro"]
|
||||
Tags.msdelectro.Type = "float"
|
||||
Tags.msdelectro.Album = false
|
||||
|
||||
Tags.msdelectronic.Aliases = ["ab:hi:msd:electronic"]
|
||||
Tags.msdelectronic.Type = "float"
|
||||
Tags.msdelectronic.Album = false
|
||||
|
||||
Tags.msdelectronica.Aliases = ["ab:hi:msd:electronica"]
|
||||
Tags.msdelectronica.Type = "float"
|
||||
Tags.msdelectronica.Album = false
|
||||
|
||||
Tags.msdexperimental.Aliases = ["ab:hi:msd:experimental"]
|
||||
Tags.msdexperimental.Type = "float"
|
||||
Tags.msdexperimental.Album = false
|
||||
|
||||
Tags.msdfemalevocalist.Aliases = ["ab:hi:msd:female vocalist"]
|
||||
Tags.msdfemalevocalist.Type = "float"
|
||||
Tags.msdfemalevocalist.Album = false
|
||||
|
||||
Tags.msdfemalevocalists.Aliases = ["ab:hi:msd:female vocalists"]
|
||||
Tags.msdfemalevocalists.Type = "float"
|
||||
Tags.msdfemalevocalists.Album = false
|
||||
|
||||
Tags.msdfolk.Aliases = ["ab:hi:msd:folk"]
|
||||
Tags.msdfolk.Type = "float"
|
||||
Tags.msdfolk.Album = false
|
||||
|
||||
Tags.msdfunk.Aliases = ["ab:hi:msd:funk"]
|
||||
Tags.msdfunk.Type = "float"
|
||||
Tags.msdfunk.Album = false
|
||||
|
||||
Tags.msdguitar.Aliases = ["ab:hi:msd:guitar"]
|
||||
Tags.msdguitar.Type = "float"
|
||||
Tags.msdguitar.Album = false
|
||||
|
||||
Tags.msdhappy.Aliases = ["ab:hi:msd:happy"]
|
||||
Tags.msdhappy.Type = "float"
|
||||
Tags.msdhappy.Album = false
|
||||
|
||||
Tags.msdhardrock.Aliases = ["ab:hi:msd:hard rock"]
|
||||
Tags.msdhardrock.Type = "float"
|
||||
Tags.msdhardrock.Album = false
|
||||
|
||||
Tags.msdheavymetal.Aliases = ["ab:hi:msd:heavy metal"]
|
||||
Tags.msdheavymetal.Type = "float"
|
||||
Tags.msdheavymetal.Album = false
|
||||
|
||||
Tags.msdhiphop.Aliases = ["ab:hi:msd:hip-hop"]
|
||||
Tags.msdhiphop.Type = "float"
|
||||
Tags.msdhiphop.Album = false
|
||||
|
||||
Tags.msdhouse.Aliases = ["ab:hi:msd:house"]
|
||||
Tags.msdhouse.Type = "float"
|
||||
Tags.msdhouse.Album = false
|
||||
|
||||
Tags.msdindie.Aliases = ["ab:hi:msd:indie"]
|
||||
Tags.msdindie.Type = "float"
|
||||
Tags.msdindie.Album = false
|
||||
|
||||
Tags.msdindiepop.Aliases = ["ab:hi:msd:indie pop"]
|
||||
Tags.msdindiepop.Type = "float"
|
||||
Tags.msdindiepop.Album = false
|
||||
|
||||
Tags.msdindierock.Aliases = ["ab:hi:msd:indie rock"]
|
||||
Tags.msdindierock.Type = "float"
|
||||
Tags.msdindierock.Album = false
|
||||
|
||||
Tags.msdinstrumental.Aliases = ["ab:hi:msd:instrumental"]
|
||||
Tags.msdinstrumental.Type = "float"
|
||||
Tags.msdinstrumental.Album = false
|
||||
|
||||
Tags.msdjazz.Aliases = ["ab:hi:msd:jazz"]
|
||||
Tags.msdjazz.Type = "float"
|
||||
Tags.msdjazz.Album = false
|
||||
|
||||
Tags.msdmalevocalists.Aliases = ["ab:hi:msd:male vocalists"]
|
||||
Tags.msdmalevocalists.Type = "float"
|
||||
Tags.msdmalevocalists.Album = false
|
||||
|
||||
Tags.msdmellow.Aliases = ["ab:hi:msd:mellow"]
|
||||
Tags.msdmellow.Type = "float"
|
||||
Tags.msdmellow.Album = false
|
||||
|
||||
Tags.msdmetal.Aliases = ["ab:hi:msd:metal"]
|
||||
Tags.msdmetal.Type = "float"
|
||||
Tags.msdmetal.Album = false
|
||||
|
||||
Tags.msdoldies.Aliases = ["ab:hi:msd:oldies"]
|
||||
Tags.msdoldies.Type = "float"
|
||||
Tags.msdoldies.Album = false
|
||||
|
||||
Tags.msdparty.Aliases = ["ab:hi:msd:party"]
|
||||
Tags.msdparty.Type = "float"
|
||||
Tags.msdparty.Album = false
|
||||
|
||||
Tags.msdpop.Aliases = ["ab:hi:msd:pop"]
|
||||
Tags.msdpop.Type = "float"
|
||||
Tags.msdpop.Album = false
|
||||
|
||||
Tags.msdprogressiverock.Aliases = ["ab:hi:msd:progressive rock"]
|
||||
Tags.msdprogressiverock.Type = "float"
|
||||
Tags.msdprogressiverock.Album = false
|
||||
|
||||
Tags.msdpunk.Aliases = ["ab:hi:msd:punk"]
|
||||
Tags.msdpunk.Type = "float"
|
||||
Tags.msdpunk.Album = false
|
||||
|
||||
Tags.msdrnb.Aliases = ["ab:hi:msd:rnb"]
|
||||
Tags.msdrnb.Type = "float"
|
||||
Tags.msdrnb.Album = false
|
||||
|
||||
Tags.msdrock.Aliases = ["ab:hi:msd:rock"]
|
||||
Tags.msdrock.Type = "float"
|
||||
Tags.msdrock.Album = false
|
||||
|
||||
Tags.msdsad.Aliases = ["ab:hi:msd:sad"]
|
||||
Tags.msdsad.Type = "float"
|
||||
Tags.msdsad.Album = false
|
||||
|
||||
Tags.msdsexy.Aliases = ["ab:hi:msd:sexy"]
|
||||
Tags.msdsexy.Type = "float"
|
||||
Tags.msdsexy.Album = false
|
||||
|
||||
Tags.msdsoul.Aliases = ["ab:hi:msd:soul"]
|
||||
Tags.msdsoul.Type = "float"
|
||||
Tags.msdsoul.Album = false
|
||||
|
||||
Tags.atonal.Aliases = ["ab:hi:tonal_atonal:atonal"]
|
||||
Tags.atonal.Type = "float"
|
||||
Tags.atonal.Album = false
|
||||
|
||||
Tags.tonal.Aliases = ["ab:hi:tonal_atonal:tonal"]
|
||||
Tags.tonal.Type = "float"
|
||||
Tags.tonal.Album = false
|
||||
|
||||
Tags.instrumental.Aliases = ["ab:hi:voice_instrumental:instrumental"]
|
||||
Tags.instrumental.Type = "float"
|
||||
Tags.instrumental.Album = false
|
||||
|
||||
Tags.voice.Aliases = ["ab:hi:voice_instrumental:voice"]
|
||||
Tags.voice.Type = "float"
|
||||
Tags.voice.Album = false
|
||||
|
||||
Tags.chordschangesrate.Aliases = ["ab:lo:tonal:chords_changes_rate"]
|
||||
Tags.chordschangesrate.Type = "float"
|
||||
Tags.chordschangesrate.Album = false
|
||||
|
||||
Tags.chordskey.Aliases = ["ab:lo:tonal:chords_key"]
|
||||
Tags.chordskey.Type = "string"
|
||||
Tags.chordskey.Album = false
|
||||
|
||||
Tags.chordscale.Aliases = ["ab:lo:tonal:chords_scale"]
|
||||
Tags.chordscale.Type = "string"
|
||||
Tags.chordscale.Album = false
|
||||
|
||||
Tags.keykey.Aliases = ["ab:lo:tonal:key_key"]
|
||||
Tags.keykey.Type = "string"
|
||||
Tags.keykey.Album = false
|
||||
|
||||
Tags.keyscale.Aliases = ["ab:lo:tonal:key_scale"]
|
||||
Tags.keyscale.Type = "string"
|
||||
Tags.keyscale.Album = false
|
||||
115
misc/tags.txt
Normal file
115
misc/tags.txt
Normal file
@@ -0,0 +1,115 @@
|
||||
Below is a list of all the tags this plugin generates:
|
||||
|
||||
bpm
|
||||
key
|
||||
mood
|
||||
tags
|
||||
ab:hi:danceability:danceable
|
||||
ab:hi:danceability:not danceable
|
||||
ab:hi:gender:female
|
||||
ab:hi:gender:male
|
||||
ab:hi:genre_electronic:ambient
|
||||
ab:hi:genre_electronic:drum and bass
|
||||
ab:hi:genre_electronic:house
|
||||
ab:hi:genre_electronic:techno
|
||||
ab:hi:genre_electronic:trance
|
||||
ab:hi:genre_rosamerica:classical
|
||||
ab:hi:genre_rosamerica:dance
|
||||
ab:hi:genre_rosamerica:hiphop
|
||||
ab:hi:genre_rosamerica:jazz
|
||||
ab:hi:genre_rosamerica:pop
|
||||
ab:hi:genre_rosamerica:rhythm and blues
|
||||
ab:hi:genre_rosamerica:rock
|
||||
ab:hi:genre_rosamerica:speech
|
||||
ab:hi:genre_tzanetakis:blues
|
||||
ab:hi:genre_tzanetakis:classical
|
||||
ab:hi:genre_tzanetakis:country
|
||||
ab:hi:genre_tzanetakis:disco
|
||||
ab:hi:genre_tzanetakis:hiphop
|
||||
ab:hi:genre_tzanetakis:jazz
|
||||
ab:hi:genre_tzanetakis:metal
|
||||
ab:hi:genre_tzanetakis:pop
|
||||
ab:hi:genre_tzanetakis:reggae
|
||||
ab:hi:genre_tzanetakis:rock
|
||||
ab:hi:mood_acoustic:acoustic
|
||||
ab:hi:mood_acoustic:not acoustic
|
||||
ab:hi:mood_aggressive:aggressive
|
||||
ab:hi:mood_aggressive:not aggressive
|
||||
ab:hi:mood_electronic:electronic
|
||||
ab:hi:mood_electronic:not electronic
|
||||
ab:hi:mood_happy:happy
|
||||
ab:hi:mood_happy:not happy
|
||||
ab:hi:mood_party:party
|
||||
ab:hi:mood_party:not party
|
||||
ab:hi:mood_relaxed:relaxed
|
||||
ab:hi:mood_relaxed:not relaxed
|
||||
ab:hi:mood_sad:sad
|
||||
ab:hi:mood_sad:not sad
|
||||
ab:hi:msd:00s
|
||||
ab:hi:msd:60s
|
||||
ab:hi:msd:70s
|
||||
ab:hi:msd:80s
|
||||
ab:hi:msd:90s
|
||||
ab:hi:msd:acoustic
|
||||
ab:hi:msd:alternative
|
||||
ab:hi:msd:alternative rock
|
||||
ab:hi:msd:ambient
|
||||
ab:hi:msd:beautiful
|
||||
ab:hi:msd:blues
|
||||
ab:hi:msd:catchy
|
||||
ab:hi:msd:chill
|
||||
ab:hi:msd:chillout
|
||||
ab:hi:msd:classic rock
|
||||
ab:hi:msd:country
|
||||
ab:hi:msd:dance
|
||||
ab:hi:msd:easy listening
|
||||
ab:hi:msd:electro
|
||||
ab:hi:msd:electronic
|
||||
ab:hi:msd:electronica
|
||||
ab:hi:msd:experimental
|
||||
ab:hi:msd:female vocalist
|
||||
ab:hi:msd:female vocalists
|
||||
ab:hi:msd:folk
|
||||
ab:hi:msd:funk
|
||||
ab:hi:msd:guitar
|
||||
ab:hi:msd:happy
|
||||
ab:hi:msd:hard rock
|
||||
ab:hi:msd:heavy metal
|
||||
ab:hi:msd:hip-hop
|
||||
ab:hi:msd:house
|
||||
ab:hi:msd:indie
|
||||
ab:hi:msd:indie pop
|
||||
ab:hi:msd:indie rock
|
||||
ab:hi:msd:instrumental
|
||||
ab:hi:msd:jazz
|
||||
ab:hi:msd:male vocalists
|
||||
ab:hi:msd:mellow
|
||||
ab:hi:msd:metal
|
||||
ab:hi:msd:oldies
|
||||
ab:hi:msd:party
|
||||
ab:hi:msd:pop
|
||||
ab:hi:msd:progressive rock
|
||||
ab:hi:msd:punk
|
||||
ab:hi:msd:rnb
|
||||
ab:hi:msd:rock
|
||||
ab:hi:msd:sad
|
||||
ab:hi:msd:sexy
|
||||
ab:hi:msd:soul
|
||||
ab:hi:tonal_atonal:atonal
|
||||
ab:hi:tonal_atonal:tonal
|
||||
ab:hi:voice_instrumental:instrumental
|
||||
ab:hi:voice_instrumental:voice
|
||||
ab:lo:tonal:chords_changes_rate
|
||||
ab:lo:tonal:chords_key
|
||||
ab:lo:tonal:chords_scale
|
||||
ab:lo:tonal:key_key
|
||||
ab:lo:tonal:key_scale
|
||||
replaygain_track_gain
|
||||
replaygain_track_peak
|
||||
replaygain_track_range
|
||||
replaygain_album_gain
|
||||
replaygain_album_peak
|
||||
replaygain_album_range
|
||||
replaygain_reference_loudness
|
||||
r128_track_gain
|
||||
r128_album_gain
|
||||
Reference in New Issue
Block a user