Reading of Tracks During the Execution of a Command

When I import .wav files into a project and they are still being read by the program in the background (because the option “Read uncompressed files from original location” is selected in the “Import / Export” settings), and when I then run a Nyquist code or use the Amplify command, the program stops working.

However, the above does not happen when I use the Compressor command. (Even though the program has not yet finished reading the tracks in the background, the compressor command works well. The program simply continues reading the tracks while the Compression command is being run.)

Is there a way to make the program work properly with the Amplify command and Nyquist codes without having to deselect the option “Read uncompressed files from original location” in the “Import / Export” settings?

Which version of Audacity? (look in “Help menu > About Audacity”).

What should happen in the current (2.3.2) version of Audacity, is that if you try to apply the Amplify effect to audio that has not yet loaded, an error message should be shown to say that you have to wait for the audio to be loaded. The reason for this is that the Amplify effect defaults to the amount of amplification needed to bring the peak level up to 0 dB. Obviously, the Amplify effect cannot know the current peak level until the audio has loaded. In the case of Nyquist effects, Audacity passes the selected audio to Nyquist for processing, but can’t do that until the audio is loaded.

The version of the program is 2.3.0.

I was given a Nyquist code on a previous thread:
https://forum.audacityteam.org/t/track-labeling/52795/1

Is there a way to run the code on the tracks without having to load all of them into the project (in the same way as it is not necessary to load tracks when the Compressor command is run)?

I don’t think so.

The previously mentioned Nyquist code which I need to run on many tracks imported from .wav files is simple. It only automatically puts labels at the beginning of each track with the same names as the track, regardless of the contents of the tracks. Therefore, the loading of tracks is not needed (similar to how the loading is not required when tracks are automatically aligned end to end in the program; only their lengths are measured, while their contents are not read). Why cannot the code be run without having to wait until all tracks have been read completely? How does the program manage to run the Compressor command simultaneously with the loading of tracks?

Nyquist is essentially a separate program, running within Audacity. Audacity has no idea what the Nyquist code will do, until the Nyquist code runs, so Audacity does not know that this specific Nyquist effect does not need to access the audio data. If Nyquist crashes (for example, if it tries to process audio that does not yet exist), then it is very likely to take Audacity down with it. Because there is currently no safe way to run arbitrary Nyquist code before the audio data is loaded into Audacity, Nyquist effects are disallowed until the audio data is loaded.

Audacity’s Compressor effect is a “built-in” effect (written in C++). Unlike Nyquist, built-in effects do not require all of the selected audio to be passed when the effect is launched, but can be “fed” with data in a sequence of buffers as the data is loaded. This is what the “on demand loading” was designed for.

Another video-audio editing program which I have does not write temporary uncompressed data in the temporary files of a project on the hard drive when I make edits to a track. This results in instantaneous changes, without having to wait until the running of commands is finished (such as Compressor or Amplify). The program simply creates temporary address pointers instead of writing much uncompressed data on the hard drive when edits are made in a project. When I then play the track, the program each time runs the commands simultaneously with the playing of the track. (This results in higher CPU usage during playing, but this saves much time when I add commands to a track during editing.) The program writes all changes on the hard drive only during the exporting of the track into a file. In this way, much time is saved during editing before the exporting of the audio data. Does Audacity have a similar capacity to create address pointers during the editing process instead of constantly writing much uncompressed data each time when edits are made in an opened project (which not only takes much time but also shortens the lifespan of the hard drive by writing gigabytes of data when tracks are hours in length)? I regularly edit and export projects which are many hours in length, and I need speed and as little strain on the old hard drive as possible.

No, Audacity doesn’t do that. When you apply an edit or process the audio, that change happens straight away, as you can see by observing the waveform.