PolyphonFitnessFunction

genetic

## Class PolyphonFitnessFunction

- java.lang.Object
- - genetic.PolyphonFitnessFunction

-     public class PolyphonFitnessFunction
      extends java.lang.Object

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private java.util.ArrayList<INoteAmount>` | `alina`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PolyphonFitnessFunction(java.util.ArrayList<INoteAmount> alina)` Konstruktor

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private double` | `getBeginningEndingNoteFitness(MultiBeat mb)` je aehnlicher die Tonhoehen der ersten Note des Takts und der letzten Note sind, desto besser wirkt sich das auf den Guetewert aus
    `private double` | `getCMajorOrAMinorFitness(MultiBeat mb)` je mehr Noten des Takts in C-Dur oder A-Moll sind, desto besser ist sein Guetewert
    `private double` | `getDrasticDurationChangeFitness(MultiBeat mb)` finden im Takt drastische Tempowechsel statt, (zB.: von 16tel auf 4tel, 8tel auf ganze, usw.)
    `double` | `getFitnessValue(MultiBeat mb)` berechnet die Guete eines Takts nach mehreren Attributen
    `private double` | `getInterestingNoteFitness(MultiBeat mb)` sucht im Takt nach Noten, welche in der Kategorie haeufig vertreten sind besitzt der Takt Noten, welche einen Anteil von >= 15% aufweisen ist dies sehr gut bei einem Anteil von >= 10% gut und darunter keinen Einfluss mehr
    `private double` | `getLastNoteLongerFitness(MultiBeat mb)` ist die letzte Note im Takt eine Viertel-, halbe oder ganze Note erfuellt der Takt die Kriterien, sonst nicht
    `private double` | `getNoteDirectionFitness(MultiBeat mb)` bewertet die Kontur eines Takts sind die Noten aufsteigend oder absteigend, wirkt sich das positiver auf den Takt aus, als wenn er gleichbleibend oder schwingend verlaeuft
    `private double` | `getNoteRelationshipFitness(MultiBeat mb)` es werden die Tonhoehenaenderungen aufeinanderfolgender Noten berechnet liegen diese zwischen 1 und 3 Halbtonschritten, wirkt sich dies positiv auf den Guetewert aus

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### alina

          private java.util.ArrayList<INoteAmount> alina

  - ### Constructor Detail

    - #### PolyphonFitnessFunction

          public PolyphonFitnessFunction(java.util.ArrayList<INoteAmount> alina)

      Konstruktor
      Parameters:
        `alina` - die Noten und die Haeufigkeit ihres Auftretens in der Kategorie

  - ### Method Detail

    - #### getFitnessValue

          public double getFitnessValue(MultiBeat mb)

      berechnet die Guete eines Takts nach mehreren Attributen
      Parameters:
        `mb` - ein Takt
      Returns:
        Guetwert (Fitnesswert)

    - #### getInterestingNoteFitness

          private double getInterestingNoteFitness(MultiBeat mb)

      sucht im Takt nach Noten, welche in der Kategorie haeufig vertreten sind besitzt der Takt Noten, welche einen Anteil von >= 15% aufweisen ist dies sehr gut bei einem Anteil von >= 10% gut und darunter keinen Einfluss mehr
      Parameters:
        `mb` - ein Takt
      Returns:
        Guetewert (Fitnesswert)

    - #### getDrasticDurationChangeFitness

          private double getDrasticDurationChangeFitness(MultiBeat mb)

      finden im Takt drastische Tempowechsel statt, (zB.: von 16tel auf 4tel, 8tel auf ganze, usw.) erhaelt der Takt einen schlechteren Guetewert
      Parameters:
        `mb` - ein Takt
      Returns:
        Guetewert (Fitnesswert)

    - #### getBeginningEndingNoteFitness

          private double getBeginningEndingNoteFitness(MultiBeat mb)

      je aehnlicher die Tonhoehen der ersten Note des Takts und der letzten Note sind, desto besser wirkt sich das auf den Guetewert aus
      Parameters:
        `mb` - ein Takt
      Returns:
        Guetewert (Fitnesswert)

    - #### getNoteDirectionFitness

          private double getNoteDirectionFitness(MultiBeat mb)

      bewertet die Kontur eines Takts sind die Noten aufsteigend oder absteigend, wirkt sich das positiver auf den Takt aus, als wenn er gleichbleibend oder schwingend verlaeuft
      Parameters:
        `mb` - ein Takt
      Returns:
        Guetewert (Fitnesswert)

    - #### getNoteRelationshipFitness

          private double getNoteRelationshipFitness(MultiBeat mb)

      es werden die Tonhoehenaenderungen aufeinanderfolgender Noten berechnet liegen diese zwischen 1 und 3 Halbtonschritten, wirkt sich dies positiv auf den Guetewert aus
      Parameters:
        `mb` - ein Takt
      Returns:
        Guetewert (Fitnesswert)

    - #### getCMajorOrAMinorFitness

          private double getCMajorOrAMinorFitness(MultiBeat mb)

      je mehr Noten des Takts in C-Dur oder A-Moll sind, desto besser ist sein Guetewert
      Parameters:
        `mb` - ein Takt
      Returns:
        Guetewert (Fitnesswert)

    - #### getLastNoteLongerFitness

          private double getLastNoteLongerFitness(MultiBeat mb)

      ist die letzte Note im Takt eine Viertel-, halbe oder ganze Note erfuellt der Takt die Kriterien, sonst nicht
      Parameters:
        `mb` - ein Takt
      Returns:
        1.0 wenn gut, 0.0 wenn schlecht