geoffreybennett / alsa-scarlett-gui

alsa-scarlett-gui is a Gtk4 GUI for the ALSA controls presented by the Linux kernel Focusrite Scarlett2 Mixer Driver
579 stars 34 forks source link

Add support for Vocaster One and Two #58

Open radupotop opened 1 year ago

radupotop commented 1 year ago

I wanted to open this issue on the scarlett-gen2 repo instead, but I think issues are disabled there.

I'm interested in getting ALSA mixer support for the Focusrite Vocaster One / Two. The interface should be very similar to the Scarletts, however none of the mixers currently work out of the box.

Here is the lsusb:

Bus 001 Device 016: ID 1235:8216 Focusrite-Novation Vocaster One USB

Is there any way to enable the mixers? I tried adding:

options snd_usb_audio vid=0x1235 pid=0x8216 device_setup=1

To /etc/modprobe.d/focusrite.conf but that didn't work.

I'm on kernel 6.4.12-arch1-1

Thanks!

geoffreybennett commented 1 year ago

Hi Radu,

Support needs to be added by someone who has the interface. The USB protocol needs to be analysed and compared with the Scarlett Gen2/3/Clarett protocol and if it is close enough, add whatever's needed to the kernel driver, sound/usb/mixer_scarlett_gen2.c. Then a GUI can be done.

Regards, Geoffrey.

geoffreybennett commented 11 months ago

I have a Vocaster One and a Vocaster Two now. Support for these will be coming soon after Gen 4 support.

radupotop commented 11 months ago

This is fantastic news, thanks again @geoffreybennett

geoffreybennett commented 6 months ago

I have an initial version of Vocaster One and Two-specific support working on Linux now. As usual, the interfaces are USB Audio Class Compliant, so there is no issue getting audio in/out of the device, but there are various proprietary features which require specific Linux kernel support. I've got those features which are in common with other Focusrite USB gear working now. Next up is adding support for the DSP options (compressor, LPF, PEQ).

Please email me if you'd like to help test and get access to it pre-release.

kekkoudesu commented 6 months ago

Sorry for the noise:

I'm thinking of buying a Vocaster One to replace my current Audient interface. Does it work at a basic level—just getting audio input from my microphone into Audacity for example? Or does more work need to be done to enable that basic support in addition to supporting the proprietary features inside this project's GUI?

Based on my reading of this support article, it should work at a basic level: https://support.focusrite.com/hc/en-gb/articles/208530735-Is-my-Focusrite-Product-compatible-with-Linux

But I don't want to buy something that won't be useful for a few months. Just basic functionality is enough for me at the moment.

geoffreybennett commented 6 months ago

Hi @kekkoudesu,

Yes the Vocaster One and Two work fine at a basic level. Getting audio in and out is no problem because they are USB Audio Class Compliant. See also my FAQ to understand where the driver & GUI fit in: https://github.com/geoffreybennett/alsa-scarlett-gui/blob/master/FAQ.md under "Do I need the driver for my Focusrite interface?"

If you only need one mic input, and you don't need line/instrument inputs, the Vocaster One to me at least seems like a great little unit, and I'd recommend it for use with Linux.

Personally I'd get the Vocaster Two for the two mic inputs, two headphones outputs, stereo aux input (rather than mono), and Bluetooth, but it entirely depends on your use case of course.

In terms of the kernel driver, the Vocaster actually looks a lot like an earlier version of the 4th Gen Scarletts (not surprising, given the timing) so it wasn't hard to add support for the proprietary features which are common to them. I've got all these features working in the kernel driver and the GUI so far:

I've also got the advanced Vocaster-only features (compressor, LPF, and PEQ) working now in the kernel driver, and I'm progressing on the GUI for that.

Regards, Geoffrey.

kekkoudesu commented 6 months ago

Thanks so much for the detailed response! :smile:

Happy to hear it works out-of-the-box and that you're making good progress on getting the additional features working in the program.

My use case is not very professional. It's for some hobbyist voiceover work, miscellaneous, and mostly voice calls. Kind of overkill, as I already own a Blue Yeti, but I liked my Rode NT1-A for the better quality. And I needed an interface that had enough gain to support my Procaster (the Audient cranked up to max 58dB is still quieter than I'd like; the sensitivity of the microphone is rated as 56dB). The Vocaster One has 70dB of gain range, which should be plenty. It might see more professional use someday, but I don't think I'm going to ever need more than one mic input.

Either way, I really appreciate the response and all of your work on this program! It's awesome to see something like this built for Linux.

paolomainardi commented 1 month ago

Thanks @geoffreybennett, you are an hero 😃

What I didn't have still understood, if the kernel driver is already part of the mainline or must be compiled and installed, and in this case where can be found ?

Thanks!

geoffreybennett commented 1 month ago

Kernel driver went into 6.10. If you don't have 6.10 then you can use the backported driver: https://github.com/geoffreybennett/scarlett-gen2/releases

paolomainardi commented 1 month ago

Thanks, @geoffreybennett everything is working fine under 6.10.4-arch2-1

I have just one question, from the GUI I see the "Enhance" button, AFAIK it should have 3 selectable presets on Windows/MacOS, are they supported ?

geoffreybennett commented 1 month ago

Hi @paolomainardi,

The Linux Vocaster kernel driver supports uploading compressor and filter settings to the device, but there is not yet any GUI for adjusting those settings. I have plans for a GUI, but it is a lot of work. At the moment to change the settings you need to use the amixer CLI tool which is terribly unfriendly. Remind me to extract the presets from FC sometime and I can put them in a shell script to let you use them.

Regards, Geoffrey.

paolomainardi commented 1 month ago

Hi @geoffreybennett Thanks for your message. Everything is clear now, so if I've understood well, the firmware has some default presets that must be extracted, and the card supports custom presets, too. This means having more features than the official software.

Out of curiosity, what preset is used when using the enhance button now?

geoffreybennett commented 1 month ago

Almost! The hardware actually knows nothing about presets; it only has the compressor and filter parameters. The "presets" are an invention of the Focusrite Control software. When you select a preset, that represents a collection of compressor and filter parameters that get uploaded to the hardware.

So, it's not possible to see what preset is used except by reading the parameters and seeing if they match the parameters of a known preset.

If you're curious, run aplay -l to find the card name (probably USB or USB_1) then run amixer -cUSB contents to browse all the parameters. Look for "Compressor", "PEQ Coefficients", and "Pre-Comp Coefficients".

paolomainardi commented 1 month ago

Thanks a lot @geoffreybennett, I'll go to check it soon.

Still wondering what the hardware enhance button does, is it a default preset or something ?

geoffreybennett commented 1 month ago

The hardware enhance button is a global enable/disable of the DSP processing (whatever happens to be programmed into the compressor and filter settings). The factory-default compressor settings seem to match the default FC compressor settings, but the filter does not appear to match any of the FC presets.

I extracted the default parameters and the FC presets and put them into a shell script if you'd like to try them out.

The DSP structure is: 2x Pre-Comp Filters → Compressor → 3x PEQ Filters Each filter is a biquad (5 coefficients) that can be configured as various types, including LPF, HPF, notch, peak, shelf, etc. The presets are probably all HPF for the Pre-Comp Filters and peaking (boost/cut) for the PEQ filters.

I did the shell script for a Vocaster One. Let me know if you've got a Vocaster Two and I'll update it.

vocaster-dsp.gz

paolomainardi commented 1 month ago

Wow, thanks a lot @geoffreybennett, you are an hero :) I'll try them tomorrow and let you know.

Sorry for my ignorance, what do you mean with the acronym FC ?

geoffreybennett commented 1 month ago

Sorry, FC = Focusrite Control, although of course that doesn't support the Vocaster :man_facepalming:. Whereever I said FC or Focusrite Control above, please read "Vocaster Hub". FC is for the Scarlett/Clarett interfaces which don't have this programmable DSP stuff.

paolomainardi commented 1 month ago

Thanks, @geoffreybennett; all clear.

paolomainardi commented 1 month ago

@geoffreybennett, I just tried the scripts; wow, they work perfectly. Are you planning to integrate this script (not the GUI) into the Scarlett-Gui package?

geoffreybennett commented 1 month ago

That's great! And yeah, that's a good idea; I'm thinking how I can do that. Or how to put at least that functionality in the GUI.

paolomainardi commented 1 month ago

Thanks a lot for everything @geoffreybennett Having them in the GUI would be great and super useful, it opens the door to create custom presets too. But to start even the script is pure gold.