diff --git src/drawsoundwidgetabstract.cpp src/drawsoundwidgetabstract.cpp index 39db581..6195525 100644 --- src/drawsoundwidgetabstract.cpp +++ src/drawsoundwidgetabstract.cpp @@ -260,3 +260,9 @@ void DrawSoundWidgetAbstract::putZoomRatio(long _zr) canvas->setZoomRatio(zoomRatio); zapWaveCanvasBuffers(); } + +long DrawSoundWidgetAbstract::getRate() +{ + return soundManager->getRate(); + +} diff --git src/drawsoundwidgetabstract.h src/drawsoundwidgetabstract.h index 65b4ef3..52c149b 100644 --- src/drawsoundwidgetabstract.h +++ src/drawsoundwidgetabstract.h @@ -51,6 +51,7 @@ public: long getLastVisibleSampleAfterZoom(long zoomRatio); void putZoomRatio(long zr); bool updateCanvas; + long getRate(); protected: WaveCanvas* canvas; SoundManager* soundManager; diff --git src/freecycle.cpp src/freecycle.cpp index 8c70fd2..546bfab 100644 --- src/freecycle.cpp +++ src/freecycle.cpp @@ -797,7 +797,7 @@ void Freecycle::saveChunks() beatlinesVL=drawSoundWidget->assignMissingMidi(beatlinesVL); } if(saveFileDialog->exportMidifile()){ - midiManager->writeMidiFile(fn,beatlinesVL,drawSoundWidget->getUsedBPM()); + midiManager->writeMidiFile(fn,beatlinesVL,drawSoundWidget->getUsedBPM(),drawSoundWidget->getRate()); } if(saveFileDialog->exportAKP()){ akpManager->writeAKPFile(fn,filenames,beatlinesVL); @@ -1371,7 +1371,8 @@ void Freecycle::saveLoopMidiFile() return; } - midiManager->writeMidiFile(fn,beatlinesVL,drawSoundWidget->getUsedBPM()); + midiManager->writeMidiFile(fn,beatlinesVL, + drawSoundWidget->getUsedBPM(), drawSoundWidget->getRate()); statusBar()->message( tr( "Midi File %1 saved" ).arg( fn), 2000 ); } else { statusBar()->message( tr("Saving aborted"), 2000 ); diff --git src/midimanager.cpp src/midimanager.cpp index 7db8325..571ce4b 100644 --- src/midimanager.cpp +++ src/midimanager.cpp @@ -42,7 +42,7 @@ MidiManager::~MidiManager() \fn MidiManager::writeMidiFile(QString filename,QValueList bld, long start, long end,double bpm) */ -void MidiManager::writeMidiFile(QString filename,QValueList bld,double /*bpm*/) +void MidiManager::writeMidiFile(QString filename,QValueList bld,double bpm,double rate) { filename.replace(".mid",""); @@ -90,8 +90,8 @@ void MidiManager::writeMidiFile(QString filename,QValueList bld,d QBuffer headerBuffer; headerBuffer.open( IO_WriteOnly ); - //int div=(int)((60.0/bpm)*44100.0); - //int hd_fmt_size=smf_header_fmt(&headerBuffer,0,1,div); + int div=(int)((60.0/bpm)*rate); + int hd_fmt_size=smf_header_fmt(&headerBuffer,0,1,div); smf_track_head(&headerBuffer,buffer.buffer().count()); headerBuffer.close(); diff --git src/midimanager.h src/midimanager.h index dc55f40..26c8090 100644 --- src/midimanager.h +++ src/midimanager.h @@ -45,7 +45,7 @@ public: MidiManager(QObject *parent = 0, const char *name = 0); ~MidiManager(); - void writeMidiFile(QString filename,QValueList bld,double bpm); + void writeMidiFile(QString filename,QValueList bld,double bpm,double rate); private: int smf_header_fmt (QBuffer* buffer, unsigned short format,