<< endmsg;
throw failed_constructor();
}
-
+
if ((_out = dynamic_cast<AudioRegion*> (r)) == 0) {
throw failed_constructor();
}
_length = 0;
- initialize();
+ initialize(false);
if (set_state (node)) {
throw failed_constructor();
}
+
+ save_state ("initial");
}
Crossfade::~Crossfade ()
}
void
-Crossfade::initialize ()
+Crossfade::initialize (bool savestate)
{
_in_update = false;
// _out->StateChanged.connect (slot (*this, &Crossfade::member_changed));
overlap_type = _in->coverage (_out->position(), _out->last_frame());
-
- save_state ("initial");
+
+ if (savestate) {
+ save_state ("initial");
+ }
}
int
jack_nframes_t
Crossfade::read_at (Sample *buf, Sample *mixdown_buffer,
- float *gain_buffer, jack_nframes_t start, jack_nframes_t cnt, uint32_t chan_n,
+ float *gain_buffer, char * workbuf, jack_nframes_t start, jack_nframes_t cnt, uint32_t chan_n,
jack_nframes_t read_frames, jack_nframes_t skip_frames)
{
jack_nframes_t offset;
offset = start - _position;
- _out->read_at (crossfade_buffer_out, mixdown_buffer, gain_buffer, start, to_write, chan_n, read_frames, skip_frames);
- _in->read_at (crossfade_buffer_in, mixdown_buffer, gain_buffer, start, to_write, chan_n, read_frames, skip_frames);
+ _out->read_at (crossfade_buffer_out, mixdown_buffer, gain_buffer, workbuf, start, to_write, chan_n, read_frames, skip_frames);
+ _in->read_at (crossfade_buffer_in, mixdown_buffer, gain_buffer, workbuf, start, to_write, chan_n, read_frames, skip_frames);
float* fiv = new float[to_write];
float* fov = new float[to_write];