FileDocCategorySizeDatePackage
MidiFileFormat.javaAPI DocJava SE 5 API7942Fri Aug 26 14:57:48 BST 2005javax.sound.midi

MidiFileFormat

public class MidiFileFormat extends Object
A MidiFileFormat object encapsulates a MIDI file's type, as well as its length and timing information.

A MidiFileFormat object can include a set of properties. A property is a pair of key and value: the key is of type String, the associated property value is an arbitrary object. Properties specify additional informational meta data (like a author, or copyright). Properties are optional information, and file reader and file writer implementations are not required to provide or recognize properties.

The following table lists some common properties that should be used in implementations:
Property key Value type Description
"author" {@link java.lang.String String} name of the author of this file
"title" {@link java.lang.String String} title of this file
"copyright" {@link java.lang.String String} copyright message
"date" {@link java.util.Date Date} date of the recording or release
"comment" {@link java.lang.String String} an arbitrary text

see
MidiSystem#getMidiFileFormat(java.io.File)
see
Sequencer#setSequence(java.io.InputStream stream)
version
1.17, 03/12/19
author
Kara Kytle
author
Florian Bomers

Fields Summary
public static final int
UNKNOWN_LENGTH
Represents unknown length.
protected int
type
The type of MIDI file.
protected float
divisionType
The division type of the MIDI file.
protected int
resolution
The timing resolution of the MIDI file.
protected int
byteLength
The length of the MIDI file in bytes.
protected long
microsecondLength
The duration of the MIDI file in microseconds.
private HashMap
properties
The set of properties
Constructors Summary
public MidiFileFormat(int type, float divisionType, int resolution, int bytes, long microseconds)
Constructs a MidiFileFormat.

param
type the MIDI file type (0, 1, or 2)
param
divisionType the timing division type (PPQ or one of the SMPTE types)
param
resolution the timing resolution
param
bytes the length of the MIDI file in bytes, or UNKNOWN_LENGTH if not known
param
microseconds the duration of the file in microseconds, or UNKNOWN_LENGTH if not known
see
#UNKNOWN_LENGTH
see
Sequence#PPQ
see
Sequence#SMPTE_24
see
Sequence#SMPTE_25
see
Sequence#SMPTE_30DROP
see
Sequence#SMPTE_30



                                                                                 
               

	this.type = type;
	this.divisionType = divisionType;
	this.resolution = resolution;
	this.byteLength = bytes;
	this.microsecondLength = microseconds;
	this.properties = null;
    
public MidiFileFormat(int type, float divisionType, int resolution, int bytes, long microseconds, Map properties)
Construct a MidiFileFormat with a set of properties.

param
type the MIDI file type (0, 1, or 2)
param
divisionType the timing division type (PPQ or one of the SMPTE types)
param
resolution the timing resolution
param
bytes the length of the MIDI file in bytes, or UNKNOWN_LENGTH if not known
param
microseconds the duration of the file in microseconds, or UNKNOWN_LENGTH if not known
param
properties a Map<String,Object> object with properties
see
#UNKNOWN_LENGTH
see
Sequence#PPQ
see
Sequence#SMPTE_24
see
Sequence#SMPTE_25
see
Sequence#SMPTE_30DROP
see
Sequence#SMPTE_30
since
1.5

	this(type, divisionType, resolution, bytes, microseconds);
	this.properties = new HashMap<String, Object>(properties);
    
Methods Summary
public intgetByteLength()
Obtains the length of the MIDI file, expressed in 8-bit bytes.

return
the number of bytes in the file, or UNKNOWN_LENGTH if not known
see
#UNKNOWN_LENGTH

	return byteLength;
    
public floatgetDivisionType()
Obtains the timing division type for the MIDI file.

return
the division type (PPQ or one of the SMPTE types)
see
Sequence#Sequence(float, int)
see
Sequence#PPQ
see
Sequence#SMPTE_24
see
Sequence#SMPTE_25
see
Sequence#SMPTE_30DROP
see
Sequence#SMPTE_30
see
Sequence#getDivisionType()

	return divisionType;
    
public longgetMicrosecondLength()
Obtains the length of the MIDI file, expressed in microseconds.

return
the file's duration in microseconds, or UNKNOWN_LENGTH if not known
see
Sequence#getMicrosecondLength()
see
#getByteLength
see
#UNKNOWN_LENGTH

	return microsecondLength;
    
public java.lang.ObjectgetProperty(java.lang.String key)
Obtain the property value specified by the key. The concept of properties is further explained in the {@link MidiFileFormat class description}.

If the specified property is not defined for a particular file format, this method returns null.

param
key the key of the desired property
return
the value of the property with the specified key, or null if the property does not exist.
see
#properties
since
1.5

	if (properties == null) {
	    return null;
	}
	return properties.get(key);
    
public intgetResolution()
Obtains the timing resolution for the MIDI file. If the division type is PPQ, the resolution is specified in ticks per beat. For SMTPE timing, the resolution is specified in ticks per frame.

return
the number of ticks per beat (PPQ) or per frame (SMPTE)
see
#getDivisionType
see
Sequence#getResolution()

	return resolution;
    
public intgetType()
Obtains the MIDI file type.

return
the file's type (0, 1, or 2)

	return type;
    
public java.util.Mapproperties()
Obtain an unmodifiable map of properties. The concept of properties is further explained in the {@link MidiFileFormat class description}.

return
a Map<String,Object> object containing all properties. If no properties are recognized, an empty map is returned.
see
#getProperty(String)
since
1.5

 	Map<String,Object> ret;
	if (properties == null) {
	    ret = new HashMap<String,Object>(0);
	} else {
	    ret = (Map<String,Object>) (properties.clone());
	}
	return (Map<String,Object>) Collections.unmodifiableMap(ret);