# Class Instrument

java.lang.Object
javax.sound.midi.SoundbankResource
javax.sound.midi.Instrument

public abstract class Instrument extends SoundbankResource
An instrument is a sound-synthesis algorithm with certain parameter settings, usually designed to emulate a specific real-world musical instrument or to achieve a specific sort of sound effect. Instruments are typically stored in collections called soundbanks. Before the instrument can be used to play notes, it must first be loaded onto a synthesizer, and then it must be selected for use on one or more channels, via a program-change command. MIDI notes that are subsequently received on those channels will be played using the sound of the selected instrument.

See Also:
  - `Soundbank`
  - `Soundbank.getInstruments()`
  - `Patch`
  - `Synthesizer.loadInstrument(Instrument)`
  - `MidiChannel.programChange(int, int)`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`Instrument(Soundbank soundbank, Patch patch, String name, Class<?> dataClass)`
Constructs a new MIDI instrument from the specified `Patch`.

## Method Summary

Modifier and Type
Method
Description
`Patch`
`getPatch()`
Obtains the `Patch` object that indicates the bank and program numbers where this instrument is to be stored in the synthesizer.

### Methods declared in class SoundbankResource

`getData, getDataClass, getName, getSoundbank`
Modifier and Type
Method
Description
`abstract Object`
`getData()`
Obtains the sampled audio that is stored in this `SoundbankResource`.
`Class<?>`
`getDataClass()`
Obtains the class used by this sample to represent its data.
`String`
`getName()`
Obtains the name of the resource.
`Soundbank`
`getSoundbank()`
Obtains the sound bank that contains this `SoundbankResource`.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Constructor Details

### Instrument

protected Instrument(Soundbank soundbank, Patch patch, String name, Class<?> dataClass)
Constructs a new MIDI instrument from the specified `Patch`. When a subsequent request is made to load the instrument, the sound bank will search its contents for this instrument's `Patch`, and the instrument will be loaded into the synthesizer at the bank and program location indicated by the `Patch` object.

Parameters:
  `soundbank` - sound bank containing the instrument
  `patch` - the patch of this instrument
  `name` - the name of this instrument
  `dataClass` - the class used to represent the sample's data
See Also:
  - `Synthesizer.loadInstrument(Instrument)`

## Method Details

### getPatch

public Patch getPatch()
Obtains the `Patch` object that indicates the bank and program numbers where this instrument is to be stored in the synthesizer.

Returns:
  this instrument's patch