-
1. Data: 2014-09-27 11:29:26
Temat: Miksowanie audio cyfrowe
Od: "Akond ze Skwak" <a...@z...skwak>
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/algorith
ms-to-mix-audio-signals-without-clipping
Sygnały wejściowe A i B , propozycje są dwie :
result=A+B-AB doesn't make any sense,
i
result=g(A+B) where g<=1 .
Jak dla mnie, naturalne wydaje się, że gdy któryś z sygnałów równy jest
zero,
to na wyjściu powinienem dostać wartość równą drugiemu sygnałowi.
Gdy A i B są w tej samej fazie to po prostym zsumowaniu zwykle nastąpi
przekroczenie maksymalnej wartości amplitudy.
Gdy A i B mają tą samą wartość ale są w przeciw fazie wynik powinien być
zero.
Nie chcę odkrywać ameryki, potrzebuję wzoru matematycznego określającego jak
to się robi ...
f(A,B) = ...
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 ?
AZS
-
2. Data: 2014-09-27 12:12:58
Temat: Re: Miksowanie audio cyfrowe
Od: Luke <l...@l...net>
W dniu 2014-09-27 o 11:29, Akond ze Skwak pisze:
> 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.
> 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.
-
3. Data: 2014-09-27 12:22:01
Temat: Re: Miksowanie audio cyfrowe
Od: Tomasz Wójtowicz <s...@s...spam.spam.com>
W dniu 2014-09-27 11:29, Akond ze Skwak pisze:
> result=A+B-AB doesn't make any sense,
Dlaczego nie ma sensu? To jest zwykły OR.
Jeśli mamy działanie A OR B, to nie można tego zsumować A+B bo wynik
wyjdzie z przedziału 0;2 dlatego sumuje się po przypadkach:
A*(1-B) + B*(1-A) + A*B = A - AB + B - AB + AB = A + B - AB
Na przykład XOR sumuje się podobnie:
A*(1-B) + B*(1-A) = A + B - 2AB
-
4. Data: 2014-09-27 12:23:15
Temat: Re: Miksowanie audio cyfrowe
Od: BartekK <s...@d...org>
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.
--
| Bartłomiej Kuźniewski
| s...@d...org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338
173
-
5. Data: 2014-09-27 12:27:38
Temat: Re: Miksowanie audio cyfrowe
Od: RoMan Mandziejewicz <r...@p...pl.invalid>
Hello Akond,
Saturday, September 27, 2014, 11:29:26 AM, you wrote:
> 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ę.
[...]
> 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!)
-
6. Data: 2014-09-27 12:37:58
Temat: Re: Miksowanie audio cyfrowe
Od: RoMan Mandziejewicz <r...@p...pl.invalid>
Hello BartekK,
Saturday, September 27, 2014, 12:23:15 PM, you wrote:
> 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!)
-
7. Data: 2014-09-27 13:31:37
Temat: Re: Miksowanie audio cyfrowe
Od: "michal" <...@b...pl>
Użytkownik "RoMan Mandziejewicz" <r...@p...pl.invalid> napisał w
wiadomości news:254629313.20140927123758@pik-net.pl.invalid...
> 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
-
8. Data: 2014-09-27 15:24:12
Temat: Re: Miksowanie audio cyfrowe
Od: AlexY <a...@i...pl>
michal pisze:
> U?ytkownik "RoMan Mandziejewicz" <r...@p...pl.invalid> napisa? w
> wiadomo?ci news:254629313.20140927123758@pik-net.pl.invalid...
>> Hello BartekK,
>>> Dlaczego? Bo poniewa?:
>>> Je?li NAJPIERW podzielisz przez /2 to np sygna? A=1, B=1 - po
>>> podzieleniu przez dwa (odcieciu 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 racje ale to wtedy wymaga operacji na wiecej ni? 16 bitach...
>>
> Czesc.
> Dok?adnie tak sie robi, z tym ?e w zaleznosci od poziomu
> sygnalu czasem nie potrzeba dzieliae. (_czasem_)
> DSP maja wielobitowe akumulatory w?a?nie w tym celu.
> Michal
Podział przez 2 polega na przesunięciu bitów o jedną pozycję.
--
AlexY
http://faq.enter.net.pl/simple-polish.html
http://www.pg.gda.pl/~agatek/netq.html
-
9. Data: 2014-09-27 15:41:43
Temat: Re: Miksowanie audio cyfrowe
Od: Zachariasz Dorożyński <k...@g...com>
W dniu sobota, 27 września 2014 11:29:26 UTC+2 użytkownik Akond ze Skwak napisał:
> 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/algorith
ms-to-mix-audio-signals-without-clipping
>
>
>
> Sygnały wejściowe A i B , propozycje są dwie :
>
>
>
> result=A+B-AB doesn't make any sense,
>
> i
>
> result=g(A+B) where g<=1 .
>
>
>
> Jak dla mnie, naturalne wydaje się, że gdy któryś z sygnałów równy jest
>
> zero,
>
> to na wyjściu powinienem dostać wartość równą drugiemu sygnałowi.
>
> Gdy A i B są w tej samej fazie to po prostym zsumowaniu zwykle nastąpi
>
> przekroczenie maksymalnej wartości amplitudy.
>
>
>
> Gdy A i B mają tą samą wartość ale są w przeciw fazie wynik powinien być
>
> zero.
>
>
>
> Nie chcę odkrywać ameryki, potrzebuję wzoru matematycznego określającego jak
>
> to się robi ...
>
> f(A,B) = ...
>
>
>
>
>
> 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 ?
>
>
>
> AZS
Co potem robisz ze zmiksowanym sygnałem?
-
10. Data: 2014-09-27 17:47:36
Temat: Re: Miksowanie audio cyfrowe
Od: "J.F." <j...@p...onet.pl>
Dnia Sat, 27 Sep 2014 12:37:58 +0200, RoMan Mandziejewicz napisał(a):
>> 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.
> Masz rację ale to wtedy wymaga operacji na więcej niż 16 bitach...
Przy 2 sygnalach to tylko jeden bit przeniesienia, no, jak sie
rozwiaze problem znaku. Ale 32-bitowe procesory nie sa juz problemem,
a i 64-bit sie spotyka :-)
No i zazwyczaj klient chce glosnosc regulowac, wiec i tak trzeba
mnozyc.
Zauwazcie ze od dluzszego czasu Windows tak robi - miksuje wszystko
cyfrowo, a nierzadko jeszcze czestotliwosc samplowania zmienia.
J.