Cope with stereo click files by mixing them down to mono before playback. Kind-of fixes #1893.
git-svn-id: svn://localhost/ardour2/branches/3.0@8894 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
ff102f4cac
commit
e9e0251af6
@ -157,16 +157,35 @@ Session::setup_click_sounds (Sample** data, Sample const * default_data, framecn
|
||||
return;
|
||||
}
|
||||
|
||||
/* read the (possibly multi-channel) click data into a temporary buffer */
|
||||
|
||||
sf_count_t const samples = info.frames * info.channels;
|
||||
|
||||
Sample* tmp = new Sample[samples];
|
||||
|
||||
if (sf_readf_float (sndfile, tmp, info.frames) != info.frames) {
|
||||
|
||||
warning << _("cannot read data from click soundfile") << endmsg;
|
||||
*data = 0;
|
||||
_clicking = false;
|
||||
|
||||
} else {
|
||||
|
||||
*data = new Sample[info.frames];
|
||||
*length = info.frames;
|
||||
|
||||
if (sf_read_float (sndfile, *data, info.frames) != info.frames) {
|
||||
warning << _("cannot read data from click soundfile") << endmsg;
|
||||
delete *data;
|
||||
*data = 0;
|
||||
_clicking = false;
|
||||
/* mix down to mono */
|
||||
|
||||
for (int i = 0; i < info.frames; ++i) {
|
||||
(*data)[i] = 0;
|
||||
for (int j = 0; j < info.channels; ++j) {
|
||||
(*data)[i] = tmp[i * info.channels + j];
|
||||
}
|
||||
(*data)[i] /= info.channels;
|
||||
}
|
||||
}
|
||||
|
||||
delete[] tmp;
|
||||
sf_close (sndfile);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user