Saya ingin mencampur dua atau lebih saluran audio PCM (misalnya sampel yang direkam) secara digital dengan cara yang akustik, lebih disukai dalam waktu yang hampir bersamaan (artinya sedikit atau tidak ada yang mengintip ke depan).
Cara yang "benar" secara fisik untuk melakukan ini adalah menjumlahkan sampel. Namun ketika Anda menambahkan dua sampel acak, nilai yang dihasilkan bisa hingga dua kali lipat nilai maksimum.
Misalnya, jika sampel Anda bernilai 16-bit, hasilnya akan mencapai 65536 * 2. Ini menghasilkan kliping.
Solusi naif di sini adalah untuk membagi dengan N, di mana N adalah jumlah saluran yang dicampur. Namun, ini menghasilkan setiap sampel 1 / N sebagai keras, yang sama sekali tidak realistis. Di dunia nyata, ketika dua instrumen dimainkan secara bersamaan, masing-masing instrumen tidak menjadi setengah keras.
Dari membaca sekitar, metode umum pencampuran adalah: hasil = A + B - AB, di mana A dan B adalah dua sampel yang dinormalisasi dicampur, dan AB adalah istilah untuk memastikan suara lebih keras semakin "jepretan lembut".
Namun, ini menimbulkan distorsi sinyal. Apakah tingkat distorsi ini dapat diterima dalam sintesis audio berkualitas tinggi?
Apa metode lain yang ada untuk mengatasi masalah ini? Saya tertarik pada algoritma berkualitas rendah yang kurang efisien serta algoritma berkualitas tinggi yang kurang efisien.
Saya mengajukan pertanyaan saya dalam konteks sintesis musik digital, untuk tujuan pencampuran beberapa trek instrumen bersama. Trek dapat berupa audio yang disintesis, sampel yang direkam sebelumnya, atau input mikrofon waktu nyata.