mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-11-03 09:01:52 -05:00 
			
		
		
		
	Use softvol for PCM outputs
Use softvol plugin for codecs without PCM volume controls (e.g. c-media). The default PCM is redefined to use softvol for playback.
This commit is contained in:
		
							parent
							
								
									82e408d08b
								
							
						
					
					
						commit
						156eb1228e
					
				
					 3 changed files with 255 additions and 96 deletions
				
			
		| 
						 | 
				
			
			@ -7,29 +7,70 @@
 | 
			
		|||
ICH.pcm.front.0 {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type string
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type softvol
 | 
			
		||||
	slave.pcm {
 | 
			
		||||
		type hw
 | 
			
		||||
		card $CARD
 | 
			
		||||
		device 0
 | 
			
		||||
	}
 | 
			
		||||
	control {
 | 
			
		||||
		name "PCM Playback Volume"
 | 
			
		||||
		card $CARD
 | 
			
		||||
	}
 | 
			
		||||
	type hw
 | 
			
		||||
	card $CARD
 | 
			
		||||
	device 0
 | 
			
		||||
}	
 | 
			
		||||
 | 
			
		||||
# with dmix?
 | 
			
		||||
ICH.pcm.default {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type asym
 | 
			
		||||
	playback.pcm {
 | 
			
		||||
		type plug
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type softvol
 | 
			
		||||
			slave.pcm {
 | 
			
		||||
				type hw
 | 
			
		||||
				card $CARD
 | 
			
		||||
				device 0
 | 
			
		||||
			}
 | 
			
		||||
			control {
 | 
			
		||||
				name "PCM Playback Volume"
 | 
			
		||||
				card $CARD
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	capture.pcm {
 | 
			
		||||
		type plug
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type hw
 | 
			
		||||
			card $CARD
 | 
			
		||||
			device 0
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
<confdir:pcm/surround40.conf>
 | 
			
		||||
 | 
			
		||||
ICH.pcm.surround40.0 {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type string
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type hooks
 | 
			
		||||
	type softvol
 | 
			
		||||
	slave.pcm {
 | 
			
		||||
		type hw
 | 
			
		||||
		card $CARD
 | 
			
		||||
		device 0
 | 
			
		||||
	}
 | 
			
		||||
	hooks.0 {
 | 
			
		||||
		type ctl_elems
 | 
			
		||||
		hook_args [
 | 
			
		||||
		type hooks
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type hw
 | 
			
		||||
			card $CARD
 | 
			
		||||
			device 0
 | 
			
		||||
		}
 | 
			
		||||
		hooks.0 {
 | 
			
		||||
			type ctl_elems
 | 
			
		||||
			hook_args [
 | 
			
		||||
			{
 | 
			
		||||
				name "Line-In As Surround"
 | 
			
		||||
				preserve true
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +85,12 @@ ICH.pcm.surround40.0 {
 | 
			
		|||
				lock true
 | 
			
		||||
				optional true
 | 
			
		||||
			}
 | 
			
		||||
		]
 | 
			
		||||
			]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	control {
 | 
			
		||||
		name "PCM Playback Volume"
 | 
			
		||||
		card $CARD
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -55,25 +101,27 @@ ICH.pcm.surround40.0 {
 | 
			
		|||
ICH.pcm.surround51.0 {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type string
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type route
 | 
			
		||||
	ttable.0.0 1
 | 
			
		||||
	ttable.1.1 1
 | 
			
		||||
	ttable.2.4 1
 | 
			
		||||
	ttable.3.5 1
 | 
			
		||||
	ttable.4.2 1
 | 
			
		||||
	ttable.5.3 1
 | 
			
		||||
	type softvol
 | 
			
		||||
	slave.pcm {
 | 
			
		||||
		type hooks
 | 
			
		||||
		type route
 | 
			
		||||
		ttable.0.0 1
 | 
			
		||||
		ttable.1.1 1
 | 
			
		||||
		ttable.2.4 1
 | 
			
		||||
		ttable.3.5 1
 | 
			
		||||
		ttable.4.2 1
 | 
			
		||||
		ttable.5.3 1
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type hw
 | 
			
		||||
			card $CARD
 | 
			
		||||
			device 0
 | 
			
		||||
		}
 | 
			
		||||
		hooks.0 {
 | 
			
		||||
			type ctl_elems
 | 
			
		||||
			hook_args [
 | 
			
		||||
			type hooks
 | 
			
		||||
			slave.pcm {
 | 
			
		||||
				type hw
 | 
			
		||||
				card $CARD
 | 
			
		||||
				device 0
 | 
			
		||||
			}
 | 
			
		||||
			hooks.0 {
 | 
			
		||||
				type ctl_elems
 | 
			
		||||
				hook_args [
 | 
			
		||||
				{
 | 
			
		||||
					name "Line-In As Surround"
 | 
			
		||||
					preserve true
 | 
			
		||||
| 
						 | 
				
			
			@ -102,10 +150,15 @@ ICH.pcm.surround51.0 {
 | 
			
		|||
					lock true
 | 
			
		||||
					optional true
 | 
			
		||||
				}
 | 
			
		||||
			]
 | 
			
		||||
				]
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		slave.channels 6
 | 
			
		||||
	}
 | 
			
		||||
	control {
 | 
			
		||||
		name "PCM Playback Volume"
 | 
			
		||||
		card $CARD
 | 
			
		||||
	}
 | 
			
		||||
	slave.channels 6
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
<confdir:pcm/iec958.conf>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,29 +7,70 @@
 | 
			
		|||
ICH4.pcm.front.0 {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type string
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type softvol
 | 
			
		||||
	slave.pcm {
 | 
			
		||||
		type hw
 | 
			
		||||
		card $CARD
 | 
			
		||||
		device 0
 | 
			
		||||
	}
 | 
			
		||||
	control {
 | 
			
		||||
		name "PCM Playback Volume"
 | 
			
		||||
		card $CARD
 | 
			
		||||
	}
 | 
			
		||||
	type hw
 | 
			
		||||
	card $CARD
 | 
			
		||||
	device 0
 | 
			
		||||
}	
 | 
			
		||||
 | 
			
		||||
# with dmix?
 | 
			
		||||
ICH4.pcm.default {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type asym
 | 
			
		||||
	playback.pcm {
 | 
			
		||||
		type plug
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type softvol
 | 
			
		||||
			slave.pcm {
 | 
			
		||||
				type hw
 | 
			
		||||
				card $CARD
 | 
			
		||||
				device 0
 | 
			
		||||
			}
 | 
			
		||||
			control {
 | 
			
		||||
				name "PCM Playback Volume"
 | 
			
		||||
				card $CARD
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	capture.pcm {
 | 
			
		||||
		type plug
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type hw
 | 
			
		||||
			card $CARD
 | 
			
		||||
			device 0
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
<confdir:pcm/surround40.conf>
 | 
			
		||||
 | 
			
		||||
ICH4.pcm.surround40.0 {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type string
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type hooks
 | 
			
		||||
	type softvol
 | 
			
		||||
	slave.pcm {
 | 
			
		||||
		type hw
 | 
			
		||||
		card $CARD
 | 
			
		||||
		device 0
 | 
			
		||||
	}
 | 
			
		||||
	hooks.0 {
 | 
			
		||||
		type ctl_elems
 | 
			
		||||
		hook_args [
 | 
			
		||||
		type hooks
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type hw
 | 
			
		||||
			card $CARD
 | 
			
		||||
			device 0
 | 
			
		||||
		}
 | 
			
		||||
		hooks.0 {
 | 
			
		||||
			type ctl_elems
 | 
			
		||||
			hook_args [
 | 
			
		||||
			{
 | 
			
		||||
				name "Line-In As Surround"
 | 
			
		||||
				preserve true
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +85,12 @@ ICH4.pcm.surround40.0 {
 | 
			
		|||
				lock true
 | 
			
		||||
				optional true
 | 
			
		||||
			}
 | 
			
		||||
		]
 | 
			
		||||
			]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	control {
 | 
			
		||||
		name "PCM Playback Volume"
 | 
			
		||||
		card $CARD
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -55,25 +101,27 @@ ICH4.pcm.surround40.0 {
 | 
			
		|||
ICH4.pcm.surround51.0 {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type string
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type route
 | 
			
		||||
	ttable.0.0 1
 | 
			
		||||
	ttable.1.1 1
 | 
			
		||||
	ttable.2.4 1
 | 
			
		||||
	ttable.3.5 1
 | 
			
		||||
	ttable.4.2 1
 | 
			
		||||
	ttable.5.3 1
 | 
			
		||||
	type softvol
 | 
			
		||||
	slave.pcm {
 | 
			
		||||
		type hooks
 | 
			
		||||
		type route
 | 
			
		||||
		ttable.0.0 1
 | 
			
		||||
		ttable.1.1 1
 | 
			
		||||
		ttable.2.4 1
 | 
			
		||||
		ttable.3.5 1
 | 
			
		||||
		ttable.4.2 1
 | 
			
		||||
		ttable.5.3 1
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type hw
 | 
			
		||||
			card $CARD
 | 
			
		||||
			device 0
 | 
			
		||||
		}
 | 
			
		||||
		hooks.0 {
 | 
			
		||||
			type ctl_elems
 | 
			
		||||
			hook_args [
 | 
			
		||||
			type hooks
 | 
			
		||||
			slave.pcm {
 | 
			
		||||
				type hw
 | 
			
		||||
				card $CARD
 | 
			
		||||
				device 0
 | 
			
		||||
			}
 | 
			
		||||
			hooks.0 {
 | 
			
		||||
				type ctl_elems
 | 
			
		||||
				hook_args [
 | 
			
		||||
				{
 | 
			
		||||
					name "Line-In As Surround"
 | 
			
		||||
					preserve true
 | 
			
		||||
| 
						 | 
				
			
			@ -102,10 +150,15 @@ ICH4.pcm.surround51.0 {
 | 
			
		|||
					lock true
 | 
			
		||||
					optional true
 | 
			
		||||
				}
 | 
			
		||||
			]
 | 
			
		||||
				]
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		slave.channels 6
 | 
			
		||||
	}
 | 
			
		||||
	control {
 | 
			
		||||
		name "PCM Playback Volume"
 | 
			
		||||
		card $CARD
 | 
			
		||||
	}
 | 
			
		||||
	slave.channels 6
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
<confdir:pcm/iec958.conf>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,29 +7,70 @@
 | 
			
		|||
NFORCE.pcm.front.0 {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type string
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type softvol
 | 
			
		||||
	slave.pcm {
 | 
			
		||||
		type hw
 | 
			
		||||
		card $CARD
 | 
			
		||||
		device 0
 | 
			
		||||
	}
 | 
			
		||||
	control {
 | 
			
		||||
		name "PCM Playback Volume"
 | 
			
		||||
		card $CARD
 | 
			
		||||
	}
 | 
			
		||||
	type hw
 | 
			
		||||
	card $CARD
 | 
			
		||||
	device 0
 | 
			
		||||
}	
 | 
			
		||||
 | 
			
		||||
# with dmix?
 | 
			
		||||
NFORCE.pcm.default {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type asym
 | 
			
		||||
	playback.pcm {
 | 
			
		||||
		type plug
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type softvol
 | 
			
		||||
			slave.pcm {
 | 
			
		||||
				type hw
 | 
			
		||||
				card $CARD
 | 
			
		||||
				device 0
 | 
			
		||||
			}
 | 
			
		||||
			control {
 | 
			
		||||
				name "PCM Playback Volume"
 | 
			
		||||
				card $CARD
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	capture.pcm {
 | 
			
		||||
		type plug
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type hw
 | 
			
		||||
			card $CARD
 | 
			
		||||
			device 0
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
<confdir:pcm/surround40.conf>
 | 
			
		||||
 | 
			
		||||
NFORCE.pcm.surround40.0 {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type string
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type hooks
 | 
			
		||||
	type softvol
 | 
			
		||||
	slave.pcm {
 | 
			
		||||
		type hw
 | 
			
		||||
		card $CARD
 | 
			
		||||
		device 0
 | 
			
		||||
	}
 | 
			
		||||
	hooks.0 {
 | 
			
		||||
		type ctl_elems
 | 
			
		||||
		hook_args [
 | 
			
		||||
		type hooks
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type hw
 | 
			
		||||
			card $CARD
 | 
			
		||||
			device 0
 | 
			
		||||
		}
 | 
			
		||||
		hooks.0 {
 | 
			
		||||
			type ctl_elems
 | 
			
		||||
			hook_args [
 | 
			
		||||
			{
 | 
			
		||||
				name "Line-In As Surround"
 | 
			
		||||
				preserve true
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +85,12 @@ NFORCE.pcm.surround40.0 {
 | 
			
		|||
				lock true
 | 
			
		||||
				optional true
 | 
			
		||||
			}
 | 
			
		||||
		]
 | 
			
		||||
			]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	control {
 | 
			
		||||
		name "PCM Playback Volume"
 | 
			
		||||
		card $CARD
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -55,25 +101,27 @@ NFORCE.pcm.surround40.0 {
 | 
			
		|||
NFORCE.pcm.surround51.0 {
 | 
			
		||||
	@args [ CARD ]
 | 
			
		||||
	@args.CARD {
 | 
			
		||||
		type string
 | 
			
		||||
		type integer
 | 
			
		||||
	}
 | 
			
		||||
	type route
 | 
			
		||||
	ttable.0.0 1
 | 
			
		||||
	ttable.1.1 1
 | 
			
		||||
	ttable.2.4 1
 | 
			
		||||
	ttable.3.5 1
 | 
			
		||||
	ttable.4.2 1
 | 
			
		||||
	ttable.5.3 1
 | 
			
		||||
	type softvol
 | 
			
		||||
	slave.pcm {
 | 
			
		||||
		type hooks
 | 
			
		||||
		type route
 | 
			
		||||
		ttable.0.0 1
 | 
			
		||||
		ttable.1.1 1
 | 
			
		||||
		ttable.2.4 1
 | 
			
		||||
		ttable.3.5 1
 | 
			
		||||
		ttable.4.2 1
 | 
			
		||||
		ttable.5.3 1
 | 
			
		||||
		slave.pcm {
 | 
			
		||||
			type hw
 | 
			
		||||
			card $CARD
 | 
			
		||||
			device 0
 | 
			
		||||
		}
 | 
			
		||||
		hooks.0 {
 | 
			
		||||
			type ctl_elems
 | 
			
		||||
			hook_args [
 | 
			
		||||
			type hooks
 | 
			
		||||
			slave.pcm {
 | 
			
		||||
				type hw
 | 
			
		||||
				card $CARD
 | 
			
		||||
				device 0
 | 
			
		||||
			}
 | 
			
		||||
			hooks.0 {
 | 
			
		||||
				type ctl_elems
 | 
			
		||||
				hook_args [
 | 
			
		||||
				{
 | 
			
		||||
					name "Line-In As Surround"
 | 
			
		||||
					preserve true
 | 
			
		||||
| 
						 | 
				
			
			@ -102,10 +150,15 @@ NFORCE.pcm.surround51.0 {
 | 
			
		|||
					lock true
 | 
			
		||||
					optional true
 | 
			
		||||
				}
 | 
			
		||||
			]
 | 
			
		||||
				]
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		slave.channels 6
 | 
			
		||||
	}
 | 
			
		||||
	control {
 | 
			
		||||
		name "PCM Playback Volume"
 | 
			
		||||
		card $CARD
 | 
			
		||||
	}
 | 
			
		||||
	slave.channels 6
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
<confdir:pcm/iec958.conf>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue