Akond ze Skwak
Guest
Sat Sep 27, 2014 9:29 am
Nie mam doświadczenia w signal procesing a mam taki temat :
połączyć dwa sygnały audio w jeden.
Sygnały próbkowane są z tą samą częstotliwością 16 bit na próbkę.
Muszę je połączyć w jeden strumień.
Jakiego wzoru użyć ?
Googlarka odkryła taki wątek :
http://dsp.stackexchange.com/questions/3581/algorithms-to-mix-audio-signals-without-clipping
Sygnały wejściowe A i B , propozycje są dwie :
result=A+B
Luke
Guest
Sat Sep 27, 2014 10:12 am
W dniu 2014-09-27 o 11:29, Akond ze Skwak pisze:
Quote:
Jakiego wzoru użyć ?
(A+B)*0.5
Następnie sygnał poddać normalizacji.
Jeśli jest to na żywo, można nie mnożyć przez 0.5 tylko przez nieco
więcej, ale wtedy jest zawsze ryzyko clippingu. Albo zastosować algorytm
kompresji w czasie rzeczywistym.
Quote:
Jeżeli A i B są w tej samej fazie wybrać ten większy, jeżeli są w fazie
przeciwnej zsumować.
Jak wykryjesz, w jakiej fazie masz daną cyferkę sygnału? Przecież sygnał
jest mieszaniną wielu częstotliwości (w przypadku próbkowanych jest ich
skończona liczba) i każda z nich ma inną amplitudę i fazę. Oczywiście
rozumując Fourierowsko.
L.
Tomasz WĂłjtowicz
Guest
Sat Sep 27, 2014 10:22 am
W dniu 2014-09-27 11:29, Akond ze Skwak pisze:
[quote]result=A+B
BartekK
Guest
Sat Sep 27, 2014 10:23 am
W dniu 2014-09-27 o 12:27, RoMan Mandziejewicz pisze:
Quote:
Zerowy. Obetnij po bicie (oczywiście pamiętając o znaku) i dodaj po
prostu.
To by było nieaudiofilsko. Lepiej najpierw zsumować (przewidując na
wynik zmienną odpowiednio dużą, tzn 16+1 by wystarczyło ale pewnie
inaczej niż 32bit się nie uda), a potem wynik sumowania podzielić /2
dopiero.
Dlaczego? Bo ponieważ:
Jeśli NAJPIERW podzielisz przez /2 to np sygnał A=1, B=1 - po
podzieleniu przez dwa (odcięciu ostatniego bitu) wyjdzie ci A=0 B=0,
suma A+B=0.
Jesli POTEM podzielisz, to A=1 B=1, po zsumowaniu A+B=2, po podzeleniu
(A+B)/2=1 - i sygnał jest, straty nie ma.
--
| Bartłomiej Kuźniewski
| sibi@drut.org GG:23319 tel +48 696455098
http://drut.org/
|
http://www.allegro.pl/show_user_auctions.php?uid=338173
RoMan Mandziejewicz
Guest
Sat Sep 27, 2014 10:27 am
Hello Akond,
Saturday, September 27, 2014, 11:29:26 AM, you wrote:
Quote:
Nie mam doświadczenia w signal procesing a mam taki temat :
połączyć dwa sygnały audio w jeden.
Sygnały próbkowane są z tą samą częstotliwością 16 bit na próbkę.
[...]
Quote:
Chodzi mi po głowie taka myśl :
Jeżeli A i B są w tej samej fazie wybrać ten większy, jeżeli są w fazie
przeciwnej zsumować.
Ma to any sense ?
Zerowy. Obetnij po bicie (oczywiście pamiętając o znaku) i dodaj po
prostu.
--
Best regards,
RoMan
Nowa strona:
http://www.elektronika.squadack.com (w budowie!)
RoMan Mandziejewicz
Guest
Sat Sep 27, 2014 10:37 am
Hello BartekK,
Saturday, September 27, 2014, 12:23:15 PM, you wrote:
Quote:
W dniu 2014-09-27 o 12:27, RoMan Mandziejewicz pisze:
Zerowy. Obetnij po bicie (oczywiście pamiętając o znaku) i dodaj po
prostu.
To by było nieaudiofilsko. Lepiej najpierw zsumować (przewidując na
wynik zmienną odpowiednio dużą, tzn 16+1 by wystarczyło ale pewnie
inaczej niż 32bit się nie uda), a potem wynik sumowania podzielić /2
dopiero.
Dlaczego? Bo ponieważ:
Jeśli NAJPIERW podzielisz przez /2 to np sygnał A=1, B=1 - po
podzieleniu przez dwa (odcięciu ostatniego bitu) wyjdzie ci A=0 B=0,
suma A+B=0.
Jesli POTEM podzielisz, to A=1 B=1, po zsumowaniu A+B=2, po podzeleniu
(A+B)/2=1 - i sygnał jest, straty nie ma.
Masz rację ale to wtedy wymaga operacji na więcej niż 16 bitach...
--
Best regards,
RoMan
Nowa strona:
http://www.elektronika.squadack.com (w budowie!)
michal
Guest
Sat Sep 27, 2014 11:31 am
Użytkownik "RoMan Mandziejewicz" <roman@pik-net.pl.invalid> napisał w
wiadomości news:254629313.20140927123758@pik-net.pl.invalid...
Quote:
Hello BartekK,
Dlaczego? Bo ponieważ:
Jeśli NAJPIERW podzielisz przez /2 to np sygnał A=1, B=1 - po
podzieleniu przez dwa (odcięciu ostatniego bitu) wyjdzie ci A=0 B=0,
suma A+B=0.
Jesli POTEM podzielisz, to A=1 B=1, po zsumowaniu A+B=2, po podzeleniu
(A+B)/2=1 - i sygnał jest, straty nie ma.
Masz rację ale to wtedy wymaga operacji na więcej niż 16 bitach...
Czesc.
Dokładnie tak sie robi, z tym że w zaleznosci od poziomu
sygnalu czasem nie potrzeba dzielić. (_czasem_)
DSP maja wielobitowe akumulatory właśnie w tym celu.
Michal
MichaĹ Lankosz
Guest
Mon Sep 29, 2014 5:27 am
W dniu 2014-09-27 15:24, AlexY pisze:
[quote]michal pisze:
U