MidiToSheetMusic

midi

## Class MidiToSheetMusic

- java.lang.Object
- - midi.MidiToSheetMusic

-     public class MidiToSheetMusic
      extends java.lang.Object

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private static double` | `BEATLENGTH`
    `private int` | `denominator`
    `private boolean` | `Major`
    `private int` | `numerator`
    `private int` | `PartCount`
    `(package private) java.util.ArrayList<java.util.ArrayList<Beat>>` | `scoreInBeats`
    `private java.lang.String` | `title`
    `private java.lang.String` | `Vorzeichen`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MidiToSheetMusic(java.util.ArrayList<java.util.ArrayList<Beat>> scoreInBeats, int numerator, int denominator, java.lang.String title)`
    `MidiToSheetMusic(jm.music.data.Score score, boolean quantize)` Konstruktor, welcher den Score gleich quantisiert
    `MidiToSheetMusic(jm.music.data.Score score, boolean quantize, int numerator, int denominator, java.lang.String key, boolean major)` Konstruktor, welcher den Score gleich quantisiert
    `MidiToSheetMusic(jm.music.data.Score score, javax.swing.JTextPane textPane)` Konstruktor, welcher den Score gleich quantisiert und Infos zur Quantisierung in einer JTextPane ausgibt
    `MidiToSheetMusic(jm.music.data.Score score, javax.swing.JTextPane textPane, int numerator, int denominator, java.lang.String key, boolean major)` Konstruktor, welcher den Score gleich quantisiert und Infos zur Quantisierung in einer JTextPane ausgibt

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private int` | `getC(int midPitch)` liefert das C (als Pitch), das am naehesten zum Durchschnittspitch liegt
    `private int` | `getLongestBeatNoteCount(int part, int beat)` gibt die maximale Anzahl der Noten eines Taktes innerhalb eines Part zurueck
    `private int` | `getMiddleNotePitch(int Part)` liefert die mittlere Notenhoehe (Pitch) eines Parts
    `private java.util.Vector<abc.notation.Note>` | `getMultiNote(int Part, int beat, int note, int BigC)` liefert eine MultiNote aller Phrasen im angegebenen Part zurueck
    `private double[]` | `getNoteDurationsForKeyFinding()` liefert ein Array mit den summierten Notenlaengen jeder Note (C-B)
    `private byte` | `getNoteForKey(NoteData nd)` gibt die richtige Tonhoehe einer Note je nach Tonart zurueck Beispiel: da es zB bei einer As-Dur ein Des gibt, aber kein C#, bei Midi diese Note jedoch immer als C# gespeichert wird, muss sie am Notenblatt trotzdem in der Zeile von "D" angezeigt werden.
    `javax.swing.JFrame` | `getNoteSheetFrame()` liefert einen JFrame mit dem Midi-File als Notenblatt
    `abc.ui.swing.JScoreComponent` | `getNoteSheetJScoreComponent()` liefert ein JScoreComponent mit dem Midi-File als Notenblatt
    `private int` | `getOctaveHeightForNote(int Pitch, int C)` Berechnet um wieviele Transpositionsstufen die Note vermindert/erhoeht werden muss in Bezug auf das uebergebene C
    `private int` | `getPartCount()` gibt die Anzahl der Parts des aktuellen Scores zurueck
    `private void` | `getScoreInBeats(jm.music.data.Score scr)` befuellt scoreInBeats mit dem Takt aus dem Score
    `private boolean` | `hasMultiplePhrases(int Part)` gibt an, ob der Part aus mehreren Phrasen besteht
    `private void` | `setNote(NoteData nd, abc.notation.Note n)` setzt den Notenwert (SheetMusic)
    `private void` | `setNoteDuration(NoteData nd, abc.notation.Note n)` setzt die Dauer der Note (SheetMusic)
    `private void` | `setNotes(abc.notation.Tune.Music music, int Part, int midPitch)` erstellt eine Notenzeile des uebergebenen Parts als Referenznote wird der Durchschnittspitch des Parts herangezogen

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

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

- - ### Field Detail

    - #### scoreInBeats

          java.util.ArrayList<java.util.ArrayList<Beat>> scoreInBeats

    - #### PartCount

          private int PartCount

    - #### title

          private java.lang.String title

    - #### numerator

          private int numerator

    - #### denominator

          private int denominator

    - #### BEATLENGTH

          private static double BEATLENGTH

    - #### Major

          private boolean Major

    - #### Vorzeichen

          private java.lang.String Vorzeichen

  - ### Constructor Detail

    - #### MidiToSheetMusic

          public MidiToSheetMusic(java.util.ArrayList<java.util.ArrayList<Beat>> scoreInBeats,
                          int numerator,
                          int denominator,
                          java.lang.String title)

    - #### MidiToSheetMusic

          public MidiToSheetMusic(jm.music.data.Score score,
                          boolean quantize)

      Konstruktor, welcher den Score gleich quantisiert
      Parameters:
        `score` - der Score
        `quantize` - gibt an, ob der Score quantisiert werden soll

    - #### MidiToSheetMusic

          public MidiToSheetMusic(jm.music.data.Score score,
                          boolean quantize,
                          int numerator,
                          int denominator,
                          java.lang.String key,
                          boolean major)

      Konstruktor, welcher den Score gleich quantisiert
      Parameters:
        `score` - der Score
        `quantize` - gibt an, ob der Score quantisiert werden soll

    - #### MidiToSheetMusic

          public MidiToSheetMusic(jm.music.data.Score score,
                          javax.swing.JTextPane textPane)

      Konstruktor, welcher den Score gleich quantisiert und Infos zur Quantisierung in einer JTextPane ausgibt
      Parameters:
        `score` - der Score
        `textPane` - TextPane fuer Log-Ausgaben

    - #### MidiToSheetMusic

          public MidiToSheetMusic(jm.music.data.Score score,
                          javax.swing.JTextPane textPane,
                          int numerator,
                          int denominator,
                          java.lang.String key,
                          boolean major)

      Konstruktor, welcher den Score gleich quantisiert und Infos zur Quantisierung in einer JTextPane ausgibt
      Parameters:
        `score` - der Score
        `textPane` - TextPane fuer Log-Ausgaben
        `numerator` - Numerator
        `denominator` - Denominator
        `key` - Tonart
        `major` - true wenn Major, false wenn Minor

  - ### Method Detail

    - #### getScoreInBeats

          private void getScoreInBeats(jm.music.data.Score scr)

      befuellt scoreInBeats mit dem Takt aus dem Score

    - #### getPartCount

          private int getPartCount()

      gibt die Anzahl der Parts des aktuellen Scores zurueck
      Returns:
        Anzahl der Parts

    - #### getNoteSheetFrame

          public javax.swing.JFrame getNoteSheetFrame()

      liefert einen JFrame mit dem Midi-File als Notenblatt
      Returns:
        Frame mit dem Midi-File als Notenblatt

    - #### getNoteSheetJScoreComponent

          public abc.ui.swing.JScoreComponent getNoteSheetJScoreComponent()

      liefert ein JScoreComponent mit dem Midi-File als Notenblatt
      Returns:
        JScoreComponent mit dem Midi-File als Notenblatt

    - #### getNoteDurationsForKeyFinding

          private double[] getNoteDurationsForKeyFinding()

      liefert ein Array mit den summierten Notenlaengen jeder Note (C-B)
      Returns:
        Array mit summierter Laenge pro Note

    - #### getMiddleNotePitch

          private int getMiddleNotePitch(int Part)

      liefert die mittlere Notenhoehe (Pitch) eines Parts
      Parameters:
        `Part` - der Part, der untersucht werden soll
      Returns:
        die mittlere Notenhoehe als Pitch

    - #### getOctaveHeightForNote

          private int getOctaveHeightForNote(int Pitch,
                                   int C)

      Berechnet um wieviele Transpositionsstufen die Note vermindert/erhoeht werden muss in Bezug auf das uebergebene C
      Parameters:
        `Pitch` - aktuelle Note
        `C` - Referenz-C
      Returns:
        Hoehe der Oktavenverschiebung (-3,-2,-1,0,1,2,3)

    - #### getC

          private int getC(int midPitch)

      liefert das C (als Pitch), das am naehesten zum Durchschnittspitch liegt
      Parameters:
        `midPitch` - der mittlere Pitch
      Returns:
        C als Pitch

    - #### getLongestBeatNoteCount

          private int getLongestBeatNoteCount(int part,
                                    int beat)

      gibt die maximale Anzahl der Noten eines Taktes innerhalb eines Part zurueck
      Parameters:
        `part` - der zu durchsuchende Part
        `beat` - die ID des Takts
      Returns:
        maximale Anzahl der Noten des Taktes im Part

    - #### hasMultiplePhrases

          private boolean hasMultiplePhrases(int Part)

      gibt an, ob der Part aus mehreren Phrasen besteht
      Parameters:
        `Part` - der zu untersuchende Part
      Returns:
        true, wenn mehrere Phrasen im Part, sonst false

    - #### setNotes

          private void setNotes(abc.notation.Tune.Music music,
                      int Part,
                      int midPitch)

      erstellt eine Notenzeile des uebergebenen Parts als Referenznote wird der Durchschnittspitch des Parts herangezogen
      Parameters:
        `music` - Musikelement, welches zum Zeichnen verwendet wird
        `Part` - der Part, der als Notenzeile dargestellt werden soll
        `midPitch` - der mittlere Pitch in diesem Part als Referenzgroesse

    - #### getMultiNote

          private java.util.Vector<abc.notation.Note> getMultiNote(int Part,
                                                         int beat,
                                                         int note,
                                                         int BigC)

      liefert eine MultiNote aller Phrasen im angegebenen Part zurueck
      Parameters:
        `Part` - der gewuenschte Part
        `beat` - der aktuelle Takt
        `note` - die Position der Note im Takt
        `BigC` - Pitch der Referenznote C
      Returns:
        die MultiNote

    - #### setNote

          private void setNote(NoteData nd,
                     abc.notation.Note n)

      setzt den Notenwert (SheetMusic)
      Parameters:
        `nd` - die Note aus dem MIDI-File
        `n` - die Note als SheetMusic-Note

    - #### getNoteForKey

          private byte getNoteForKey(NoteData nd)

      gibt die richtige Tonhoehe einer Note je nach Tonart zurueck Beispiel: da es zB bei einer As-Dur ein Des gibt, aber kein C#, bei Midi diese Note jedoch immer als C# gespeichert wird, muss sie am Notenblatt trotzdem in der Zeile von "D" angezeigt werden.
      Parameters:
        `nd` - aktuelle Note
      Returns:
        richtige Tonhoehe

    - #### setNoteDuration

          private void setNoteDuration(NoteData nd,
                             abc.notation.Note n)

      setzt die Dauer der Note (SheetMusic)
      Parameters:
        `nd` - die Note aus dem MIDI-File
        `n` - die Note als SheetMusic-Note