@@ -45,7 +45,6 @@ FileReader::FileReader() : GenericProcessor ("File Reader"),
4545 currentNumTotalSamples (0 ),
4646 startSample (0 ),
4747 stopSample (0 ),
48- loopCount (0 ),
4948 bufferCacheWindow (0 ),
5049 m_shouldFillBackBuffer (false ),
5150 m_bufferSize (1024 ),
@@ -334,7 +333,6 @@ void FileReader::setActiveStream (int index, bool reset)
334333 startSample = 0 ;
335334 stopSample = currentNumTotalSamples;
336335 bufferCacheWindow = 0 ;
337- loopCount = 0 ;
338336
339337 /*
340338 startTime->getTimeValue()->setTimeFromMilliseconds (0);
@@ -536,7 +534,6 @@ void FileReader::updateSettings()
536534
537535 /* Set the sample to start of playback and reset loop counter */
538536 playbackSamplePos = startSample;
539- loopCount = 0 ;
540537
541538 /* Setup internal buffer based on audio device settings */
542539 AudioDeviceManager& adm = AccessClass::getAudioComponent ()->deviceManager ;
@@ -668,13 +665,11 @@ void FileReader::process (AudioBuffer<float>& buffer)
668665
669666 int samplesNeededPerBuffer = int (float (buffer.getNumSamples ()) * (getDefaultSampleRate () / m_sysSampleRate));
670667
671- if (! playbackActive && playbackSamplePos + samplesNeededPerBuffer > stopSample)
672- {
673- samplesNeededPerBuffer = int (stopSample - playbackSamplePos);
674- switchNeeded = true ;
675- }
676- else
677668 m_samplesPerBuffer.set (samplesNeededPerBuffer);
669+ m_samplesPerBuffer.set (samplesNeededPerBuffer);
670+ // FIXME: needs to account for the fact that the ratio might not be an exact
671+ // integer value
672+ m_samplesPerBuffer.set (samplesNeededPerBuffer);
678673 // FIXME: needs to account for the fact that the ratio might not be an exact
679674 // integer value
680675
@@ -684,8 +679,6 @@ void FileReader::process (AudioBuffer<float>& buffer)
684679 switchBuffer ();
685680 }
686681
687- // std::cout << "Reading " << samplesNeededPerBuffer << " samples. " << std::endl;
688-
689682 const float * tempReadBuffer = readBuffer->getData () + (samplesNeededPerBuffer * currentNumChannels * bufferCacheWindow);
690683
691684 for (int ch = 0 ; ch < currentNumChannels; ++ch)
@@ -705,7 +698,7 @@ void FileReader::process (AudioBuffer<float>& buffer)
705698 // samplesNeededPerBuffer);
706699 }
707700
708- setTimestampAndSamples (playbackSamplePos, -1.0 , samplesNeededPerBuffer, dataStreams[0 ]->getStreamId ()); // TODO: Look at this
701+ setTimestampAndSamples (playbackSamplePos, -1.0 , samplesNeededPerBuffer, dataStreams[0 ]->getStreamId ()); // TODO: Look at this could be total or playback
709702
710703 int64 start = playbackSamplePos;
711704
@@ -717,6 +710,11 @@ void FileReader::process (AudioBuffer<float>& buffer)
717710
718711 addEventsInRange (start, stop);
719712
713+ if (playbackSamplePos >= stopSample)
714+ {
715+ playbackSamplePos = startSample + (playbackSamplePos - stopSample);
716+ }
717+
720718 bufferCacheWindow += 1 ;
721719 bufferCacheWindow %= BUFFER_WINDOW_CACHE_SIZE;
722720
@@ -734,7 +732,7 @@ void FileReader::addEventsInRange (int64 start, int64 stop)
734732
735733 for (int i = 0 ; i < events.channels .size (); i++)
736734 {
737- int64 absoluteCurrentSampleNumber = events.sampleNumbers [i] + loopCount * (stopSample - startSample) ;
735+ int64 absoluteCurrentSampleNumber = events.sampleNumbers [i];
738736 if (events.text .size () && ! events.text [i].isEmpty ())
739737 {
740738 String msg = events.text [i];
0 commit comments