Class PAGranularInstrument
java.lang.Object
net.paulhertz.pixelaudio.granular.PAGranularInstrument
PAGranularInstrument
High-level granular instrument wrapper.
Mirrors PASamplerInstrument but uses:
PAGranularSampler → PAGranularVoice → PASource.
Provides:
- Global pan
- Global gain scaling
- Default ADSR envelope
- Looping option for granular paths
- Thread-safe play() methods
Does NOT manage MultiChannelBuffer. PASource encapsulates its data.
Now also exposes helpers to schedule playback at sample-accurate times
via the underlying PAGranularSampler.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ADSRParamsprivate floatprivate floatprivate booleanprivate final ddf.minim.AudioOutputprivate final PAGranularSampler -
Constructor Summary
ConstructorsConstructorDescriptionPAGranularInstrument(ddf.minim.AudioOutput out) PAGranularInstrument(ddf.minim.AudioOutput out, ADSRParams defaultEnv, int maxVoices) -
Method Summary
Modifier and TypeMethodDescriptionprivate static floatclampPan(float p) voidclose()floatfloatlongfloatlongConvenience: default env and global pan.longConvenience: default pan, default envelope.longConvenience: uses default envelope, no looping.longplay(PASource src, float amp, float pan, ADSRParams env, boolean looping) Main granular play() method.longplayLooping(PASource src, float amp, float pan) Convenience: looping version.voidvoidsetGlobalGain(float g) voidsetGlobalPan(float pan) voidstartAfterDelaySamples(PASource src, float amp, float pan, ADSRParams env, boolean looping, long delaySamples) Schedule playback after a delay in samples relative to "now".voidstartAtSampleTime(PASource src, float amp, float pan, ADSRParams env, boolean looping, long startSample) Schedule playback of a PASource at an absolute sample time.voidstartAtSampleTime(PASource src, float amp, float pan, ADSRParams env, boolean looping, long startSample, ddf.minim.analysis.WindowFunction grainWindow, int grainLenSamples) Schedule playback of a PASource at an absolute sample time.voidstartNow(PASource src, float amp, float pan, ADSRParams env, boolean looping) Convenience: schedule using current instrument cursor as "now".voidstopAll()
-
Field Details
-
sampler
-
out
private final ddf.minim.AudioOutput out -
defaultEnv
-
globalPan
private float globalPan -
globalGain
private float globalGain -
isClosed
private boolean isClosed
-
-
Constructor Details
-
PAGranularInstrument
-
PAGranularInstrument
public PAGranularInstrument(ddf.minim.AudioOutput out)
-
-
Method Details
-
play
Main granular play() method.- Parameters:
src- PASource (BasicIndexGranularSource, PathGranularSource, ...)amp- amplitudepan- stereo pan (-1..+1)env- envelope (or null → default)looping- loop the grain path- Returns:
- voiceId or -1
-
play
Convenience: uses default envelope, no looping. -
play
Convenience: default pan, default envelope. -
play
Convenience: default env and global pan. -
playLooping
Convenience: looping version. -
startAtSampleTime
public void startAtSampleTime(PASource src, float amp, float pan, ADSRParams env, boolean looping, long startSample) Schedule playback of a PASource at an absolute sample time.- Parameters:
src- PASourceamp- amplitudepan- stereo panenv- envelope (or null → default)looping- loop flagstartSample- absolute sample index at which to start
-
startAtSampleTime
public void startAtSampleTime(PASource src, float amp, float pan, ADSRParams env, boolean looping, long startSample, ddf.minim.analysis.WindowFunction grainWindow, int grainLenSamples) Schedule playback of a PASource at an absolute sample time. Called by PAGranularInstrumentDirector- Parameters:
src- PASourceamp- amplitudepan- stereo panenv- envelope (or null → default)looping- loop flagstartSample- absolute sample index at which to startgrainWindow- a WindowFunctiongrainLenSamples- number of samples in one grain
-
startAfterDelaySamples
public void startAfterDelaySamples(PASource src, float amp, float pan, ADSRParams env, boolean looping, long delaySamples) Schedule playback after a delay in samples relative to "now".- Parameters:
src- PASourceamp- amplitudepan- stereo panenv- envelope (or null → default)looping- loop flagdelaySamples- how many samples from "now"
-
startNow
Convenience: schedule using current instrument cursor as "now".- Parameters:
src- PASourceamp- amplitudepan- panenv- envelope (or null → default)looping- loop flag
-
stopAll
public void stopAll() -
setDefaultEnvelope
-
getDefaultEnvelope
-
setGlobalPan
public void setGlobalPan(float pan) -
getGlobalPan
public float getGlobalPan() -
setGlobalGain
public void setGlobalGain(float g) -
getGlobalGain
public float getGlobalGain() -
getSampleRate
public float getSampleRate() -
getSampler
-
getSampleCursor
public long getSampleCursor() -
close
public void close() -
clampPan
private static float clampPan(float p)
-