1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-24 14:20:19 +01:00

Migrating the remaining effects

This brings the builtin, LV2, and VAMP effects inline with the
Audio Units, LADSPA, and VST effects.  All effects now share
a common UI.

This gives all effects (though not implemented for all):

User and factory preset capability
Preset import/export capability
Shared or private configuration options

Builtin effects can now be migrated to RTP, depending on algorithm.
LV2 effects now support graphical interfaces if the plugin supplies one.
Nyquist prompt enhanced to provide some features of the Nyquist Workbench.

It may not look like it, but this was a LOT of work, so trust me, there
WILL be problems and everything effect related should be suspect.  Keep
a sharp eye (or two) open.
This commit is contained in:
Leland Lucius
2015-04-16 22:53:42 -05:00
parent 40e6bcc56a
commit 8fbfa460c4
140 changed files with 17288 additions and 20367 deletions

View File

@@ -1383,7 +1383,6 @@ int AudioIO::StartStream(WaveTrackArray playbackTracks,
}
} while(!bDone);
#if defined(EXPERIMENTAL_REALTIME_EFFECTS)
if (mNumPlaybackChannels > 0)
{
EffectManager & em = EffectManager::Get();
@@ -1407,7 +1406,6 @@ int AudioIO::StartStream(WaveTrackArray playbackTracks,
em.RealtimeAddProcessor(group++, chanCnt, vt->GetRate());
}
}
#endif
#ifdef AUTOMATED_INPUT_LEVEL_ADJUSTMENT
AILASetStartTime();
@@ -1500,12 +1498,10 @@ int AudioIO::StartStream(WaveTrackArray playbackTracks,
void AudioIO::StartStreamCleanup(bool bOnlyBuffers)
{
#if defined(EXPERIMENTAL_REALTIME_EFFECTS)
if (mNumPlaybackChannels > 0)
{
EffectManager::Get().RealtimeFinalize();
}
#endif
if(mPlaybackBuffers)
{
@@ -1709,13 +1705,11 @@ void AudioIO::StopStream()
wxMutexLocker locker(mSuspendAudioThread);
#if defined(EXPERIMENTAL_REALTIME_EFFECTS)
// No longer need effects processing
if (mNumPlaybackChannels > 0)
{
EffectManager::Get().RealtimeFinalize();
}
#endif
//
// We got here in one of two ways:
@@ -1964,7 +1958,6 @@ void AudioIO::StopStream()
void AudioIO::SetPaused(bool state)
{
#if defined(EXPERIMENTAL_REALTIME_EFFECTS)
if (state != mPaused)
{
if (state)
@@ -1976,7 +1969,6 @@ void AudioIO::SetPaused(bool state)
EffectManager::Get().RealtimeResume();
}
}
#endif
mPaused = state;
}
@@ -3632,10 +3624,8 @@ int audacityAudioCallback(const void *inputBuffer, void *outputBuffer,
tempBufs[c] = (float *) alloca(framesPerBuffer * sizeof(float));
}
#if defined(EXPERIMENTAL_REALTIME_EFFECTS)
EffectManager & em = EffectManager::Get();
em.RealtimeProcessStart();
#endif
bool selected = false;
int group = 0;
@@ -3718,13 +3708,12 @@ int audacityAudioCallback(const void *inputBuffer, void *outputBuffer,
}
#endif
#if defined(EXPERIMENTAL_REALTIME_EFFECTS)
if( !cut && selected )
{
len = em.RealtimeProcess(group, chanCnt, tempBufs, len);
}
group++;
#endif
// If our buffer is empty and the time indicator is past
// the end, then we've actually finished playing the entire
// selection.
@@ -3783,9 +3772,7 @@ int audacityAudioCallback(const void *inputBuffer, void *outputBuffer,
chanCnt = 0;
}
#if defined(EXPERIMENTAL_REALTIME_EFFECTS)
em.RealtimeProcessEnd();
#endif
gAudioIO->mLastPlaybackTimeMillis = ::wxGetLocalTimeMillis();