Package net.paulhertz.pixelaudio.curves

# Class AudioBrush

java.lang.Object
net.paulhertz.pixelaudio.curves.AudioBrush

Direct Known Subclasses:
  `GranularBrush`, `SamplerBrush`

public abstract class AudioBrush extends Object
Abstract class for combining gesture data from PACurveMaker with audio synthesis parameters from GestureGranularConfig.Builder.

In the PixelAudio library examples, a "brush" uses gesture to control sound, and can draw the gesture to the display as an interactive UI element. In other words, brushes advance the core design theme of PixelAudio: combining image and audio through structural correspondences. See the GesturePlayground applet in the example code for a GUI-driven tour of features.

Two included subclasses, SamplerBrush and GranularBrush, model brushes for the PASamplerInstrument and PAGranularInstrument classes. Subclasses may add fields or behavior, but should preserve:

- a stable PACurveMaker reference
- a mutable or snapshot-based config for rendering both image and audio

Audio is typically generated either with the Sampler or Granular synthesis engine in PixelAudio.
TODO links to relevant classes

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `private final GestureGranularConfig.Builder`
  `cfg`
  `private final PACurveMaker`
  `curve`
  `private GestureTransformState`
  `transformState`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AudioBrush(PACurveMaker curve, GestureGranularConfig.Builder cfg)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `applyTransform()`
  `void`
  `captureRestPoints()`
  `GestureGranularConfig.Builder`
  `cfg()`
  Returns the configuration builder associated with this brush.
  `PACurveMaker`
  `curve()`
  `GestureTransformState`
  `ensureTransform()`
  `boolean`
  `hasTransform()`
  `void`
  `restoreTransform()`
  `void`
  `setTransform(GestureTransformState state)`
  `GestureGranularConfig`
  `snapshot()`
  Returns an immutable snapshot of the current configuration state.
  `GestureTransformState`
  `transform()`

  ### Methods inherited from class java.lang.Object

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

- ## Field Details

  - ### curve

    private final PACurveMaker curve

  - ### cfg

    private final GestureGranularConfig.Builder cfg

  - ### transformState

    private GestureTransformState transformState

- ## Constructor Details

  - ### AudioBrush

    protected AudioBrush(PACurveMaker curve, GestureGranularConfig.Builder cfg)
    Parameters:
      `curve` - a PACurveMaker instance
      `cfg` - a GestureGranularConfig

- ## Method Details

  - ### curve

    public PACurveMaker curve()

  - ### cfg

    public GestureGranularConfig.Builder cfg()
    Returns the configuration builder associated with this brush. Mutating the builder affects subsequent rendering unless a snapshot is taken via `cfg().build()` or `snapshot()`.

  - ### snapshot

    public GestureGranularConfig snapshot()
    Returns an immutable snapshot of the current configuration state.

  - ### transform

    public GestureTransformState transform()

  - ### setTransform

    public void setTransform(GestureTransformState state)

  - ### hasTransform

    public boolean hasTransform()

  - ### ensureTransform

    public GestureTransformState ensureTransform()

  - ### captureRestPoints

    public void captureRestPoints()

  - ### applyTransform

    public void applyTransform()

  - ### restoreTransform

    public void restoreTransform()