Class PAGranularInstrumentDirector
java.lang.Object
net.paulhertz.pixelaudio.granular.PAGranularInstrumentDirector
High-level facade: play a gesture schedule using a
PAGranularInstrument.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate long[]private static final ddf.minim.analysis.WindowFunctionprivate final PAGranularInstrumentprivate GestureGranularParamsprivate GestureScheduleprivate GestureScheduleprivate floatprivate intprivate GestureScheduleprivate final float -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static GestureScheduleapplyTimeTransform(GestureSchedule rawSchedule, GestureGranularParams ggParams) private static floatclampPan(float p) private static floateaseInOutPow(float u, float exp) private voidensureCache(GestureSchedule sched, GestureGranularParams params) private static floatlerp(float a, float b, float u) private static longmsToSamples(float ms, float sr) voidplayGestureAtSampleTime(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, int[] startIndices, float[] panValues, long startSampleTime) voidplayGestureAtSampleTime(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, int[] startIndices, long startSampleTime) voidplayGestureAtSampleTime(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, GestureEventParams evtParams, long startSampleTime) voidplayGestureAtSampleTimeTransformed(float[] monoBuf, GestureSchedule transformedSchedule, GestureGranularParams params, GestureEventParams evtParams, long startSampleTime) voidplayGestureNow(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, int[] startIndices) voidplayGestureNow(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, int[] startIndices, float[] panValues) voidplayGestureNow(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, GestureEventParams evtParams) prepareSchedule(GestureSchedule rawSchedule, GestureGranularParams params) private static GestureScheduleresampleToCount(GestureSchedule in, int targetCount) Placeholder resampler: you likely already have something better.private static ddf.minim.analysis.WindowFunctionprivate static GestureSchedulescaleToDuration(GestureSchedule in, float targetDurationMs) private voidscheduleEvents(float[] monoBuf, GestureSchedule sched, GestureGranularParams params, GestureEventParams evtParams, ddf.minim.analysis.WindowFunction wf, long startSampleTime) private static GestureSchedulewarpScheduleTimesMs(GestureSchedule in, GestureGranularParams.WarpShape shape, float exponent) private static floatwarpU(float u, GestureGranularParams.WarpShape shape, float exponent)
-
Field Details
-
instrument
-
sampleRate
private final float sampleRate -
lastScheduleSize
private int lastScheduleSize -
lastScheduleEndMs
private float lastScheduleEndMs -
cachedEventOffsetsSamples
private long[] cachedEventOffsetsSamples -
lastRawScheduleRef
-
lastOffsetsParamsRef
-
lastTransformedScheduleRef
-
lastOffsetsScheduleRef
-
DEFAULT_GRAIN_WINDOW
private static final ddf.minim.analysis.WindowFunction DEFAULT_GRAIN_WINDOW
-
-
Constructor Details
-
PAGranularInstrumentDirector
-
-
Method Details
-
resolveGrainWindow
-
playGestureNow
public void playGestureNow(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, int[] startIndices) -
playGestureNow
public void playGestureNow(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, int[] startIndices, float[] panValues) -
playGestureNow
public void playGestureNow(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, GestureEventParams evtParams) -
playGestureAtSampleTime
public void playGestureAtSampleTime(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, int[] startIndices, long startSampleTime) -
playGestureAtSampleTime
public void playGestureAtSampleTime(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, int[] startIndices, float[] panValues, long startSampleTime) -
playGestureAtSampleTime
public void playGestureAtSampleTime(float[] monoBuf, GestureSchedule schedule, GestureGranularParams params, GestureEventParams evtParams, long startSampleTime) -
playGestureAtSampleTimeTransformed
public void playGestureAtSampleTimeTransformed(float[] monoBuf, GestureSchedule transformedSchedule, GestureGranularParams params, GestureEventParams evtParams, long startSampleTime) -
scheduleEvents
private void scheduleEvents(float[] monoBuf, GestureSchedule sched, GestureGranularParams params, GestureEventParams evtParams, ddf.minim.analysis.WindowFunction wf, long startSampleTime) -
ensureCache
-
applyTimeTransform
private static GestureSchedule applyTimeTransform(GestureSchedule rawSchedule, GestureGranularParams ggParams) - Parameters:
rawSchedule-ggParams-- Returns:
-
prepareSchedule
-
msToSamples
private static long msToSamples(float ms, float sr) -
resampleToCount
Placeholder resampler: you likely already have something better. Replace this with your existing GestureScheduleBuilder logic. -
scaleToDuration
-
warpScheduleTimesMs
private static GestureSchedule warpScheduleTimesMs(GestureSchedule in, GestureGranularParams.WarpShape shape, float exponent) -
warpU
-
easeInOutPow
private static float easeInOutPow(float u, float exp) -
lerp
private static float lerp(float a, float b, float u) -
clampPan
private static float clampPan(float p)
-