Nowe posty

Autor Wątek: Jak Pulseaudio sprawdza natężenie dźwięku?  (Przeczytany 622 razy)

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 131
    • Zobacz profil
Jak Pulseaudio sprawdza natężenie dźwięku?
« dnia: 2018-11-02, 16:34:03 »
Jak uruchomicie PulseAudio, zakładka Urządzenia wyjściowe i przykładowo słuchacie muzyki. Pojawia się jeden pasek - głośność którą można regulować oraz zaraz pod nią pasek którym się wypełnia i sygnalizuje natężenie dźwięku w trakcie odtwarzania. Potrzebuje polecenie które po wpisaniu w konsoli wyświetli mi stan tego właśnie paska. Oczekuję, że polecenie zwróci mi wartość liczbową obojętnie czy to będą dB czy coś innego.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2064
  • 1709
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #1 dnia: 2018-11-02, 17:12:52 »
Sprawdzales komendy pactl ?
man pactl  oraz
http://blog.chapagain.com.np/ubuntu-linux-increase-decrease-volume-from-command-line-keyboard-shortcut/


Edytwane
https://unix.stackexchange.com/questions/208784/command-line-per-application-volume-maybe-amixer-or-pactl/209047


Edytwane
Czytajac man pactl  http://manpages.ubuntu.com/manpages/precise/man1/pactl.1.html   ( w przegladarce lepiej widac )
Zobaczylem ze sa 4 opcje ze zmiana volume
Cytuj

set-sink-volume SINK VOLUME
...
set-source-volume SOURCE VOLUME
...
set-sink-input-volume INPUT VOLUME
...
set-source-output-volume OUTPUT VOLUME
i Kazda z nich jest lista czegos
Cytuj
$ pactl list x
Specify nothing, or one of: modules, sinks, sources, sink-inputs, source-outputs, clients, samples, cards
Przykladowo ja mam uruchomiony Firefox i w nim Youtube
Wiec szukam cos na temat Firefoxa
Cytuj
pactl list sink-inputs | grep firefox
      application.process.binary = "firefox"
      application.icon_name = "firefox"
No jest, to zobaczmy co jest w srodku.
pactl list sink-inputs
Dwa wiersze sie mi wyróżniają
Sink Input #0
                ...
Sink Input #175
                 ...
( Firefox jest pod wierszem Sink Input #175 )

No to sprobujmy
$ pactl set-sink-input-volume 175 100%
No i dziala ,  piosenka na Youtube gra na 100%,  nastepna juz nie bedzie i zmieni sie jej numer "Sink Input".


Edytowane
$ pactl list sink-inputs  | grep Volume
Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
Volume: front-left: 52921 /  81% / -5.57 dB,   front-right: 52921 /  81% / -5.57 dB
Z tego co zauwalem, to u mnie wartosc dzwieku w zaleznosci od utworu jest zmienna i nie wiem od czego ona zalezy.
« Ostatnia zmiana: 2018-11-02, 21:05:17 wysłana przez 1709 »
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 131
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #2 dnia: 2018-11-04, 00:04:02 »
Dzięki chociaż mi chodzi o coś innego... Tłumacząc dokładniej. Moja żona na player.pl czasem ogląda różne pierdoły. W trakcie oglądania pojawiają się reklamy, średnie 3 - 4 reklamy. Problem polega na tym, że włączy serial i ustawi głośność... włącza się jedna reklama i głośność tej reklamy jest mniej więcej taka sama jak głośność serialu ale po chwili włącza się druga reklama i wyje dwa razy głośniej :P Delikatnie mówiąc jest do denerwujące... Potrzebuję stworzyć skrypt który będzie działał w tle i sprawdzał poziom głośności żeby w razie gdy komputer "usłyszy", że dana reklama czy cokolwiek innego jest nagle dużo głośniejsze to zmniejszy głośność.

Stworzenie skryptu nie jest problemem ale szukam sposobu na sprawdzenie natężenia dźwięku. Robiłem próbę i gdy włączę jeden z seriali na player.pl i włączę pulseaudio to ten pasek pokazuje natężenie dźwięku, kiedy włącza się jedna z tych głośniejszych reklam, pasek mocno się przesuwa w prawo (pasek natężenia dźwięku, nie pasek głośności)

Kiedy już będę mógł sprawdzić natężenie będę mógł wykorzystując te komendy zmienić poziom głośności

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2064
  • 1709
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #3 dnia: 2018-11-04, 01:57:49 »
Cytuj
Stworzenie skryptu nie jest problemem
Albo nie przeczytales do samego konca, albo jednak to dla Ciebie problem.


Edytowane

Poniewaz dla mnie problemem jest wygrepowanie "Sink" i "firefox" z pactl , wiec sprobowalem pacmd
$  pacmd list-sink-inputs | grep -i 'index\|volume\|firefox'
    index: 0
volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
    index: 225
volume: front-left: 53227 /  81% / -5.42 dB,   front-right: 53227 /  81% / -5.42 dB
application.process.binary = "firefox"
application.icon_name = "firefox"
    index: 237
volume: front-left: 37190 /  57% / -14.76 dB,   front-right: 37190 /  57% / -14.76 dB
application.process.binary = "firefox"
application.icon_name = "firefox"

I bym sie nie bawil tylko odrazu dla ostatniej wartosci przypisal dana wartosc dzwieku, w tym przypadku 50%
pactl set-sink-input-volume $(pacmd list-sink-inputs | grep  'index' | tail -1 | awk '{print $2}') 50%


Edytowane
O taki najprostszy skrypt.
#!/bin/bash
# Skrypt do ściszania reklam w Firefox-ie i każdego kolejnego otwartego okna lub odtwarzacza. ( w Firefoxie )
# Po prostu ścisza drugi i kolejny odtwarzacz w Firefoxie, oprócz pierwszego.
# Ten skrypt nie odróżnia co ścisza, należy to wziąć pod uwagę, lub dostosować skrypt o własnych potrzeb.
# Zbyt głośniej żony, dzieci oraz miauczącego za oknem kota  skrypt niestety nie potrafi jeszcze ściszyć ;)

Funkcja_1(){
while :
do
LICZBA=$(pacmd list-sink-inputs | grep firefox | wc -l)
if [[ "$LICZBA" -gt "2" ]]; then
echo "LICZBA = $LICZBA"
pactl set-sink-input-volume $(pacmd list-sink-inputs | grep  'index' | tail -1 | awk '{print $2}') 50%
fi
echo " [Wcisnij CTRL+C by zatrzymac] "
sleep 4
done
}

/opt/firefox/firefox & Funkcja_1

Jezeli masz ochote ulepszyc skrypt to powodzenia. :)
I zgłoś problem developerom Pulse Audio
No bo przeciez to nie jest normalne ze jak czlowiek chce sobie posluchac reklamy,
albo gdy odtworzy 100 otwarzaczy naraz  https://www.dobreprogramy.pl/Linux-jest-w-stanie-uruchomic-100-aplikacji-jednoczesnie.-Co-na-to-Windows,News,59019.html
To kazdy otwarzacz gra jak chce ...
Moj kolega przechodzac na Linuxa tez na to marudził i szukal aplikacji w ktorej moze ustawic dla kazdej aplikacji, bo w Windowsie sie da.
Ale zgłosić developerom Linuxa chyba nie zgłosił.
« Ostatnia zmiana: 2018-11-05, 00:10:07 wysłana przez 1709 »
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 131
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #4 dnia: 2018-11-04, 15:35:56 »
Ale to dalej nie rozwiązuje problemu. Polecenie które podałeś ustawia na stałe głośność np 50% dla np. firefox'a. OK reklama jest teraz o 50% cichsza ale sam serial też więc co robi moja żona? podgłasza...

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2064
  • 1709
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #5 dnia: 2018-11-04, 15:39:03 »
Cytuj
ale sam serial też więc co robi moja żona? podgłasza...

Moze robisz cos zle, u mnie dziala.

PS. A ścieżkę do Firefoxa musisz zmienic na wlasna, bo ja sam wybieralem miejsce istalacji, a gdzie ty masz swojego zainstalowanego, to nie wiem.
( - w powyzszym skrypcie, jesli bys chcial testowac )


Edytowane
Albo cos z Firefoxem lub Pulse Audio nie tak, nie widze u Ciebie "pacmd list-sink-inputs | grep -i 'index\|volume\|firefox" to ciezko stwierdzic.
Jak cos to zawsze mozesz tez przetestowac Firefox portable.


Edytowane

Skrypt wyżej nie będzie działać, jeżeli reklama się otworzyła jeszcze przed  odtworzeniem filmiku.
Ponieważ skrypt ścisza tylko nowo uruchomione wideo, jeśli jest ich uruchomionych więcej niż jeden.
Wiec skrypt działa tylko gdy reklama się pojawi podczas odtwarzania wideo.


Edytowane
Skrypt mógłby ściszać wszystkie video w Firefoxie, ale to nie ma sensu,
poniewaz skrypt ustawia dzwiek nie zaleznie od ustawionego paska w wideo.
Nie wiem, kombinuj, moze cos lepszego wymyslisz :)
« Ostatnia zmiana: 2018-11-05, 00:05:57 wysłana przez 1709 »
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122

Offline Zagiewa

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 131
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #6 dnia: 2018-11-05, 12:40:14 »
Cytuj
Moze robisz cos zle, u mnie dziala.
U mnie też ale dla np YouTube tak samo ja u Ciebie. Ale próbowałeś z player.pl? Włącz sobie player.pl uruchom np. kuchenne rewolucje :P ustaw sobie poziom głośności jaki chcesz i oglądaj aż włączą się reklamy, reklamy uruchamiają się w tym samym oknie, w tym samym odtwarzaczu, są po prostu integralną częścią programu. Sprawdź czy poziom głośności wszystkich reklam które będą lecieć będą tak samo głośne jak "kuchenne rewolucje". Sprawdź na słuch nie na pasku bo pasek zostanie na takim poziomie jakim go ustawiłeś. Po prostu tak jest przygotowana sama reklama żeby Cie wkur... głośnością :)

[Zagiewa@localhost ~]$ pacmd list-sink-inputs 
1 sink input(s) available.
    index: 14
driver: <protocol-native.c>
flags: START_CORKED
state: RUNNING
sink: 0 <alsa_output.pci-0000_00_1b.0.analog-stereo>
volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% / 0,00 dB
        balance 0,00
muted: no
current latency: 55,33 ms
requested latency: 23,22 ms
sample spec: float32le 2 k 44100 Hz
channel map: front-left,front-right
             Stereo
resample method: copy
module: 12
client: 24 <Chrome>
properties:
application.icon_name = "google-chrome"
media.name = "Playback"
application.name = "Chrome"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "32"
application.process.id = "4361"
application.process.user = "Zagiewa"
application.process.host = "localhost.localdomain"
application.process.binary = "chrome"
application.language = "pl_PL.utf8"
window.x11.display = ":0.0"
application.process.machine_id = "7b41b35af6a2427b8962ee4e3682e8be"
application.process.session_id = "2"
module-stream-restore.id = "sink-input-by-application-name:Chrome"

Obecnie jak widzisz mam ustawione na 100% ale to bez znaczenia bo zmieniając na wspomniane nawet 50% kuchenne rewolucje wtedy są też o 50% cichsze o czym wspominałem.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2064
  • 1709
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #7 dnia: 2018-11-05, 14:52:33 »
Cytuj
Włącz sobie player.pl
Na moim linuxie nie dziala. Moze kiedys jak bede na innym to sprawdze.
Tobie przydałby się filtr / equalizer do automatycznej regulacji poziomu dzwieku.
Pisz "im", moze ktos ruszy 4 litery i cos zrobi ...
- moze player.pl wyrowna poziom dzieku ?
- moze ktorys z developerow Pulse Audio zrobi porządny equalizer z filtrami dźwięku na Linuxa ?
- moze ktorys z developerow od dzwieku Ci pomoze ?  https://www.bobulous.org.uk/misc/Replay-Gain-in-Linux.html
- moze da sie odtwarzać wideo  w jakims odtwarzaczu, który taki filtr posiada
- moze znajdziesz jakies inne rozwiazania
https://unix.stackexchange.com/questions/379819/how-do-i-automatically-adjust-volume-according-to-the-sound-around-me
https://askubuntu.com/questions/95716/automatically-adjust-the-volume-based-on-content
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122

Offline marcin'82

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 248
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #8 dnia: 2018-11-05, 17:34:17 »
Cytuj
- moze ktorys z developerow Pulse Audio zrobi porządny equalizer z filtrami dźwięku na Linuxa ?

Czy autor wątku ma w repozytorium pakiet pod nazwą pulseeffects?
marcin82

Offline Andrzej J

  • Users
  • Guru
  • *****
  • Wiadomości: 697
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #9 dnia: 2018-11-08, 22:48:03 »
Odpowiem Ci tak, tvn w tym playerze decyduje o głośności reklam , czy to window, czy linux z czymkolwiek (pulseaudio).
Ja zaiinstalowałem na żony kompie kodi + polskie wtyczki,i nie mam reklam i problemu z pulseaudio czy czymkolwiek niezależnie od systemu. Jedynie nauczyłem uruchamiać kodi i poruszać się w tym programie....Pozdrawiam
« Ostatnia zmiana: 2018-11-09, 10:05:40 wysłana przez Andrzej J »

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2064
  • 1709
    • Zobacz profil
Odp: Jak Pulseaudio sprawdza natężenie dźwięku?
« Odpowiedź #10 dnia: 2018-11-09, 11:59:36 »
Kodi chyba posiada filtr ReplayGain
https://kodi.wiki/view/File:Player_music2.JPG
https://forum.kodi.tv/showthread.php?tid=283558
Sek tylko w tym aby mógł zeskanować album / wideo przed jego odtworzeniem, bez tego może nie zadziałać.
Cytuj
It's not applied "On The Fly" as the file plays, since the "Album Gain" value will only store the peak volume of the file as a whole, as a pose to the tracks contained therein.
BUT, the peak volume should be as near as damn it to the set ReplayGain target set in the settings (default: 89db industry standard).

PS.  Andrzej J Juz nawet nie chodzi o same reklamy. Jak się ogląda źle zmontowane wideo zrobione z krótkich filmików, to człowieka tez może wkurzyć, ze co chwile musi machać suwakiem od głośności.
« Ostatnia zmiana: 2018-11-09, 12:32:49 wysłana przez 1709 »
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122