🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.linux.programowanie
4 messages
4 total messages Started by Borneq Mon, 13 Jul 2015 05:06
Jak odczytać i zmienić systemową głośność?
#72731
Author: Borneq
Date: Mon, 13 Jul 2015 05:06
6 lines
1305 bytes
Mam program w Javie, który przez JNI będzie wołał DLL w C++ która będzie 
zmieniała systemową głośność. Dla Windows znalazłem to. Dla Linuxa jest 
informacja że jest biblioteka ALSA. Czy dołączyć ją jakoś do mojej DLL, 
czy też jest inny sposób? ALSA jest dość rozbudowana, a ja nie 
potrzebuję tyle, wystarczy getVolumne,setVolume i mute on/off.
(choć być może kiedyś przyjdzie czas na mikrofon, balans lewy-prawy itd.)
Re: Jak odczytać i zmienić systemową głośność?
#72732
Author: Borneq
Date: Mon, 13 Jul 2015 06:31
14 lines
1623 bytes
W dniu 2015-07-13 o 07:06, Borneq pisze:
> Mam program w Javie, który przez JNI będzie wołał DLL w C++ która będzie
> zmieniała systemową głośność. Dla Windows znalazłem to. Dla Linuxa jest
> informacja że jest biblioteka ALSA. Czy dołączyć ją jakoś do mojej DLL,

Jest biblioteka Cross-Platform o nazwie PortAudio, tam jest funkcja:
/*
Px_OpenMixer() returns a mixer which will work with the given PortAudio
audio device. Pass 0 as the index for the first (default) mixer.
*/
PxMixer *Px_OpenMixer( void *pa_stream, int i );

Tylko nie wiem, co za strumień trzeba podać, bo przy zmianie głośności 
nie potrzeba żadnego strumienia.
Re: Jak odczytać i zmienić systemową głośność?
#72733
Author: grapeli23
Date: Mon, 13 Jul 2015 11:17
10 lines
1640 bytes
Dnia 13.07.2015 Borneq <borneq@antyspam.hidden.pl> napisał/a:
> Mam program w Javie, który przez JNI będzie wołał DLL w C++ która będzie 
> zmieniała systemową głośność. Dla Windows znalazłem to. Dla Linuxa jest 
> informacja że jest biblioteka ALSA. Czy dołączyć ją jakoś do mojej DLL, 
> czy też jest inny sposób? ALSA jest dość rozbudowana, a ja nie 
> potrzebuję tyle, wystarczy getVolumne,setVolume i mute on/off.
> (choć być może kiedyś przyjdzie czas na mikrofon, balans lewy-prawy itd.)


https://github.com/tinyalsa/tinyalsa
Re: Jak odczytać i zmienić systemową głośność?
#72734
Author: Pit
Date: Mon, 13 Jul 2015 14:30
22 lines
2492 bytes
Dnia 13.07.2015 Borneq <borneq@antyspam.hidden.pl> napisał/a:
> Mam program w Javie, który przez JNI będzie wołał DLL w C++ która będzie 
> zmieniała systemową głośność. Dla Windows znalazłem to. Dla Linuxa jest 
> informacja że jest biblioteka ALSA. Czy dołączyć ją jakoś do mojej DLL, 
> czy też jest inny sposób? ALSA jest dość rozbudowana, a ja nie 
> potrzebuję tyle, wystarczy getVolumne,setVolume i mute on/off.
> (choć być może kiedyś przyjdzie czas na mikrofon, balans lewy-prawy itd.)

W DataLine gdy robisz getControl(_) aby otrzymać kontroler parametru
miksera, to jako typ kontrolera można podać FloatControl.Type.MASTER_GAIN
to daje możliwość regulowania "głównej głośności" ale uwaga, po pierwsze
może być tak, że proces nie uzyska uprawnień do tego parametru (pod Linuxem
rzecz jasna) a po drugie raczej nie powinno się dawać tego typu możliwości
z programu. Po to jest "master_gain" w systemie aby użytkownik mógł sobie
globalnie regulować głośność dźwięków z wszystkich aplikacji (lub wyłączyć
dźwięk w ogóle) a nie po to aby mu jakaś pojedyncza aplikacja "broiła".
Aplikacje uruchomione z SecurityManagerem (na przykład applety, aplikacje
odpalane przez Java WebStart czy nawet taka standalone, ale z
SecurityManagerem) domyślnie nie będą miały uprawnień do sterowania
globalną głośnością (wyobrażasz sobie na przykłąd stronę internetową, na
której jest applet w Javie, który daje "gałki w prawo" i odgrywa jakieś
dźwięki mimo że je w mikserze Windowsa wyciszyłeś czy wręcz wyłączyłeś? :D)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads