# dmix streikt (total)

## Vortex375

Hallo zusammen,

ich besitze eine Audigy2-Karte mit Hardware-Mixing, deshalb musste ich mich (gottseidank) lange nicht mit dem Thema Software-Mixing beschäftigen. 

Ich hatte das Software-Mixing aus meinen Zeiten vor der Audigy noch so in Erinnerung, dass es zwar ziemliches Gefummel war, das einzurichten aber dann lief es recht ordentlich (zumindest mit nativen ALSA-Anwendungen; keine Chance hingegen für OSS-Anwendungen).

Nun wollte aber mein Bruder (nach längerer Linux-Abstinenz) sein Gentoo wiederbeleben (sprich: neu aufsetzen). Er hat eine externe USB-Soundkarte, also kein Hardware-Mixing. Ich hab ihm angeboten, für ihn dmix einzurichten, weil noch von früher wusste wie das ungefähr ging. Aber keine Chance, ich kriegs einfach nicht zum laufen!!

Ich wollte mir dann zum experimentieren auf meiner eigenen Kiste ein dmix-Device einrichten, aber auch hier scheitere ich. Meine .asoundrc sieht folgendermaßen aus:

```

pcm.!default {

   type plug

   slave.pcm "dmixer"

}

ctl.!default {

   type hw

   card 0

}

pcm.audigy {

   type hw

   card 0

   device 0

}

pcm.digital-out {

   type hw

   card 1

   device 2

}

pcm.dmixer {

        type dmix

        ipc_key 1234

        slave {

                pcm "audigy"

                period_time 0

                period_size 1024

                buffer_size 4096

                rate 44100

                #rate 48000

      }

}
```

Jetzt kommt der Trick: Eine einzelne Anwendung kann das dmix-Device ohne Probleme verwenden. Sobald ich aber eine zweite Audio-Anwendung starte, erhält diese folgende Fehlermeldung:

```

alsa-lib: pcm_dmix.c:914:(snd_pcm_dmix_open) unable to open slave

alsa-init: playback open error: Invalid argument

```

Dmix erfüllt also seinen Zweck, mehreren Anwendungen das gleichzeitige Benutzen der Soundkarte zu ermöglichen, überhaupt nicht.

Ich verwende Kernel 2.6.20 mit den kerneleigenen ALSA-Treibern.

Für den Fall, dass es etwas helfen könnte, hier noch mein emerge --info:

```

# emerge --info

Portage 2.1.2.2 (default-linux/amd64/2006.1, gcc-4.1.1, glibc-2.5-r0, 2.6.20-viper3 x86_64)

=================================================================

System uname: 2.6.20-viper3 x86_64 AMD Athlon(tm) 64 Processor 3500+

Gentoo Base System release 1.12.9

Timestamp of tree: Sat, 21 Apr 2007 18:30:01 +0000

dev-java/java-config: 1.3.7, 2.0.31-r5

dev-lang/python:     2.4.3-r4

dev-python/pycrypto: 2.0.1-r5

sys-apps/sandbox:    1.2.17

sys-devel/autoconf:  2.13, 2.61

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10

sys-devel/binutils:  2.16.1-r3

sys-devel/gcc-config: 1.3.15-r1

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.17-r2

ACCEPT_KEYWORDS="amd64"

AUTOCLEAN="yes"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=k8 -O2 -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"

CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo"

CXXFLAGS="-march=k8 -O2 -pipe"

DISTDIR="/wz1/store/mirror/portage"

FEATURES="confcache distlocks metadata-transfer parallel-fetch sandbox sfperms strict"

GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/portage /usr/portage/local/layman/xeffects /usr/portage/local/layman/enlightenment"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="X acl alsa amd64 berkdb bitmap-fonts cjk cli cracklib crypt cups dri fortran gdbm gpm iconv immqt-bc ipv6 isdnlog kdehiddenvisibility libg++ midi ncurses nls nptl nptlonly opengl pam pcre perl ppds pppd python readline reflection samba session spl ssl tcpd truetype-fonts type1-fonts unicode utf8 xorg zlib" ALSA_CARDS="emu10k1 intel8x0" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INITNG_PLUGINS="also bash_launcher chdir chroot conflict cpout critical ctrlaltdel daemon_clean debug_commands envparser find fmon fstat history idleprobe initctl interactive iparser last limit lockfile logfile netdev netprobe ngc4 ngcs nge pause provide reload renice rlparser simple_launcher stcmd stdout suid syncron syslog sysreq unneeded usplash" INPUT_DEVICES="keyboard kbd mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="nv vesa"

Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGUAS, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

```

Wo steckt denn da der Wurm drin? 

Audio unter Linux enttäuscht mich immer wieder. Für Grafik gibt's doch auch den genialen, flexiblen (und instabilen) X-Server, warum funktioniert das beim Audio nicht so cool?  :Wink: 

----------

## Max Steel

Also ich verwende auch den Kernel-Alsa

allerdings Softwearemäßig noch:

media-sound/alsa-utils

damit läufts sehr sauber.

(Wenns auch auf der VMWare ziemlich rucklig is unter Belastung aber das ist halt ein generelles Prob an diesen VMs.)

----------

## gimpel

Seit ALSA 1.0.10 ist dmix und dsnoop per vorgabe aktiviert für allemöglichen chips ohne onboard wavetable synth oder sonstwas das zum "hardware mixing" benutzt werden kann.

Insofern, lösch die .asounrc, stell als device "default" ein, und es sollte funktionieren.

----------

## Vortex375

Ich habe installiert:

```
media-sound/alsa-utils-1.0.14_rc1
```

 *Quote:*   

> Insofern, lösch die .asounrc, stell als device "default" ein, und es sollte funktionieren.

 

Nein, das klappt nicht. Erstens untersützt meine Karte Hardware-Mixing aber ich will trotzdem dmix testen, also muss ich es von Hand aktivieren. Zweitens wird es anscheinend bei der USB-Soundkarte nicht standardmäßig aktiviert, weil dort kein Mixing funktioniert. 

Außerdem, ich besitze neben der Audigy noch eine OnBoard-Soundkarte, für die ich auch gerne Mixing hätte. Da dieses Karte ja nicht "default" ist, muss ich wohl das dmix für diese Karte von Hand einrichten.

So oder so, es muss ja auch auf diesem Wege funktionieren und nicht nur, wenn man auf die automatische Vorkonfiguration hofft (das erinnert an ein anderes OS  :Rolling Eyes:  ).

Das Problem müsste doch eigentlich 90% der Leute hier betreffen, schließlich betreibt doch fast jeder eine Soundkarte in seinem System oder nicht?

----------

## Fauli

 *Vortex375 wrote:*   

> Das Problem müsste doch eigentlich 90% der Leute hier betreffen, schließlich betreibt doch fast jeder eine Soundkarte in seinem System oder nicht?

 

Ich stelle gerade fest, dass ich dasselbe Problem habe:

```
alsa-lib: pcm_dmix.c:914:(snd_pcm_dmix_open) unable to open slave

alsa-init: playback open error: Invalid argument
```

Ich habe das separate Treiber-Paket installiert:

```
[I--] [ ~] media-libs/alsa-lib-1.0.14_rc3 (0)

[I--] [ ~] media-sound/alsa-driver-1.0.14_rc3 (0)

[I--] [ ~] media-sound/alsa-headers-1.0.14_rc3 (0)

[I--] [ ~] media-sound/alsa-utils-1.0.14_rc2-r3 (0.9)
```

EDIT: Ich konnte das Problem für mich lösen. Siehe unten...

----------

## gimpel

 *Vortex375 wrote:*   

> Ich habe installiert:
> 
> ```
> media-sound/alsa-utils-1.0.14_rc1
> ```
> ...

 

Okay, bei usbaudio war ich mir nicht sicher. Wenn man sich aber /usr/share/alsa/cards/USB-Audio.conf anschaut, sollte es für audigy aktiviert sein.

 *Quote:*   

> Außerdem, ich besitze neben der Audigy noch eine OnBoard-Soundkarte, für die ich auch gerne Mixing hätte. Da dieses Karte ja nicht "default" ist, muss ich wohl das dmix für diese Karte von Hand einrichten.

 

Sollte mit default:1 ansprechbar sein.

 *Quote:*   

> So oder so, es muss ja auch auf diesem Wege funktionieren und nicht nur, wenn man auf die automatische Vorkonfiguration hofft (das erinnert an ein anderes OS  ).
> 
> Das Problem müsste doch eigentlich 90% der Leute hier betreffen, schließlich betreibt doch fast jeder eine Soundkarte in seinem System oder nicht?

 

Stimmt, und die asoundrc sieht für mich grad auch OK aus.

Bist du sicher dass die erste Anwendung auch dmix verwendet, und nicht irgendwie direkt auf hw zugreift?

----------

## Fauli

Ein kleines Update:

Ich habe zwei Sound-Devices im Rechner, eine PCI-Karte (Treiber cmipci) und eine on-board (Treiber via82xx). Das Problem tritt nur mit dem VIA-Treiber auf, Dmix mit der C-Media-Karte funktioniert ohne Probleme!

EDIT:

Ich konnte das Problem für mich lösen. Wenn ich snd-via82xx mit der Option dxs_support=2 (disable DXS support) lade, funktioniert Dmix wieder. Das Hardware-Mixing ist dann komplett abgeschaltet.

----------

## Max Steel

Hab grad aktuell getestet bei mir gehts,

```
media-sound/alsa-headers 1.0.14_rc2

media-sound/alsa-utils 1.0.14_rc1
```

installiert

JUK am laufen mit Musik

mplayer am Laufen mit *.mpg

Ich hör beides.

In Gentoo-VM ist die "Ensoniq AudioPCI ES1371 - Alsa device" istalliert

Unter Win hab ich "Realtek AC'97 Audio for VIA (R) Audio Controller" installiert

Besondere Einstellungen hab ich nicht,

das ganze unter KDE vll hat der auch nen Mixer keine Ahnung.

```
kde-base/kde-meta
```

Edith:

Grad gesehen,

stummschalten der Kanäle bis auf Master unter Gentoo hat keine Auswirkung, nur unter Win wenn ich da Wav auf Stumm schalte isses wirklich stumm.

Könnte mit den VMWare-tools zusammenhängen das die das gleich auf das "Mutterschiff" rüberschicken.

----------

## Vortex375

 *Quote:*   

> Ich konnte das Problem für mich lösen. Wenn ich snd-via82xx mit der Option dxs_support=2 (disable DXS support) lade, funktioniert Dmix wieder. Das Hardware-Mixing ist dann komplett abgeschaltet.

 

Das emu10k1-Modul für meine audigy bietet so wie's aussieht keine nützlichen Optionen:

```

# modinfo snd_emu10k1

filename:       /lib/modules/2.6.20-viper3/kernel/sound/pci/emu10k1/snd-emu10k1.ko

author:         Jaroslav Kysela <perex@suse.cz>

description:    EMU10K1

license:        GPL

vermagic:       2.6.20-viper3 preempt mod_unload

depends:        snd-pcm,snd-util-mem,snd-page-alloc,snd,snd-rawmidi,snd-timer,snd-hwdep,snd-ac97-codec,snd-seq-device

alias:          pci:v00001102d00000002sv*sd*bc*sc*i*

alias:          pci:v00001102d00000004sv*sd*bc*sc*i*

alias:          pci:v00001102d00000008sv*sd*bc*sc*i*

parm:           subsystem:Force card subsystem model. (array of uint)

parm:           enable_ir:Enable IR. (array of bool)

parm:           max_buffer_size:Maximum sample buffer size in MB. (array of int)

parm:           max_synth_voices:Maximum number of voices for WaveTable. (array of int)

parm:           seq_ports:Allocated sequencer ports for internal synthesizer. (array of int)

parm:           extout:Available external outputs for FX8010. Zero=default. (array of int)

parm:           extin:Available external inputs for FX8010. Zero=default. (array of int)

parm:           enable:Enable the EMU10K1 soundcard. (array of bool)

parm:           id:ID string for the EMU10K1 soundcard. (array of charp)

parm:           index:Index value for the EMU10K1 soundcard. (array of int)

```

----------

## Fauli

Ich habe noch eine zweite Lösung gefunden. Also die Modul-Option dxs_support wieder herausgeworfen, aber dafür das Device 1 der Karte benutzt. Das scheint hier das Nicht-DXS-Device zu sein. Bei dir wäre das dann:

```
pcm.audigy {

   type hw

   card 0

   device 1

}
```

----------

## Vortex375

Lol, es geht tatsächlich, wenn ich bei meiner Audigy das Subdevice 3 benutze:

```

pcm.audigy {

        type hw

   card 0

   device 3

}
```

In der Beschreibung steht:

```
$ cat /proc/asound/pcm

00-03: emu10k1 : Multichannel Playback : playback 1

00-02: emu10k1 efx : Multichannel Capture/PT Playback : playback 8 : capture 1

00-01: emu10k1 mic : Mic Capture : capture 1

00-00: emu10k1 : ADC Capture/Standard PCM Playback : playback 32 : capture 1

```

Mit "Mutlichannel Playback" geht es also.

Aber ich habe leider schon ein neues Problem: Der Ton rupft und knattern abartig, obwohl der Rechner nebenher gar nichts macht.

Die Einstellungen für Buffer und so sollten doch ausreichend sein:

```

pcm.dmixer {

        type dmix

        ipc_key 1234

        ipc_perm 0660

        slave {

                pcm "audigy"

                period_size 1024

                buffer_size 4096

                rate 44100

                #rate 48000

      }

}
```

Liegt es irgendwie an der Samplerate? 

Die Aussetzer treten bei Musik ziemlich gleichmäßig ca. alle zwei Sekunden auf. Spiele ich hingegen ein Video in mplayer ab, knattert der Ton ständig.  :Shocked: 

EDIT: Mir ist außerdem gerade aufgefallen, dass die USB-Karte von meinem Bruder keine anderen Subdevices zur Auswahl hat. Da gibt's nur eins.  :Smile: 

EDIT2: Die Ruckler treten nur mit bestimmten Anwendungen auf (xmms2, mplayer). Andere hingegen ruckeln nicht (xine, audacious). Gibt's da nen Workaround?

----------

## Vortex375

Das Update auf die neuste ALSA-Version mit dem letzten world-Update hat die Probleme nicht behoben.

Einwandfreies Software-Mixing gibt's zwar schon seit Windows95 aber unter Linux schafft man sowas auch im Jahr 2007 noch nicht.  :Rolling Eyes: 

----------

## hoschi

 *gimpel wrote:*   

> Seit ALSA 1.0.10 ist dmix und dsnoop per vorgabe aktiviert für allemöglichen chips ohne onboard wavetable synth oder sonstwas das zum "hardware mixing" benutzt werden kann.
> 
> Insofern, lösch die .asounrc, stell als device "default" ein, und es sollte funktionieren.

 

Jupp. Schon seit einem oder zwei Jahren sollte, oder besser darf man nichts mehr veraendern. Das System macht alles von selbst. Ich glaube nicht dass man das Problem so einfach beschreiben kann, bei einer Karte mit Hardware-Mixing doch DMIX zu verwenden ist so sicher nicht vorgesehen (und ich wette das kann man unter Windows gar nicht!), dann noch eine zweite Karte, die aber per USB...  :Rolling Eyes: 

Ich wuerde den Fall das Hardware-Mixing auszuschalten ja gar nicht mal als Programmierer vorsehen.

----------

## Vortex375

 *Quote:*   

> bei einer Karte mit Hardware-Mixing doch DMIX zu verwenden ist so sicher nicht vorgesehen

 

Sicher, aber ich dachte mir halt, dass es eigentlich trotzdem funktionieren sollte. Außerdem war das ja nur zu Testzwecken gedacht.

 *Quote:*   

> und ich wette das kann man unter Windows gar nicht!

 

Unter Windows würde es eher andersrum funktionieren, nämlich dass man das Hardwaremixing gar nicht nutzen kann und das Softwaremixing erzwungen wird.

Aber ich wollte mit meiner Bemerkung oben auch nicht etwa sagen "unter Windows war das alles besser", sondern wollte eigentlich nur deutlich machen, dass ich den "Fortschritt" bei der ALSA-Entwicklung allmählich etwas peinlich finde...

 *Quote:*   

> dann noch eine zweite Karte, die aber per USB... 

 

Huch, ist das jetzt zu anspruchsvoll für die moderne, flexible "Advanced Linux Sound Architecture"?  :Twisted Evil: 

----------

## hoschi

Tja, besser als sich allein auf den Soundkartenhersteller verlassen zu muessen.

Aber du musst schon zugeben, dass das abschalten des Hardware-Mixing irgendwie nicht mal in die Kategorie "Spielerei" gehoert  :Smile: 

Wobei ich mit dem Urteil noch warten wuerde, gut moeglich dass es an den Treibern selber liegt. Wahrscheinlich sind meine grauenhaften Erfahrungen mit ESD/OSS zu schlimm, als das ich ueberhaupt auf die Idee kommen koennte meinem ALSA solche Aufgaben zu stellen. Es hat mich sozusagen aus der Hoelle befreit  :Wink: 

Bin wohl zu bescheiden   :Cool: 

----------

