Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER for Linux

Reply
 
Thread Tools Display Modes
Old 01-19-2021, 07:36 AM   #1
robbert-vdh
Human being with feelings
 
Join Date: Nov 2020
Posts: 29
Default Looking for testers for yabridge 3.x's upcoming VST3 support

EDIT 2: Thanks so much for all the help! Yabridge 3.0.0 has now been released, and thanks to the help from the REAPER community I've been able to track down a few subtle but quite important bugs in the implementation. Aside from VST3 support yabridge 3.0.0 also includes a lot of other improvements, fixes, and new features, so I encourage you to read the full changelog if you're interested to learn more: https://github.com/robbert-vdh/yabridge/releases

Original post below:


Hi,

I develop yabridge, and for the past few months I've been working hard to bring the first ever true Linux VST3 <-> Windows VST3 Wine plugin bridging to Linux. There's still lots of work to be done both in terms of testing and final polish, but all VST 3.7.1 features have been implemented and everything seems to work exactly like you'd expect it to work. REAPER's a bit specific about how some (GUI related) things should work in its VST3 implementation, and over the past few days I've been reworking some things to make sure everything works absolutely perfectly in REAPER. While everything seems to work great now for me and for some other people from the yabridge Discord who have also been testing it, I would very much appreciate some additional testing at this point.

Aside from VST3 support there have also been a substantial amount of other changes on the master branch. You can find the full in-progress changelog here: https://github.com/robbert-vdh/yabri...r/CHANGELOG.md

If anyone wants to help me out, then you can either install the yabridge-git and yabridgectl-git AUR packages if you're on Arch/Manjaro, or you can grab the latest yabridge and yabridgectl builds from the CI here. After installing or downloading those just follow the usual instructions from the readme. Because of the VST3 changes you'll need to use an up to date version of yabridgectl, and don't forget to rerun `yabridgectl sync` after upgrading yabridge.

Thanks a lot!

EDIT: Someone pointed out to me projects with VST3 plugins saved on Windows would not load with yabridge under Linux, and as it turns out there was an issue with mismatching VST3 plugin IDs. This has been fixed as of 2020-01-22, but this sadly did require a backwards incompatible change. I've written migration scripts that can update REAPER, Ardour, Bitwig and Renoise project files to account for these changes. You can find them along with instructions on how to use them here: https://github.com/robbert-vdh/yabri...ools/migration Sorry for this major inconvenience, but I'm very glad that we at least learnt of this before an actual release.

Last edited by robbert-vdh; 02-14-2021 at 07:47 AM. Reason: yabridge 3.0.0 has now been released.
robbert-vdh is offline   Reply With Quote
Old 01-20-2021, 06:57 AM   #2
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 10,410
Default

GREAT STUFF !

I'm not very qualified for testing right now.

But I'd like to state that I am very happy top see such things happen. Using commercial plugins in a Linux DAW IMHO is absolutely mission critical.

In the end such a Bridge should be seamlessly integrated in the DAW. In Reaper maybe it can an "extension" and hence work invisible to the end user, low CPU overhead and still stay "3rd party".

Could you explain the difference vs the commonly use LinVST tool ?
A question that I have in mind long since: As Mac OS is based on BSD Linux and hence UNIX, it should be more similar to Linux than Windows. So why them Windows Plugins are the target for such bridging tools and not Mac plugins ?

-Michael
mschnell is offline   Reply With Quote
Old 01-20-2021, 08:27 AM   #3
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 5,669
Default

Quote:
Originally Posted by mschnell View Post
In the end such a Bridge should be seamlessly integrated in the DAW. In Reaper maybe it can an "extension" and hence work invisible to the end user, low CPU overhead and still stay "3rd party".
Bridges don't really integrate into the DAW (with the exception of the developer including one), they make Windows VST plugins smell like Linux VST plugins to any Linux app that looks for Linux VST plugins.

Quote:
Could you explain the difference vs the commonly use LinVST tool ?
Looks to be the VST3 compatibility. I only have a few Windows plugins remaining which are all VST2. I quit buying Windows plugins a couple of years ago and have bought all native Linux plugins for all my audio VSTs.

There are others here though who are constantly installing Windows plugs so there should be both some demand for a VST3 bridge and some folks to test one.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 01-20-2021, 08:33 AM   #4
robbert-vdh
Human being with feelings
 
Join Date: Nov 2020
Posts: 29
Default

Quote:
Originally Posted by mschnell View Post
GREAT STUFF !

I'm not very qualified for testing right now.

But I'd like to state that I am very happy top see such things happen. Using commercial plugins in a Linux DAW IMHO is absolutely mission critical.

In the end such a Bridge should be seamlessly integrated in the DAW. In Reaper maybe it can an "extension" and hence work invisible to the end user, low CPU overhead and still stay "3rd party".

Could you explain the difference vs the commonly use LinVST tool ?
A question that I have in mind long since: As Mac OS is based on BSD Linux and hence UNIX, it should be more similar to Linux than Windows. So why them Windows Plugins are the target for such bridging tools and not Mac plugins ?

-Michael
Hi Michael,

First, as to why we can use Windows plugins on Linux but not do the same thing with macOS software. There's just not as much interest for it. Wine more or less does two things: it translates PE32(+) binaries into ELF so they can run under Linux, and it provides a reimplementation of the Windows system libraries so those applications can actually do things. There's no technical reason why we cannot do the same thing for macOS applications, but like Wine it would be a huge development undertaking and there's just not enough demand or interest for it to make it happen. Darling is more or less the Wine equivalent for macOS applications, but because of the lack of developer interest it still is unable to run more than very simple command line applications.

Next regarding yabridge versus other plugin bridges (with a bit of unnecessary background information, sorry haha). I've started using Linux full time back in 2016. The two things I kept Windows around for until that time were gaming and music production. Around that time Wine development really sped up, and I could finally run most of my games under Linux. And thanks to Bitwig, Airwave and LinVst I could also completely move over to Linux for music production. I've used LinVst (with a bit of Airwave before that) since then and I'm very glad they existed, but the experience has never been great. I took it as par for the course (because hey, using Windows plugins on Linux is a great feat in its own right), but there have always been crashes, freezes, lots of missing or weirdly implemented VST2.4 features (including basic things like note labels and resizing editor GUIs), plugins that somehow don't work under one host but then do work under others, and just general slowness and instability. I felt like it didn't have to be that way, so last year when the pandemic hit I finally decided that it was time to give back to the community and to try and fix all of the issues I had with LinVst. I started with a private fork with the intention to first clean up the project, get rid of all dead and hacky code, and to modernize the project before fixing those issues issues I was having and upstreaming the changes. When I was working on this however I very quickly realized that most of the issues I wanted to fix were fundamental, and would not be solvable in a clean way without a full rewrite. So instead I set out to write the best, most feature complete, transparent and user friendly VST2 plugin bridging experience I could. The main idea here was to do a complete one-to-one passthrough of all function calls made by the host and the plugin, with no deviation from that allowed. Yabridge is also able to concurrently handle multiple (mutually recursive) function calls. These two things has lead to yabridge having perfect host and plugin compatibility (assuming the plugin can run under Wine) without requiring hacks or host-specific workarounds for situations that other VST bridges cannot handle.

Now with yabridge 3.0 I'm looking to tackle another obstacle. So far there have not been any ways to use Windows VST3 plugins on Linux as if they were native VST3 plugins. There have been a few ways to use those plugins on Linux, but all of those methods involve wrappers and you lose out on the benefits of using VST3 plugins in the first place since you cannot use VST3 features that do not have a VST2 equivalent and you cannot benefit from the lower processing overhead VST3 plugins would have. So for the past few months I've been working hard on making this a reality, and at this stage every VST 3.7.1 feature has been implemented in yabridge's master branch and should in theory work, hence why I'm looking for other people to test some plugins and to report their findings.

Please let me know if you have any other questions!

Cheers,

Robbert
robbert-vdh is offline   Reply With Quote
Old 01-20-2021, 02:46 PM   #5
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 10,410
Default

This sounds really great and it would be fantastic if those who use LinVST would give yabridge a try and report back.

I understand that you need to do some setup for any windows plugin you intend to use to allow loading in via LinVST. I suppose the same is the case with yabridge.

In a perfect world the loading of Windows VSTs would be transparent to the Reaper user: just the same process as with native Linux VSTs or like ith Windows VSTs in Reaper on Windows. Do you thinks something like that can be done by a Teaper extension ? (I doubt that and so the help pf the Reaper devs will be necessary.

I understand that usoing LinVST& or yabridge needs a full Wine installation. Is this really necessary ? Would it be viable to somehow integrate or "associate" just the necessary parts ow Wine with yaBridge ? (Maybe this does not make much sense as installing the full Wine does not do any harm at all.)

Thanks for listening.

BTW.: I suppose you already did test this but just in case these are the mission critical VSTs I use and supposedly are not available as native Linux versions:
- Kontakt by NI (VST2i) (here of course the licensing by Native Access needs to be working, as well)
- SWAM by Audio Modeling (VST2i) (unknown licensing scheme)
- Equator by Roli (VST3i) (unknown licensing scheme)
- VB3 by GSI (VST3i)
- Dexed free by Digital Suburban (VST3i) [E dit: there is a Linux (LV2) version of Dexed ]
- Guitar Rig by NI (VST2) (here of course the licensing by Native Access needs to be working, as well)
- SPAN by Voxengo (VST3)
- SPACE360 free by CytoSonic (VST2) This is a 32 But VST and needs to be run by the 32 Bit bridge provided by Reaper)

-Michael

Last edited by mschnell; 01-21-2021 at 11:48 AM.
mschnell is offline   Reply With Quote
Old 01-20-2021, 03:09 PM   #6
robbert-vdh
Human being with feelings
 
Join Date: Nov 2020
Posts: 29
Default

Quote:
Originally Posted by mschnell View Post
This sounds really great and it would be fantastic if those who use LinVST would give yabridge a try and report back.

I understand that you need to do some setup for any windows plugin you intend to use to allow loading in via LinVST. I suppose the same is the case with yabridge.

In a perfect world the loading of Windows VSTs would be transparent to the Reaper user: just the same process as with native Linux VSTs or like ith Windows VSTs in Reaper on Windows. Do you thinks something like that can be done by a Teaper extension ? (I doubt that and so the help pf the Reaper devs will be necessary.

I understand that usoing LinVST& or yabridge needs a full Wine installation. Is this really necessary ? Would it be viable to somehow integrate or "associate" just the necessary parts ow Wine with yaBridge ? (Maybe this does not make much sense as installing the full Wine does not do any harm at all.)

Thanks for listening.

-Michael
You indeed need some way to set up yabridge for your plugins. For yabridge I settled on having yabridgectl be the officially supported way to use yabridge. Basically you just tell yabridgectl where it can find your Windows VST2 and VST3 plugins and you then run `yabridgectl sync` to install and/or update yabridge for all of your plugins at once. Yabridgectl will then do all the rest with respect to searching for plugins, detecting leftover files, and making sure that yabridge will work correctly on your system before you even try to load a bridged plugin in your DAW.

In theory DAWs could integrate similar functionality, but without even considering the licensing aspects the main deal breaker here would be support. While I've worked directly with DAW developers to fix bugs in their DAWs that were affecting yabridge (and likely other plugins that happened to do similar things), none of those DAWs would ever officially support bridged plugins and for good reason. While everything works fine 99% of the time, you would still need to provide official support for it. And when using plugins through Wine there are a lot of variables to account for, too many to expect the DAW manufacturer to provide support for it. For REAPER a third party implementation of this might be possible (I'm not familiar enough with REAPER and its extension mechanism to say for sure), but in the end there would be very little appreciable difference in user experience over running `yabridgectl sync` every time you install a new plugin or update yabridge.

And integrating Wine into a plugin bridge itself would not make much sense in my opinion. You'd still need a regular Wine prefix to install your plugins and software to, and you'd a normal Wine installation to do so. So then you'd end up mixing multiple versions of Wine without any real benefit while also making it harder to upgrade the Wine version used for the plugin bridge (since never version of Wine often increase performance or application compatibility). Using a regular Wine installation installed through your system's package manager really is the way to go here.
robbert-vdh is offline   Reply With Quote
Old 01-20-2021, 03:54 PM   #7
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 4,454
Default

Thanks for the aur packages! I was a bit turned off of building myself since I'm only used to cmake and I'm a linux newb. Manjaro user.

I'll test what I can
__________________
Check out my hip-hop, funk-rock band Theatre Crisp
Fergler is offline   Reply With Quote
Old 01-21-2021, 11:41 AM   #8
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 10,410
Default

Quote:
Originally Posted by robbert-vdh View Post
In theory DAWs could integrate similar functionality, but without even considering the licensing aspects the main deal breaker here would be support.
That is why I suggest integrating yabridge functionality in a 3rd party Reaper extension- Maybe by this yabrige-enabling and searching for loading a plugin onto a track might be rendered transparent to the end user.

-Michael
mschnell is offline   Reply With Quote
Old 01-20-2021, 08:52 PM   #9
osxmidi
Human being with feelings
 
Join Date: Feb 2014
Posts: 600
Default

Quote:
Originally Posted by robbert-vdh View Post
Hi Michael,

First, as to why we can use Windows plugins on Linux but not do the same thing with macOS software. There's just not as much interest for it. Wine more or less does two things: it translates PE32(+) binaries into ELF so they can run under Linux, and it provides a reimplementation of the Windows system libraries so those applications can actually do things. There's no technical reason why we cannot do the same thing for macOS applications, but like Wine it would be a huge development undertaking and there's just not enough demand or interest for it to make it happen. Darling is more or less the Wine equivalent for macOS applications, but because of the lack of developer interest it still is unable to run more than very simple command line applications.

Next regarding yabridge versus other plugin bridges (with a bit of unnecessary background information, sorry haha). I've started using Linux full time back in 2016. The two things I kept Windows around for until that time were gaming and music production. Around that time Wine development really sped up, and I could finally run most of my games under Linux. And thanks to Bitwig, Airwave and LinVst I could also completely move over to Linux for music production. I've used LinVst (with a bit of Airwave before that) since then and I'm very glad they existed, but the experience has never been great. I took it as par for the course (because hey, using Windows plugins on Linux is a great feat in its own right), but there have always been crashes, freezes, lots of missing or weirdly implemented VST2.4 features (including basic things like note labels and resizing editor GUIs), plugins that somehow don't work under one host but then do work under others, and just general slowness and instability. I felt like it didn't have to be that way, so last year when the pandemic hit I finally decided that it was time to give back to the community and to try and fix all of the issues I had with LinVst. I started with a private fork with the intention to first clean up the project, get rid of all dead and hacky code, and to modernize the project before fixing those issues issues I was having and upstreaming the changes. When I was working on this however I very quickly realized that most of the issues I wanted to fix were fundamental, and would not be solvable in a clean way without a full rewrite. So instead I set out to write the best, most feature complete, transparent and user friendly VST2 plugin bridging experience I could. The main idea here was to do a complete one-to-one passthrough of all function calls made by the host and the plugin, with no deviation from that allowed. Yabridge is also able to concurrently handle multiple (mutually recursive) function calls. These two things has lead to yabridge having perfect host and plugin compatibility (assuming the plugin can run under Wine) without requiring hacks or host-specific workarounds for situations that other VST bridges cannot handle.

Now with yabridge 3.0 I'm looking to tackle another obstacle. So far there have not been any ways to use Windows VST3 plugins on Linux as if they were native VST3 plugins. There have been a few ways to use those plugins on Linux, but all of those methods involve wrappers and you lose out on the benefits of using VST3 plugins in the first place since you cannot use VST3 features that do not have a VST2 equivalent and you cannot benefit from the lower processing overhead VST3 plugins would have. So for the past few months I've been working hard on making this a reality, and at this stage every VST 3.7.1 feature has been implemented in yabridge's master branch and should in theory work, hence why I'm looking for other people to test some plugins and to report their findings.

Please let me know if you have any other questions!

Cheers,

Robbert

"dead and hacky code" lol.

LinVst is based on the first and original Wine bridge "Wacvst".

The code was laid out previously by the DSSI programmers and the Wacvst programmer and then additions from me.

The only focus LinVst has is for Latency/Speed and also to be pretty compatible with Reaper Linux and the approach is very much like C/Asm with realtime.

I'm not interested in programmers wanting pretty code to look at.

As for things like labels, well I think I've added that but no one has requested it so it's off by default and window resizing, just close the gui and reopen it but I have added that as well.

Any Wine bridge is going to depend on Wines's current state.

LinVst is not perfect and the way that Wine is means that no Wine bridge can be.

D2D1 is a huge problem and there are quite a few vst3's using it and also vst2's.

D2D1 needs to be sorted out in Wine by contributing to the Wine code.

I don't take any Wine bridge that seriously and I look at Wine bridges as helpers and native Linux plugins should be used first wherever possible.

I'm also not that interested in Vst3, I think it's a bloated pile of crap from Steinberg trying to still be relevant by introducing basically non essential features.

I did do LinVst3 as a quick thing that could easily be done and it works ok for quite a few vst3's that I've run but it is a basic implementation without the bells and whistles.

-------

As for this builtin Reaper wine bridge thing, take it up with Justin.

Wine is not stable/compatible enough and lacks too many features for a major DAW to support imo.

Last edited by osxmidi; 01-20-2021 at 09:05 PM.
osxmidi is offline   Reply With Quote
Old 01-20-2021, 09:12 PM   #10
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 5,669
Default

Quote:
Originally Posted by osxmidi View Post
As for this builtin Reaper wine bridge thing, take it up with Justin.
Well how about a builtin beer bridge then? Surely you can make that happen!
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 01-21-2021, 04:45 AM   #11
osxmidi
Human being with feelings
 
Join Date: Feb 2014
Posts: 600
Default

Quote:
Originally Posted by Glennbo View Post
Well how about a builtin beer bridge then? Surely you can make that happen!
No problems

Last edited by osxmidi; 01-21-2021 at 05:19 AM.
osxmidi is offline   Reply With Quote
Old 01-21-2021, 06:48 AM   #12
JamesPeters
Human being with feelings
 
Join Date: Aug 2011
Location: Near a big lake
Posts: 3,461
Default

Quote:
Originally Posted by osxmidi View Post
As for this builtin Reaper wine bridge thing, take it up with Justin.
Michael continually posts about this even though he should very well understand it will never happen. And now apparently also he expects 32 to 64 bit Windows VST bridging in Linux on top of that, despite knowing that is accomplished by running a separate (32 bit) instance of Reaper. It's embarrassing at this point especially when he claims he's a programmer.
__________________
Using REAPER for Linux on Manjaro 21.0
Free multi-layered drum bank

Last edited by JamesPeters; 01-21-2021 at 07:18 AM.
JamesPeters is offline   Reply With Quote
Old 01-21-2021, 09:01 AM   #13
robbert-vdh
Human being with feelings
 
Join Date: Nov 2020
Posts: 29
Default

Quote:
Originally Posted by JamesPeters View Post
Michael continually posts about this even though he should very well understand it will never happen. And now apparently also he expects 32 to 64 bit Windows VST bridging in Linux on top of that, despite knowing that is accomplished by running a separate (32 bit) instance of Reaper. It's embarrassing at this point especially when he claims he's a programmer.
By the way, yabridge does do bit bridging. Yabridge will detect whether the VST2 plugin .dll file or the VST3 module you're trying to load is 32-bit or 64-bit, and depending on that it will launch either `yabridge-host.exe` or `yabridge-host-32.exe` (or the `yabridge-group*` variants if you're using plugin groups) accordingly. That lets you use 32-bit Windows plugins in 64-bit Linux plugin hosts.
robbert-vdh is offline   Reply With Quote
Old 01-21-2021, 11:43 AM   #14
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 10,410
Default

Quote:
Originally Posted by JamesPeters View Post
Michael continually posts about this.
Everybody has their dreams
In theory anything might be doable. If the effort is viable for the different cases can be discussed - and dismissed if appropriate.

-Michael
mschnell is offline   Reply With Quote
Old 01-26-2021, 04:10 PM   #15
robbert-vdh
Human being with feelings
 
Join Date: Nov 2020
Posts: 29
Default

Thanks to @kytdkut I found an issue in the VST3 audio processing routine that would with a low probability cause audio channels channels to randomly be muted in individual plugin instances in REAPER (since REAPER seems to be the only DAW on Linux that uses the VST3 silence flags feature). So if anyone's been testing this and noticed that some plugins are randomly not outputting any sound on their left and/or right channel, know that there's a fix for that! There have also been a lot of other fixes and quality of life improvements in the last week. Don't forget to rerun `yabridgectl sync` after updating!
robbert-vdh is offline   Reply With Quote
Old 02-14-2021, 07:47 AM   #16
robbert-vdh
Human being with feelings
 
Join Date: Nov 2020
Posts: 29
Default

Thanks so much for all the help! Yabridge 3.0.0 has now been released, and thanks to the help from the REAPER community I've been able to track down a few subtle but quite important bugs in the implementation. Aside from VST3 support yabridge 3.0.0 also includes a lot of other improvements, fixes, and new features, so I encourage you to read the full changelog if you're interested to learn more: https://github.com/robbert-vdh/yabridge/releases
robbert-vdh is offline   Reply With Quote
Old 02-14-2021, 08:04 AM   #17
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 7,412
Default

Very nice! You may also like to post in on Reaper subreddit.
https://www.reddit.com/r/Reaper/
vitalker is online now   Reply With Quote
Old 02-14-2021, 08:09 AM   #18
robbert-vdh
Human being with feelings
 
Join Date: Nov 2020
Posts: 29
Default

Quote:
Originally Posted by vitalker View Post
Very nice! You may also like to post in on Reaper subreddit.
https://www.reddit.com/r/Reaper/
Thanks for the suggestion! I already cross posted in a lot of places, but one more subreddit can't hurt, right? They don't seem to allow Reddit x-posts, so I've posted to link to the main thread there.
robbert-vdh is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 07:58 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, vBulletin Solutions Inc.