How does one programmatically mix multiple audio tracks into one track?

2.3k views Asked by At

What is the algorithm used by Audacity (or any other audio editing program) to mix separate sound tracks?

ie. what is the process of merging the tracks to a single one when the "Mix and Render" command is used.

1

There are 1 answers

2
justin On

you just add the signals.

// fill the destination (output) with the sum of signals: input1, input2, input3
for (size_t idx(0); idx < samplesToWrite; ++idx) {
    output[idx] = input1[idx] + input2[idx] + input3[idx];
}

to apply volume or panning to a signal, use multiplication.

// to halve the amplitude of an audio signal:
const double halfVolume = 0.5;
for (size_t idx(0); idx < samplesToWrite; ++idx) {
    signal[idx] *= halfVolume;
}