Giter VIP home page Giter VIP logo

mopidy-alsamixer's Introduction

Mopidy-ALSAMixer

Latest PyPI version CI build status Test coverage

Mopidy extension for ALSA volume control.

Maintainer wanted

Mopidy-ALSAMixer is currently kept on life support by the Mopidy core developers. It is in need of a more dedicated maintainer.

If you want to be the maintainer of Mopidy-ALSAMixer, please:

  1. Make 2-3 good pull requests improving any part of the project.

  2. Read and get familiar with all of the project's open issues.

  3. Send a pull request removing this section and adding yourself as the "Current maintainer" in the "Credits" section below. In the pull request description, please refer to the previous pull requests and state that you've familiarized yourself with the open issues.

    As a maintainer, you'll be given push access to the repo and the authority to make releases to PyPI when you see fit.

Dependencies

  • A Linux system using ALSA for audio playback.
  • pyalsaaudio. Bindings for using the ALSA API from Python. The package is available as python-alsaaudio in Debian/Ubuntu.

Installation

Install by running:

sudo python3 -m pip install Mopidy-AlsaMixer

See https://mopidy.com/ext/alsamixer/ for alternative installation methods.

Configuration

To use Mopidy-AlsaMixer the audio/mixer configuration value must be set to alsamixer in the Mopidy configuration file:

[audio]
mixer = alsamixer

The default Mopidy-AlsaMixer configuration will probably work for most use cases. If not, the following configuration values are available:

  • alsamixer/device: Which soundcard should be used, specified by its string alias. Defaults to default.
  • alsamixer/card: Which soundcard should be used, specified by its index. Numbered from 0 and up. If specified, alsamixer/device is ignored.
  • alsamixer/control: Which ALSA control should be used. Defaults to Master. Other typical values includes PCM. Run the command amixer scontrols to list available controls on your system.
  • alsamixer/min_volume and alsamixer/max_volume: Map the Mopidy volume control range to a different range. Values are in the range 0-100. Use this if the default range (0-100) is too wide, resulting in a small usable range for Mopidy's volume control. For example try min_volume = 30 and max_volume = 70 to map Mopidy's volume control to the middle of ALSA's volume range.
  • alsamixer/volume_scale: Either linear, cubic, or log. The cubic scale is the default as it is closer to how the human ear percieves volume, and matches the volume scale used in the alsamixer program.

Example alsamixer section from the Mopidy configuration file:

[alsamixer]
card = 1
control = PCM
min_volume = 0
max_volume = 100
volume_scale = cubic

Project resources

Credits

mopidy-alsamixer's People

Contributors

adamcik avatar jodal avatar karlvr avatar kingosticks avatar st8ed avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mopidy-alsamixer's Issues

[Pull Request] id add soundcard

Hi, can't add pull requests (don't know why).
Can you add the possibility to set card with alsa ident instead (or in addition to) card numbers. On multiple usb dac configuration, usb order may cause problems on alsa detect (they change every reboot). Alsa detect cards in usb discover order. So, numbers can't be used in some cases...
If you can set this "issue" in request, it would be great...
Thx.

Card chosing

[audio]
mixer = software
mixer_volume = 75
output = alsasink
#mixer= alsamixer
buffer_time =

[alsamixer]
card = 2
control = Master
min_volume = 0
max_volume = 100
volume_scale = cubic

The change of card hasn't any affect
I can choose 0,1,2 every time playing over Laptops Box

System Arch Linux with Kernel 5.13.8-arch1-1
Also if i choose mixer = alsamixer or software has only effect in the iris panel

Config keys unknown

On rpi 3 running mopidy/mopidy-alsamixer as a service and installed via apt.

min_volume, max_volume, and volume_scale are all causing a warning and disabling the extension. If I remove those config keys then mopidy will work but without any volume controls.

Is this the result of some known configuration error or a bug? The rest of my configuration file is default besides the audio.

image

Alsamixer Raspberry Pi OS volume control not working

Since the Raspbery Pi OS update 28 May the Alsamixer is no longer working for volume control.

Before May 28 the audio device was "one" card with multiple devides:

pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 7/7
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: ALSA [bcm2835 ALSA], device 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1]
Subdevices: 1/1
Subdevice #0: subdevice #0

But now it is multiple cards with one device:

pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
Subdevices: 4/4
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
card 1: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 4/4
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3

My current config as before the OS update:

/etc/mopidy/mopidy.conf

[logging]
config_file = /etc/mopidy/logging.conf
debug_file = /var/log/mopidy/mopidy-debug.log

[audio]
mixer = alsamixer
#mixer = software
output = alsasink
mixer_volume = 100

[alsamixer]
card = 0
control = PCM
min_volume = 30
max_volume = 100
volume_scale = cubic

[http]
enabled = true
hostname = 0.0.0.0
port = 6680
static_dir =
zeroconf = Mopidy HTTP server on $hostname
allowed_origins =
csrf_protection = false

[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600
password =
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy MPD server on $hostname
command_blacklist = listall,listallinfo
default_playlist_scheme = m3u

[file]
enabled = true
media_dirs = /home/pi/Music
follow_symlinks = false
metadata_timeout = 1000

Testing using CLI and mpc with the mixer set to alsamixer, the volume is n/a
pi@raspberrypi:~ $ mpc
volume: n/a repeat: off random: off single: off consume: off

And trying to set volume
pi@raspberrypi:~ $ mpc volume 10
mpd error: problems setting volume

But using mixer = software it works. So it seems mopidy-alsamixer is either no allowed to interface with alsa or something is different. I did try giving Mopidy user access to video and audio groups

sudo adduser mopidy video
sudo adduser mopidy audio

Install error

Using Linux 4.15.0-3-amd64 #1 SMP Debian 4.15.17-1

pip install Mopidy-ALSAMixer

Collecting Mopidy-ALSAMixer
Using cached https://files.pythonhosted.org/packages/8d/1e/5c5602a3f3741e083678f013e8ba3fa710d1b62888837bc5f63c58c41ee1/Mopidy_ALSAMixer-1.1.1-py2.py3-none-any.whl
Collecting pyalsaaudio (from Mopidy-ALSAMixer)
Using cached https://files.pythonhosted.org/packages/52/b6/44871791929d9d7e11325af0b7be711388dfeeab17147988f044a41a6d83/pyalsaaudio-0.8.4.tar.gz
Requirement already satisfied: Pykka>=1.1 in /usr/lib/python2.7/dist-packages (from Mopidy-ALSAMixer) (1.2.1)
Requirement already satisfied: setuptools in /usr/local/lib/python2.7/dist-packages (from Mopidy-ALSAMixer) (38.4.0)
Requirement already satisfied: Mopidy>=2.0 in /usr/lib/python2.7/dist-packages (from Mopidy-ALSAMixer) (2.1.0)
Installing collected packages: pyalsaaudio, Mopidy-ALSAMixer
Running setup.py install for pyalsaaudio ... error
Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-install-P2q4mD/pyalsaaudio/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-record-zb90Cg/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_ext
building 'alsaaudio' extension
creating build
creating build/temp.linux-x86_64-2.7
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-jgBwco/python2.7-2.7.15=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c alsaaudio.c -o build/temp.linux-x86_64-2.7/alsaaudio.o
alsaaudio.c:14:10: fatal error: Python.h: No such file or directory
#include "Python.h"
^~~~~~~~~~
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

----------------------------------------

Command "/usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-install-P2q4mD/pyalsaaudio/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-record-zb90Cg/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-P2q4mD/pyalsaaudio/

fail to install via pip

cant install via pip

Running setup.py install for pyalsaaudio
usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: -c --help [cmd1 cmd2 ...]
or: -c --help-commands
or: -c cmd --help

error: option --single-version-externally-managed not recognized
Complete output from command /usr/bin/python -c "import setuptools;__file__='/root/build/pyalsaaudio/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-jLV_OT-record/install-record.txt:
usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]

or: -c --help [cmd1 cmd2 ...]

or: -c --help-commands

or: -c cmd --help

error: option --single-version-externally-managed not recognized


Rolling back uninstall of pyalsaaudio
Command /usr/bin/python -c "import setuptools;file='/root/build/pyalsaaudio/setup.py';exec(compile(open(file).read().replace('\r\n', '\n'), file, 'exec'))" install --single-version-externally-managed --record /tmp/pip-jLV_OT-record/install-record.txt failed with error code 1 in /root/build/pyalsaaudio
Storing complete log in /root/.pip/pip.log
root@raspberrypi:~#

Support selecting cards based on card name

Numeric indexing of cards is sometimes hard to get persistent across reboots. Please also allow to use card names instead of the index for selecting the device to change.

Unpredictable results when getting mute state

I can't seem to get the mute/unmute functionality to work on my Raspberry Pi setup, using the latest versions of the Mopidy-Mobile and Mopidy-Musicbox-Webclient extensions.

The buttons do not respond when you click on them, and there is nothing in the logs.

Looking at the implementation of get_mute() I suspect that the method returns None for some reason but am not sure why.

Perhaps a first step would be to update the implementation so that all exceptions are propagated to core.mixer.MixerController so that they can be logged?

MixerError exceptions are missing the full error descriptions

When you forget to configure alsamixer/control = Headphone for your new install on a Raspberry Pi you get a very unhelpful error message:

mopidy.commands Mixer (AlsaMixer) initialization error: Headphone

Instead of the more descriptive message we intended to have:

mopidy.commands Mixer (AlsaMixer) initialization error: Could not find ALSA mixer control Master on card 2. Known mixers on card 2 include: Headphone

This is due to us trying to concatenate string literals with an expression to produce the comma-separated list of known mixers. This happens for both the soundcard index and mixer control.

Alsa mixer can't find control due to trailing space

Hi !

I can reproduce the bug from here
https://discourse.mopidy.com/t/alsa-mixer-can-find-control-due-to-trailing-space/4195
I don't know why it has not been posted here instead, nevermind

image

I can't set my DAC as control mixer: both 'NuPrime DAC-10' and 'NuPrime DAC-10 ' with a trailing space as control in alsamixer section leads to mopidy output error, then close

Maybe more a mopidy rather than a plugin issue, tell me i will try to help if posting elsewhere is needed

Thx for your work

Bug with disabled on-board audio using an external sound card

Hey,

I have been experiencing a bug with mopidy-alsamixer that occurs when you disable the onboard audio device on a raspberrypi.

The issue is in mixer.py, which assumes that audio devices start at 0. However, my external sound devicee gets ID 1, thus assuming IDs start at 0 breaks the mixer.

Sep 23 14:54:21 arcam mopidy[2684]: ERROR    Mixer (AlsaMixer) initialization error: Could not find ALSA soundcard with index 1. Known soundcards include: 0 (DragonFly)

The list of my audio devices looks like:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: DragonFly [AudioQuest DragonFly], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Setting alsamixer/card = 0 would bypass mopidy-alsamixer's check completely and cause an ALSAAudioError as the ID is not actually present.

For now I commented out the marked lines in mixer.py (see above) to allow me to use card = 1 without having two cards in the system and everything is working as intended.

Volume control via mpc / ncmpc is often ignored

I already wrote a forum query for this, but I didn't get any reaction. I still consider this a bug:
https://discourse.mopidy.com/t/volume-control-via-mpc-ncmpc-sometimes-is-ignored/3298

mopidy/stable,now 2.2.2-1 all
mopidy-alsamixer/stable 1.0.3-3 all

I use volume control via mpc from remote machines. I always send commands “volume -5” and “volume +5”. But sometimes, these commands seem to be ignored.
Even when I log in to the mopidy machine and try to control the volume via local ncmpc, volume control commands sometimes are ignored (I have alsamixer open in parallel to see if there are changes).
Also, what from my point of view really should’nt happen, is a misalignment between alsamixer’s volume and the volume reported by ncmpc. For example,
alsamixer says 76%, ncmpc says 84%.
I push the right cursor key for “louder” in ncmpc -> nothing happens.
I push it again -> nothing happens.
I push it a third time: the sound card as reported by alsamixer is spontaneously set to 80%, volume in ncmpc is reported to be 87%.
Iset the alsamixer min_/max_ volume values to 0 and 100, scale to linear, so there shouldn’t be problems.

To conclude, I see the following pattern:
For example, when repeatedly issuing “vol +”-commands, I see that a volume change is only applied every second/third time and then with 2 - 3% mostly.

Nevertheless, there is a discrepance between the volume percentage reported to mpd-clients (mpc / ncmpc) and the volume which is indeed set in alsamixer.

From my point of view, I consider this a bug. However, no error messages or warnings are logged in the mopidy log when controlling the volume.

Remove dependency on gi.GstAudio

Doing some exploratory work on issue #6, I noticed we're importing gi.repository.GstAudio. This requires installation and import of Gtk, Cairo and a bunch of other Gnome-related libs that may not be applicable on a headless device.

Looking deeper, it appears we're only using GstAudio.StreamVolume.convert_volume() method to convert between linear and cubic volumes. The actual implementation in GstAudio is pretty straightforward in this case:

case GST_STREAM_VOLUME_FORMAT_CUBIC:
      g_return_val_if_fail (val >= 0.0, 0.0);
      switch (to) {
        case GST_STREAM_VOLUME_FORMAT_LINEAR:
          return val * val * val;
        case GST_STREAM_VOLUME_FORMAT_CUBIC:
          return val;
        case GST_STREAM_VOLUME_FORMAT_DB:
          return 3.0 * 20.0 * log10 (val);
      }

and the reverse (Linear to Cubic):

case GST_STREAM_VOLUME_FORMAT_LINEAR:
      g_return_val_if_fail (val >= 0.0, 0.0);
      switch (to) {
        case GST_STREAM_VOLUME_FORMAT_LINEAR:
          return val;
        case GST_STREAM_VOLUME_FORMAT_CUBIC:
          return pow (val, 1 / 3.0);
        case GST_STREAM_VOLUME_FORMAT_DB:
          return 20.0 * log10 (val);
      }

I propose removing the dependency and imports, and implementing this directly.

source: https://github.com/jojva/gst-plugins-base/blob/master/gst-libs/gst/audio/streamvolume.c

edit: updated to include the reverse case.

USB/DAC Device without mixer controls

Hi,

i was struggling to set up my Teac AH-01 (Amp with async usb dac), because it offered no mixer controls. Mopidy wouldn´t start with PCM or Master Setting. I could only work around it, to set the alsamixer to the internal soundcard of my raspberry pi (0), while specifying the Teac as alsasink output device.

software mixer would work as well of course, but with significantly inferior sound quality.

Not a big issue, but maybe would help others setting it up...Thx!

Volume getter and setter behave inconsistently

I am using mopidy as a backend to a music box project written in node js.

Problem: When using the alsamixer plugin, getting and setting volume behaves inconsistently: e.g. if I set the volume to a value of 50, I get a value of 49 on a subsequent check. This only happens with alsamixer, not with mopidy softwaremixer.

Expected behavior: setting the volume to 50 should yield a value of 50 on a subsequent get volume.

Volume scale issue

Hi,

I notice that the scale of the volume control is a bit odd when using the ALSA mixer to control the volume control of the Raspberry Pi's internal sound card. For me, almost all of the variability in audible volume occurs in the top 15% of the volume range, and it is also inconsistent with the volume reported through other applications like shairport (another component of pimusicbox, which is the context I am using mopidy in).

I believe this is due to a change to the way amixer reports volume in ALSA. The scale used by mopidy appears to be the one amixer uses, i.e. a simple linear scale of the raw values from the card. By contrast, alsamixer uses a scale that represents human perception volume instead (which I believe is more correct from a user-driven application like mopidy). See this thread for details:
https://bbs.archlinux.org/viewtopic.php?pid=1217759

I guess any change would need to be in the python alsa binding library.

Cant find mixer control name

hy!
when i software playback it works. I cant enable alsamixer. I have device number 1 and output of amixer controls is:

numid=3,iface=MIXER,name='Mic Capture Switch'
numid=4,iface=MIXER,name='Mic Capture Volume'
numid=5,iface=MIXER,name='Speaker Playback Switch'
numid=6,iface=MIXER,name='Speaker Playback Volume'
numid=1,iface=PCM,name='Capture Channel Map'
numid=2,iface=PCM,name='Playback Channel Map'

I have the following errors on trying to set control in mopidy.conf:

2017-06-25 10:33:32,951 - ERROR Mixer (AlsaMixer) initialization error: Could not find ALSA mixer control PCM on card 1. Known mixers on card 1 include: Speaker, Mic
2017-06-25 10:35:41,424 - ERROR Mixer (AlsaMixer) initialization error: Could not find ALSA mixer control PCM on card 1. Known mixers on card 1 include: Speaker, Mic
2017-06-25 10:39:13,573 - ERROR Mixer (AlsaMixer) initialization error: Could not find ALSA mixer control MIXER on card 1. Known mixers on card 1 include: Speaker, Mic
2017-06-25 10:40:43,336 - ERROR Mixer (AlsaMixer) initialization error: Could not find ALSA mixer control 'Speaker Playback Volume' on card 1. Known mixers on card 1 include: Speaker, Mic
2017-06-25 10:41:53,141 - ERROR Mixer (AlsaMixer) initialization error: Could not find ALSA mixer control 'Speaker' on card 1. Known mixers on card 1 include: Speaker, Mic
2017-06-25 10:44:31,552 - ERROR Mixer (AlsaMixer) initialization error: Could not find ALSA mixer control Master on card 1. Known mixers on card 1 include: Speaker, Mic

What can i do?
Thanks

Release v 1.1.0 is not backward compatible

The changes introduced by PR #9 do not appear to be backward compatible with Raspbian Wheezy installations still running Mopidy 1.0 and gstreamer-0.10 (i.e. everyone running MusicBox 0.6):

2017-02-14 07:55:54,066 - INFO     Loading config from command line options
2017-02-14 07:55:58,216 - INFO     Enabled extensions: moped, stream, spotify_tunigo, gmusic, softwaremixer, file, musicbox_webclient, websettings, tunein, mopify, podcast-itunes, internetarchive, local, alarmclock, mpd, http, local-images, dirble, podcast, alsamixer, mobile, m3u, youtube, simple-webclient, pandora, local-sqlite
2017-02-14 07:55:58,220 - INFO     Disabled extensions: spotify, scrobbler, subsonic, somafm, audioaddict, soundcloud
2017-02-14 07:55:59,224 - ERROR    Extension alsamixer failed during setup, this might have left the registry in a bad state.
Traceback (most recent call last):
  File "/var/lib/git/mopidy/mopidy/__main__.py", line 145, in main
    extension.setup(registry)
  File "/usr/local/lib/python2.7/dist-packages/mopidy_alsamixer/__init__.py", line 32, in setup
    from mopidy_alsamixer.mixer import AlsaMixer
  File "/usr/local/lib/python2.7/dist-packages/mopidy_alsamixer/mixer.py", line 10, in <module>
    from gi.repository import GstAudio
  File "/usr/lib/python2.7/dist-packages/gi/__init__.py", line 27, in <module>
    from ._gi import _API, Repository
ImportError: could not import gobject (error was: ImportError('When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject".',))
2017-02-14 07:55:59,327 - INFO     Setup Mopify
2017-02-14 07:56:08,901 - ERROR    Did not find unique mixer "alsamixer". Alternatives are: software, none
2017-02-14 07:57:49,127 - INFO     Starting Mopidy 1.1.2
2017-02-14 07:57:53,868 - INFO     Loading config from builtin defaults
2017-02-14 07:57:54,087 - INFO     Loading config from /home/mopidy/.config/mopidy/mopidy.conf
2017-02-14 07:57:54,187 - INFO     Loading config from command line options

A brief search seemed to indicate that this has something to do with trying to use static gst bindings combined with dynamic PyObject bindings at the same time: https://pygobject.readthedocs.io/en/latest/porting.html.

We probably can't keep on ensuring backwards compatibility for MusicBox 0.6 users - I'm posting the error log here for reference purposes in case others run into the same issue.

Mixer Control Id Config

Hello,
i struggled a little bit arround with getting my soundcard to work properly with alsamixer today. The problem is that on my tinkerboard there are two mixercontrols registered to one device.

root@tinkerboard:/# amixer scontrols
Simple mixer control 'Headphone',0
Simple mixer control 'Headphone',1
Simple mixer control 'Mic',0
Simple mixer control 'Mic',1
Simple mixer control 'Extension Unit',0
Simple mixer control 'SPDIF',0

Unfortunately the index of a mixercontrol isnt respected at the moment in the source code which makes it impossible to get alsamixer output running properly on such a device.

I'll try to create a pull request later with the changes i did to get it running.

Mute switch not available on softvol control

I have an alsa configuration in which I have a couple of softvol controls to mix volumes among different sources, like mopidy. But mopidy-alsamixer now complains that the control I assign it to has no mute switch and refuses to start:

Traceback (most recent call last):
  File "/usr/bin/mopidy", line 9, in <module>
    load_entry_point('Mopidy==0.19.0', 'console_scripts', 'mopidy')()
  File "/usr/share/mopidy/mopidy/__main__.py", line 127, in main
    return args.command.run(args, proxied_config)
  File "/usr/share/mopidy/mopidy/commands.py", line 272, in run
    core = self.start_core(mixer, backends)
  File "/usr/share/mopidy/mopidy/commands.py", line 350, in start_core
    return Core.start(mixer=mixer, backends=backends).proxy()
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 531, in proxy
    return _ActorProxy(self)
  File "/usr/lib/python2.7/dist-packages/pykka/proxy.py", line 97, in __init__
    self._known_attrs = self._get_attributes()
  File "/usr/lib/python2.7/dist-packages/pykka/proxy.py", line 108, in _get_attributes
    attr = self._actor._get_attribute_from_path(attr_path)
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 325, in _get_attribute_from_path
    attr = getattr(attr, attr_name)
  File "/usr/share/mopidy/mopidy/core/playback.py", line 111, in get_mute
    return self.mixer.get_mute().get()
  File "/usr/lib/python2.7/dist-packages/pykka/future.py", line 299, in get
    exec('raise exc_info[0], exc_info[1], exc_info[2]')
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 200, in _actor_loop
    response = self._handle_receive(message)
  File "/usr/lib/python2.7/dist-packages/pykka/actor.py", line 294, in _handle_receive
    return callee(*message['args'], **message['kwargs'])
  File "/usr/share/mopidy/mopidy_alsamixer/mixer.py", line 83, in get_mute
    channels_muted = self._mixer.getmute()
alsaaudio.ALSAAudioError: Mixer has no mute switch

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.