APIdia Launch Partner
Top Description Fields Constructors Methods
javax.sound.midi

public Class Sequence

extends Object
Class Inheritance
Imports
java.util.Vector

A Sequence is a data structure containing musical information (often an entire song or composition) that can be played back by a Sequencer object. Specifically, the Sequence contains timing information and one or more tracks. Each track consists of a series of MIDI events (such as note-ons, note-offs, program changes, and meta-events). The sequence's timing information specifies the type of unit that is used to time-stamp the events in the sequence.

A Sequence can be created from a MIDI file by reading the file into an input stream and invoking one of the getSequence methods of MidiSystem. A sequence can also be built from scratch by adding new Tracks to an empty Sequence, and adding MidiEvent objects to these Tracks.

Author
Kara Kytle
See Also
Sequencer#setSequence(java.io.InputStream stream), Sequencer#setSequence(Sequence sequence), Track#add(MidiEvent), MidiFileFormat

Field Summary

Modifier and TypeField and Description
protected float
divisionType

The timing division type of the sequence.

public static final float
PPQ

The tempo-based timing type, for which the resolution is expressed in pulses (ticks) per quarter note.

protected int
resolution

The timing resolution of the sequence.

public static final float
SMPTE_24

The SMPTE-based timing type with 24 frames per second (resolution is expressed in ticks per frame).

public static final float
SMPTE_25

The SMPTE-based timing type with 25 frames per second (resolution is expressed in ticks per frame).

public static final float
SMPTE_30

The SMPTE-based timing type with 30 frames per second (resolution is expressed in ticks per frame).

public static final float
SMPTE_30DROP

The SMPTE-based timing type with 29.97 frames per second (resolution is expressed in ticks per frame).

protected Vector<Track>
tracks

The MIDI tracks in this sequence.

Constructor Summary

AccessConstructor and Description
public
Sequence(float
the timing division type (PPQ or one of the SMPTE types)
divisionType
,
int
the timing resolution
resolution
)

Constructs a new MIDI sequence with the specified timing division type and timing resolution.

public
Sequence(float
the timing division type (PPQ or one of the SMPTE types)
divisionType
,
int
the timing resolution
resolution
,
int
the initial number of tracks in the sequence
numTracks
)

Constructs a new MIDI sequence with the specified timing division type, timing resolution, and number of tracks.

Method Summary

Modifier and TypeMethod and Description
public Track

Returns:

the newly created track
createTrack
()

Creates a new, initially empty track as part of this sequence.

public boolean

Returns:

true if the track existed in the track and was removed, otherwise false
deleteTrack
(Track
the track to remove
track
)

Removes the specified track from the sequence.

public float

Returns:

the division type (PPQ or one of the SMPTE types)
getDivisionType
()

Obtains the timing division type for this sequence.

public long

Returns:

this sequence's duration in microseconds
getMicrosecondLength
()

Obtains the duration of this sequence, expressed in microseconds.

public Patch[]

Returns:

an array of Patch objects used in this sequence
getPatchList
()

Obtains a list of patches referenced in this sequence.

public int

Returns:

the number of ticks per beat (PPQ) or per frame (SMPTE)
getResolution
()

Obtains the timing resolution for this sequence.

public long

Returns:

this sequence's length in ticks
getTickLength
()

Obtains the duration of this sequence, expressed in MIDI ticks.

public Track[]

Returns:

the array of tracks
getTracks
()

Obtains an array containing all the tracks in this sequence.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

divisionTypeback to summary
protected float divisionType

The timing division type of the sequence.

See Also
PPQ, SMPTE_24, SMPTE_25, SMPTE_30DROP, SMPTE_30, getDivisionType
PPQback to summary
public static final float PPQ

The tempo-based timing type, for which the resolution is expressed in pulses (ticks) per quarter note.

See Also
Sequence(float, int)
resolutionback to summary
protected int resolution

The timing resolution of the sequence.

See Also
getResolution
SMPTE_24back to summary
public static final float SMPTE_24

The SMPTE-based timing type with 24 frames per second (resolution is expressed in ticks per frame).

See Also
Sequence(float, int)
SMPTE_25back to summary
public static final float SMPTE_25

The SMPTE-based timing type with 25 frames per second (resolution is expressed in ticks per frame).

See Also
Sequence(float, int)
SMPTE_30back to summary
public static final float SMPTE_30

The SMPTE-based timing type with 30 frames per second (resolution is expressed in ticks per frame).

See Also
Sequence(float, int)
SMPTE_30DROPback to summary
public static final float SMPTE_30DROP

The SMPTE-based timing type with 29.97 frames per second (resolution is expressed in ticks per frame).

See Also
Sequence(float, int)
tracksback to summary
protected Vector<Track> tracks

The MIDI tracks in this sequence.

See Also
getTracks

Constructor Detail

Sequenceback to summary
public Sequence(float divisionType, int resolution) throws InvalidMidiDataException

Constructs a new MIDI sequence with the specified timing division type and timing resolution. The division type must be one of the recognized MIDI timing types. For tempo-based timing, divisionType is PPQ (pulses per quarter note) and the resolution is specified in ticks per beat. For SMPTE timing, divisionType specifies the number of frames per second and the resolution is specified in ticks per frame. The sequence will contain no initial tracks. Tracks may be added to or removed from the sequence using createTrack and deleteTrack.

Parameters
divisionType:float

the timing division type (PPQ or one of the SMPTE types)

resolution:int

the timing resolution

Exceptions
InvalidMidiDataException:
if divisionType is not valid
See Also
PPQ, SMPTE_24, SMPTE_25, SMPTE_30DROP, SMPTE_30, getDivisionType, getResolution, getTracks
Sequenceback to summary
public Sequence(float divisionType, int resolution, int numTracks) throws InvalidMidiDataException

Constructs a new MIDI sequence with the specified timing division type, timing resolution, and number of tracks. The division type must be one of the recognized MIDI timing types. For tempo-based timing, divisionType is PPQ (pulses per quarter note) and the resolution is specified in ticks per beat. For SMPTE timing, divisionType specifies the number of frames per second and the resolution is specified in ticks per frame. The sequence will be initialized with the number of tracks specified by numTracks. These tracks are initially empty (i.e. they contain only the meta-event End of Track). The tracks may be retrieved for editing using the getTracks method. Additional tracks may be added, or existing tracks removed, using createTrack and deleteTrack.

Parameters
divisionType:float

the timing division type (PPQ or one of the SMPTE types)

resolution:int

the timing resolution

numTracks:int

the initial number of tracks in the sequence

Exceptions
InvalidMidiDataException:
if divisionType is not valid
See Also
PPQ, SMPTE_24, SMPTE_25, SMPTE_30DROP, SMPTE_30, getDivisionType, getResolution

Method Detail

createTrackback to summary
public Track createTrack()

Creates a new, initially empty track as part of this sequence. The track initially contains the meta-event End of Track. The newly created track is returned. All tracks in the sequence may be retrieved using getTracks. Tracks may be removed from the sequence using deleteTrack.

Returns:Track

the newly created track

deleteTrackback to summary
public boolean deleteTrack(Track track)

Removes the specified track from the sequence.

Parameters
track:Track

the track to remove

Returns:boolean

true if the track existed in the track and was removed, otherwise false

See Also
createTrack, getTracks
getDivisionTypeback to summary
public float getDivisionType()

Obtains the timing division type for this sequence.

Returns:float

the division type (PPQ or one of the SMPTE types)

See Also
PPQ, SMPTE_24, SMPTE_25, SMPTE_30DROP, SMPTE_30, Sequence(float, int), MidiFileFormat#getDivisionType()
getMicrosecondLengthback to summary
public long getMicrosecondLength()

Obtains the duration of this sequence, expressed in microseconds.

Returns:long

this sequence's duration in microseconds

getPatchListback to summary
public Patch[] getPatchList()

Obtains a list of patches referenced in this sequence. This patch list may be used to load the required Instrument objects into a Synthesizer.

Returns:Patch[]

an array of Patch objects used in this sequence

See Also
Synthesizer#loadInstruments(Soundbank, Patch[])
getResolutionback to summary
public int getResolution()

Obtains the timing resolution for this sequence. If the sequence's division type is PPQ, the resolution is specified in ticks per beat. For SMPTE timing, the resolution is specified in ticks per frame.

Returns:int

the number of ticks per beat (PPQ) or per frame (SMPTE)

See Also
getDivisionType, Sequence(float, int), MidiFileFormat#getResolution()
getTickLengthback to summary
public long getTickLength()

Obtains the duration of this sequence, expressed in MIDI ticks.

Returns:long

this sequence's length in ticks

See Also
getMicrosecondLength
getTracksback to summary
public Track[] getTracks()

Obtains an array containing all the tracks in this sequence. If the sequence contains no tracks, an array of length 0 is returned.

Returns:Track[]

the array of tracks

See Also
createTrack, deleteTrack