Mi piacerebbe mescolare due o più canali audio PCM (ad es. Campioni registrati) digitalmente in maniera acusticamente fedele, preferibilmente in tempo quasi reale (che significa anticipare poco o niente).
Il modo fisicamente "corretto" per farlo è la somma dei campioni. Tuttavia, quando si aggiungono due campioni arbitrari, il valore risultante potrebbe essere fino al doppio del valore massimo.
Ad esempio, se i campioni sono valori a 16 bit, il risultato sarà fino a 65536 * 2. Ciò si traduce in ritaglio.
La soluzione ingenua qui è quella di dividere per N, dove N è il numero di canali miscelati. Tuttavia, ciò comporta che ogni campione sia 1 / Nth più forte, il che è completamente irrealistico. Nel mondo reale, quando due strumenti suonano simultaneamente, ogni strumento non diventa mezzo rumoroso.
Dalla lettura in giro, un metodo comune di missaggio è: risultato = A + B - AB, dove A e B sono i due campioni normalizzati da miscelare, e AB è un termine per garantire che i suoni più forti siano sempre più "soft-clipped".
Tuttavia, ciò introduce una distorsione del segnale. Questo livello di distorsione è accettabile nella sintesi audio di alta qualità?
Quali altri metodi ci sono per risolvere questo problema? Sono interessato a algoritmi efficienti di qualità inferiore e algoritmi di alta qualità meno efficienti.
Sto ponendo la mia domanda nel contesto della sintesi musicale digitale, allo scopo di mescolare insieme più tracce di strumenti. Le tracce potrebbero essere audio sintetizzato, campioni preregistrati o ingresso per microfono in tempo reale.