Class MasterAdapter

  • All Implemented Interfaces:
    BeatListener, MasterListener

    public abstract class MasterAdapter
    extends Object
    implements MasterListener

    An abstract adapter class for receiving updates related to the tempo master. The methods in this class are empty; it exists as a convenience for creating listener objects.

    Extend this class to create a MasterListener and override only the methods for events that you care about. If you plan to implement all the methods in the interface, you might as well implement MasterListener directly.

    Create a listener object using your extended class and then register it using VirtualCdj.addMasterListener(MasterListener). Whenever a relevant change occurs, the appropriate method in the listener object is invoked, and the DeviceUpdate which reported the change is passed to it.

    Author:
    James Elliott
    • Constructor Detail

      • MasterAdapter

        public MasterAdapter()
    • Method Detail

      • masterChanged

        public void masterChanged​(DeviceUpdate update)
        Description copied from interface: MasterListener

        Invoked when there is a change in which device is the current tempo master.

        To reduce latency, tempo master updates are delivered to listeners directly on the thread that is receiving them from the network, so if you want to interact with user interface objects in this method, you need to use javax.swing.SwingUtilities.invokeLater(Runnable) to do so on the Event Dispatch Thread.

        Even if you are not interacting with user interface objects, any code in this method must finish quickly, or it will add latency for other listeners, and master updates will back up. If you want to perform lengthy processing of any sort, do so on another thread.

        Specified by:
        masterChanged in interface MasterListener
        Parameters:
        update - the message identifying the new master, or null if there is now none
      • newBeat

        public void newBeat​(Beat beat)

        Invoked when a beat is reported by the tempo master, as long as the BeatFinder is active. Even though beats contain far less detailed information than status updates, they can be passed to VirtualCdj.getLatestStatusFor(DeviceUpdate) to find the current detailed status for that device, as long as the Virtual CDJ is active.

        To reduce latency, tempo master updates are delivered to listeners directly on the thread that is receiving them from the network, so if you want to interact with user interface objects in this method, you need to use javax.swing.SwingUtilities.invokeLater(Runnable) to do so on the Event Dispatch Thread.

        Even if you are not interacting with user interface objects, any code in this method must finish quickly, or it will add latency for other listeners, and master updates will back up. If you want to perform lengthy processing of any sort, do so on another thread.

        Specified by:
        newBeat in interface BeatListener
        Parameters:
        beat - the message which announced the start of the new beat
      • tempoChanged

        public void tempoChanged​(double tempo)
        Description copied from interface: MasterListener

        Invoked when the master tempo has changed.

        To reduce latency, tempo master updates are delivered to listeners directly on the thread that is receiving them from the network, so if you want to interact with user interface objects in this method, you need to use javax.swing.SwingUtilities.invokeLater(Runnable) to do so on the Event Dispatch Thread.

        Even if you are not interacting with user interface objects, any code in this method must finish quickly, or it will add latency for other listeners, and master updates will back up. If you want to perform lengthy processing of any sort, do so on another thread.

        Specified by:
        tempoChanged in interface MasterListener
        Parameters:
        tempo - the new master tempo