Rocksmith 2014 on Linux with Steam/Proton and low latency audio : rocksmith
Driver on

Rocksmith 2014 on Linux with Steam/Proton and low latency audio : rocksmith

I used to be lastly capable of get extremely low latency audio for Rocksmith 2014 Remastered working on Steam for Linux with Proton. Utilizing vanilla RS similar to that in Proton shouldn’t be enjoyable in any respect on account of insanely excessive latency. So I although I would share a small how-to. It is a bit messy so please forgive me 🙂 When you’ve got ideas or issues so as to add, simply remark beneath.

Essential: All this solely works in case you have an audio interface that’s listed right here:

https://github.com/mdias/rs_asio#audio-interfaces-reported-to-work-well

Moreover you additionally must analysis in case your system is supported on ALSA/ASIO beneath Linux although I can say {that a} Scarlett 2i2 and an iRig 2 HD do work. The Realtone cable does not work with the setup beneath. You may ultimately make it work however you would need to discover out by how far my directions apply in that setup.

My setup:

  • Ubuntu 20.04.1 LTS absolutely updated (as of November 2020) with kernel 5.eight or greater

  • Steam for Linux with Beta participation and Proton 5.13-2 assigned to Rocksmith 2014

  • iRig 2 HD USB guitar interface on a USB 2.Zero or 3.Zero port

  • Studio speaker (IK iLoud) linked to the headphone out of the iRig

  • Boss WL-50 wi-fi guitar system (no cables, yay!)

Earlier than we begin: You’ll need to know the right way to edit and manipulate system recordsdata in a linux system and you’ll make adjustments to the boot supervisor of your distro. Log recordsdata and debug output are your mates. Issues can go actually unsuitable in case you are not cautious so do not say I did not warn you 😀

Base Setup

Software program we’ll want throughout this part:

A number of instruments have particular directions or software program dependencies you must meet to ensure that all the things to work correctly. Double verify the set up procedures on the github pages so you do not find yourself with incomplete installations or worse.

1. Software program set up

Set up KXStudio repositories by way of deb file from this hyperlink:

https://launchpad.web/~kxstudio-debian/+archive/kxstudio/+recordsdata/kxstudio-repos_10.0.3_all.deb

or do it the handbook method (debian/ubuntu):

https://kx.studio/Repositories

Set up functions by way of terminal

sudo apt set up rtirq grub-customizer jackd qjackctl wineasio

When you’ve got unmet dependencies then please resolve them earlier than persevering with

2. Making ready the kernel for realtime irq processing

Add the “threadirqs” choice to the grub boot supervisor kernel parameters. Ubuntu has the Grub Optimizer device to configure the linux boot loader or you are able to do it the previous method by way of nano.

The adjustments take impact after a reboot. For instance, right here is the parameter line on my system:

quiet splash mitigations=off threadirqs

Add your person account to the teams “audio”, “tty” and “rtkit”.

2. Putting in and organising Jack2 audio server

Open QjackCtl from the beginning menu and click on on Setup. On the primary tab click on on the interface dropdown and choose the guitar interface you’ve got linked to your USB and set the next:

Trace: Don’t use totally different gadgets for enter and output. Your guitar interface ought to act as enter and as output. In any other case you’re going to get numerous buffer underruns (xruns) in addition to tremendous dangerous distortion and stuttering in Rocksmith. Relying in your settings, you can even freeze your system in case you have very low Frames values configured.

Go to Superior. On the “Enter Machine” on the proper aspect you set the guitar interface once more. Tick the H/W Monitor field. Lastly go to Misc and tick the bins accoring to the display beneath.

r/rocksmith - How-To: Rocksmith 2014 on Linux with Steam/Proton and low latency audio

Save the config by clicking OK after which hit Begin on the management panel of QJackCtl. Open the Messages window to see the log file. Be careful for xRuns, issues with realtime mode or different error messages. Relying on what you see, you will have some googling forward of you. But when all the things seems to be okay and the service retains working we’ve got this half performed.

r/rocksmith - How-To: Rocksmith 2014 on Linux with Steam/Proton and low latency audio

3. Putting in wineASIO and SteamPlay integration with RS_ASIO

Copy the file wineasio.dll.so from /usr/lib/i386-linux-gnu/wine to the wine listing of the Proton model you utilize for Rocksmith. Until you’ve got customized recreation libraries, Proton is situated right here: /residence/yourusername/.steam/steam/steamapps/widespread/Proton 5.13/dist/lib/wine/.

Trace: You may need to do that once more if the Proton model ever will get up to date by Steam. That’s the reason it’s sensible to repair the Proton model within the SteamPlay possibility of Rocksmith.

Register wineasio with the Proton occasion of Rocksmith by way of terminal. 221680 is the steam id of RS2014 Remastered:

WINEPREFIX=/residence/yourusername/.steam/steam/steamapps/compatdata/221680/pfx regsvr32 wineasio.dll

Configure wineasio in Proton:

WINEPREFIX=/residence/yourusername/.steam/steam/steamapps/compatdata/221680/pfx winecfg

Within the wine configuration window go to the libraries tab and add the wineasio.dll as a brand new override. Edit it as native, builtin.

Configure wineasio by way of registry:

WINEPREFIX=/residence/yourusername/.steam/steam/steamapps/compatdata/221680/pfx regedit

(You may additionally do the registry modifying straight with a textual content editor for the reason that registry is represented within the pfx listing as various recordsdata. )

Go to the important thing HKEY_CURRENT_USERSoftwareWineWineASIO and configure the values as follows:

  • Autostart server : 1

  • Connect with {hardware} : 1

  • Mounted buffer measurement : 1

  • Quantity inputs: 2

  • Quantity outputs: 2

Obtain, set up and configure rs_asio in accordance with the directions on the github web page

https://github.com/mdias/rs_asio

Right here is my rs_asio.ini file as a template:

[Config]
EnableWasapiOutputs=0
EnableWasapiInputs=0
EnableAsio=1

[Asio]
; out there buffer measurement modes:
;    driver - respect buffer measurement setting set within the driver
;    host   - use a buffer measurement as shut as doable as that requested by the host software
;    customized - use the buffer measurement laid out in CustomBufferSize discipline
BufferSizeMode=driver
CustomBufferSize=

[Asio.Output]
Driver=WineASIO
BaseChannel=0
EnableSoftwareEndpointVolumeControl=0
EnableSoftwareMasterVolumeControl=0
SoftwareMasterVolumePercent=100

[Asio.Input.0]
Driver=WineASIO
Channel=1
EnableSoftwareEndpointVolumeControl=0
EnableSoftwareMasterVolumeControl=0
SoftwareMasterVolumePercent=100

Now you possibly can take a look at all the things for the primary time. If one thing shouldn’t be working you must undergo the earlier steps once more or try the directions/points on the github pages.

If you would like straightforward dealing with throughout testing set Rocksmith to windowed mode at 1024×768 by way of Rocksmith.ini, which might be present in /residence/yourusername/.steam/steam/steamapps/widespread/Rocksmith2014/

  • Begin the jack2 server by way of QJackCtl and open the message window to see what occurs.

  • Now begin Rocksmith.

  • If you do not get an error in RS about no audio system we’re virtually there.

  • Within the messages window of QjackCtl you need to see hints that RS tried to attach

  • Click on on Join within the QjackCtl panel, you need to see the Rocksmith inputs and outputs there

  • Trace: Everytime you go away the RS window, its sound will get muted and can come again whenever you focus the window once more.

Now you must learn the way to attach your guitar interface with RS in/outputs, which is determined by your {hardware}, however this the way it seems to be like on my system with the iRig 2 HD:

First, disconnect all current connections and begin from scratch!

system:capture_1 connects to Rocksmith2014:in_1
system:capture_1 connects to Rocksmith2014:in_2
 
Rocksmith2014:out_1 connects to system:playback_1
Rocksmith2014:out_2 connects to system:playback_2

Should you hear stuttering, heavy distortion or clicking noises within the loading display/music of Rocksmith, then you must enhance the Frames within the QJackCtl Setup, as proven additional up. Should you hear clear audio then that’s excellent and we will proceed to the sport.

There you need to now hear audio from the sport in addition to the guitar whenever you strum it while you’re in the principle display of RS. Mess around a bit to check. We’re nonetheless at 512 Frames so count on some latency. If there’s nonetheless no loopy distortion or stuttering we will now begin to tweak the jack server.

What I often do is simply alt-f4 out of the sport and alter the Frames worth in QJackCtl setup earlier than beginning the sport once more. When you’ve got it at 512, decrease it to 256 and check out once more. No stuttering? Similar course of and decrease Frames to 128, and so forth. Do not change the Intervals worth as a result of Three is beneficial for USB interfaces.

I’m working it at 128 Frames in the meanwhile, which suggests 8ms audio system latency. In the true world, you’d find yourself with effectively beneath 20ms latency, which is an excellent worth at which you often cease noticing the latency between your strumming and when the sound comes out of a speaker.

Including Comfort

As it’s configured now. You’ll have to launch QjackCtrl and begin the server manually every time earlier than you launch Rocksmith. You additionally must do the connection setup every time once more. To automate this can require a number of extra steps, and the entire course of continues to be a bit finnicky. It would give you the results you want immediately or you must google round fairly a bit to seek out your answer. So listed below are my steps for an automatic begin and cease of all providers as quickly as I lauch Rocksmith from Steam:

Add QjackCtl to your listing of startup functions so it runs everytime you login. Because the server solely begins when RS is launched, this could not have an effect on your system in any method.

As root person you must add these two strains to the /and so on/surroundings file

JACK_START_SERVER=1

WINEASIO_AUTOSTART_SERVER=on

This permits the jack server to be launched as soon as a consumer tries to connect with it, on this case by way of wineasio

Get jack-matchmaker from the github web page https://github.com/SpotlightKid/jack-matchmaker and set up it in accordance with the directions. Right here is my auto join file (jack-autoconnect.txt) as a reference:

# Left channel
# 'out_1', 'out_l', 'output_1' or 'output_l'

.*:out(put)?_(1|l)$
    system:playback_1

# Proper channel
# 'out_2', 'out_r', 'output_2' or 'output_r'

.*:out(put)?_(2|r)$
    system:playback_2

# Seize channel mapping

.*:capture_(1|r)$
    Rocksmith2014:in_1

.*:capture_(1|r)$
    Rocksmith2014:in_2

You’ll be able to take a look at this out by working jack-matchmaker from terminal earlier than you launch RS like this:

jack-matchmaker -p /residence/yourusername/Paperwork/jack/jack-autoconnect.txt

(change that line relying on the place and the way you named your connection file)

Get steamtinkerlaunch from the github web page and set up/configure it in accordance with the directions https://github.com/frostworx/steamtinkerlaunch .

Notice: Be careful that you simply meet the software program dependencies earlier than you begin utilizing stl. Additionally, in case you are on Ubuntu, please learn this concerning the “yad” device: https://github.com/frostworx/steamtinkerlaunch/points/98

With stl you possibly can outline functions to run earlier than a recreation begins and after a recreation has been closed. So in our case, we’d use the customized command characteristic of stl and launch jack-matchmaker like this:

Customized Command : jack-matchmaker

Arguments: -p /residence/yourusername/Paperwork/jack/jack-autoconnect.txt

and we might kill jack-matchmaker once more after RS has been closed with a small excecutable script that may seem like this this and put it into the cease script slot of the stl config:

#!/bin/bash
pkill jack-matchmaker

The explanation for that is that matchmaker one way or the other doesn’t launch the connection correctly as soon as RS is closed so the jack server retains on working. So we’ve got to kill it so jack can terminate gracefully and is prepared for the subsequent connection.

That is it. When you’ve got additions to this how-to or when you discovered a mistake, let me know.

Glad low latency shredding!

Edit 21/11/20: some clarification the right way to configure stl and in regards to the realtone cable

Edit 27/11/20: added particulars to my setup for completeness

Leave a Reply

Your email address will not be published. Required fields are marked *