Instrument (Java SE 17 & JDK 17)
Description: declaration: module: java.desktop, package: javax.sound.midi, class: Instrument
Keywords: javax.sound.midi.Instrument class

Module java.desktop
Package javax.sound.midi

# 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 javax.sound.midi.SoundbankResource

  `getData, getDataClass, getName, getSoundbank`

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## 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