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:
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();
+ };
};
- };
};