summaryrefslogtreecommitdiff
path: root/drumgizmo/output/wavfile.cc
diff options
context:
space:
mode:
authorChristian Glöckner <cgloeckner@freenet.de>2016-01-21 16:42:37 +0100
committerAndré Nusser <andre.nusser@googlemail.com>2016-02-09 09:02:18 +0100
commit3ab30fd4168217894ee781cf93df522d3565cec8 (patch)
treefdb1da6cd78e9d3ae182b7b64e742e505a336436 /drumgizmo/output/wavfile.cc
parenta0a16d9cdb9d0522053c2e830b7440e9e96231a9 (diff)
Made midi-in-wav-out work again
Diffstat (limited to 'drumgizmo/output/wavfile.cc')
-rw-r--r--drumgizmo/output/wavfile.cc24
1 files changed, 14 insertions, 10 deletions
diff --git a/drumgizmo/output/wavfile.cc b/drumgizmo/output/wavfile.cc
index e0c18cb..7a59892 100644
--- a/drumgizmo/output/wavfile.cc
+++ b/drumgizmo/output/wavfile.cc
@@ -24,6 +24,8 @@
* along with DrumGizmo; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
+#include <cassert>
+
#include "wavfile.h"
WavfileOutputEngine::WavfileOutputEngine()
@@ -31,7 +33,7 @@ WavfileOutputEngine::WavfileOutputEngine()
, channels{}
, file{"output"} {
info.frames = 0;
- info.samplerrate = 44100;
+ info.samplerate = 44100;
info.channels = 1;
info.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT;
info.sections = 0;
@@ -46,13 +48,13 @@ WavfileOutputEngine::~WavfileOutputEngine() {
}
}
-bool WavfileOutputEngine::init(Channels channels) {
+bool WavfileOutputEngine::init(Channels data) {
channels.clear(),
- channels.resize(channels.size(), nullptr);
- for (auto i = 0u; i < channels.size(); ++i) {
+ channels.resize(data.size()); // value-initialized with null
+ for (auto i = 0u; i < data.size(); ++i) {
// write channel to file
- auto fname = file + channels[i]->name + "-" + std::to_string(i);
- channels[i] = sf_open(fname, SFM_WRITE, &info);
+ auto fname = file + data[i].name + "-" + std::to_string(i) + ".wav";
+ channels[i] = sf_open(fname.c_str(), SFM_WRITE, &info);
if (channels[i] == nullptr) {
printf("Write error...\n");
return false;
@@ -64,10 +66,10 @@ bool WavfileOutputEngine::init(Channels channels) {
void WavfileOutputEngine::setParm(std::string parm, std::string value) {
if (parm == "file") {
file = value;
- } else if (parm == "srate") {[
+ } else if (parm == "srate") {
info.samplerate = std::stoi(value);
} else {
- printf("Unsupported wavfile parameter '%s'\n", parm);
+ printf("Unsupported wavfile parameter '%s'\n", parm.c_str());
}
}
@@ -83,11 +85,13 @@ void WavfileOutputEngine::pre(size_t nsamples) {
void WavfileOutputEngine::run(int ch, sample_t* samples, size_t nsamples) {
if (ch >= channels.size()) {
- printf("Invalid channel %d (%d channels available)", ch, channels.size());
+ printf("Invalid channel %d (%lu channels available)", ch, channels.size());
return;
}
- sf_writef_float(channels[ch], samples, nsampels);
+ assert(channels[ch] != nullptr);
+ assert(samples != nullptr);
+ sf_writef_float(channels[ch], samples, nsamples);
}
void WavfileOutputEngine::post(size_t nsamples) {