Class AcousticBrainzSong

    • Constructor Detail

      • AcousticBrainzSong

        public AcousticBrainzSong​(org.json.simple.JSONObject lowLevelMap,
                                  org.json.simple.JSONObject highLevelMap)
    • Method Detail

      • getHighLevelJSON

        public org.json.simple.JSONObject getHighLevelJSON()
        Raw JSON answer from AcousticBrainz.org.
        Returns:
        json
      • getMediaKind

        public AudioSong.MediaKind getMediaKind()
        Description copied from interface: AudioSong
        Media kind of this object.
        Returns:
        kind of media
      • isShared

        public boolean isShared()
        Description copied from interface: AudioSong
        Indicates whether this track is a shared track, i.e. either from another iTunes library or an iTunes Match song that hasn't been downloaded yet.
        Returns:
        true or false
      • getCloudStatus

        public AudioSong.CloudStatus getCloudStatus()
        Description copied from interface: AudioSong
        Returns the cloud status, if available. Note that this call may be expensive, as it requires calling the iTunes API.
        Returns:
        the status if available, null, if the feature is not supported (Windows, non-iTunes libraries, ...)
      • getName

        public String getName()
        Description copied from interface: AudioSong
        Name of this song.
        Returns:
        name
      • getDescription

        public String getDescription()
        Description copied from interface: AudioSong
        Description/subtitle of this song.
        Returns:
        description
      • getArtist

        public String getArtist()
        Description copied from interface: AudioSong
        Get artist.
        Returns:
        artist.
      • getAlbumArtist

        public String getAlbumArtist()
        Description copied from interface: AudioSong
        Get album artist.
        Returns:
        album artist
      • getComposer

        public String getComposer()
        Description copied from interface: AudioSong
        Get composer(s).
        Returns:
        composer(s)
      • getAlbum

        public String getAlbum()
        Description copied from interface: AudioSong
        Get Album.
      • getGrouping

        public String getGrouping()
        Description copied from interface: AudioSong
        Get grouping.
        Returns:
        grouping
      • getWork

        public String getWork()
        Description copied from interface: AudioSong
        Classical work.
        Returns:
        work
      • getMovement

        public String getMovement()
        Description copied from interface: AudioSong
        Classical movement.
        Returns:
        movement
      • getMovementNumber

        public int getMovementNumber()
        Description copied from interface: AudioSong
        Classical movement number.
        Returns:
        movement number
      • getMovementCount

        public int getMovementCount()
        Description copied from interface: AudioSong
        Classical movement count.
        Returns:
        count
      • getGenre

        public String getGenre()
        Description copied from interface: AudioSong
        Get genre.
        Returns:
        genre
      • getKind

        public String getKind()
        Description copied from interface: AudioSong
        Kind of audio, e.g. "WAV audio file", "AAC audio file" or "MPEG audio file" (or localized versions thereof). This value is typically extracted from iTunes Music Library.xml and may simply be null for non-iTunes libraries.
        Returns:
        String describing this audio object or null if unavailable.
      • getSize

        public long getSize()
        Description copied from interface: AudioSong
        File size.
        Returns:
        size
      • getTotalTime

        public int getTotalTime()
        Description copied from interface: AudioSong
        Total length of the song in ms.
        Returns:
        length in ms.
      • getTrackCount

        public int getTrackCount()
        Description copied from interface: AudioSong
        Number of tracks on album/release/recording.
        Returns:
        track count
        See Also:
        AudioSong.getTrackNumber()
      • getStartTime

        public int getStartTime()
        Description copied from interface: AudioSong
        Start time of the song in ms.
        Returns:
        start time in ms.
      • getStopTime

        public int getStopTime()
        Description copied from interface: AudioSong
        Stop time of the song in ms.
        Returns:
        stop time in ms.
      • getStart

        public float getStart()
        Description copied from interface: AudioSong
        Start time of the song in seconds.
        Returns:
        start time in seconds.
        See Also:
        AudioSong.getStartTime()
      • getFinish

        public float getFinish()
        Description copied from interface: AudioSong
        Stop time of the song in seconds.
        Returns:
        stop time in seconds.
        See Also:
        AudioSong.getStopTime()
      • getTrackNumber

        public int getTrackNumber()
        Description copied from interface: AudioSong
        Get the number of the track on the release/album/recording.
        Returns:
        track number
      • getDiscNumber

        public int getDiscNumber()
        Description copied from interface: AudioSong
        Get the disc number.
        Returns:
        disc number
      • getDiscCount

        public int getDiscCount()
        Description copied from interface: AudioSong
        Assuming that this song is on a disc that is part of a disc collection, return the number of discs in this collection.
        Returns:
        disc count
      • getYear

        public int getYear()
        Description copied from interface: AudioSong
        Release year - (corresponds to id3 TDRC, recording time).
        Returns:
        four digit recording year, if available
        See Also:
        AudioSong.getReleaseDate()
      • getDateModified

        public Date getDateModified()
        Description copied from interface: AudioSong
        Get date of last modification.
        Returns:
        date
      • getDateAdded

        public Date getDateAdded()
        Description copied from interface: AudioSong
        Get date the song was added to the library.
        Returns:
        date added
      • getDateAnalyzed

        public Date getDateAnalyzed()
        Description copied from interface: AudioSong
        Date the song was last analyzed.
        Returns:
        date analyzed
      • getBitRate

        public int getBitRate()
        Description copied from interface: AudioSong
        Bit rate.
        Returns:
        bit rate
      • getSampleRate

        public int getSampleRate()
        Description copied from interface: AudioSong
        Get sample rate in Hz.
        Returns:
        sample rate in Hz
      • getVolumeAdjustment

        public int getVolumeAdjustment()
        Description copied from interface: AudioSong
        Value between -255 and 255.
        Returns:
        volume adjustment
      • getTrackReplayGain

        public ReplayGain getTrackReplayGain()
        Description copied from interface: AudioSong
        Replay gain for this track (not taking other tracks in an album into account).
        Returns:
        replay gain
        See Also:
        "Radio" replay gain
      • getComments

        public String getComments()
        Description copied from interface: AudioSong
        Get comments.
        Returns:
        comments
      • getPlayCount

        public int getPlayCount()
        Description copied from interface: AudioSong
        Get the number of times the song was played.
        Returns:
        play count
      • getPlayDate

        public long getPlayDate()
        Description copied from interface: AudioSong
        Get time the song was last played. Returns 0, if it has never been played.
        Returns:
        play date, milliseconds since January 1, 1970, 00:00:00 GMT (NOT related to the iTunes value!)
      • getPlayDateUTC

        public Date getPlayDateUTC()
        Description copied from interface: AudioSong
        Get play date.
        Returns:
        play date
      • getSkipCount

        public int getSkipCount()
        Description copied from interface: AudioSong
        Get skip count.
        Returns:
        skip count
      • getSkipDate

        public Date getSkipDate()
        Description copied from interface: AudioSong
        Get skip date.
        Returns:
        skip date
      • getReleaseDate

        public Date getReleaseDate()
        Description copied from interface: AudioSong
        Release year (corresponds to id3 TDRL).
        Returns:
        release time
      • getArtworkCount

        public int getArtworkCount()
        Description copied from interface: AudioSong
        Get artwork count.
        Returns:
        artwork count
      • getImages

        public Image[] getImages()
        Description copied from interface: AudioSong
        All images.
        Returns:
        images or empty array, never returns null
      • isRatingComputed

        public boolean isRatingComputed()
        Description copied from interface: AudioSong
        Indicates whether the value returned by AudioSong.getRating() was computed or set manually.
        Returns:
        true or false
      • isAlbumRatingComputed

        public boolean isAlbumRatingComputed()
        Description copied from interface: AudioSong
        Indicates whether the value returned by AudioSong.getAlbumRating() was computed or set manually.
        Returns:
        true or false
      • getShow

        public String getShow()
        Description copied from interface: AudioSong
        Name of a show, suitable for TV shows.
        Returns:
        show name
      • getSeason

        public int getSeason()
        Description copied from interface: AudioSong
        Get season number. Suitable for TV-shows.
        Returns:
        season.
      • getEpisode

        public String getEpisode()
        Description copied from interface: AudioSong
        Get episode name.
        Returns:
        episode name
      • getEpisodeOrder

        public int getEpisodeOrder()
        Description copied from interface: AudioSong
        Episode order.
        Returns:
        episode order
      • isCompilation

        public boolean isCompilation()
        Description copied from interface: AudioSong

        Indicates whether this track is part of a compilation.

        "A compilation album is an album (music or spoken-word) featuring tracks from one or more performers, often culled from a variety of sources (such as studio albums, live albums, singles, demos and outtakes.)"

        -- Wikipedia Album Compliation
        Returns:
        true or false
      • getId

        public Long getId()
        Description copied from interface: AudioSong
        Persistent id. Survives application shutdown.
        Returns:
        persistent id
      • isEnabled

        public boolean isEnabled()
        Description copied from interface: AudioSong
        Indicates whether this song is enabled or checked.
        Returns:
        true or false
      • isDisabled

        public boolean isDisabled()
        Description copied from interface: AudioSong
        Indicates whether this song is disabled or unchecked.
        Returns:
        !AudioSong.isEnabled()
      • isUnplayed

        public boolean isUnplayed()
        Description copied from interface: AudioSong
        Indicates whether this songs has been played at some point.
        Returns:
        true or false
      • isClean

        public boolean isClean()
        Description copied from interface: AudioSong
        Indicates whether this song is "clean" - whatever that means. "Clean" and "explicit" are mutually exclusive.
        Returns:
        true or false
        See Also:
        AudioSong.isExplicit()
      • isHasVideo

        public boolean isHasVideo()
        Description copied from interface: AudioSong
        Indicates whether this track has a video.
        Returns:
        true or false
      • isProtected

        public boolean isProtected()
        Description copied from interface: AudioSong
        Indicates whether this track is protected by some DRM scheme like Apple's FairPlay.
        Returns:
        true or false
      • getLocation

        public String getLocation​(boolean refresh)
        Description copied from interface: AudioSong
        Location of this track. If refresh is true and no location is available or the resource does not exist anymore, ask the backend app (iTunes, Music.app, ...) for the correct path. Because of the backend call, this method may block and therefore should be called from the EDT.
        Parameters:
        refresh - refresh from backend
        Returns:
        location
        See Also:
        AudioSong.getLocation(), AudioSong.getFile(boolean)
      • isPartOfGaplessAlbum

        public boolean isPartOfGaplessAlbum()
        Description copied from interface: AudioSong
        Indicates whether this songs is part of a gapless album.
        Returns:
        true or false
      • isExplicit

        public boolean isExplicit()
        Description copied from interface: AudioSong
        Indicates whether this tracks is explicit or not. "Clean" and "explicit" are mutually exclusive.
        Returns:
        true or false
        See Also:
        AudioSong.isClean()
      • isHD

        public boolean isHD()
        Description copied from interface: AudioSong
        Indicates whether this video content is in high definition (HD).
        Returns:
        true or false
      • getSortArtist

        public String getSortArtist()
        Description copied from interface: AudioSong
        Returns the "sort artist". E.g., for "The Beatles" the sort artist is "Beatles".
        Returns:
        sort artist
      • getSortAlbum

        public String getSortAlbum()
        Description copied from interface: AudioSong
        Returns the "sort album". E.g., for "A Hard Day's Night" the sort album is "Hard Day's Night".
        Returns:
        sort album
      • getSortName

        public String getSortName()
        Description copied from interface: AudioSong
        Returns the "sort name". E.g., for "A Taste of Honey" the sort name is "Taste of Honey".
        Returns:
        sort name
      • getSortAlbumArtist

        public String getSortAlbumArtist()
        Description copied from interface: AudioSong
        Returns the "sort album artist". E.g., for "The Beatles" the sort album artist is "Beatles".
        Returns:
        sort album artist
      • getSortComposer

        public String getSortComposer()
        Description copied from interface: AudioSong
        Returns the sort composer.
        Returns:
        sort composer
      • getSortShow

        public String getSortShow()
        Description copied from interface: AudioSong
        Returns the sort show.
        Returns:
        sort show
      • getContentRating

        public String getContentRating()
        Description copied from interface: AudioSong
        Returns the content rating. E.g., "us-tv|TV-PG|400|" or "us-tv|TV-MA|600|dialogue and sexual content"
        Returns:
        content rating
      • isPurchased

        public boolean isPurchased()
        Description copied from interface: AudioSong
        Indicates whether this song was purchased (via the iTunes store).
        Returns:
        true or false
      • getFile

        public Path getFile​(boolean refresh)
        Description copied from interface: AudioSong
        File of this track. If refresh is true and the file does not exist anymore, ask the backend app (iTunes, Music.app, ...) for the correct file name. Because of the backend call, this method may block and therefore should be called from the EDT.
        Parameters:
        refresh - refresh from backend
        Returns:
        file object for AudioSong.getLocation() or null, if a proper file object cannot be formed
        See Also:
        AudioSong.getLocation(), AudioSong.getLocation(boolean)
      • canWrite

        public boolean canWrite()
        Description copied from interface: AudioSong
        Checks whether the file corresponding to this song can in principal be written to.
        Returns:
        true or false
      • hasProtectedFileExtension

        public boolean hasProtectedFileExtension()
        Description copied from interface: AudioSong
        Checks file endings instead of the protected flag in the iTunes Music Library.xml, since iTunes marks non-protected versions of files that used to be protected still as protected.
        Returns:
        true, if we know that the file-format is usually protected.
      • getBeatsPerMinute

        public float getBeatsPerMinute()
        Description copied from interface: AudioSong
        Beats per minute (BPM).
        Returns:
        beats per minute
        See Also:
        AudioSong.getTempo()
      • getTempo

        public com.tagtraum.audiokern.bpm.Tempo getTempo()
        Description copied from interface: AudioSong
        Returns tempo.
        Returns:
        tempo
      • getTags

        public Set<String> getTags()
        Description copied from interface: AudioSong
        Returns a set of tags associated with this song. To manipulate this song's tag, please use AudioSong.setTags(java.util.Set) and don't manipulate the returned set.
        Returns:
        set of tags
      • getKey

        public Key getKey()
        Description copied from interface: AudioSong
        Return the tonal key of this song. E.g., MajorKey.C_MAJOR.
        Returns:
        tonal key
      • getKeyAlgorithm

        public String getKeyAlgorithm()
        Description copied from interface: AudioSong
        Returns the name of the key algorithm. May be Entered, if the key value was entered.
        Returns:
        key algorithm
      • getSpectrum

        public com.tagtraum.audiokern.timbre.BarkSpectrum getSpectrum()
        Description copied from interface: AudioSong
        Returns the bark spectrum.
        Returns:
        bark spectrum
        See Also:
        AudioSong.getTempoTimbreColor()
      • getColor

        public Color getColor()
        Description copied from interface: AudioSong
        Returns the color.
        Returns:
        color
      • getBeatsPerMinuteAlgorithm

        public String getBeatsPerMinuteAlgorithm()
        Description copied from interface: AudioSong
        Returns the name of the algorithm used to determine the beats per minute (BPM).
        Returns:
        algorithm name
      • getLanguage

        public String getLanguage()
        Description copied from interface: AudioSong
        The language of the lyrics as ISO 639 three letter codes.
        Returns:
        ISO 639 three letter language code
      • getFingerprint

        public byte[] getFingerprint()
        Description copied from interface: AudioSong
        Acoustic fingerprint.
        Returns:
        acoustic fingerprint
      • getMoodKeywords

        public Set<String> getMoodKeywords()
        Description copied from interface: AudioSong
        Get raw mood keywords.
        Returns:
        mood keywords
      • getTrackIds

        public Set<AudioId> getTrackIds()
        Description copied from interface: AudioSong
        Returns track ids.
        Returns:
        track ids
      • getAlbumIds

        public Set<AudioId> getAlbumIds()
        Description copied from interface: AudioSong
        Get album ids.
        Returns:
        album ids
      • getArtistIds

        public Set<AudioId> getArtistIds()
        Description copied from interface: AudioSong
        Get artists ids.
        Returns:
        artist ids
      • getLyrics

        public String getLyrics()
        Description copied from interface: AudioSong
        Returns the lyrics.
        Returns:
        lyrics
      • getLyricsTermFrequencies

        public List<TermFrequency> getLyricsTermFrequencies()
        Description copied from interface: AudioSong
        Terms in this song's lyrics along with their frequency. All terms are lowercase, regular ASCII punctuation has been removed.
        Returns:
        term frequencies
      • getTuning

        public Integer getTuning()
        Description copied from interface: AudioSong
        Tuning in cents.
        Returns:
        cents
      • getTuningAlgorithm

        public String getTuningAlgorithm()
        Description copied from interface: AudioSong
        The method the current tuning was created with.
        Returns:
        tuning algorithm
      • getMeasuresPerMinute

        public float getMeasuresPerMinute()
        Description copied from interface: AudioSong
        Measures (bars) per minute. This value is computed from AudioSong.getBeatsPerMinute() and AudioSong.getTimeSignature(). In essence BPM is divided by meter (time signature) numerator.
        Returns:
        measures/bars per minute or zero, if either the time signature or the BPM is not known
      • getDanceability

        public Float getDanceability()
        Description copied from interface: AudioSong
        Danceability.
        Returns:
        normalized positive value (0-1)
      • getInstrumentation

        public AudioSong.Instrumentation getInstrumentation()
        Description copied from interface: AudioSong
        Indicates whether this song qualifies as "electronic" or "acoustic".
        Returns:
        instrumentation
      • getInstrumentationAlgorithm

        public String getInstrumentationAlgorithm()
        Description copied from interface: AudioSong
        Returns the name of the instrumentation algorithm. May be Entered, if the value was entered.
        Returns:
        instrumentation algorithm
      • getDanceabilityAlgorithm

        public String getDanceabilityAlgorithm()
        Description copied from interface: AudioSong
        Returns the name of the danceability algorithm. May be Entered, if the value was entered.
        Returns:
        danceability algorithm
      • getMood

        public Mood getMood()
        Description copied from interface: AudioSong
        The song's mood.
        Returns:
        mood
      • getMoodAlgorithm

        public String getMoodAlgorithm()
        Description copied from interface: AudioSong
        The method the associated mood value was created with.
        Returns:
        mood algorithm
      • getTimeSignature

        public TimeSignature getTimeSignature()
        Description copied from interface: AudioSong
        The song's time signature.
        Returns:
        time signature
      • getTimeSignatureAlgorithm

        public String getTimeSignatureAlgorithm()
        Description copied from interface: AudioSong
        Method the time signature was computed with.
        Returns:
        algorithm the time signature was computed with
      • getBeats

        public Beats getBeats()
        Description copied from interface: AudioSong
        The song's beats.
        Returns:
        beats
      • getBeatsAlgorithm

        public String getBeatsAlgorithm()
        Description copied from interface: AudioSong
        Method the beats were computed with.
        Returns:
        algorithm the beats were computed with
      • getSegments

        public Segments getSegments()
        Description copied from interface: AudioSong
        The song's segments.
        Returns:
        segments
      • getSegmentsAlgorithm

        public String getSegmentsAlgorithm()
        Description copied from interface: AudioSong
        Method the segments were computed with.
        Returns:
        algorithm the segments were computed with
      • getSimilarities

        public Similarities getSimilarities()
        Description copied from interface: AudioSong
        The song's similarities.
        Returns:
        similarities
      • getSimilaritiesAlgorithm

        public String getSimilaritiesAlgorithm()
        Description copied from interface: AudioSong
        Method the similarities were computed with.
        Returns:
        algorithm the similarities were computed with
      • getLoudness

        public Loudness getLoudness()
        Description copied from interface: AudioSong
        The song's loudness curve.
        Returns:
        loudness
      • getRMSStandardDeviation

        public Float getRMSStandardDeviation()
        Description copied from interface: AudioSong
        Standard deviation of the root mean square energy values for windows of length ~23ms (actually 1024/44100 frames for a signal with sample rate 44.1kHz) with a hopsize of half a window. Only the first 120 seconds of the audio are considered, the rest is discarded.
        Returns:
        standard deviation of the RMS for the first 120 seconds
        See Also:
        Floats.rootMeanSquare(float[]), AudioSong.getRMSMean()
      • getSpectralNoveltyMean

        public Float getSpectralNoveltyMean()
        Description copied from interface: AudioSong
        Average of the spectral novelty values computed for windows of length 23.22ms, with a hopsize of half a window. Only the first 120 seconds of the signal are considered, the rest is discarded.
        Returns:
        average spectral novelty
      • getFrontCoverImage

        public Image getFrontCoverImage()
        Description copied from interface: AudioSong
        Returns the first front cover image.
        Returns:
        image or null
      • getBackCoverImage

        public Image getBackCoverImage()
        Description copied from interface: AudioSong
        Returns the first front cover image.
        Returns:
        image or null
      • getArtworks

        public AudioArtwork[] getArtworks()
        Description copied from interface: AudioSong
        Artwork belonging to this song.
        Returns:
        array of artworks
      • getCustom1

        public String getCustom1()
        Description copied from interface: AudioSong
        Custom field.
        Returns:
        custom field
      • getCustom2

        public String getCustom2()
        Description copied from interface: AudioSong
        Custom field.
        Returns:
        custom field
      • getCustom3

        public String getCustom3()
        Description copied from interface: AudioSong
        Custom field.
        Returns:
        custom field
      • getCustom4

        public String getCustom4()
        Description copied from interface: AudioSong
        Custom field.
        Returns:
        custom field
      • getCustom5

        public String getCustom5()
        Description copied from interface: AudioSong
        Custom field.
        Returns:
        custom field