RTV forum PL | NewsGroups PL

Jak połączyć dwa sygnały audio 16-bitowe w jeden strumień bez zniekształceń?

Miksowanie audio cyfrowe

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak połączyć dwa sygnały audio 16-bitowe w jeden strumień bez zniekształceń?

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

elektroda NewsGroups Forum Index - Elektronika Polska - Jak połączyć dwa sygnały audio 16-bitowe w jeden strumień bez zniekształceń?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map