diff --git a/.github/workflows/build-debian-package.yml b/.github/workflows/build-debian-package.yml index f880aad..eeb0418 100644 --- a/.github/workflows/build-debian-package.yml +++ b/.github/workflows/build-debian-package.yml @@ -44,7 +44,7 @@ jobs: maintainer: geoffreybennett depends: 'libgtk-4-1, libasound2, alsa-utils' version: ${{ env.APP_VERSION }} - desc: ${{ env.APP_NAME }} is a Gtk4 GUI for the ALSA controls presented by the Linux kernel Focusrite Scarlett2 Mixer Driver. + desc: ${{ env.APP_NAME }} is a Gtk4 GUI for the ALSA controls presented by the Linux kernel Focusrite USB drivers. - name: Upload Release Asset uses: actions/upload-release-asset@v1 diff --git a/FAQ.md b/FAQ.md index 1448740..33e6417 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,37 +1,40 @@ -# FAQ for the Scarlett2 Mixer Driver and `alsa-scarlett-gui` +# FAQ for the ALSA Scarlett Control Panel (`alsa-scarlett-gui`) ## What is this? -The Scarlett2 Protocol Driver (also known as the Scarlett2 Mixer -Driver) is a part of the Linux kernel, enhancing the ALSA kernel -driver with additional controls for Focusrite Scarlett, Clarett, and -Vocaster interfaces. +The ALSA Scarlett Control Panel (`alsa-scarlett-gui`) is an +easy-to-use application for adjusting the ALSA controls provided by +three Linux kernel drivers for Focusrite USB interfaces: + +1. The Scarlett 1st Gen Mixer Driver (for 1st Gen 6i6, 8i6, 18i6, 18i8, 18i20) +2. The Scarlett2 Protocol Driver (for 2nd/3rd Gen interfaces, small 4th Gen, Clarett, and Vocaster) +3. The FCP (Focusrite Control Protocol) Driver (for big 4th Gen interfaces: 16i16, 18i16, 18i20) To check if your kernel is already up-to-date, and how to upgrade if not, see the [Control Panel Installation Prerequisites — Linux Kernel](docs/INSTALL.md). -`alsa-scarlett-gui` is an easy-to-use application to adjust those -controls. +## Do I need these drivers for my Focusrite interface? -## Do I need the driver for my Focusrite interface? - -In order to get audio working? No. Focusrite USB interfaces are +For basic audio functionality? No. Focusrite USB interfaces are “plug-and-play” — they are USB Audio Class Compliant, meaning they work out-of-the-box with the standard ALSA USB audio driver (to get full functionality on Scarlett 3rd/4th Gen/Vocaster interfaces, first deactivate MSD mode by holding down the 48V button while powering it on). +However, to access the mixer, routing, and hardware-specific features, +you'll need the appropriate driver for your interface model. + ## MSD Mode? -“MSD Mode” is the “Mass Storage Device Mode” that the Scarlett 3rd and +"MSD Mode" is the "Mass Storage Device Mode" that the Scarlett 3rd and 4th Gen interfaces ship in. If MSD Mode is enabled, you need to disable it and restart your interface to get access to its full functionality. -When you plug the interface in, there’ll be a tiny read-only virtual +When you plug the interface in, there'll be a tiny read-only virtual disk that has a link to the Focusrite product registration page; until you turn off MSD Mode not all features of the interface will be available. @@ -40,49 +43,62 @@ You can turn off MSD Mode by holding down the 48V button while powering on the interface, or by clicking the button in `alsa-scarlett-gui` and rebooting it. -## What is the purpose of the driver if it’s not needed for audio? +If you do the recommended/required (depending on the model) firmware +update, MSD Mode will automatically be turned off. -This driver is for users who want more control over their interface. -It allows for detailed manipulation of internal audio routing and -settings specific to Scarlett, Clarett, and Vocaster devices, beyond -the basic audio I/O functionality. Also, being able to monitor the -audio levels seen by the interface is really useful. +## What is the purpose of these drivers if they're not needed for basic audio? + +These drivers are for users who want more control over their +interface. They allow for detailed manipulation of: + +- Internal audio routing +- Hardware-specific settings +- Mixer functionality +- Level monitoring +- Input/output configuration + +These controls go beyond the basic audio I/O functionality provided by +the generic ALSA USB audio driver. ## What interfaces are supported? -- All Scarlett 2nd Gen interfaces with software controls (there are no - software controls on the 2nd Gen Solo and 2i2, so the mixer driver - is irrelevant). +The ALSA Scarlett Control Panel supports: -- All Scarlett 3rd Gen interfaces. +- **Scarlett 1st Gen**: 6i6, 8i6, 18i6, 18i8, 18i20 +- **Scarlett 2nd Gen**: 6i6, 18i8, 18i20 +- **Scarlett 3rd Gen**: Solo, 2i2, 4i4, 8i6, 18i8, 18i20 +- **Scarlett 4th Gen**: Solo, 2i2, 4i4, 16i16, 18i16, 18i20 +- **Clarett USB and Clarett+**: 2Pre, 4Pre, 8Pre +- **Vocaster**: One, Two -- Scarlett 4th Gen Solo, 2i2, and 4i4. - -- All Clarett USB and Clarett+ interfaces. - -- Vocaster One and Vocaster Two. +Note: The Scarlett 1st and 2nd Gen small interfaces (Solo, 2i2, 2i4) +don't have any software controls. All the controls are available from +the front panel, so they don't require the specialised drivers or this +GUI. ## Where are the options to set the sample rate and buffer size? -It’s important to note that the Scarlett2 driver and -`alsa-scarlett-gui` have nothing to do with audio input/output to and -from the device. This task is managed by the generic part of the ALSA -USB soundcard driver. +The ALSA Scarlett Control Panel doesn't handle audio input/output +settings like sample rate and buffer size. These settings are managed +by the application using the soundcard, typically a sound server such +as PulseAudio, JACK, or PipeWire. -Audio settings like the sample rate and buffer size are chosen by the -application which is using the soundcard. In most cases, that is a -sound server such as PulseAudio, JACK, or PipeWire. +The sample rate shown in the control panel is informative only and +displays the current rate being used by applications. If it shows +“N/A” then no application is using the interface. Note that not all features are available at higher sample rates; refer to the user manual of your interface for more information. ## Help?! -For help with the driver: -https://github.com/geoffreybennett/scarlett-gen2/issues +For help with the Scarlett2 and FCP kernel drivers: +https://github.com/geoffreybennett/linux-fcp/issues + +For help with the FCP user-space side: +https://github.com/geoffreybennett/fcp-support/issues For help with `alsa-scarlett-gui`: https://github.com/geoffreybennett/alsa-scarlett-gui/issues -For general Linux audio help: -https://linuxmusicians.com +For general Linux audio help: https://linuxmusicians.com diff --git a/README.md b/README.md index 119a409..d98c5e3 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,17 @@ -# ALSA Scarlett2 Control Panel (`alsa-scarlett-gui`) +# ALSA Scarlett Control Panel (`alsa-scarlett-gui`) `alsa-scarlett-gui` is a Gtk4 GUI for the ALSA controls presented by -the Linux kernel Focusrite Scarlett2 USB Protocol Mixer Driver. +the three Linux kernel Focusrite USB drivers: + +- Scarlett 1st Gen Driver for ALSA +- Scarlett2 USB Protocol Mixer Driver +- FCP (Focusrite Control Protocol) Driver Supported interfaces: +- Scarlett 1st Gen 6i6, 8i6, 18i6, 18i8, 18i20 - Scarlett 2nd Gen 6i6, 18i8, 18i20 - Scarlett 3rd Gen Solo, 2i2, 4i4, 8i6, 18i8, 18i20 -- Scarlett 4th Gen Solo, 2i2, 4i4 +- Scarlett 4th Gen Solo, 2i2, 4i4, 16i16, 18i16, 18i20 - Clarett 2Pre, 4Pre, 8Pre USB - Clarett+ 2Pre, 4Pre, 8Pre - Vocaster One and Vocaster Two @@ -15,7 +20,7 @@ Supported interfaces: -The Focusrite USB audio interfaces are class compliant meaning that +All Focusrite USB audio interfaces are class compliant meaning that they work “out of the box” on Linux as audio and MIDI interfaces (although on Gen 3/4/Vocaster you need to disable MSD mode first for full functionality). However, except for some of the smallest models, @@ -28,8 +33,8 @@ awful experience. The existing applications like `alsamixer` and controls presented for the Gen 3 18i20. Even the smallest Gen 3 4i4 interface at last count had 84 ALSA controls. -Announcing the ALSA Scarlett2 Control Panel, now supporting Scarlett -Gen 2, 3, 4, Clarett, and Vocaster! +Announcing the ALSA Scarlett Control Panel, now supporting all +Scarlett Gen 1, 2, 3, 4, Clarett, and Vocaster USB interfaces! ![Demonstration](img/demo.gif) @@ -43,12 +48,16 @@ known issues. Information specific to various models: +- [Scarlett 1st Gen](docs/iface-1st-gen.md) + - [Scarlett 3rd Gen Solo and 2i2](docs/iface-small.md) - [Scarlett 2nd Gen 6i6+, 3rd Gen 4i4+, Clarett USB, and Clarett+](docs/iface-large.md) -- [Scarlett 4th Gen](docs/iface-4th-gen.md) +- [Scarlett Small 4th Gen](docs/iface-4th-gen-small.md) + +- [Scarlett Big 4th Gen](docs/iface-4th-gen-big.md) ## Donations diff --git a/alsa-scarlett-gui.spec.template b/alsa-scarlett-gui.spec.template index adc3d6b..2cb9e82 100644 --- a/alsa-scarlett-gui.spec.template +++ b/alsa-scarlett-gui.spec.template @@ -1,4 +1,4 @@ -Summary: ALSA Scarlett Gen 2/3 Control Panel +Summary: ALSA Scarlett Control Panel Name: alsa-scarlett-gui Version: VERSION Release: 1%{?dist} @@ -9,7 +9,7 @@ Source: %{name}-%{version}.tar.gz %description alsa-scarlett-gui is a Gtk4 GUI for the ALSA controls presented by the -Linux kernel Focusrite Scarlett2 Mixer Driver. +Linux kernel Focusrite USB drivers. %prep %setup diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 8d7e704..b09a45c 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -1,29 +1,46 @@ -# ALSA Scarlett2 Control Panel Installation +# ALSA Scarlett Control Panel Installation ## Prerequisites ### Linux Kernel -You need to be running a Linux Kernel that has the ALSA Scarlett2 -Protocol Driver. Use `uname -r` to check what kernel version you are -running. +You need to be running a Linux Kernel that contains the appropriate +driver for your interface. Use `uname -r` to check what kernel version +you are running. -- For reasonable functionality of Scarlett 2nd and 3rd Gen and Clarett - interfaces, you need at least Linux kernel version 6.7 -- For Scarlett 4th Gen support and firmware updates from Linux, you - need at least 6.8 -- For Vocaster support, you’ll need to build an updated - `snd-usb-audio` driver (or wait for 6.10) +Check the following table to see which driver your interface uses and +the first kernel version that the driver was included in: -If you’ve got a Vocaster, or if your distribution doesn’t include a -recent-enough kernel for your interface, you can get the latest driver -from here and build it for your current kernel: +| Series | Models | Driver | Kernel Version | +|-----------|--------|--------|:----------------------:| +| Scarlett 1st Gen | Solo, 2i2, 2i4 | N/A* | Any | +| Scarlett 1st Gen | 6i6, 8i6, 18i6, 18i8, 18i20 | Scarlett 1st Gen Mixer Driver | 3.19+ | +| Scarlett 2nd Gen | Solo, 2i2, 2i4 | N/A* | Any | +| Scarlett 2nd Gen | 6i6, 18i8, 18i20 | Scarlett2 Mixer Driver | 6.7+ | +| Scarlett 3rd Gen | Solo, 2i2, 4i4, 8i6, 18i8, 18i20 | Scarlett2 Mixer Driver | 6.7+ | +| Scarlett 4th Gen | Solo, 2i2, 4i4 | Scarlett2 Mixer Driver | 6.8+ | +| Scarlett 4th Gen | 16i16, 18i16, 18i20 | FCP (Focusrite Control Protocol) Driver | 6.14+ | +| Clarett USB and Clarett+ | 2Pre, 4Pre, 8Pre | Scarlett2 Mixer Driver | 6.7+ | +| Vocaster | One, Two | Scarlett2 Mixer Driver | 6.10+ | -https://github.com/geoffreybennett/scarlett-gen2/releases +\* The small 1st Gen and 2nd Gen models don’t have any proprietary +software controls so they don’t need a driver beyond the standard ALSA +USB Audio driver. This means that this application (alsa-scarlett-gui) +is not needed, useful, or supported for these models. -#### Enabling the Driver +If your distribution doesn’t include a recent-enough kernel for your +interface, you can get the latest driver from here and build it for +your current kernel if it's not too old (the Scarlett2 and FCP drivers +are both maintained in the same tree here): +https://github.com/geoffreybennett/linux-fcp/releases -As of Linux 6.7 the driver is enabled by default. Check the driver +Kernel 6.7 and later have the Scarlett2 driver enabled by default. The +Scarlett 1st Gen driver and the FCP drivers are always enabled. + +#### Enabling the Scarlett2 Driver + +Some kernels before 6.7 have an earlier version of the Scarlett2 +driver which is disabled by default. If this is you, check the driver status (after plugging your interface in) with this command: ``` @@ -35,12 +52,12 @@ If all is good you’ll see messages like this: ``` New USB device found, idVendor=1235, idProduct=8215, bcdDevice= 6.0b Product: Scarlett 18i20 USB -Focusrite Scarlett Gen 3 Mixer Driver enabled (pid=0x8215); report -any issues to https://github.com/geoffreybennett/scarlett-gen2/issues +Focusrite Scarlett Gen 3 Mixer Driver enabled (pid=0x8215); ... ``` If you don’t see the “Mixer Driver” message or if it shows “disabled” -then check the [OLDKERNEL.md](OLDKERNEL.md) instructions. +then check the [OLDKERNEL.md](OLDKERNEL.md) instructions (or, +preferably, upgrade your distro/kernel!). ### Gtk4 @@ -49,16 +66,27 @@ doesn’t have them natively, try the Flatpak instructions below. ### Firmware -As of Linux 6.8, firmware updates of all the supported interfaces can -be done through Linux. This is mandatory for Scarlett 4th Gen and -Vocaster interfaces (unless you’ve already updated it using the -manufacturer’s software), and optional for Scarlett 2nd and 3rd Gen, -Clarett USB, and Clarett+ interfaces. +#### Scarlett2 Driver + +As of Linux 6.8, firmware updates of all supported interfaces from the +2nd Gen onwards can be done through Linux. This is mandatory for +Scarlett 4th Gen and Vocaster interfaces (unless you’ve already +updated it using the manufacturer’s software), and optional but +recommended for Scarlett 2nd and 3rd Gen, Clarett USB, and Clarett+ +interfaces. Download the firmware from https://github.com/geoffreybennett/scarlett2-firmware and place it in `/usr/lib/firmware/scarlett2` or use the RPM/deb package. +#### FCP Driver + +Firmware updates for the big Scarlett 4th Gen interfaces is currently +only possible through the CLI `fcp-tool` utility available in the +[fcp-support](https://github.com/geoffreybennett/fcp-support). You +need to install this package and update the firmware before +alsa-scarlett-gui will work. + ## Building and Running On Fedora, these packages need to be installed: diff --git a/docs/OLDKERNEL.md b/docs/OLDKERNEL.md index 9735d33..376fdd7 100644 --- a/docs/OLDKERNEL.md +++ b/docs/OLDKERNEL.md @@ -1,14 +1,18 @@ # ALSA Scarlett2 Usage With Old Kernels +**This information is mostly for historical purposes. If you’re +running a kernel before 6.7, you should upgrade to a newer kernel.** + Linux kernel 6.7 (check your version with `uname -r`) was the first -kernel version with this driver enabled by default. It’s recommended -that you run 6.7 or later, or build the backported driver for your -kernel. If you do, then these instructions aren’t relevant; continue -with [INSTALL.md](INSTALL.md) for prerequisites, how to build, -install, and run `alsa-scarlett-gui`. +kernel version with the Scarlett2 driver enabled by default. It’s +recommended that you run 6.7 or later, or build the backported driver +for your kernel. If you do, then these instructions aren’t relevant; +continue with [INSTALL.md](INSTALL.md) for prerequisites, how to +build, install, and run `alsa-scarlett-gui`. If you’ve got a Scarlett Gen 2 or 3 or a Clarett+ 8Pre and don’t mind -the level meters not working, then the minimum kernel versions are: +the level meters not working, then the first kernel support was added +in: - **Scarlett Gen 2**: Linux 5.4 (bugs fixed in Linux 5.14) - **Scarlett Gen 3**: Linux 5.14 @@ -18,7 +22,7 @@ the level meters not working, then the minimum kernel versions are: Install the latest version of the backported driver from here: -https://github.com/geoffreybennett/scarlett-gen2/releases +https://github.com/geoffreybennett/linux-fcp/releases then you can ignore the instructions below. diff --git a/docs/USAGE.md b/docs/USAGE.md index c64fb82..c271005 100644 --- a/docs/USAGE.md +++ b/docs/USAGE.md @@ -1,4 +1,4 @@ -# ALSA Scarlett2 Control Panel Usage +# ALSA Scarlett Control Panel Usage Refer to [INSTALL.md](INSTALL.md) for prerequisites, how to build, install, and run. @@ -59,7 +59,7 @@ restart the interface, and in a moment the main window will appear. The View → Startup menu option opens a window to configure settings that only take effect when the interface is powered on. -The options common to all interfaces are: +The options common to most interfaces are: - **Reset Configuration**: this will reset the configuration to the factory defaults. This is particularly useful with the 4th Gen and @@ -105,9 +105,13 @@ menu option File → Interface Simulation to load. The controls and menu items which are available vary widely, depending on your specific interface. -There are three broad categories of interfaces with different +There are five broad categories of interfaces with different capabilities; each category of interface is described in a separate -ocument: +document: + +- [Scarlett 1st Gen 6i6+](iface-1st-gen.md) + + Full routing and mixing capabilities, but some significant caveats. - [Scarlett 3rd Gen Solo and 2i2](iface-small.md) @@ -119,13 +123,21 @@ ocument: Full routing and mixing capabilities. -- [Scarlett 4th Gen](iface-4th-gen.md) +- [Scarlett Small 4th Gen](iface-4th-gen-small.md) Full routing and mixing capabilities, remote-controlled input gain, but no output controls. +- [Scarlett Big 4th Gen](iface-4th-gen-big.md) + + Full routing and mixing capabilities, remote-controlled input gain + and output volume controls. + ## Known Bugs/Issues +- For interfaces using the FCP driver, alsa-scarlett-gui needs to be + started after the interface is connected and fcp-server has started. + - Load/Save uses `alsactl` which will be confused if the ALSA interface name (e.g. `USB`) changes. diff --git a/docs/iface-1st-gen.md b/docs/iface-1st-gen.md new file mode 100644 index 0000000..022010d --- /dev/null +++ b/docs/iface-1st-gen.md @@ -0,0 +1,155 @@ +# ALSA Scarlett Control Panel + +## Scarlett 1st Gen Interfaces + +This document describes how to use the ALSA Scarlett Control Panel +with the Scarlett 1st Gen interfaces: + +- Scarlett 1st Gen 6i6, 8i6, 18i6, 18i8, 18i20 + +Note: The 1st Gen Scarlett Solo, 2i2, and 2i4 have all their controls +accessible from the front panel of the device, and there are no +proprietary software controls, so they do not require this control +panel software. + +## Important Driver Limitations + +The 1st Gen Scarlett devices have some important limitations in the +ALSA driver implementation that you should be aware of: + +1. **Initial State Detection**: The driver cannot read the current + state of hardware controls (this appears to be a limitation of the + device firmware). When alsa-scarlett-gui starts, what you see will + not reflect the actual state of your device unless the controls + have previously been set since startup. + +2. **State Update Issues**: The driver only updates the hardware state + when it thinks a setting needs to be changed. If the driver + incorrectly believes a control is already in the desired state, it + won't actually update the control. + +### Recommended Workaround + +To ensure your settings are properly applied: + +1. Apply a "zero" configuration that sets all controls to values that + are *not* what you desire. +2. Then apply your desired configuration + +This two-step process helps ensure that the driver actually sends all +commands to the hardware. You may want to create a script using +`alsactl` for this purpose. + +## Main Window + +The main window is divided into three sections: + +- Global Controls +- Analogue Input Controls +- Analogue Output Controls + +The particular controls available depend on the interface model. + +Note that the View menu option lets you open two other windows which +contain additional controls, described in the following sections: +- [Routing](#routing) +- [Mixer](#mixer) + +The Levels and Startup windows that are available for later-generation +interfaces are not available for 1st Gen interfaces due to driver limitations. + +### Global Controls + +Global controls relate to the operation of the interface as a whole. + +#### Clock Source + +Clock Source selects where the interface receives its digital clock +from. If you aren't using S/PDIF or ADAT inputs, set this to Internal. + +#### Sync Status + +Sync Status indicates if the interface is locked to a valid digital +clock. If you aren't using S/PDIF or ADAT inputs and the status is +Unlocked, change the Clock Source to Internal. + +### Analogue Input Controls + +#### Inst + +The Inst buttons are used to select between Mic/Line and Instrument +level/impedance. When plugging in microphones or line-level equipment +(such as a synthesizer, external preamp, or effects processor) to the +input, set it to “Line”. The “Inst” setting is for instruments with +pickups such as guitars. + +#### Pad + +Enabling Pad engages a 10dB attenuator in the channel, giving you more +headroom for very hot signals. + +#### Gain + +The Gain switch selects Low or High gain for the input channel. + +### Analogue Output Controls + +The analogue output controls let you set the output volume (gain) on +the analogue line outputs. + +Click and drag up/down on the volume dial to change the volume, use +your arrow keys, Home/End/PgUp/PgDn keys, or use your mouse scroll +wheel to adjust. You can also double-click on it to quickly toggle the +volume between off and 0dB. + +## Routing + +The routing window allows complete control of signal routing between +the hardware inputs/outputs, internal mixer, and PCM (USB) +inputs/outputs. + +![Routing Window](../img/scarlett-1st-gen-6i6-routing.png) + +To manage the routing connections: + +- Click and drag from a source to a sink or a sink to a source to + connect them. Audio from the source will then be sent to that sink. + +- Click on a source or a sink to clear the links connected to that + source/sink. + +Note that a sink can only be connected to one source, but one source +can be connected to many sinks. If you want a sink to receive input +from more than one source, use the mixer inputs and outputs: + +- Connect the sources that you want to mix together to mixer inputs +- Connect mixer outputs to the sinks that you want to receive the + mixed audio +- Use the Mixer window to set the amount of each mixer input that is + sent to each mixer output + +The Presets menu can be used to clear all connections, or to set up +common configurations: + +- The "Direct" preset sets up the usual configuration using the + interface as a regular audio interface by connecting: + + - all Hardware Inputs to PCM Inputs + - all PCM Outputs to Hardware Outputs + +- The "Preamp" preset connects all Hardware Inputs to Hardware + Outputs. + +- The "Stereo Out" preset connects PCM 1 and 2 Outputs to pairs of + Hardware Outputs. + +## Mixer + +If you use the Routing window to connect Sources to Mixer Inputs and +Mixer Outputs to Sinks, then you can use the Mixer window to set the +amount of each Mixer Input that is sent to each Mixer Output using a +matrix of controls. + +Click and drag up/down on the gain controls to adjust, or use your +mouse scroll wheel. You can also double-click on the control to +quickly toggle between off and 0dB. diff --git a/docs/iface-4th-gen-big.md b/docs/iface-4th-gen-big.md new file mode 100644 index 0000000..cf900cb --- /dev/null +++ b/docs/iface-4th-gen-big.md @@ -0,0 +1,210 @@ +# ALSA Scarlett Control Panel + +## Scarlett Big 4th Gen Interfaces + +This document describes how to use the ALSA Scarlett Control Panel +with the big Scarlett 4th Gen interfaces: + +- Scarlett 4th Gen 16i16, 18i16, 18i20 + +### FCP Driver + +The big 4th Gen interfaces are supported by a new “FCP” (Focusrite +Control Protocol) driver introduced in Linux 6.14. If you haven't +installed +[fcp-support](https://github.com/geoffreybennett/fcp-support) yet, you +need to do that (and update the firmware) before you can use +alsa-scarlett-gui. + +## Main Window + +The main window is divided into three sections: +- Global Controls +- Analogue Input Controls +- Analogue Output Controls + +The main window for the 16i16 interface is shown below. The 18i16 and +18i20 interfaces are similar, but with more controls. + +![Main Window](../img/iface-4th-gen-big.png) + +### Global Controls + +#### Clock Source (interfaces with S/PDIF or ADAT inputs only) + +Clock Source selects where the interface receives its digital clock +from. If you aren’t using S/PDIF or ADAT inputs, set this to Internal. + +#### Sync Status + +Sync Status indicates if the interface is locked to a valid digital +clock. If you aren’t using S/PDIF or ADAT inputs and the Sync Status +is Unlocked, change the Clock Source to Internal. + +#### Sample Rate + +Sample Rate is informative only, and displays the current sample rate +if the interface is currently in use. In ALSA, the sample rate is set +by the application using the interface, which is usually a sound +server such as PulseAudio, JACK, or PipeWire. + +#### Speaker Switching + +Speaker Switching lets you swap between two pairs of monitoring +speakers very easily. + +### Analogue Input Controls + +#### Input Select + +The “Input Select” control allows you to choose which channel the +hardware 48V, Inst, Air, Auto, and Safe buttons control. + +#### Link + +The “Link” control links the 48V, Inst, Air, Auto, and Safe controls +together so that they control a stereo pair of channels +simultaneously. + +#### Gain + +The “Gain” controls adjust the input gain for the selected channel. +Click and drag up/down on the control to adjust the gain, use your +mouse scroll wheel, or click the control to select it and use the +arrow keys, Page Up, Page Down, Home, and End keys. + +#### Autogain + +When the “Autogain” control is enabled, the interface will listen to +the input signal for ten seconds and automatically adjust the gain to +get the best signal level. When autogain is not running, the +most-recent autogain exit status is shown below the “Autogain” +control. + +#### Safe + +“Safe” mode is a feature that automatically reduces the gain if the +signal is too loud. This can be useful to prevent clipping. + +#### Instrument + +The Inst button(s) are used to select between Mic/Line and Instrument +level/impedance. When plugging in microphones or line-level equipment +(such as a synthesizer, external preamp, or effects processor) to the +input, set it to “Line”. The “Inst” setting is for instruments with +pickups such as guitars. + +#### Air + +The Scarlett 3rd Gen introduced Air mode which transformed your +recordings and inspired you while making music by boosting the +signal’s high-end. The 4th Gen interfaces now call that “Air Presence” +and add a new mode “Air Presence+Drive” which boosts mid-range +harmonics in your sound. + +#### Phantom Power (48V) + +Turning the “48V” switch on sends “Phantom Power” to the XLR +microphone input. This is required for some microphones (such as +condensor microphones), and damaging to some microphones (particularly +vintage ribbon microphones). + +### Analogue Output Controls + +The analogue output controls are a bit sparse. More controls are +coming soon. + +#### Volume Knobs + +The volume knobs control the volume of the analogue outputs. The two +channels of the stereo pairs are shown separately, but are internally +linked together. + +#### Mute and Dim + +The speaker icon buttons are “mute” and “dim” (reduce volume) buttons, +corresponding to the front-panel buttons on the interface (although +only the 18i20 has a physical dim button). + +## Routing and Mixing + +The routing window allows (almost) complete control of signal routing +between the hardware inputs/outputs, internal mixer, and PCM (USB) +inputs/outputs. + +The routing and mixing capabilities of the big 4th Gen interfaces are +the same in concept as the older interfaces, but the mixer inputs are +fixed and not shown in the routing window as there are too many to +sensibly display. + +From the main window, open the Routing window with the View → Routing +menu option or pressing Ctrl-R: + +![4th Gen 16i16 Routing](../img/scarlett-4th-gen-16i16-routing.png) + +To manage the routing connections: + +- Click and drag from a source to a sink or a sink to a source to + connect them. Audio from the source will then be sent to that sink. + +- Click on a source or a sink to clear the links connected to that + source/sink. + +Note that a sink can only be connected to one source, but one source +can be connected to many sinks. If you want a sink to receive input +from more than one source, connect the sinks to mixer outputs: + +- Connect mixer outputs to the sinks that you want to receive the + mixed audio +- Use the Mixer window to set the amount of each mixer input that is + sent to each mixer output + +The Presets menu can be used to clear all connections, or to set up +common configurations: + +- The “Direct” preset sets up the usual configuration using the + interface as a regular audio interface by connecting: + + - all Hardware Inputs to PCM Inputs + - all PCM Outputs to Hardware Outputs + +- The “Preamp” preset connects all Hardware Inputs to Hardware + Outputs. + +- The “Stereo Out” preset connects PCM 1 and 2 Outputs to pairs of + Hardware Outputs. + +To adjust the routing: + +- Click and drag from a source to a sink or a sink to a source to + connect them. Audio from the source will then be sent to that sink. + +- Click on a source or a sink to clear the links connected to that + source/sink. + +Note that a sink can only be connected to one source, but one source +can be connected to many sinks. + +To adjust the mixer output levels: + +1) Open the mixer window with the main window View → Mixer menu + option, or press Ctrl-M. + +2) Mixer levels can be adjusted with your keyboard or mouse in the + same way as the [Gain Controls](#gain). + +## Levels + +The meters show the levels seen by the interface at every routing +source as well as the analogue outputs. Open this window by selecting +the View → Levels menu option or pressing Ctrl-L. + +![Levels](../img/window-levels-4th-gen-big.png) + +Look at this in conjunction with the routing window to understand +which meter corresponds to which source or sink. + +Thanks for reading this far! If you appreciate the hundreds of hours +of work that went into the kernel driver, the control panel, and this +documentation, please consider supporting the author with a +[donation](../README.md#donations). diff --git a/docs/iface-4th-gen.md b/docs/iface-4th-gen-small.md similarity index 96% rename from docs/iface-4th-gen.md rename to docs/iface-4th-gen-small.md index 2256507..9ba08d8 100644 --- a/docs/iface-4th-gen.md +++ b/docs/iface-4th-gen-small.md @@ -1,9 +1,9 @@ -# ALSA Scarlett2 Control Panel +# ALSA Scarlett Control Panel -## Scarlett 4th Gen Interfaces +## Scarlett Small 4th Gen Interfaces -This document describes how to use the ALSA Scarlett2 Control Panel -with the Scarlett 4th Gen interfaces: +This document describes how to use the ALSA Scarlett Control Panel +with the small Scarlett 4th Gen interfaces: - Scarlett 4th Gen Solo, 2i2, and 4i4 @@ -39,7 +39,7 @@ The main window for the Solo and 2i2 interfaces is shown below; the Monitor control, and can show the position of the front panel volume knobs. -![Main Window](../img/iface-4th-gen.png) +![Main Window](../img/iface-4th-gen-small.png) ### Global Controls @@ -204,10 +204,7 @@ Important Notes: - The Focusrite Control 2 software can’t control most of this routing, so if you make changes here and then want to use Focusrite Control 2, you’ll probably need to reset the routing back to the factory - default settings. There’s currently no way to reset to factory - default settings from the Focusrite Control 2 software; you’ll need - to use the [Reset Configuration](USAGE.md#startup-controls) option - in this software, or the `scarlett2` utility. + default settings. To adjust the routing: @@ -338,7 +335,7 @@ sink: Hardware Outputs, Mixer Inputs, DSP Inputs, and PCM Inputs. Open this window by selecting the View → Levels menu option or pressing Ctrl-L. -![Levels](../img/window-levels-4th-gen.gif) +![Levels](../img/window-levels-4th-gen-small.gif) Look at this in conjunction with the routing window to understand which meter corresponds to which source or sink. diff --git a/docs/iface-large.md b/docs/iface-large.md index 79e421c..8052ff6 100644 --- a/docs/iface-large.md +++ b/docs/iface-large.md @@ -1,8 +1,8 @@ -# ALSA Scarlett2 Control Panel +# ALSA Scarlett Control Panel ## Large Scarlett 2nd and 3rd Gen and Clarett Interfaces -This document describes how to use the ALSA Scarlett2 Control Panel +This document describes how to use the ALSA Scarlett Control Panel with the larger Scarlett 2nd Gen, 3rd Gen, and Clarett USB interfaces: - Scarlett 2nd Gen 6i6, 18i8, 18i20 diff --git a/docs/iface-small.md b/docs/iface-small.md index b0a1d40..5b889c6 100644 --- a/docs/iface-small.md +++ b/docs/iface-small.md @@ -1,4 +1,4 @@ -# ALSA Scarlett2 Control Panel +# ALSA Scarlett Control Panel ## Small Scarlett 3rd Gen Interfaces diff --git a/img/iface-4th-gen-big.png b/img/iface-4th-gen-big.png new file mode 100644 index 0000000..1b7c48a Binary files /dev/null and b/img/iface-4th-gen-big.png differ diff --git a/img/iface-4th-gen.png b/img/iface-4th-gen-small.png similarity index 100% rename from img/iface-4th-gen.png rename to img/iface-4th-gen-small.png diff --git a/img/iface-none.png b/img/iface-none.png index 025e23d..191b477 100644 Binary files a/img/iface-none.png and b/img/iface-none.png differ diff --git a/img/scarlett-1st-gen-6i6-routing.png b/img/scarlett-1st-gen-6i6-routing.png new file mode 100644 index 0000000..cd10b04 Binary files /dev/null and b/img/scarlett-1st-gen-6i6-routing.png differ diff --git a/img/scarlett-4th-gen-16i16-routing.png b/img/scarlett-4th-gen-16i16-routing.png new file mode 100644 index 0000000..aa637dd Binary files /dev/null and b/img/scarlett-4th-gen-16i16-routing.png differ diff --git a/img/window-levels-4th-gen-big.png b/img/window-levels-4th-gen-big.png new file mode 100644 index 0000000..8957fa9 Binary files /dev/null and b/img/window-levels-4th-gen-big.png differ diff --git a/img/window-levels-4th-gen.gif b/img/window-levels-4th-gen-small.gif similarity index 100% rename from img/window-levels-4th-gen.gif rename to img/window-levels-4th-gen-small.gif diff --git a/src/about.c b/src/about.c index 94a1087..50ec745 100644 --- a/src/about.c +++ b/src/about.c @@ -24,16 +24,16 @@ void activate_about( gtk_show_about_dialog( w, - "program-name", "ALSA Scarlett2 Control Panel", + "program-name", "ALSA Scarlett Control Panel", "version", "Version " VERSION, "comments", "Gtk4 GUI for the ALSA controls presented by the\n" - "Linux kernel Focusrite Scarlett2 Mixer Driver", + "Linux kernel Focusrite USB drivers", "website", "https://github.com/geoffreybennett/alsa-scarlett-gui", "copyright", "Copyright 2022-2025 Geoffrey D. Bennett", "license-type", GTK_LICENSE_GPL_3_0, "logo", logo, - "title", "About ALSA Scarlett2 Mixer Interface", + "title", "About ALSA Scarlett Mixer Interface", "authors", authors, NULL ); diff --git a/src/iface-none.c b/src/iface-none.c index 475a0a0..f76c351 100644 --- a/src/iface-none.c +++ b/src/iface-none.c @@ -19,7 +19,7 @@ GtkWidget *create_window_iface_none(GtkApplication *app) { GtkWidget *w = gtk_application_window_new(app); gtk_window_set_resizable(GTK_WINDOW(w), FALSE); - gtk_window_set_title(GTK_WINDOW(w), "ALSA Scarlett2 Control Panel"); + gtk_window_set_title(GTK_WINDOW(w), "ALSA Scarlett Control Panel"); gtk_window_set_child(GTK_WINDOW(w), box); gtk_application_window_set_show_menubar( GTK_APPLICATION_WINDOW(w), TRUE diff --git a/src/iface-unknown.c b/src/iface-unknown.c index f589195..5935ad8 100644 --- a/src/iface-unknown.c +++ b/src/iface-unknown.c @@ -9,21 +9,15 @@ GtkWidget *create_iface_unknown_main(void) { "Sorry, I don’t recognise the controls on this card.\n\n" "These Focusrite models should be supported:\n" + "– Gen 1: 6i6/8i6/18i6/18i8/18i20\n" "– Gen 2: 6i6/18i8/18i20\n" "– Gen 3: Solo/2i2/4i4/8i6/18i8/18i20\n" - "– Gen 4: Solo/2i2/4i4\n" + "– Gen 4: Solo/2i2/4i4/16i16/18i16/18i20\n" + "– Vocaster One and Two\n" "– Clarett USB and Clarett+ 2Pre/4Pre/8Pre\n\n" - "Are you running a recent kernel with Scarlett2 support " - "enabled?\n\n" - - "Check dmesg output for “Focusrite ... Mixer Driver”:\n\n" - - "dmesg | grep -A 5 -B 5 -i focusrite\n\n" - - "For kernels before 6.7 you may need to create a file\n" - "/etc/modprobe.d/scarlett.conf\n" - "with an “options snd_usb_audio ...” line and reboot." + "Please check the prerequisites at:\n" + "https://github.com/geoffreybennett/alsa-scarlett-gui/" ); gtk_widget_set_margin(label, 30); diff --git a/src/vu.b4.alsa-scarlett-gui.desktop.template b/src/vu.b4.alsa-scarlett-gui.desktop.template index 5c328fa..64d8fff 100644 --- a/src/vu.b4.alsa-scarlett-gui.desktop.template +++ b/src/vu.b4.alsa-scarlett-gui.desktop.template @@ -1,6 +1,6 @@ [Desktop Entry] Type=Application -Name=ALSA Scarlett2 Control Panel +Name=ALSA Scarlett Control Panel Icon=vu.b4.alsa-scarlett-gui Exec=PREFIX/bin/alsa-scarlett-gui Categories=GTK;AudioVideo;Audio;Mixer;