# Access AcousticBrainz

This AcousticBrainz database provides access to audio information on tracks based on their MusicBrainz recording id (Unique file identifier).

The function will only operate on tracks which have a MusicBrainz recording id. All other tracks will be ignored.

You can request that values for BPM and/or Initial Key be imported. Note that BPM values are truncated according to the current BPM settings in Preferences-Audio-Common.

A calculated BPM value's correctness may be affected by tempo estimation octave errors. This can result in a value being double or half what seems to be correct. Unfortunately it is impossible to automatically determine if a downloaded value is correct. The only viable solution is to examine the results and determine if they seem correct or need to be halved or doubled.

AcousticBrainz uses two different algorithms to determine the key. You can import the results of either or both and place the result in the Initial Key field. The key results are based on Temperley’s profile. The chords results are based on the progression of chords in the track. When you import both, the Initial Key field will be set to k/c where k is the key result and c is the chords result. Individual key results are represented as a string with a maximum length of three characters. The ground keys are represented with "A","B","C","D","E", "F" and "G" and halfkeys represented with "b" and "#". Minor is represented as "m", e.g. "Dbm".

AcousticBrainz provides comprehensive classification metadata. If you wish you can save the classification metadata as a key-value list to a variable and/or to the file as a UDTI named AcousticBrainz Data. Keys are separated from values with the default list key-value delimiter (\k). List items are delimited by the default list delimiter (\~). Warning: if you are going to save the classification data to a file, remember that the delimiters are UTF8 characters. ID3 based files will lose data if the Text Encoding is set to ISO-8859-1 and ISO-8859-1 if possible has not been set.

Each list item's value is formatted as follows:

> #%value-text

# is a probability specified as a percentage. The % character can be used as a split position if you want to separate the probability from the value-text. eg.

> 93%Danceable

The following keys may be available:

danceability
  Classification of music by danceability. value-text can be:
  Danceable
  Not Danceable
gender
  Classification of vocal music by gender. value-text can be:
  Female
  Male
genre_electronic
  Classification of music by genre. value-text can be:
  Alternative
  Blues
  Electronic
  Folk,Country
  Funk,Soul,R&B
  Jazz
  Pop
  Rap,Hip-Hop
  Rock
genre_dortmund
  Classification of electronic music by subgenres value-text can be:
  Ambient
  DnB
  House
  Techno
genre_rosamerica
  Classification of music by genre. value-text can be:
  Classical
  Dance
  Hip-Hop
  Jazz
  Pop
  R&B
  Rock
  Speech
genre_tzanetakis
  Classification of music by genre. value-text can be:
  Blues
  Classical
  Country
  Disco
  Hip-Hop
  Jazz
  Metal
  Pop
  Reggae
  Rock
ismir04_rhythm
  Classification of ballroom music by dance styles. value-text can be:
  ChaChaCha
  Jive
  Quickstep
  Rumba-American
  Rumba-International
  Rumba-Misc
  Samba
  Tango
  Viennese Waltz
  Waltz
mood_acoustic
  Classification of music by type of sound. value-text can be:
  Acoustic
  Not Acoustic
mood_aggressive
  Classification of music by type of sound. value-text can be:
  Aggressive
  Not Aggressive
mood_electronic
  Classification of music by type of sound. value-text can be:
  Electronic
  Not Electronic
mood_happy
  Classification of music by mood. value-text can be:
  Happy
  Not Happy
mood_party
  Classification of music by mood. value-text can be:
  Party
  Not Party
mood_relaxed
  Classification of music by mood. value-text can be:
  Relaxed
  Not Relaxed
mood_sad
  Classification of music by mood. value-text can be:
  Sad
  Not Sad
moods_mirex
  Classification of music by mood. value-text can be:
  Passionate,Rousing,Confident,Boisterous,Rowdy
  Rollicking,Cheerful,Fun,Sweet,Amiable,Good Natured
  Literate,Poignant,Wistful,Bittersweet,Autumnal,Brooding
  Humorous,Silly,Campy,Quirky,Whimsical,Witty,Wry
  Aggressive,Fiery,Tense,Anxious,Intense,Volatile,Visceral
timbre
  Classification of music by mood. value-text can be:
  Bright
  Dark
tonal_atonal
  Classification of music by mood. value-text can be:
  Atonal
  Tonal
voice_instrumental
  Classification of music by mood. value-text can be:
  Instrumental
  Voice

The values returned are for those with the highest probability. If you want to see probabilities for all possible values set the All option. When All is set, additional keys and values will be generated. The additional keys will have the same names as described aboved with _all appended. eg. danceability_all. The values for each of these all items will also be key-value lists. The keys will be the value names and the values will be the probabilities. The default key-value delimiter (\k) is used. The List Secondary Delimiter (\:) is used to separate items.

The following is a sample of a saved classification list with All not set:

> danceability≔70%Not Danceable⏎
> gender≔87%Female⏎
> genre_dortmund≔99%Electronic⏎
> genre_electronic≔85%Ambient⏎
> genre_rosamerica≔57%Jazz⏎
> genre_tzanetakis≔31%Jazz⏎
> ismir04_rhythm≔78%Tango⏎
> mood_acoustic≔80%Acoustic⏎
> mood_aggressive≔93%Not Aggressive⏎
> mood_electronic≔72%Electronic⏎
> mood_happy≔97%Not Happy⏎
> mood_party≔92%Not Party⏎
> mood_relaxed≔99%Relaxed⏎
> mood_sad≔52%Sad⏎
> moods_mirex≔55%Literate,Poignant,Wistful,Bittersweet,Autumnal,Brooding⏎
> timbre≔76%Dark⏎
> tonal_atonal≔76%Tonal⏎
> voice_instrumental≔96%Instrumental

The following is a sample of a saved classification list with All set:

> danceability≔70%Not Danceable⏎
> danceability_all≔Danceable≔30●Not Danceable≔70⏎
> gender≔87%Female⏎
> gender_all≔Male≔13●Female≔87⏎
> genre_dortmund≔99%Electronic⏎
> genre_dortmund_all≔
> Funk,Soul,R&B≔0●
> Blues≔0●
> Rock≔0●
> Jazz≔0●
> Alternative≔1●
> Folk,Country≔0●
> Electronic≔99●
> Pop≔0●
> Rap,Hip-Hop≔0⏎
> genre_electronic≔85%Ambient⏎
> genre_electronic_all≔
> trance≔8●
> Ambient≔85●
> DnB≔1●
> House≔5●
> Techno≔1⏎
> genre_rosamerica≔57%Jazz⏎
> genre_rosamerica_all≔
> R&B≔9●
> Rock≔9●
> Hip-Hop≔2●
> Jazz≔57●
> Classical≔2●
> Dance≔4●
> Pop≔17●
> Speech≔1⏎
> genre_tzanetakis≔31%Jazz⏎
> genre_tzanetakis_all≔
> Blues≔6●
> Country≔10●
> Hip-Hop≔16●
> Jazz≔31●
> Disco≔8●
> Classical≔3●
> Metal≔4●
> Pop≔6●
> Reggae≔6●
> Rock≔8⏎
> ismir04_rhythm≔78%Tango⏎
> ismir04_rhythm_all≔
> Rumba-Misc≔0●
> ChaChaCha≔2●
> Quickstep≔0●
> Tango≔78●
> Samba≔1●
> Rumba-American≔3●
> Rumba-International≔0●
> Waltz≔0●
> Jive≔0●
> Viennese Waltz≔15⏎
> mood_acoustic≔80%Acoustic⏎
> mood_acoustic_all≔Acoustic≔80●Not Acoustic≔20⏎
> mood_aggressive≔93%Not Aggressive⏎
> mood_aggressive_all≔Not Aggressive≔93●Aggressive≔7⏎
> mood_electronic≔72%Electronic⏎
> mood_electronic_all≔Electronic≔72●Not Electronic≔28⏎
> mood_happy≔97%Not Happy⏎
> mood_happy_all≔Happy≔3●Not Happy≔97⏎
> mood_party≔92%Not Party⏎
> mood_party_all≔Not Party≔92●Party≔8⏎
> mood_relaxed≔99%Relaxed⏎
> mood_relaxed_all≔Relaxed≔99●Not Relaxed≔1⏎
> mood_sad≔52%Sad⏎
> mood_sad_all≔Not Sad≔48●Sad≔52⏎
> moods_mirex≔55%Literate,Poignant,Wistful,Bittersweet,Autumnal,Brooding⏎
> moods_mirex_all≔
> Passionate,Rousing,Confident,Boisterous,Rowdy≔10●
> Humorous,Silly,Campy,Quirky,Whimsical,Witty,Wry≔15●
> Literate,Poignant,Wistful,Bittersweet,Autumnal,Brooding≔55●
> Rollicking,Cheerful,Fun,Sweet,Amiable,Good Natured≔9●
> Aggressive,Fiery,Tense,Anxious,Intense,Volatile,Visceral≔12⏎
> timbre≔76%Dark⏎
> timbre_all≔Bright≔24●
> Dark≔76⏎
> tonal_atonal≔76%Tonal⏎
> tonal_atonal_all≔Tonal≔76●Atonal≔24⏎
> voice_instrumental≔96%Instrumental⏎
> voice_instrumental_all≔Voice≔4●Instrumental≔96

The following code snippet would extract the danceability setting, saving the probability to named variable result and the value-text to named variable value. Based on either of the above examples, value will be set to Not Danceable and result will be set to 70:

> Set named variable 'result' to the value of case insensitive key 'danceability' in the list in field Variable 0 (delimiter "⏎" separator "≔")
> Split named variable 'result' at delimiter "%" save right portion to named variable 'value'

The following code snippet would extract the probability associated with the Danceable sub-key in danceable. Based on the above example which has All set, probability will be set to 30:

> Set field Variable 1 to the value of case insensitive key 'danceable_all' in the list in field Variable 0 (delimiter "⏎" separator "≔")
> Set named variable 'probability' to the value of case insensitive key 'danceable' in the list in field Variable 1 (delimiter "\:" separator "≔")

You can optionally choose to only import data if the requested fields fields are currently empty.

You can choose to ignore errors, in which case the action will not display error messages. Note that this option is ignored when Batch Processing.

Note that this statement sets the Network Response property.

While this statement can be executed grouped it is far more efficient when executed stepwise. The API allows for the grouping of multiple lookups into a single request.