javax.sound.midi

Interface Sequencer

All Superinterfaces:
AutoCloseable, MidiDevice
Known Implementing Classes:
AlsaMidiSequencerDevice

public interface Sequencer
extends MidiDevice

A Sequencer object plays MIDI sequences described as Sequence objects. This class provides methods for loading and unloading sequences, as well as basic transport controls.
Since:
1.3

Nested Class Summary

static class
Sequencer.SyncMode
A SyncMode object represents the mechanism by which a MIDI sequencer synchronizes time with a master or slave device.

Method Summary

int[]
addControllerEventListener(ControllerEventListener listener, controllers[] )
Add a controller event listening object to this sequencer.
boolean
addMetaEventListener(MetaEventListener listener)
Add a meta event listening object to this sequencer.
Sequencer.SyncMode
getMasterSyncMode()
Get the source of timing information.
Sequencer.SyncMode[]
getMasterSyncModes()
Get an array of timing sources supported by this sequencer.
long
getMicrosecondLength()
Get the length of the current sequence in microseconds.
long
getMicrosecondPosition()
Get the current playback position of the sequencer in microseconds.
Sequence
getSequence()
Get the current sequence object for this sequencer.
Sequencer.SyncMode
getSlaveSyncMode()
Get the current slave synchronization mode.
Sequencer.SyncMode[]
getSlaveSyncModes()
Get an array of slave sync modes supported by this sequencer.
float
getTempoFactor()
Get the current scaling factor for the playback tempo.
float
getTempoInBPM()
Get the current tempo in beats per minute.
float
getTempoInMPQ()
Get the current tempo in microseconds per quarter note.
long
getTickLength()
Get the length of the current sequence in MIDI ticks.
long
getTickPosition()
Get the current playback position of the sequencer in MIDI ticks.
boolean
getTrackMute(int track)
Get the mute state of a specific track.
boolean
getTrackSolo(int track)
Get the solo state for a specific track.
boolean
isRecording()
Returns true if sequence is recording.
boolean
isRunning()
Returns true if the sequence is playing.
void
recordDisable(Track track)
Disable recording for a specific track.
void
recordEnable(Track track, int channel)
Enable recording for a specific track using data from a specific channel.
int[]
removeControllerEventListener(ControllerEventListener listener, controllers[] )
Remove a controller listener from this sequencer for the specified controller numbers.
void
removeMetaEventListener(MetaEventListener listener)
Remove a meta event listener from this sequencer.
void
setMasterSyncMode(Sequencer.SyncMode sync)
Set the source of timing information. sync must be found in the array returned by getMasterSyncModes().
void
setMicrosecondPosition(long microsecond)
Set the current playback position of the sequencer in microseconds.
void
setSequence(InputStream istream)
Set the sequence for this sequencer. istream reads on a valid MIDI file.
void
setSequence(Sequence seq)
Set the Sequence object for this sequencer.
void
setSlaveSyncMode(Sequencer.SyncMode sync)
Set the slave synchronization mode for this sequencer. sync must be found in the array returned by getSlaveSyncModes().
void
setTempoFactor(float factor)
Set a scaling factor for the playback tempo, which is 1.0 by default.
void
setTempoInBPM(float bpm)
Sets the current tempo in beats per minute.
void
setTempoInMPQ(float mpq)
Sets the current tempo in microseconds per quarter note.
void
setTickPosition(long tick)
Set the current playback position of the sequencer in MIDI ticks.
void
setTrackMute(int track, boolean mute)
Sets the mute state for a specific track.
void
setTrackSolo(int track, boolean solo)
Sets the solo state for a specific track.
void
start()
Start playback of the current sequence.
void
startRecording()
Start playback and record of MIDI events.
void
stop()
Stop playback of the current sequence.
void
stopRecording()
Stop recording, although continue playing.

Methods inherited from interface java.lang.AutoCloseable

close

Methods inherited from interface javax.sound.midi.MidiDevice

close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getMicrosecondPosition, getReceiver, getTransmitter, isOpen, open

Method Details

addControllerEventListener

public int[] addControllerEventListener(ControllerEventListener listener,
                                        controllers[] )
Add a controller event listening object to this sequencer. It will receive notification whenever the sequencer processes a controller event for a specified controller number..
Parameters:
listener - the listener to add
Returns:
the controller numbers being listened to

addMetaEventListener

public boolean addMetaEventListener(MetaEventListener listener)
Add a meta event listening object to this sequencer. It will receive notification whenever the sequencer processes a meta event. A listener may fail to get added if this sequencer doesn't support meta events.
Parameters:
listener - the listener to add
Returns:
true if listener was added, false othewise

getMasterSyncMode

public Sequencer.SyncMode getMasterSyncMode()
Get the source of timing information.
Returns:
the current source of timing information

getMasterSyncModes

public Sequencer.SyncMode[] getMasterSyncModes()
Get an array of timing sources supported by this sequencer.
Returns:
an array of timing sources supported by this sequencer

getMicrosecondLength

public long getMicrosecondLength()
Get the length of the current sequence in microseconds.
Returns:
the length of the current sequence in microseconds

getMicrosecondPosition

public long getMicrosecondPosition()
Get the current playback position of the sequencer in microseconds.
Specified by:
getMicrosecondPosition in interface MidiDevice
Returns:
the current playback position of the sequencer in microseconds

getSequence

public Sequence getSequence()
Get the current sequence object for this sequencer.
Returns:
the current sequence object. May be null.

getSlaveSyncMode

public Sequencer.SyncMode getSlaveSyncMode()
Get the current slave synchronization mode.
Returns:
the current slave synchronization mode

getSlaveSyncModes

public Sequencer.SyncMode[] getSlaveSyncModes()
Get an array of slave sync modes supported by this sequencer.
Returns:
an array of slave sync modes supported by this sequencer

getTempoFactor

public float getTempoFactor()
Get the current scaling factor for the playback tempo.
Returns:
the current tempo scaling factor

getTempoInBPM

public float getTempoInBPM()
Get the current tempo in beats per minute.
Returns:
the current tempo in beats per minute

getTempoInMPQ

public float getTempoInMPQ()
Get the current tempo in microseconds per quarter note.
Returns:
the current tempo in microseconds per quarter note.

getTickLength

public long getTickLength()
Get the length of the current sequence in MIDI ticks.
Returns:
the length of the current sequence in MIDI ticks

getTickPosition

public long getTickPosition()
Get the current playback position of the sequencer in MIDI ticks.
Returns:
the current playback position of the sequencer in MIDI ticks

getTrackMute

public boolean getTrackMute(int track)
Get the mute state of a specific track.
Parameters:
track - the track to query
Returns:
the mute state for track

getTrackSolo

public boolean getTrackSolo(int track)
Get the solo state for a specific track.
Parameters:
track - the track to query
Returns:
the solo state for track

isRecording

public boolean isRecording()
Returns true if sequence is recording.
Returns:
true if the sequence is recording and false otherwise

isRunning

public boolean isRunning()
Returns true if the sequence is playing.
Returns:
true if the sequence is playing and false otherwise

recordDisable

public void recordDisable(Track track)
Disable recording for a specific track.
Parameters:
track - the track to disable recording for

recordEnable

public void recordEnable(Track track,
                         int channel)
Enable recording for a specific track using data from a specific channel.
Parameters:
track - the track to enable for recording
channel - the channel from which to record

removeControllerEventListener

public int[] removeControllerEventListener(ControllerEventListener listener,
                                           controllers[] )
Remove a controller listener from this sequencer for the specified controller numbers.
Parameters:
listener - the listener to remove
Returns:
the controller numbers being unlistened

removeMetaEventListener

public void removeMetaEventListener(MetaEventListener listener)
Remove a meta event listener from this sequencer.
Parameters:
listener - the listener to remove

setMasterSyncMode

public void setMasterSyncMode(Sequencer.SyncMode sync)
Set the source of timing information. sync must be found in the array returned by getMasterSyncModes(). FIXME: What happens if it isn't?
Parameters:
sync - the new source of timing information

setMicrosecondPosition

public void setMicrosecondPosition(long microsecond)
Set the current playback position of the sequencer in microseconds.
Parameters:
microsecond - the new playback position of the sequencer in microseconds

setSequence

public void setSequence(InputStream istream)
            throws IOException,
                   InvalidMidiDataException
Set the sequence for this sequencer. istream reads on a valid MIDI file.
Parameters:
istream - an input stream for a valid MIDI file
Throws:
IOException - if an I/O exception happens
InvalidMidiDataException - if the MIDI file contains bad data

setSequence

public void setSequence(Sequence seq)
            throws InvalidMidiDataException
Set the Sequence object for this sequencer.
Parameters:
seq - the Sequence to process
Throws:
InvalidMidiDataException - if the sequence is invalid for any reason

setSlaveSyncMode

public void setSlaveSyncMode(Sequencer.SyncMode sync)
Set the slave synchronization mode for this sequencer. sync must be found in the array returned by getSlaveSyncModes(). FIXME: What happens if it isn't?
Parameters:
sync - the new slave sync mode for this sequencer

setTempoFactor

public void setTempoFactor(float factor)
Set a scaling factor for the playback tempo, which is 1.0 by default.
Parameters:
factor - the new tempo scaling factor

setTempoInBPM

public void setTempoInBPM(float bpm)
Sets the current tempo in beats per minute.
Parameters:
bpm - the new tempo in bears per minutes

setTempoInMPQ

public void setTempoInMPQ(float mpq)
Sets the current tempo in microseconds per quarter note.
Parameters:
mpq - the new tempo in microseconds per quarter note.

setTickPosition

public void setTickPosition(long tick)
Set the current playback position of the sequencer in MIDI ticks.
Parameters:
tick - the new playback position of the sequencer in MIDI ticks

setTrackMute

public void setTrackMute(int track,
                         boolean mute)
Sets the mute state for a specific track.
Parameters:
track - the track to modify
mute - the new mute state

setTrackSolo

public void setTrackSolo(int track,
                         boolean solo)
Sets the solo state for a specific track.
Parameters:
track - the track to modify
solo - the new solo state

start

public void start()
Start playback of the current sequence.

startRecording

public void startRecording()
Start playback and record of MIDI events. Any tracks enabled for recording will have their events replaced. Any newly recorded events, and all events from non-recording tracks will be sent to the sequencer's transmitter.

stop

public void stop()
Stop playback of the current sequence.

stopRecording

public void stopRecording()
Stop recording, although continue playing.

Sequencer.java -- A MIDI sequencer object Copyright (C) 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.