Re: PCM plugin last

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 27 May 2020, Clemens Ladisch via Alsa-user wrote:

> Robert Bielik wrote:
> > Iʼd like to know if there is any way to get the following sound chain through ALSA:
> >
> > Mediaplayer -> dmix -> LADSPA -> plughw:0,0
> 
> The dmix plugin plays shared-memory tricks with the ring buffer and therefore
> requires to run on top of a hw device.
> 
> It might be possible to run dmix on a virtual loopback sound card and route
> that one to the LADSPA plugin, but I guess using PulseAudio would be a better
> idea.

It's possible, and I don't see anything wrong with the idea except at the 
moment it seems to be frightfully buggy.

Here's a snipped of .asoundrc that creates a "local" audio bus which is 
combined with:

  $ modprobe snd-aloop
  $ echo "0,0,0" > /proc/asound/Loopback/timer_source     # your soundcard
  $ alsaloop -C local -P plug:master
  $ aplay -D plug:local music.wav

You'll need to define your "master" device with the LADSPA plugin.

The problems I am having are the "alsaloop" program terminates 
unexpectedly, gets in 100% CPU spin and won't exit, or some lock is taken 
in the kernel that hangs X11 and prevents process termination (kernel 
5.6.14)

I couldn't make head nor tail of alsaloop flow, so I wrote my own code to 
copy audio from one device to another which so far seems much more 
reliable for my case.

#
# The bus for local audio so it can be routed to other applications
#
# Pin the sample rate and format so that the Loopback device isn't
# affected by whichever side is first to open and with which parameters.
#

pcm.local {
	type asym

	#
	# Mix incoming audio from multiple sources
	#

	playback.pcm {
		type dmix
		ipc_key 3187

		slave {
			rate 48000
			channels 2
			format S16_LE
			buffer_size 4096
			period_size 256

			pcm {
				type hw
				card "Loopback"
				device 0
				subdevice 3
			}
		}
	}

	#
	# Make it accessable to anyone who wants it
	#

	capture.pcm {
		type dsnoop
		ipc_key 23811

		slave {
			rate 48000
			channels 2
			format S16_LE
			buffer_size 4096
			period_size 256

			pcm {
				type hw
				card "Loopback"
				device 1
				subdevice 3
			}
		}
	}
}

pcm.master {
        type ladspa;

        ...   # your chosen configuration here
}

-- 
Mark
_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user

[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux