Since sox in.wav out.wav silence 1 0.1 1% reverse silence 1 0.1 1% reverse
is a concatenation of two different command lines:
sox in.wav temp.wav silence 1 0.1 1% reverse
sox temp.wav out.wav silence 1 0.1 1% reverse
create two silence effects in your chain. Once effect trims the beginning of the file and pipes a reversed copy to a temp destination, and the next trims from the beginning of the temp and reverses it back to the finished destination.
But what arguments to pass (args
)? DISCLAIMER: I have little experience and cannot test this, but I believe it should be these strings:
args[1] = "1";
args[2] = "0.1";
args[3] = "1%";
args[4] = "reverse";
e = sox_create_effect(sox_find_effect("silence"));
args[0] = "2000", assert(sox_effect_options(e, 1, args) == SOX_SUCCESS);
assert(sox_add_effect(chain, e, &inFile->signal, &tempFile->signal) == SOX_SUCCESS);
free(e);
e = sox_create_effect(sox_find_effect("silence"));
args[0] = "2000", assert(sox_effect_options(e, 1, args) == SOX_SUCCESS);
assert(sox_add_effect(chain, e, &tempFile->signal, &outFile->signal) == SOX_SUCCESS);
free(e);
sox_flow_effects(chain, NULL, NULL);