zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 9269996837ae6df24c6d2a7aa1b1292409525c29
parent 1b9365203819bf1ec4af8e9094a54ade4d893251
Author: Paul <nop@nop-desktop.(none)>
Date:   Sat, 20 Jun 2009 12:53:52 +0300

Bugfix: WAV export of PADsynth samples

Diffstat:
MChangeLog | 4++++
Msrc/Output/Recorder.C | 2+-
Msrc/Output/WAVaudiooutput.C | 9++++++++-
Msrc/Output/WAVaudiooutput.h | 3++-
Msrc/Params/PADnoteParameters.C | 30+++++++++++++++---------------
5 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -867,3 +867,6 @@ - Added Stereo template - Added Control class - Added DelayCtl class +20 Iun 2009 (Paul Nasca) + - Bugfix regarding WAV export of PADsynth + +\ No newline at end of file diff --git a/src/Output/Recorder.C b/src/Output/Recorder.C @@ -87,7 +87,7 @@ void Recorder::recordbuffer(REALTYPE *outl,REALTYPE *outr){ if (tmp>32767) tmp=32767; recordbuf_16bit[i*2+1]=tmp; }; - wav.write(SOUND_BUFFER_SIZE,recordbuf_16bit); + wav.write_stereo_samples(SOUND_BUFFER_SIZE,recordbuf_16bit); }; void Recorder::triggernow(){ diff --git a/src/Output/WAVaudiooutput.C b/src/Output/WAVaudiooutput.C @@ -78,9 +78,16 @@ void WAVaudiooutput::close(){ } }; -void WAVaudiooutput::write(int nsmps,short int *smps){ +void WAVaudiooutput::write_stereo_samples(int nsmps,short int *smps){ if (!file) return; fwrite(smps,nsmps,4,file); sampleswritten+=nsmps; }; +void WAVaudiooutput::write_mono_samples(int nsmps,short int *smps){ + if (!file) return; + fwrite(smps,nsmps,2,file); + sampleswritten+=nsmps; +}; + + diff --git a/src/Output/WAVaudiooutput.h b/src/Output/WAVaudiooutput.h @@ -29,7 +29,8 @@ class WAVaudiooutput{ bool newfile(std::string filename,int samplerate,int channels); void close(); - void write(int nsmps, short int *smps); + void write_mono_samples(int nsmps, short int *smps); + void write_stereo_samples(int nsmps, short int *smps); private: int sampleswritten; diff --git a/src/Params/PADnoteParameters.C b/src/Params/PADnoteParameters.C @@ -537,22 +537,22 @@ void PADnoteParameters::applyparameters(bool lockmutex){ }; void PADnoteParameters::export2wav(string basefilename){ - applyparameters(true); - basefilename+="_PADsynth_"; - for (int k=0;k<PAD_MAX_SAMPLES;k++){ - if (sample[k].smp==NULL) continue; - char tmpstr[20]; - snprintf(tmpstr,20,"_%02d",k+1); - string filename=basefilename+string(tmpstr)+".wav"; - WAVaudiooutput wav; - if (wav.newfile(filename,SAMPLE_RATE,1)) { - int nsmps=sample[k].size; - short int *smps=new short int[nsmps]; - for (int i=0;i<nsmps;i++) smps[i]=(short int)(sample[k].smp[i]*32767.0); - wav.write(nsmps, smps); - wav.close(); + applyparameters(true); + basefilename+="_PADsynth_"; + for (int k=0;k<PAD_MAX_SAMPLES;k++){ + if (sample[k].smp==NULL) continue; + char tmpstr[20]; + snprintf(tmpstr,20,"_%02d",k+1); + string filename=basefilename+string(tmpstr)+".wav"; + WAVaudiooutput wav; + if (wav.newfile(filename,SAMPLE_RATE,1)) { + int nsmps=sample[k].size; + short int *smps=new short int[nsmps]; + for (int i=0;i<nsmps;i++) smps[i]=(short int)(sample[k].smp[i]*32767.0); + wav.write_mono_samples(nsmps, smps); + wav.close(); + }; }; - }; };