Skip to contentSkip to conversation

Focusrite Scarlett 18i6 mixer

PATCH New Robin Gareus 1 participant 2 messages Jan 18, 2013 – Jan 20, 2013

lore
Share & tools
lore
#0 lore raw

Hi,

I've started to reverse engineer the 18i6 mixer protocol and came up with a proof-of-concept test script which includes documentation:

https://github.com/x42/scarlettmixer

Except for a few fixed controls and switches, the 18i6's mixer and router is [likely] too complex to be exposed via ALSA's mixer interface. AFAICT it'll require a dedicated control application - like hdspmixer - in order to make full use of it.

The current proof-of-concept uses pyUSB to send URB control messages and therefore requires root access. It will also not work while the device is in use (by snd-usb-audio). A dedicated ioctl interface - similar to SNDRV_HDSP_ - should be added to ALSA. However, it is yet unclear to me how much of the protocol should be moved to kernel-space.

Anyway, the script can be used to configure the device, save settings to it and subsequently use those settings with snd-usb-audio and Martin's patch.

Thoughts, comments?
robin

PS. the same protocol may apply to other Focusrite Scalett USB2 devices such as the 8i6 - some of the factory-reset traces hint at that, but I would not know.

#1 lore raw

PATCH 1/1 18i6 mixer implementation -- was Focusrite Scarlett 18i6 mixer

Quoted 11 lines · Robin Gareus

Hi,

I've started to reverse engineer the 18i6 mixer protocol and came up with a proof-of-concept test script which includes documentation:

https://github.com/x42/scarlettmixer

Except for a few fixed controls and switches, the 18i6's mixer and router is [likely] too complex to be exposed via ALSA's mixer interface. AFAICT it'll require a dedicated control application - like hdspmixer - in order to make full use of it.

OK. I'll eat my words on that. While a dedicated app will certainly be more appropriate to access the 18x6 mixter matrix and routing schema. The whole interface can be exported as standard ALSA mixer:

The patch is rather large, please view it on github:
https://github.com/x42/alsa-driver/commit/3d9c17a3a0a8f4d86489fe9ff8ddff53dde8cdc5

It is based on the latest git.alsa-project.org/alsa-driver.git but rebases cleanly onto vanilla and rt linux. Tested on debian/wheezy with linux 3.2.35-2-rt.

Comments and feedback are welcome.

Cheers!
robin