Package net.paulhertz.pixelaudio.sampler

# Interface PASampler

All Known Implementing Classes:
  `PASharedBufferSampler`

public interface PASampler
Backend engine contract for sampler implementations. Allows swapping implementations without changing higher layers.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `isLooping()`
  Returns true if any currently active voice is looping.
  `int`
  `play(int samplePos, int sampleLen, float amplitude, ADSRParams env, float pitch, float pan)`
  Play command with all the useful arguments in standard order.
  `void`
  `setBuffer(float[] buffer)`
  `void`
  `setBuffer(float[] buffer, float playbackSampleRate)`
  `void`
  `setSampleRate(float newRate)`
  `void`
  `stopAll()`
  Stops all voices immediately.

- ## Method Details

  - ### play

    int play(int samplePos, int sampleLen, float amplitude, ADSRParams env, float pitch, float pan)
    Play command with all the useful arguments in standard order.
    Parameters:
      `samplePos` - index into the buffer to start sampling
      `sampleLen` - expected duration of the audio event, which is expected to return its actual duration
      `amplitude` - maximum amplitude of signal generated by the sampler, linear value
      `env` - ADSR style envelope for the entire event
      `pitch` - pitch multiplier, where 1.0f implies pitch is unchanged and all samples are read
      `pan` - location of audio event in stereo field, -1.0f = left, 0.0f = center, 1.0f = right
    Returns:
      actual duration of event in samples, typically sampleLen + envelope release time

  - ### isLooping

    boolean isLooping()
    Returns true if any currently active voice is looping.

  - ### stopAll

    void stopAll()
    Stops all voices immediately.

  - ### setSampleRate

    void setSampleRate(float newRate)

  - ### setBuffer

    void setBuffer(float[] buffer)

  - ### setBuffer

    void setBuffer(float[] buffer, float playbackSampleRate)