Application icon

Access AcousticBrainz (Deprecated)

Note that this statement is now deprecated as AcousticBrainz stopped collecting data in 2022. A link to the blog post describing the reasons behind ending the project can be found here. At some point in the future this statement will no longer be supported.

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 Settings-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 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.