Skip to content

alsa-mixer: add multichannel profile for Tascam Model12

Bernd Busse requested to merge tryone144/pulseaudio:model12 into master

Add new profile for multichannel input and output with the Tascam Model12 USB interface . The 12 input and 10 output channels aren't detected natively with the default profile.

The stereo profile maps channel 1 and 2 to front-left/front-right. The interface allows to switch the main stereo downmix to channels 1 and 2 via the built-in menu.

In the multichannel profile, input channels 1 to 10 are mapped as aux0 to aux9, respectively. The main stereo downmix is then mapped to front-left/front-right as a more sensible default. Similarly, the output channels 1 to 8 are mapped as aux0 to aux7, respectively. Output channels 9/10 are then mapped to front-left/front-right as they are a stereo pair and therefore better suited for stereo output than channels 1 and 2.


Mapping the individual input and output channels can then be done in the user-configuration using the module-remap-source and module-remap-sink modules. I've attached a sample config for future reference. Although, for more advanced routing one would preferably use jack instead.

Config-file m12.pa that creates a virtual sink and source for each channel(-pair):
#!/usr/bin/pulseaudio -nF

### Load system config
.fail
.ifexists ~/.pulse/default.pa
.include ~/.pulse/default.pa
.else
.include /etc/pulse/default.pa
.endif
.nofail

### Map sources for single input channels
load-module module-remap-source source_name=remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-01 master=alsa_input.usb-TASCAM_Model_12_no_serial_number-00.multichannel-input remix=no master_channel_map=aux0 channel_map=mono
load-module module-remap-source source_name=remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-02 master=alsa_input.usb-TASCAM_Model_12_no_serial_number-00.multichannel-input remix=no master_channel_map=aux1 channel_map=mono
load-module module-remap-source source_name=remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-03 master=alsa_input.usb-TASCAM_Model_12_no_serial_number-00.multichannel-input remix=no master_channel_map=aux2 channel_map=mono
load-module module-remap-source source_name=remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-04 master=alsa_input.usb-TASCAM_Model_12_no_serial_number-00.multichannel-input remix=no master_channel_map=aux3 channel_map=mono
load-module module-remap-source source_name=remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-05 master=alsa_input.usb-TASCAM_Model_12_no_serial_number-00.multichannel-input remix=no master_channel_map=aux4 channel_map=mono
load-module module-remap-source source_name=remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-06 master=alsa_input.usb-TASCAM_Model_12_no_serial_number-00.multichannel-input remix=no master_channel_map=aux5 channel_map=mono
load-module module-remap-source source_name=remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-07_08 master=alsa_input.usb-TASCAM_Model_12_no_serial_number-00.multichannel-input remix=no master_channel_map=aux6,aux7 channel_map=front-left,front-right
load-module module-remap-source source_name=remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-09_10 master=alsa_input.usb-TASCAM_Model_12_no_serial_number-00.multichannel-input remix=no master_channel_map=aux8,aux9 channel_map=front-left,front-right
load-module module-remap-source source_name=remap_input.usb-TASCAM_Model_12_no_serial_number-00.main master=alsa_input.usb-TASCAM_Model_12_no_serial_number-00.multichannel-input remix=no master_channel_map=front-left,front-right channel_map=front-left,front-right

### Rename single channel sources
update-source-proplist remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-01 device.description="Model 12 Channel 1"
update-source-proplist remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-02 device.description="Model 12 Channel 2"
update-source-proplist remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-03 device.description="Model 12 Channel 3"
update-source-proplist remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-04 device.description="Model 12 Channel 4"
update-source-proplist remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-05 device.description="Model 12 Channel 5"
update-source-proplist remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-06 device.description="Model 12 Channel 6"
update-source-proplist remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-07_08 device.description="Model 12 Channel 7/8"
update-source-proplist remap_input.usb-TASCAM_Model_12_no_serial_number-00.channel-09_10 device.description="Model 12 Channel 9/10"
update-source-proplist remap_input.usb-TASCAM_Model_12_no_serial_number-00.main device.description="Model 12 Main"

### Map sinks for single output channels
load-module module-remap-sink sink_name=remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-01 master=alsa_output.usb-TASCAM_Model_12_no_serial_number-00.multichannel-output remix=no master_channel_map=aux0 channel_map=mono
load-module module-remap-sink sink_name=remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-02 master=alsa_output.usb-TASCAM_Model_12_no_serial_number-00.multichannel-output remix=no master_channel_map=aux1 channel_map=mono
load-module module-remap-sink sink_name=remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-03 master=alsa_output.usb-TASCAM_Model_12_no_serial_number-00.multichannel-output remix=no master_channel_map=aux2 channel_map=mono
load-module module-remap-sink sink_name=remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-04 master=alsa_output.usb-TASCAM_Model_12_no_serial_number-00.multichannel-output remix=no master_channel_map=aux3 channel_map=mono
load-module module-remap-sink sink_name=remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-05 master=alsa_output.usb-TASCAM_Model_12_no_serial_number-00.multichannel-output remix=no master_channel_map=aux4 channel_map=mono
load-module module-remap-sink sink_name=remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-06 master=alsa_output.usb-TASCAM_Model_12_no_serial_number-00.multichannel-output remix=no master_channel_map=aux5 channel_map=mono
load-module module-remap-sink sink_name=remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-07_08 master=alsa_output.usb-TASCAM_Model_12_no_serial_number-00.multichannel-output remix=no master_channel_map=aux6,aux7 channel_map=front-left,front-right
load-module module-remap-sink sink_name=remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-09_10 master=alsa_output.usb-TASCAM_Model_12_no_serial_number-00.multichannel-output remix=no master_channel_map=front-left,front-right channel_map=front-left,front-right

### Rename single channel sinks
update-sink-proplist remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-01 device.description="Model 12 Channel 1"
update-sink-proplist remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-02 device.description="Model 12 Channel 2"
update-sink-proplist remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-03 device.description="Model 12 Channel 3"
update-sink-proplist remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-04 device.description="Model 12 Channel 4"
update-sink-proplist remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-05 device.description="Model 12 Channel 5"
update-sink-proplist remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-06 device.description="Model 12 Channel 6"
update-sink-proplist remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-07_08 device.description="Model 12 Channel 7/8"
update-sink-proplist remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-09_10 device.description="Model 12 Channel 9/10"

### Make some devices default
set-default-sink remap_output.usb-TASCAM_Model_12_no_serial_number-00.channel-09_10
set-default-source remap_input.usb-TASCAM_Model_12_no_serial_number-00.main

Merge request reports