comparison audio/AudioGenerator.cpp @ 649:284cb118368e single-point

Further updates for new API - but we still need some more support in the API itself
author Chris Cannam
date Tue, 19 Mar 2019 13:06:58 +0000
parents 3168deb50199
children ed9cb577eb7c
comparison
equal deleted inserted replaced
648:eec0c50bb44f 649:284cb118368e
710 710
711 for (int c = 0; c < m_targetChannelCount; ++c) { 711 for (int c = 0; c < m_targetChannelCount; ++c) {
712 bufferIndexes[c] = buffer[c] + i * m_processingBlockSize; 712 bufferIndexes[c] = buffer[c] + i * m_processingBlockSize;
713 } 713 }
714 714
715 SparseTimeValueModel::PointList points = 715 EventVector points =
716 stvm->getPoints(reqStart, reqStart + m_processingBlockSize); 716 stvm->getEventsStartingWithin(reqStart, m_processingBlockSize);
717 717
718 // by default, repeat last frequency 718 // by default, repeat last frequency
719 float f0 = 0.f; 719 float f0 = 0.f;
720 720
721 // go straight to the last freq that is genuinely in this range 721 // go straight to the last freq in this range
722 for (SparseTimeValueModel::PointList::const_iterator itr = points.end(); 722 if (!points.empty()) {
723 itr != points.begin(); ) { 723 f0 = points.rbegin()->getValue();
724 --itr; 724 }
725 if (itr->frame >= reqStart && 725
726 itr->frame < reqStart + m_processingBlockSize) { 726 // if there is no such frequency and the next point is further
727 f0 = itr->value;
728 break;
729 }
730 }
731
732 // if we found no such frequency and the next point is further
733 // away than twice the model resolution, go silent (same 727 // away than twice the model resolution, go silent (same
734 // criterion TimeValueLayer uses for ending a discrete curve 728 // criterion TimeValueLayer uses for ending a discrete curve
735 // segment) 729 // segment)
730 /*!!! todo: restore
736 if (f0 == 0.f) { 731 if (f0 == 0.f) {
737 SparseTimeValueModel::PointList nextPoints = 732 EventVector nextPoints =
738 stvm->getNextPoints(reqStart + m_processingBlockSize); 733 stvm->getNextPoints(reqStart + m_processingBlockSize);
739 if (nextPoints.empty() || 734 if (nextPoints.empty() ||
740 nextPoints.begin()->frame > reqStart + 2 * stvm->getResolution()) { 735 nextPoints.begin()->frame > reqStart + 2 * stvm->getResolution()) {
741 f0 = -1.f; 736 f0 = -1.f;
742 } 737 }
743 } 738 }
744 739 */
745 // cerr << "f0 = " << f0 << endl; 740 // cerr << "f0 = " << f0 << endl;
746 741
747 synth->mix(bufferIndexes, 742 synth->mix(bufferIndexes,
748 gain, 743 gain,
749 pan, 744 pan,