Class TrackTimeManager

java.lang.Object
org.jfugue.midi.TrackTimeManager
Direct Known Subclasses:
RealtimeMidiParserListener, StaccatoElementSorter

public class TrackTimeManager extends Object
This class is useful for any applications that plan on keeping track of musical events by beat time. It automatically provides beat time, manages the current track, and maintains beat time bookmarks. And, this class is agnostic to units of time. It is used within JFugue for both track beats (as in MidiParserListener) and milliseconds (as in RealtimeMidiParserListener)
Author:
David Koelle
See Also:
  • Constructor Details

    • TrackTimeManager

      public TrackTimeManager()
  • Method Details

    • setCurrentTrack

      public void setCurrentTrack(byte trackNumber)
      Sets the current track, or channel, to which new events will be added.
      Parameters:
      trackNumber - the track to select
    • getCurrentTrackNumber

      public byte getCurrentTrackNumber()
    • getLastCreatedTrackNumber

      protected byte getLastCreatedTrackNumber()
    • createTrack

      protected void createTrack(byte track)
    • setCurrentLayerNumber

      public void setCurrentLayerNumber(byte layerNumber)
      Sets the current layer within the track to which new events will be added.
      Parameters:
      layerNumber - the layer to select
    • getCurrentLayerNumber

      protected byte getCurrentLayerNumber()
    • setInitialNoteBeatTimeForHarmonicNotes

      public void setInitialNoteBeatTimeForHarmonicNotes(double initialNoteBeatTimeForHarmonicNotes)
    • getInitialNoteBeatTimeForHarmonicNotes

      public double getInitialNoteBeatTimeForHarmonicNotes()
    • advanceTrackBeatTime

      public void advanceTrackBeatTime(double advanceTime)
      Advances the timer for the current track by the specified duration, which is specified in Pulses Per Quarter (PPQ)
      Parameters:
      duration - the duration to increase the track timer
    • setTrackBeatTime

      public void setTrackBeatTime(double newTime)
      Sets the timer for the current track by the given time, which is specified in Pulses Per Quarter (PPQ)
      Parameters:
      newTickTime - the time at which to set the track timer
    • setAllTrackBeatTime

      public void setAllTrackBeatTime(double newTime)
      Sets the timer for all tracks to the given time, which is specified in Pulses Per Quarter (PPQ)
      Parameters:
      newTickTime - the time at which to set the track timer
    • getTrackBeatTime

      public double getTrackBeatTime()
      Returns the timer for the current track and current layer.
      Returns:
      the timer value for the current track, specified in Pulses Per Quarter (PPQ)
    • addTrackTickTimeBookmark

      public void addTrackTickTimeBookmark(String timeBookmarkID)
    • getTrackBeatTimeBookmark

      public double getTrackBeatTimeBookmark(String timeBookmarkID)
    • getLatestTrackBeatTime

      public double getLatestTrackBeatTime(byte trackNumber)
      Returns the latest track time across all layers in the given track
      Parameters:
      trackNumber -