KeyFinder

midi

## Class KeyFinder

- java.lang.Object
- - midi.KeyFinder

-     public class KeyFinder
      extends java.lang.Object

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private double[]` | `coeffMajor`
    `private double[]` | `coeffMinor`
    `private static double[]` | `majorKeyKrumhansl`
    `private double` | `meanMajor`
    `private double` | `meanMinor`
    `private double` | `meanNotes`
    `private static double[]` | `minorKeyKrumhansl`
    `private double[]` | `noteDurations`
    `private static java.lang.String[]` | `noteNames`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `KeyFinder(double[] _noteDurations)` Berechnet die Koeffizienten zur Erkennung der Tonart des Musikstuecks

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private void` | `calculateCoeffs()` Berechnet die Durchschnitte und in weiterer Folge die Koeffizienten zur Erkennung der Tonart des Musikstuecks
    `private double` | `getDenominator(double[] X, double[] Duration, double mean, int startY)` liefert den Nenner des aktuellen Koeffizienten
    `java.lang.String` | `getKey()` liefter die Tonart des Musikstuecks zB.: Major C, Minor D, ...
    `private double` | `getMean(double[] dArr)` liefert den Durchschnitt des uebergebenen Arrays
    `private double` | `getNumerator(double[] X, double[] Duration, double mean, int startY)` liefert den Zaehler des aktuellen Koeffizienten
    `private double[]` | `getNumeratorX(double[] dArr, double mean)` liefert den Teil Summe[xi - x_mean] des Zaehlers
    `void` | `printCoeffs()` Ausgabe der berechneten Koeffizienten und der resultierenden Tonart

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

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

- - ### Field Detail

    - #### majorKeyKrumhansl

          private static double[] majorKeyKrumhansl

    - #### minorKeyKrumhansl

          private static double[] minorKeyKrumhansl

    - #### noteDurations

          private double[] noteDurations

    - #### coeffMajor

          private double[] coeffMajor

    - #### coeffMinor

          private double[] coeffMinor

    - #### noteNames

          private static java.lang.String[] noteNames

    - #### meanNotes

          private double meanNotes

    - #### meanMajor

          private double meanMajor

    - #### meanMinor

          private double meanMinor

  - ### Constructor Detail

    - #### KeyFinder

          public KeyFinder(double[] _noteDurations)

      Berechnet die Koeffizienten zur Erkennung der Tonart des Musikstuecks
      Parameters:
        `_noteDurations` - Array mit den summierten Dauern pro Note (C, C#, D, D#, E, F, ...)

  - ### Method Detail

    - #### calculateCoeffs

          private void calculateCoeffs()

      Berechnet die Durchschnitte und in weiterer Folge die Koeffizienten zur Erkennung der Tonart des Musikstuecks

    - #### getDenominator

          private double getDenominator(double[] X,
                              double[] Duration,
                              double mean,
                              int startY)

      liefert den Nenner des aktuellen Koeffizienten
      Parameters:
        `X` - Array mit den Werten von (xi - x_mean)
        `Duration` - Array mit den summierten Dauern pro Note (C, C#, D, D#, E, F, ...)
        `mean` - Durchschnitt des Arrays mit den Dauern der Note
        `startY` - Startindex im Array der Notendauern
      Returns:
        der Nenner des Koeffizienten

    - #### getNumerator

          private double getNumerator(double[] X,
                            double[] Duration,
                            double mean,
                            int startY)

      liefert den Zaehler des aktuellen Koeffizienten
      Parameters:
        `X` - Array mit den Werten von (xi - x_mean)
        `Duration` - Array mit den summierten Dauern pro Note (C, C#, D, D#, E, F, ...)
        `mean` - Durchschnitt des Arrays mit den Dauern der Note
        `startY` - Startindex im Array der Notendauern
      Returns:
        der Zaehler des Koeffizienten

    - #### getNumeratorX

          private double[] getNumeratorX(double[] dArr,
                               double mean)

      liefert den Teil Summe[xi - x_mean] des Zaehlers
      Parameters:
        `dArr` - Array mit dem Krumhanslprofil
        `mean` - Durchschnitt des Arrays des Krumhansprofils
      Returns:
        Array mit den Werten (xi - x_mean) pro Eintrag im Krumhanslprofil

    - #### getMean

          private double getMean(double[] dArr)

      liefert den Durchschnitt des uebergebenen Arrays
      Parameters:
        `dArr` - Array, dessen Durchschnitt berechnet wird
      Returns:
        Durchschnitt

    - #### printCoeffs

          public void printCoeffs()

      Ausgabe der berechneten Koeffizienten und der resultierenden Tonart

    - #### getKey

          public java.lang.String getKey()

      liefter die Tonart des Musikstuecks zB.: Major C, Minor D, ...
      Returns:
        Tonart