Package net.paulhertz.pixelaudio.voices
Class PASamplerVoice
java.lang.Object
net.paulhertz.pixelaudio.voices.PASamplerVoice
PASamplerVoice — a single playback "voice" reading from a shared mono buffer.
Each voice handles:
- playback position and pitch
- per-voice amplitude and pan
- one independent SimpleADSR envelope (sample-accurate)
- optional zero-crossing start and micro-fade-in
Voices can be smoothly released and are recycled once the envelope finishes.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate float[]private static final booleanprivate intprivate SimpleADSRprivate booleanprivate intprivate floatprivate booleanprivate booleanprivate booleanprivate static longprivate floatprivate floatprivate floatprivate floatprivate booleanprivate intprivate long -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidactivate(int start, int length, float gain, ADSRParams envParams, float pitch, float pan, boolean looping) private voidprivate intfindZeroCrossing(int index, int direction) floatgetPan()longbooleanisActive()booleanbooleanbooleanbooleanbooleanfloatvoidrelease()voidvoidsetBuffer(float[] buffer) voidsetBuffer(float[] buffer, float playbackSampleRate) voidsetFindZeroCrossing(boolean val) voidsetLooping(boolean looping) voidsetMicroFadeIn(boolean val) voidsetPlaybackSampleRate(float newRate) voidstop()
-
Field Details
-
NEXT_VOICE_ID
private static long NEXT_VOICE_ID -
buffer
private float[] buffer -
playbackSampleRate
private float playbackSampleRate -
voiceId
private long voiceId -
active
private boolean active -
released
private boolean released -
finished
private boolean finished -
looping
private boolean looping -
start
private int start -
end
private int end -
position
private float position -
rate
private float rate -
gain
private float gain -
pan
private float pan -
envelope
-
isFindZeroCrossing
private boolean isFindZeroCrossing -
isMicroFadeIn
private boolean isMicroFadeIn -
DEBUG
private static final boolean DEBUG- See Also:
-
frameCounter
private int frameCounter
-
-
Constructor Details
-
PASamplerVoice
public PASamplerVoice(float[] buffer, float sampleRate)
-
-
Method Details
-
activate
public void activate(int start, int length, float gain, ADSRParams envParams, float pitch, float pan, boolean looping) -
nextSample
public float nextSample() -
release
public void release() -
stop
public void stop() -
resetPosition
public void resetPosition() -
setBuffer
public void setBuffer(float[] buffer) -
setBuffer
public void setBuffer(float[] buffer, float playbackSampleRate) -
isActive
public boolean isActive() -
isReleasing
public boolean isReleasing() -
isFinished
public boolean isFinished() -
isLooping
public boolean isLooping() -
setLooping
public void setLooping(boolean looping) -
getPan
public float getPan() -
getVoiceId
public long getVoiceId() -
applyMicroFadeIn
private void applyMicroFadeIn() -
findZeroCrossing
private int findZeroCrossing(int index, int direction) -
isFindZeroCrossing
public boolean isFindZeroCrossing() -
setFindZeroCrossing
public void setFindZeroCrossing(boolean val) -
isMicroFadeIn
public boolean isMicroFadeIn() -
setMicroFadeIn
public void setMicroFadeIn(boolean val) -
setPlaybackSampleRate
public void setPlaybackSampleRate(float newRate)
-