Class ScoreRule

    • Constructor Detail

      • ScoreRule

        public ScoreRule()
      • ScoreRule

        public ScoreRule​(float weight)
    • Method Detail

      • getName

        public abstract String getName()
        Short name, like "Similar BPM"
        Returns:
        short name
      • getDescription

        public abstract String getDescription()
        Description of how this rule works. May be displayed in tooltips.
        Returns:
        description
      • getId

        public abstract String getId()
        Returns a unique name for this rule.
        Returns:
        unique name
      • addPropertyChangeListener

        public void addPropertyChangeListener​(String propertyName,
                                              PropertyChangeListener propertyChangeListener)
        Parameters:
        propertyName - propertyName
        propertyChangeListener - propertyChangeListener
      • score

        public abstract float score​(AudioSong song,
                                    AudioSong template,
                                    Float syncBPM,
                                    boolean playMatchAtSyncTempo)
        Returns a score between 0 and 1 for how well the given song matches the given template. A higher score indicates a better match.
        Parameters:
        song - song
        template - template
        syncBPM - sync bpm
        playMatchAtSyncTempo - the given song is meant to be played at the same tempo as the template song
        Returns:
        score between 0.0 and 1.0 as a measure for how well the song matches the template.
      • weightedScore

        public float weightedScore​(AudioSong song,
                                   AudioSong template,
                                   Float templateSyncBPM,
                                   boolean playMatchAtSyncTempo)
        Parameters:
        song - song
        template - template
        templateSyncBPM - sync bpm for the template song
        playMatchAtSyncTempo - the given song is meant to be played at the same tempo as the template song
        Returns:
        weighted score between 0.0 and getWeight()
      • getWeight

        public float getWeight()
      • setWeight

        public void setWeight​(float weight)
        Sets the weight for this rule
        Parameters:
        weight - weight
      • getApplication

        public BeaTunes getApplication()
      • setApplication

        public void setApplication​(BeaTunes beaTunes)
      • getMatchFilter

        public abstract SongPropertyFilter getMatchFilter​(AudioSong template,
                                                          Float templateSyncBPM,
                                                          boolean playMatchAtSyncTempo)
        Returns a filter that matches Songs that match this rule at least somewhat. This should be used to find songs that at least somewhat match the rule.
        Parameters:
        template - template song to match
        templateSyncBPM - sync bpm for the template song
        playMatchAtSyncTempo - the given song is meant to be played at the same tempo as the template song
        Returns:
        a filter (set) that matches this rule or null, if all songs match this rule.
      • getWeightedMatchFilter

        public SongPropertyFilter getWeightedMatchFilter​(AudioSong template,
                                                         Float templateSyncBPM,
                                                         boolean playMatchAtSyncTempo)
        Returns a weighted filter. I.e. if the weight of this rule is negative, the filter is negated as well;
        Parameters:
        template - template
        templateSyncBPM - sync bpm for the template song
        playMatchAtSyncTempo - the given song is meant to be played at the same tempo as the template song
        Returns:
        filter or null
        See Also:
        getMatchFilter(AudioSong, Float, boolean)
      • isSuitableForSorting

        public boolean isSuitableForSorting()
        Indicates whether this rule can be used for sorting a playlist, meaning whether it is cheap enough for for many invocations for many songs. The rule can still be used efficiently for matching.
        Returns:
        by default this returns true, if an implementation is not suitable this may return false and the rule will be ignored when sorting a playlist.
      • isIgnoredWhileQuickMatching

        public boolean isIgnoredWhileQuickMatching()
        Indicates whether this rule should be ignored in the initial matching and only be used to refine the result in a second round of matching.
        Returns:
        default implementation always returns false
      • load

        public void load​(nu.xom.Element element)
                  throws ConfigurationException
        Empty impl. Override for adding custom initializations.
        Parameters:
        element - XML element to initialize this rule with.
        Throws:
        ConfigurationException
      • store

        public void store​(nu.xom.Element element)
                   throws ConfigurationException
        Empty impl. Override for adding custom attributes.
        Parameters:
        element - XML element that is named like the id of this score rule. It's value is equals to weight * 10f
        Throws:
        ConfigurationException