From: terminator356 <ter...@us...> - 2007-08-21 01:01:00
|
Update of /cvsroot/lmuse/muse/muse In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv25203/muse Modified Files: Tag: REL07 audiotrack.cpp part.cpp tempo.cpp wave.cpp Log Message: See ChangeLog Index: audiotrack.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/audiotrack.cpp,v retrieving revision 1.14.2.7 retrieving revision 1.14.2.8 diff -C2 -d -r1.14.2.7 -r1.14.2.8 *** audiotrack.cpp 4 Jan 2007 00:35:16 -0000 1.14.2.7 --- audiotrack.cpp 21 Aug 2007 01:00:56 -0000 1.14.2.8 *************** *** 939,943 **** --- 939,951 ---- //if(!p || (param >= p->parameters() && (param != AC_PLUGIN_CTL_ID_MASK -1))) if(!p || param >= p->parameters()) + { _controller.erase(id); + + // Added by Tim. p3.2.5 + // Oops. Forgot to add this before! + loop = true; + break; + + } } Index: part.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/part.cpp,v retrieving revision 1.12.2.5 retrieving revision 1.12.2.6 diff -C2 -d -r1.12.2.5 -r1.12.2.6 *** part.cpp 27 Jan 2007 14:30:22 -0000 1.12.2.5 --- part.cpp 21 Aug 2007 01:00:56 -0000 1.12.2.6 *************** *** 190,194 **** WavePart* nPart = new WavePart(*(WavePart*)oPart); EventList* el = nPart->events(); ! unsigned new_partlength = tempomap.deltaTick2frame(oPart->frame(), oPart->frame() + len); //printf("new partlength in frames: %d\n", new_partlength); --- 190,197 ---- WavePart* nPart = new WavePart(*(WavePart*)oPart); EventList* el = nPart->events(); ! // Changed by Tim. p3.2.5 Oops, my mistake before. ! //unsigned new_partlength = tempomap.deltaTick2frame(oPart->frame(), oPart->frame() + len); ! unsigned new_partlength = tempomap.deltaTick2frame(oPart->tick(), oPart->tick() + len); ! //printf("new partlength in frames: %d\n", new_partlength); *************** *** 411,414 **** --- 414,424 ---- oTrack->parts()->remove(oPart); nTrack->parts()->add(nPart); + + // Added by T356. + // adjust song len: + unsigned epos = nPart->tick() + nPart->lenTick(); + if (epos > len()) + _len = epos; + } Index: tempo.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/Attic/tempo.cpp,v retrieving revision 1.7.2.3 retrieving revision 1.7.2.4 diff -C2 -d -r1.7.2.3 -r1.7.2.4 *** tempo.cpp 27 Jan 2007 14:30:23 -0000 1.7.2.3 --- tempo.cpp 21 Aug 2007 01:00:56 -0000 1.7.2.4 *************** *** 307,311 **** //--------------------------------------------------------- ! unsigned TempoList::deltaTick2frame(unsigned tick1, unsigned tick2, int* /*sn*/) const// prevent for compiler warning: unused variable { --- 307,313 ---- //--------------------------------------------------------- ! // Changed by Tim. p3.2.5 ! //unsigned TempoList::deltaTick2frame(unsigned tick1, unsigned tick2, int* /*sn*/) const// prevent for compiler warning: unused variable ! unsigned TempoList::deltaTick2frame(unsigned tick1, unsigned tick2, int* sn) const { *************** *** 322,331 **** --- 324,352 ---- unsigned dframe = lrint(dtime * sampleRate); f1 = i->second->frame + dframe; + + // Added by Tim. p3.2.5 + i = upper_bound(tick2); + if (i == end()) { + printf("TempoList::deltaTick2frame: tick2:%d not found\n", tick2); + // abort(); + return 0; + } + dtick = tick2 - i->second->tick; + dtime = double(dtick) / (config.division * _globalTempo * 10000.0/ i->second->tempo); + dframe = lrint(dtime * sampleRate); + f2 = i->second->frame + dframe; + } else { double t = (double(tick1) * double(_tempo)) / (double(config.division) * _globalTempo * 10000.0); f1 = lrint(t * sampleRate); + + // Added by Tim. p3.2.5 + t = (double(tick2) * double(_tempo)) / (double(config.division) * _globalTempo * 10000.0); + f2 = lrint(t * sampleRate); } + // Removed by Tim. p3.2.5 + /* if (useList) { ciTEvent i = upper_bound(tick2); *************** *** 344,351 **** f2 = lrint(t * sampleRate); } // FIXME: Caution: Left this out for now. Seems to work. ! //if (sn) ! // *sn = _tempoSN; // FIXME: Caution: This should be rounded off properly somehow, but how to do that? --- 365,374 ---- f2 = lrint(t * sampleRate); } + */ // FIXME: Caution: Left this out for now. Seems to work. ! // Enabled by Tim. p3.2.5 ! if (sn) ! *sn = _tempoSN; // FIXME: Caution: This should be rounded off properly somehow, but how to do that? *************** *** 359,363 **** //--------------------------------------------------------- ! unsigned TempoList::deltaFrame2tick(unsigned frame1, unsigned frame2, int* /*sn*/) const // prevent for compiler warning: unused variable { unsigned tick1, tick2; --- 382,388 ---- //--------------------------------------------------------- ! // Changed by Tim. p3.2.5 ! //unsigned TempoList::deltaFrame2tick(unsigned frame1, unsigned frame2, int* /*sn*/) const // prevent for compiler warning: unused variable ! unsigned TempoList::deltaFrame2tick(unsigned frame1, unsigned frame2, int* sn) const { unsigned tick1, tick2; *************** *** 378,385 **** --- 403,432 ---- double dtime = double(dframe) / double(sampleRate); tick1 = e->second->tick + lrint(dtime * _globalTempo * config.division * 10000.0 / te); + + // Added by Tim. p3.2.5 + for (e = begin(); e != end();) { + ciTEvent ee = e; + ++ee; + if (ee == end()) + break; + if (frame2 < ee->second->frame) + break; + e = ee; + } + te = e->second->tempo; + dframe = frame2 - e->second->frame; + dtime = double(dframe) / double(sampleRate); + tick2 = e->second->tick + lrint(dtime * _globalTempo * config.division * 10000.0 / te); + } else + { tick1 = lrint((double(frame1)/double(sampleRate)) * _globalTempo * config.division * 10000.0 / double(_tempo)); + // Added by Tim. p3.2.5 + tick2 = lrint((double(frame2)/double(sampleRate)) * _globalTempo * config.division * 10000.0 / double(_tempo)); + } + // Removed by Tim. p3.2.5 + /* if (useList) { ciTEvent e; *************** *** 400,407 **** else tick2 = lrint((double(frame2)/double(sampleRate)) * _globalTempo * config.division * 10000.0 / double(_tempo)); ! // FIXME: Caution: Left this out for now. Seems to work. ! //if (sn) ! // *sn = _tempoSN; // FIXME: Caution: This should be rounded off properly somehow, but how to do that? --- 447,456 ---- else tick2 = lrint((double(frame2)/double(sampleRate)) * _globalTempo * config.division * 10000.0 / double(_tempo)); ! */ ! // FIXME: Caution: Left this out for now. Seems to work. ! // Enabled by Tim. p3.2.5 ! if (sn) ! *sn = _tempoSN; // FIXME: Caution: This should be rounded off properly somehow, but how to do that? Index: wave.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/wave.cpp,v retrieving revision 1.19.2.12 retrieving revision 1.19.2.13 diff -C2 -d -r1.19.2.12 -r1.19.2.13 *** wave.cpp 10 Nov 2006 20:37:10 -0000 1.19.2.12 --- wave.cpp 21 Aug 2007 01:00:56 -0000 1.19.2.13 *************** *** 165,168 **** --- 165,174 ---- fp[k] = &data[k][0]; int interval = csize / 10; + + // Added by Tim. p3.2.5 + // Interval was sometimes zero, causing intermittent crash below at (i % interval). + if(!interval) + interval = 1; + for (int i = 0; i < csize; i++) { if (showProgress && ((i % interval) == 0)) *************** *** 230,234 **** for (unsigned i = 0; i < channels(); ++i) fp[i] = &data[i][0]; ! sf_seek(sfUI, pos, SEEK_SET); { int srcChannels = channels(); --- 236,251 ---- for (unsigned i = 0; i < channels(); ++i) fp[i] = &data[i][0]; ! ! // Changed by Tim. p3.2.5 ! // Fix for bad drawing above certain zoom level. ! //sf_seek(sfUI, pos, SEEK_SET); ! sf_count_t ret = 0; ! if(sfUI) ! ret = sf_seek(sfUI, pos, SEEK_SET); ! else ! ret = sf_seek(sf, pos, SEEK_SET); ! if(ret == -1) ! return; ! { int srcChannels = channels(); *************** *** 237,241 **** float** dst = fp; float buffer[n * dstChannels]; ! size_t rn = sf_readf_float(sfUI, buffer, n); float* src = buffer; --- 254,269 ---- float** dst = fp; float buffer[n * dstChannels]; ! ! // Changed by Tim. p3.2.5 ! // Fix for bad drawing above certain zoom level. ! //size_t rn = sf_readf_float(sfUI, buffer, n); ! size_t rn = 0; ! if(sfUI) ! rn = sf_readf_float(sfUI, buffer, n); ! else ! rn = sf_readf_float(sf, buffer, n); ! if(rn != n) ! return; ! float* src = buffer; *************** *** 306,310 **** return false; } ! QString p = path(); sf = sf_open(p.latin1(), SFM_RDWR, &sfinfo); sfUI = 0; --- 334,338 ---- return false; } ! QString p = path(); sf = sf_open(p.latin1(), SFM_RDWR, &sfinfo); sfUI = 0; |