Проблема в том, что вы не добавляете образцы вместе.Если мы рассмотрим 4 дорожки, 16-битные данные PCM, вам нужно сложить все различные значения вместе, чтобы «смешать» их в один конечный результат.Итак, с чисто числовой точки зрения это будет выглядеть так:
[Track1] 320 -16 2000 200 400
[Track2] 16 8 123 -87 91
[Track3] -16 -34 -356 1200 805
[Track4] 1011 1230 -1230 -100 19
[Final!] 1331 1188 537 1213 1315
В приведенном выше коде вы должны писать только один байтовый массив.Этот байтовый массив является окончательным соединением всех треков, добавленных вместе.Проблема в том, что вы пишете байтовый массив для каждой отдельной дорожки (поэтому, как вы заметили, микширование не происходит).
Если вы хотите гарантировать, что у вас нет "отсечения", вам следуетвозьмите среднее значение всех треков (поэтому добавьте все четыре трека выше и разделите на 4).Однако при выборе этого подхода есть артефакты (например, если у вас есть тишина на трех дорожках и одной громкой дорожке, конечный результат будет намного тише, чем громкость одной дорожки, которая не молчит).Есть более сложные алгоритмы, которые вы можете использовать для микширования, но к тому времени вы пишете свой собственный микшер: P.