From f31aeb04a608adaca4d64a9ba1adb4462d02b6a1 Mon Sep 17 00:00:00 2001 From: Jacob McGrath <113722146+passyur@users.noreply.github.com> Date: Sun, 7 Jun 2026 23:06:55 -0500 Subject: [PATCH 1/2] lass: lazily alloc `scoreMultiTrack` inits `scoreMultiTrack` to `nullptr`, checks if `nullptr` in `checkScoreMultiTrackLength()` --- LASS/src/Score.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/LASS/src/Score.cpp b/LASS/src/Score.cpp index 9b6f3fe3..4508036e 100644 --- a/LASS/src/Score.cpp +++ b/LASS/src/Score.cpp @@ -158,12 +158,9 @@ Score::Score(int _numThreads, int _numChannels, int _samplingRate ) numChannels(_numChannels), samplingRate(_samplingRate) { - scoreEndTime = 1; //start with a small number - scoreMultiTrackLength = scoreEndTime; - m_sample_count_type newNumSamples = - (m_sample_count_type) (scoreMultiTrackLength * float(samplingRate)); - scoreMultiTrack = new MultiTrack - (numChannels,newNumSamples,samplingRate); + scoreEndTime = 0; + scoreMultiTrackLength = 0; + scoreMultiTrack = nullptr; reverbObj = NULL; @@ -282,16 +279,19 @@ void Score::checkScoreMultiTrackLength(){ scoreMultiTrackLength = scoreEndTime; m_sample_count_type newNumSamples = (m_sample_count_type) (scoreMultiTrackLength * float(samplingRate)); - MultiTrack* newScoreMultiTrack = new MultiTrack - (numChannels,newNumSamples,samplingRate); - - newScoreMultiTrack->composite(*scoreMultiTrack, 0); - delete scoreMultiTrack; - scoreMultiTrack = newScoreMultiTrack; - //pthread_mutex_unlock( &mutexVectorRenderedSound ); - cout<<"Get a longer score with length = " << scoreEndTime << " seconds."<composite(*scoreMultiTrack, 0); + delete scoreMultiTrack; + scoreMultiTrack = newScoreMultiTrack; + } + cout<<"Score buffer sized to " << scoreEndTime << " seconds."< Date: Sun, 7 Jun 2026 23:17:15 -0500 Subject: [PATCH 2/2] lass: in-place reverb --- LASS/src/Score.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/LASS/src/Score.cpp b/LASS/src/Score.cpp index 4508036e..6128d25b 100644 --- a/LASS/src/Score.cpp +++ b/LASS/src/Score.cpp @@ -258,9 +258,12 @@ MultiTrack* Score::joinThreadsAndMix(){ if(reverbObj != NULL) { cout << "Applying reverb to the score..." << endl; - MultiTrack *tmp = & reverbObj->do_reverb_MultiTrack(*scoreMultiTrack); - delete scoreMultiTrack; - scoreMultiTrack = tmp; + // Process one track at a time so peak RSS is 1× score + 1 track, + // not 2× score as do_reverb_MultiTrack would require. + for (int i = 0; i < scoreMultiTrack->size(); i++) { + Track& newTrack = reverbObj->do_reverb_Track(*scoreMultiTrack->get(i)); + delete scoreMultiTrack->set(i, &newTrack); + } } // perform Clipping management on the composite: