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

# Class Patch

java.lang.Object
javax.sound.midi.Patch

public class Patch extends Object
A `Patch` object represents a location, on a MIDI synthesizer, into which a single instrument is stored (loaded). Every `Instrument` object has its own `Patch` object that specifies the memory location into which that instrument should be loaded. The location is specified abstractly by a bank index and a program number (not by any scheme that directly refers to a specific address or offset in RAM). This is a hierarchical indexing scheme: MIDI provides for up to 16384 banks, each of which contains up to 128 program locations. For example, a minimal sort of synthesizer might have only one bank of instruments, and only 32 instruments (programs) in that bank.

To select what instrument should play the notes on a particular MIDI channel, two kinds of MIDI message are used that specify a patch location: a bank-select command, and a program-change channel command. The Java Sound equivalent is the `programChange(int, int)` method of `MidiChannel`.

See Also:
  - `Instrument`
  - `Instrument.getPatch()`
  - `MidiChannel.programChange(int, int)`
  - `Synthesizer.loadInstruments(Soundbank, Patch[])`
  - `Soundbank`
  - `Sequence.getPatchList()`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Patch(int bank, int program)`
  Constructs a new patch object from the specified bank and program numbers.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `getBank()`
  Returns the number of the bank that contains the instrument whose location this `Patch` specifies.
  `int`
  `getProgram()`
  Returns the index, within a bank, of the instrument whose location this `Patch` specifies.

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

  - ### Patch

    public Patch(int bank, int program)
    Constructs a new patch object from the specified bank and program numbers.
    Parameters:
      `bank` - the bank index (in the range from 0 to 16383)
      `program` - the program index (in the range from 0 to 127)

- ## Method Details

  - ### getBank

    public int getBank()
    Returns the number of the bank that contains the instrument whose location this `Patch` specifies.
    Returns:
      the bank number, whose range is from 0 to 16383
    See Also:
      - `MidiChannel.programChange(int, int)`

  - ### getProgram

    public int getProgram()
    Returns the index, within a bank, of the instrument whose location this `Patch` specifies.
    Returns:
      the instrument's program number, whose range is from 0 to 127
    See Also:
      - `MidiChannel.getProgram()`
      - `MidiChannel.programChange(int)`
      - `MidiChannel.programChange(int, int)`