mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-08 12:30:12 +02:00
Rename vst3_no_scaling to editor_disable_host_scaling
This will also affect CLAP plugins.
This commit is contained in:
+15
-1
@@ -8,7 +8,21 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
TODO: Mention CLAP. Because, you know, kinda important new feature.
|
||||
- TODO: Mention CLAP. Because, you know, kinda important new feature.
|
||||
- TODO: Remove mention of `vst3_no_scaling` from the readme.
|
||||
|
||||
# Added
|
||||
|
||||
- The new `editor_disable_host_scaling` compatibility prevents hosts from
|
||||
setting an explicit DPI scaling factor for the editor. In some cases this can
|
||||
help with inconsistent scaling when using HiDPI scaling. This option affects
|
||||
**VST3** and **CLAP** plugins and it replaces the old `vst3_no_scaling`
|
||||
option.
|
||||
|
||||
# Removed
|
||||
|
||||
- The `vst3_no_scaling` compatibility option has been removed in favor of the
|
||||
new `editor_disable_host_scaling` option.
|
||||
|
||||
# Changed
|
||||
|
||||
|
||||
@@ -334,16 +334,16 @@ you load a new plugin._
|
||||
|
||||
### Compatibility options
|
||||
|
||||
| Option | Values | Description |
|
||||
| ------------------------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `disable_pipes` | `{true,false,<string>}` | When this option is enabled, yabridge will redirect the Wine plugin host's output streams to a file without any further processing. See the [known issues](#known-issues-and-fixes) section for a list of plugins where this may be useful. This can be set to a boolean, in which case the output will be written to `$XDG_RUNTIME_DIR/yabridge-plugin-output.log`, or to an absolute path (with no expansion for tildes or environment variables). Defaults to `false`. |
|
||||
| `editor_coordinate_hack` | `{true,false}` | Compatibility option for plugins that rely on the absolute screen coordinates of the window they're embedded in. Since the Wine window gets embedded inside of a window provided by your DAW, these coordinates won't match up and the plugin would end up drawing in the wrong location without this option. Currently the only known plugins that require this option are _PSPaudioware E27_ and _Soundtoys Crystallizer_. Defaults to `false`. |
|
||||
| `editor_force_dnd` | `{true,false}` | This option forcefully enables drag-and-drop support in _REAPER_. Because REAPER's FX window supports drag-and-drop itself, dragging a file onto a plugin editor will cause the drop to be intercepted by the FX window. This makes it impossible to drag files onto plugins in REAPER under normal circumstances. Setting this option to `true` will strip drag-and-drop support from the FX window, thus allowing files to be dragged onto the plugin again. Defaults to `false`. |
|
||||
| `editor_xembed` | `{true,false}` | Use Wine's XEmbed implementation instead of yabridge's normal window embedding method. Some plugins will have redrawing issues when using XEmbed and editor resizing won't always work properly with it, but it could be useful in certain setups. You may need to use [this Wine patch](https://github.com/psycha0s/airwave/blob/master/fix-xembed-wine-windows.patch) if you're getting blank editor windows. Defaults to `false`. |
|
||||
| `frame_rate` | `<number>` | The rate at which Win32 events are being handled and usually also the refresh rate of a plugin's editor GUI. When using plugin groups all plugins share the same event handling loop, so in those the last loaded plugin will set the refresh rate. Defaults to `60`. |
|
||||
| `hide_daw` | `{true,false}` | Don't report the name of the actual DAW to the plugin. See the [known issues](#known-issues-and-fixes) section for a list of situations where this may be useful. This affects VST2, VST3, and CLAP plugins. Defaults to `false`. |
|
||||
| `vst3_no_scaling` | `{true,false}` | Disable HiDPI scaling for VST3 plugins. Wine currently does not have proper fractional HiDPI support, so you might have to enable this option if you're using a HiDPI display. In most cases setting the font DPI in `winecfg`'s graphics tab to 192 will cause plugins to scale correctly at 200% size. Defaults to `false`. |
|
||||
| `vst3_prefer_32bit` | `{true,false}` | Use the 32-bit version of a VST3 plugin instead the 64-bit version if both are installed and they're in the same VST3 bundle inside of `~/.vst3/yabridge`. You likely won't need this. |
|
||||
| Option | Values | Description |
|
||||
| ----------------------------------------------------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `disable_pipes` | `{true,false,<string>}` | When this option is enabled, yabridge will redirect the Wine plugin host's output streams to a file without any further processing. See the [known issues](#known-issues-and-fixes) section for a list of plugins where this may be useful. This can be set to a boolean, in which case the output will be written to `$XDG_RUNTIME_DIR/yabridge-plugin-output.log`, or to an absolute path (with no expansion for tildes or environment variables). Defaults to `false`. |
|
||||
| `editor_coordinate_hack` | `{true,false}` | Compatibility option for plugins that rely on the absolute screen coordinates of the window they're embedded in. Since the Wine window gets embedded inside of a window provided by your DAW, these coordinates won't match up and the plugin would end up drawing in the wrong location without this option. Currently the only known plugins that require this option are _PSPaudioware E27_ and _Soundtoys Crystallizer_. Defaults to `false`. |
|
||||
| `editor_disable_host_scaling` (`vst3_no_scaling` in yabridge 4.x) | `{true,false}` | Disable host-driven HiDPI scaling for VST3 and CLAP plugins. Wine currently does not have proper fractional HiDPI support, so you might have to enable this option if you're using a HiDPI display. In most cases setting the font DPI in `winecfg`'s graphics tab to 192 will cause plugins to scale correctly at 200% size. Defaults to `false`. |
|
||||
| `editor_force_dnd` | `{true,false}` | This option forcefully enables drag-and-drop support in _REAPER_. Because REAPER's FX window supports drag-and-drop itself, dragging a file onto a plugin editor will cause the drop to be intercepted by the FX window. This makes it impossible to drag files onto plugins in REAPER under normal circumstances. Setting this option to `true` will strip drag-and-drop support from the FX window, thus allowing files to be dragged onto the plugin again. Defaults to `false`. |
|
||||
| `editor_xembed` | `{true,false}` | Use Wine's XEmbed implementation instead of yabridge's normal window embedding method. Some plugins will have redrawing issues when using XEmbed and editor resizing won't always work properly with it, but it could be useful in certain setups. You may need to use [this Wine patch](https://github.com/psycha0s/airwave/blob/master/fix-xembed-wine-windows.patch) if you're getting blank editor windows. Defaults to `false`. |
|
||||
| `frame_rate` | `<number>` | The rate at which Win32 events are being handled and usually also the refresh rate of a plugin's editor GUI. When using plugin groups all plugins share the same event handling loop, so in those the last loaded plugin will set the refresh rate. Defaults to `60`. |
|
||||
| `hide_daw` | `{true,false}` | Don't report the name of the actual DAW to the plugin. See the [known issues](#known-issues-and-fixes) section for a list of situations where this may be useful. This affects VST2, VST3, and CLAP plugins. Defaults to `false`. |
|
||||
| `vst3_prefer_32bit` | `{true,false}` | Use the 32-bit version of a VST3 plugin instead the 64-bit version if both are installed and they're in the same VST3 bundle inside of `~/.vst3/yabridge`. You likely won't need this. |
|
||||
|
||||
These options are workarounds for issues mentioned in the [known
|
||||
issues](#known-issues-and-fixes) section. Depending on the hosts
|
||||
@@ -413,13 +413,13 @@ deep within in, like this:
|
||||
|
||||
["FabFilter*.vst3"]
|
||||
group = "fabfilter"
|
||||
vst3_no_scaling = true
|
||||
editor_disable_host_scaling = true
|
||||
|
||||
["Chromaphone 3.vst3"]
|
||||
hide_daw = true
|
||||
|
||||
["Misstortion2.vst3"]
|
||||
vst3_no_scaling = true
|
||||
editor_disable_host_scaling = true
|
||||
|
||||
["*/*Spectral*.vst3"]
|
||||
vst3_prefer_32bit = true
|
||||
@@ -428,7 +428,7 @@ vst3_prefer_32bit = true
|
||||
# own configuration set
|
||||
["*"]
|
||||
editor_force_dnd = true
|
||||
vst3_no_scaling = true
|
||||
editor_disable_host_scaling = true
|
||||
```
|
||||
|
||||
And with CLAP plugins you match on the `.clap` file, just like the VST2 config
|
||||
|
||||
@@ -107,6 +107,12 @@ Configuration::Configuration(const fs::path& config_path,
|
||||
} else {
|
||||
invalid_options.emplace_back(key);
|
||||
}
|
||||
} else if (key == "editor_disable_host_scaling") {
|
||||
if (const auto parsed_value = value.as_boolean()) {
|
||||
editor_disable_host_scaling = parsed_value->get();
|
||||
} else {
|
||||
invalid_options.emplace_back(key);
|
||||
}
|
||||
} else if (key == "editor_force_dnd") {
|
||||
if (const auto parsed_value = value.as_boolean()) {
|
||||
editor_force_dnd = parsed_value->get();
|
||||
@@ -136,12 +142,6 @@ Configuration::Configuration(const fs::path& config_path,
|
||||
} else {
|
||||
invalid_options.emplace_back(key);
|
||||
}
|
||||
} else if (key == "vst3_no_scaling") {
|
||||
if (const auto parsed_value = value.as_boolean()) {
|
||||
vst3_no_scaling = parsed_value->get();
|
||||
} else {
|
||||
invalid_options.emplace_back(key);
|
||||
}
|
||||
} else if (key == "vst3_prefer_32bit") {
|
||||
if (const auto parsed_value = value.as_boolean()) {
|
||||
vst3_prefer_32bit = parsed_value->get();
|
||||
|
||||
@@ -150,7 +150,7 @@ class Configuration {
|
||||
* that with a Wine font DPI of 192 plugins often do draw correctly at 200%
|
||||
* scale.
|
||||
*/
|
||||
bool vst3_no_scaling = false;
|
||||
bool editor_disable_host_scaling = false;
|
||||
|
||||
/**
|
||||
* If a merged bundle contains both the 64-bit and the 32-bit versions of a
|
||||
@@ -203,7 +203,7 @@ class Configuration {
|
||||
s.ext(frame_rate, bitsery::ext::InPlaceOptional(),
|
||||
[](S& s, auto& v) { s.value4b(v); });
|
||||
s.value1b(hide_daw);
|
||||
s.value1b(vst3_no_scaling);
|
||||
s.value1b(editor_disable_host_scaling);
|
||||
s.value1b(vst3_prefer_32bit);
|
||||
|
||||
s.ext(matched_file, bitsery::ext::InPlaceOptional(),
|
||||
|
||||
@@ -291,6 +291,9 @@ class PluginBridge {
|
||||
if (config_.editor_coordinate_hack) {
|
||||
other_options.push_back("editor: coordinate hack");
|
||||
}
|
||||
if (config_.editor_disable_host_scaling) {
|
||||
other_options.push_back("editor: no host DPI scaling");
|
||||
}
|
||||
if (config_.editor_force_dnd) {
|
||||
other_options.push_back("editor: force drag-and-drop");
|
||||
}
|
||||
@@ -306,9 +309,6 @@ class PluginBridge {
|
||||
if (config_.hide_daw) {
|
||||
other_options.push_back("hack: hide DAW name");
|
||||
}
|
||||
if (config_.vst3_no_scaling) {
|
||||
other_options.push_back("vst3: no GUI scaling");
|
||||
}
|
||||
if (config_.vst3_prefer_32bit) {
|
||||
other_options.push_back("vst3: prefer 32-bit");
|
||||
}
|
||||
|
||||
@@ -997,13 +997,14 @@ void Vst3Bridge::run() {
|
||||
[&](YaPlugViewContentScaleSupport::SetContentScaleFactor& request)
|
||||
-> YaPlugViewContentScaleSupport::SetContentScaleFactor::
|
||||
Response {
|
||||
if (config_.vst3_no_scaling) {
|
||||
std::cerr << "The host requested the editor GUI to "
|
||||
"be scaled by a factor of "
|
||||
<< request.factor
|
||||
<< ", but the 'vst3_no_scale' option is "
|
||||
"enabled. Ignoring the request."
|
||||
<< std::endl;
|
||||
if (config_.editor_disable_host_scaling) {
|
||||
std::cerr
|
||||
<< "The host requested the editor GUI to be "
|
||||
"scaled by a factor of "
|
||||
<< request.factor
|
||||
<< ", but the 'editor_disable_host_scaling' "
|
||||
"option is enabled. Ignoring the request."
|
||||
<< std::endl;
|
||||
return Steinberg::kNotImplemented;
|
||||
} else {
|
||||
return main_context_
|
||||
|
||||
Reference in New Issue
Block a user