annotate volume_linux.py @ 1:04c8a1b3976b

volume r/w on linux+osx
author drewp@bigasterisk.com
date Fri, 03 Mar 2023 21:24:53 -0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
1 from pulsectl_asyncio import PulseAsync
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
2
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
3 _pulse = None
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
4
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
5
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
6 async def _init():
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
7 global _pulse
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
8 if _pulse is not None:
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
9 return
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
10 _pulse = PulseAsync('racc')
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
11 await _pulse.connect()
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
12
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
13
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
14 async def _get_sink():
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
15 [sink] = [
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
16 s for s in (await _pulse.sink_list())
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
17 if s.description == 'Built-in Audio Analog Stereo'
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
18 ]
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
19 return sink
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
20
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
21
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
22 async def get_volume():
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
23 await _init()
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
24 return (await _get_sink()).volume.value_flat
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
25
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
26
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
27 async def set_volume(v: float):
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
28 await _init()
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
29 sync = await _get_sink()
04c8a1b3976b volume r/w on linux+osx
drewp@bigasterisk.com
parents:
diff changeset
30 await _pulse.volume_set_all_chans(sink, v)