#
#  Hardware output from 5.1 speakers
#  Samples must be positioned:
#    chn0 - front left
#    chn1 - front right
#    chn2 - rear left
#    chn3 - rear right
#    chn4 - center
#    chn5 - lfe
#

pcm.!surround51 {
	@args [ CARD DEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_SURROUND51_CARD
				ALSA_PCM_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.pcm.surround51.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_SURROUND51_DEVICE
			]
			default {
				@func refer
				name defaults.pcm.surround51.device
			}
		}
	}
	type empty
	slave.pcm {
		@func refer
		name {
			@func concat
			strings [
				"cards."
				{
					@func card_driver
					card $CARD
				}
				".pcm.surround51." $DEV ":CARD=" $CARD
			]
		}
	}
	hint {
		description "5.1 Surround output to Front, Center, Rear and Subwoofer speakers"
		device $DEV
	}
}
