Class PAGranularVoice
java.lang.Object
net.paulhertz.pixelaudio.granular.PAGranularVoice
PAGranularVoice
A single granular "voice" driven by a PASource.
Provides:
- nextSample() API so it can be mixed like PASamplerVoice
- voice-level ADSR envelope (macro envelope)
- per-voice amplitude + pan
- optional looping of entire grain path
Internally uses:
- Block buffer (blockL / blockR)
- Absolute sample counter (absSample)
- Cursor into current block
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate longprivate booleanprivate final float[]private final float[]private final intprivate int(package private) ADSRParamsprivate booleanprivate SimpleADSRprivate booleanprivate floatprivate intprivate ddf.minim.analysis.WindowFunctionprivate booleanprivate static longprivate floatprivate floatprivate floatprivate floatprivate booleanprivate PASourceprivate long -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidactivate(PASource source, ADSRParams envParams, float gain, float pan, boolean looping) voidactivate(PASource source, ADSRParams envParams, float gain, float pan, boolean looping, ddf.minim.analysis.WindowFunction grainWindow, int grainLenSamples) private static floatclampPan(float p) floatgetPan()longbooleanisActive()booleanbooleanfloatvoidnextSampleStereo(float[] outLR) private voidvoidrelease()voidvoidstop()private void
-
Field Details
-
NEXT_VOICE_ID
private static long NEXT_VOICE_ID -
source
-
blockSize
private final int blockSize -
voiceId
private long voiceId -
active
private boolean active -
released
private boolean released -
finished
private boolean finished -
gain
private float gain -
pan
private float pan -
looping
private boolean looping -
playbackSampleRate
private float playbackSampleRate -
blockL
private final float[] blockL -
blockR
private final float[] blockR -
cursor
private int cursor -
absSample
private long absSample -
envelope
-
defaultEnvParams
ADSRParams defaultEnvParams -
panGainL
private float panGainL -
panGainR
private float panGainR -
grainWindow
private ddf.minim.analysis.WindowFunction grainWindow -
grainLenSamples
private int grainLenSamples -
endTriggered
private boolean endTriggered
-
-
Constructor Details
-
PAGranularVoice
-
-
Method Details
-
setSource
-
activate
-
activate
public void activate(PASource source, ADSRParams envParams, float gain, float pan, boolean looping, ddf.minim.analysis.WindowFunction grainWindow, int grainLenSamples) -
nextSampleStereo
public void nextSampleStereo(float[] outLR) -
nextSample
public float nextSample() -
refillBlock
private void refillBlock() -
updatePanGains
private void updatePanGains() -
release
public void release() -
stop
public void stop() -
isActive
public boolean isActive() -
isReleasing
public boolean isReleasing() -
isFinished
public boolean isFinished() -
getVoiceId
public long getVoiceId() -
getPan
public float getPan() -
clampPan
private static float clampPan(float p)
-