Audio-C4Stream-Mixer
view release on metacpan or search on metacpan
chin = (struct crossfade_channels_s *) in;
chresult = (struct crossfade_channels_s *) result;
spout = crossfade->spline_out;
spin = crossfade->spline_in;
while (r < crossfade->len) {
dout = ((double) *spout) / MAX_AMPL;
din = ((double) *spin) / MAX_AMPL;
chresult->left = (double) chout->left * dout + (double) chin->left * din;
chresult->right = (double) chout->right * dout + (double) chin->right * din;
chout++;
chin++;
chresult++;
spout++;
spin++;
r += sizeof (struct crossfade_channels_s);
}
}
void CROSSFADE_ease_in_out_quad (int crossfade, SV *out, SV *in, SV *result) {
crossfade_ease_in_out_quad ((struct crossfade_s *) crossfade, SvPVX(out), SvPVX(in), SvPVX(result));
}
MODULE = Audio::C4Stream::Mixer PACKAGE = Audio::C4Stream::Mixer
PROTOTYPES: DISABLE
int
crossfade_ease_in_out_quad_func (t, b, c, d)
float t
float b
float c
float d
char *
crossfade_build_easeout_quad_spline (d)
int d
char *
crossfade_build_easein_quad_spline (d)
int d
unsigned int
CROSSFADE_init (duration)
int duration
void
CROSSFADE_ease_in_out_quad (crossfade, out, in, result)
int crossfade
SV * out
SV * in
SV * result
PREINIT:
I32* temp;
PPCODE:
temp = PL_markstack_ptr++;
CROSSFADE_ease_in_out_quad(crossfade, out, in, result);
if (PL_markstack_ptr != temp) {
/* truly void, because dXSARGS not invoked */
PL_markstack_ptr = temp;
XSRETURN_EMPTY; /* return empty stack */
}
/* must have used dXSARGS; list context implied */
return; /* assume stack size is correct */
( run in 2.320 seconds using v1.01-cache-2.11-cpan-71847e10f99 )