Questions & Answers

OBS. Discord. Streaming. Recording.

+5 votes
4,752 views
asked May 15, 2020 in Studio One 4 by orrymaine (300 points)
Ok, I've gotten to that 'old man who hates modern technology' level of frustrated. For the past few weeks I have been searching for an explanation as to why Studio One just really doesn't want to play nice with the other applications that want to share the audio. There are technically only 2 things I want to be able to do, and its getting easier for me to believe im either doing something wrong, or what I want will have to be found with a different DAW. I love Presonus and I LOVE Studio One, but this function is crucial to me, and if it can't be delivered, IDK what else to do but switch. At least untill it's implemented. Every other DAW I've used doesn't have this problem, and FL Studio is like a breeze when trying to do what I want Studio One to do. Again, that is at least if im not actually doing something wrong myself.

1: I enjoy people's company when im not seriously working on a mix. Whether it's sound design, or just letting my creativity fly for practice, I like to share the experience. Im often in voice chats on Discord talking to friends and family, and I'd like to be able to open up Studio One and be able play around in a song while im talking in voice chat. Instead what happens is everything else but Studio One is cut off. Studio One takes complete control over my AudioBox USB Interface, and nothing else is allowed to be heard. I've tried everything I could think of; I've tried everything I could find online. Ive turned off the "exclusive control" feature in the advanced settings of both the input and output in the Windows 10 Home sound settings. Ive tried changing from using the Audiobox directly to using the ASIO driver, but when I do I literally cant even press play in Studio One if Discord or any other application using sound is open. I've tried using both alongside using Voiceemeter to route the audio. NOTHING I've tried has allowed me to hear and use both Studio and Discord at the same time. With FL Studio I can actually go live in a voice chat and both myself and those in voice chat can hear my audio from FL and mic input with little to no lagg.

2: The only other thing I want to do is recorded videos of what I'm doing in Studio One. OBS is what most people use to record their gameplay, so I figured the process wouldn't be too dissimilar. Every issue along with every failed attempt at a solution with the previous problem continued into attempting to use Studio One with OBS. I'm at a breaking point. I need someone to tell me what I'm doing wrong.

Im using:

Studio One 4 Professional

AudioBox USB Interface

Windows 10 Home

1 Answer

+1 vote
answered Aug 9, 2020 by crailfron (170 points)

My friend, I understand your situation all too well. I think it's unfortunate your question has gone unanswered for so long. Studio One has a setting to release the audio device it is using while Studio One is in the background. But it doesn't allow you to listen to music, watch videos, or chat with fellow humans for inspiration while you work, and so that makes me very sad.

I'll preface this answer with some specs, my opinion of what's going on here, and a friendly warning.


OS: Windows 10 Home (Up to date as of the time of writing)
DAW: Studio One Professional, Version 4.6 (Hereby known as S1)
Audio Interface: ********* u-phoria UMC22 (irrelevant really)

My opinion on this situation is this: S1 is capturing the audio device you have set to use, and it isn't letting go while the software is in use. This should reduce CPU usage, and should reduce latency between your hardware and the DAW, which makes it excellent for huge projects and live performances. In doing this though, it sacrifices the freedom of the card.

Now for the warning: This is a lot of reading, and these are the steps I took to achieve simultaneous Discord calls while jamming out in S1. I spent about 14 hours straight taking notes, trying not to spill the pizza sauce, and testing solutions. Yes that was my day off. Your mileage may vary, hopefully a whole lot less time spent than me :).

Oh and also I expect everyone reading this to practice safety first! Check your download hashes and do scans on stuff before opening/installing. I don't believe the programs and drivers I'm using are malicious, but it never hurts to check.

Two realistic solutions exist as far as I can tell. One Hardware and one Software.

1.) Install two sound cards and link them together with a mixer, then pipe the audio into your speakers of choice. One card would handle S1, the other would be your default audio for everything else. That means double microphones too if you want to record your voice in S1 while you talk to the outside world.

2.) Trick the DAW into capturing a Virtual Audio Cable (VAC) instead of your sound card, and route the cable back to your sound card's output using JACK Audio Connection Kit - also known as JACK. This combo should accomplish a part of what Voicemeeter was supposed to do, and the VACs I suggest using are even developed by the same person(or group?).

Our third, less-realistic solution would be to beg the good folks on the PreSonus engineering team for some kind of toggle to enable or disable S1's "Total Control" over the audio device in question. As a programmer myself, something about the longevity of this issue tells me this feature is deep in S1's veins, and that changing it is no small feat.

I decided to go with the less(read:more) complicated method and install JACK for use with a VAC.


Section 1

Start off with installing JACK (technically JACK2) You can grab this application over here. Make sure you get the correct one for your OS architecture. And check those hashes!

Installation is a little heavy on text so I'll point to their walk-through for Windows. For those of you who have never used JACK, please read through that walk-through - it will save you a lot of trouble, I promise!

Once you have it installed, close everything and move on to getting a VAC below. We'll go over configuring JACK later.

The OP already tried Voicemeeter so they may already have a VAC installed, but I'm adding that part anyway as it's quite important.

Go to vb-audio to grab the VB-CABLE Virtual Audio Device for Windows.

You'll receive a zip file. Unzip and locate one of the two below depending on architecture. Run as administrator and install.
32bit OS: VBCABLE_Setup.exe
64bit OS: VBCABLE_Setup_x64.exe

They recommend a reboot after installation. I do too.


Section 2

Okay so we've got JACK and a VAC, time to get down to business.

Set your default windows output device to "CABLE Input". Yes, 'CABLE Input' - that's not a typo. You probably won't be able to hear anything for a bit.

Now start 'jackd' and then 'jackctl'. jackctl may automatically start the audio server when it comes up. If it does, hit the "Stop" button for now.

Click the Setup button in jackctl. Under Settings>Parameters, verify the Driver is set to portaudio, realtime is checked, and set 'Interface' to (default). Don't worry, it's going to be overwritten soon. Set your 'Sample Rate' to match your preferred rate. Audio engineers and serious JACK users will understand the 'Frames/Period' setting better than I do, I can't seem to notice a difference between 512 and 1024 so I'd say leave it at 1024, and adjust to your liking.

Over to the Settings>Advanced tab. Locate 'Output Device', and select the speaker output for the audio interface you want to use - make sure you select the one with the prefix 'MME'. For most USB interfaces, there will be a listing for each input/output that interface can use. Mine combines both microphone inputs into one input but yours may be different. Moving on.

Do the above with 'Input Device'. Again make sure the prefix is 'MME'.

These are the devices which you will use to listen to your stuff and communicate with earthly beings, but not the devices S1 needs to know about. Up in the 'Preset Name' box, give your settings a name and Save a preset. You can then close the setup window.


Section 3

Preliminary JACK server setup complete. Begin setting up connections.

Click 'Start' then 'Connect' on the jackctl window. This will bring up the connection interface where you can tell which audio sources should be going where. We can't do anything here just yet. Keep this window open.

Open S1. Under Setup, select Configure Audio Device, and find JackRouter. Honestly I don't remember if I named it that during installation or if that's the default. But if you're familiar with your device names, you should be able to pick out the JACK interface here.

Create a new test song or open one you don't care about. Throw an instrument in there for testing purposes. Once you do, see below.

Back to JACK's connection page. You should see a very pleasant "Studio One" listing under both client columns.

On the left-most column (Readable Clients), expand the "Studio One" section and behold just two outputs, out1 and out2. These are, as you might imagine, the left and right speaker outputs respectively.

On the right-most column (Writable Clients), expand the "System" section and uh.. well I had 10 entries here, none of which made much sense past a sequential numbering pattern. See below.

Select out1 on the left, and then select a corresponding playback on the right, then click the 'Connect' button with a blue icon in the bottom left of this window. This requires some trial and error, since they're all just sequentially numbered. You can be sure though that as long as you have an even number of playback entries, each playback_ pair tends to be a valid audio L+R output for one device. 

I suggest connecting out1 to the first "system" entry: playback_1, going back to S1 and trying to play something. If that fails, skip to playback_3 and repeat, skipping every other output. Don't forget to disconnect pairings that don't work! And remember, if out1 (the left-hand output from S1) is producing sound from the right-hand speaker, you should really connect it to the preceding playback_ entry. Or you've got your lines physically swapped somewhere else.

Repeat the above steps for out2, but consider this: if out1 paired with playback_9 results in left-hand speaker audio, I suggest connecting out2 to the next sequential entry, playback_10 for right-hand speaker audio.

If you don't see out1 or out2, or no combination of pairings works to give you results, you might just need to close jackctl, then jackd, and restart the two. If you ever see a warning that says something like "You need to restart the jack server for changes to take effect", just be aware those are the steps to take, and usually JACK is not a liar.


Section 4

Just a few more steps to go. If you got this far you're about as sane as I am. Congrats!

We still need to pipe regular audio from youtube, spotify, discord or wherever else into our speakers.

Collapse the left hand "Studio One" entry, and expand the left hand "system" entry. The number of capture_ entries you see here will vary based on the number of devices/drivers/other stuff you have installed. Remember when you set your default audio device in windows to CABLE Input? This is where that step yields fruit. Like before, you're looking to match your corresponding "input" to the playback ports you found in the previous steps. I suggest playing a youtube video in the background to test this. BUT PLEASE: do mind your audio levels for this step. I accidentally hooked up my microphone capture to my speakers and gave myself a good spook when I coughed shortly thereafter.


Section 5

The victory lap.

First, in the jackctl window, click 'Session', make a new folder somewhere and save this session. When you save, it'll log all the connectivity links you made. It's going to be a pain if your PC crashes now and you have to do all that prodding again. Just remember each folder is a single session. And jack doesn't like extra files in its install directory, it'll wipe your saves out. So save somewhere else like a folder in Documents or something.

Now to test everything to see if it works. Spin up a video, start a playlist and see if you can compose while the other media plays in the background. If you can, very good! If not, don't worry I'll cover that in the section below.


Section 6

We forgot something! All we can do for the microphone in JACK is route input to S1's line-in. Audio input has not been set up yet.

Don't lock it up in driver limbo. If you open your system tray (The little up arrow by the calendar/wifi/speaker icons), you should see a green box icon with a triangle in the middle. Click that.

The AISO4ALL interface should open up. Make sure you're in advanced mode - you may have to click the wrench in the bottom right. Then expand two entries. First, the VB-audio virtual cable entry. Under here, disable the entry that begins with 'Out:', which for the VAC is technically the IN port. Do that by clicking the power button next to it. Next, expand your audio device. For me, that's 'USB Audio CODEC'. Under here, we want to disable the entry that starts with 'In:', which is, in fact, an IN port for most hardware.

What that should do is prevent the JACK server from locking that device for S1, and allow you to freely use it as you would normally in other applications such as teamspeak or discord. Just not S1.

After that you can close the AISO4ALL window, it will just minimize to the tray. Go back to your JACK window, open the session window and save session. Restart the jack server by stopping jackctl and quitting, then close the jackd console window (CTRL+C works well here). Open jackd, then jackctl. Reload your session by clicking 'session' and you can either select from recent or load from a folder. Or manually recreate the connections if you forgot to save/saved in a bad spot.


Troubleshooting

If you reached this point and you have no issues, feel free to gloss over this section while saying: "Oh yeah. It's all comin' together."

If you reached this section because you have issues, take comfort in knowing these were my questions once.

Q: Section 4 - none of my audio is working. I don't have any i/o combos that work.
A: I suggest re-starting JACK as described in the final paragraph of Section 6. If this does not resolve the issue, you may need to manually set the program in question to use CABLE Input as output, and if applicable, microphone should be set to the microphone you normally use.

Q: I get stuck in a loop when starting S1, it can't pick up an audio device and won't let me set one!
A: If you set Windows Audio as your device in S1, you'll have to close jackctl and jackd (in that order). Then set the audio device in S1 to anything else, preferably "No device" if you haven't got JackRouter set up yet. As for closing S1 when it's in the loop I suggest Task Manager's "End Task" feature. I can't guarantee you won't lose anything, but when nothing was really open in the first place I have a hard time believing it could cause an issue.

Q: I want to record my voice in S1 and also chat on Discord or teamspeak at the same time, but it's not working.
A: I couldn't find a workaround that wasn't silly. In short, you need a second VAC which might cost some money, unless you want to write your own. Or the two-card hardware solution I mentioned at the beginning of this post.

Q: How hard is it to write your own VAC?
A: That's no troubleshooting question! I've never done it. I've certainly fallen asleep trying to read Microsoft's documentation on authoring a Virtual Audio Device though.

Q: Why MME?
A: I'm not sure why, MME just felt correct at the time compared to DirectSound and WDM. It might not even matter, but I figured it can't hurt to stay consistent.

Q: You never answered the part about OBS.
A: This question was the first time in my life I'd heard of OBS so I can't address that part :(. I'm hoping this gets you moving in the right direction with OBS though!

...