Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MIRROR - Copy JSON from source module, paste to all mapped modules #189

Closed
xandramax opened this issue Sep 15, 2020 · 11 comments
Closed

MIRROR - Copy JSON from source module, paste to all mapped modules #189

xandramax opened this issue Sep 15, 2020 · 11 comments

Comments

@xandramax
Copy link
Contributor

I like to poly-chain multiple VSTs in VCV Host that normally have limited polyphony. For example, chipsynth PortaFM only supports 9 voices and chipsynth SFC only 8. To do this, I use some forks I made of other MIDI modules to which I've added extra outputs and logic for rotating polyphony across the extra 16/32/48 channels. This allows me to comfortably use a sustain pedal in my playing without constantly running into maxed-out polyphony. Most often I use just two Host modules to bring the polyphony up to at least 16, but sometimes I will use 3 or even 4:

image

A pain point here is keeping the settings synchronized across the duplicate modules. This is pretty much exactly the use-case that MIRROR was designed for, but unfortunately VCV Host does not expose VST parameters as VCV params.

However, Host does expose the state of a VST in its JSON output. This allows me to hover the primary VST, hit CTRL-C, and then paste to each of the duplicates to bring them back into sync.

What do you think about the feasibility of adding a function to MIRROR in order to copy from the host module and paste to duplicate modules, all in one action? Ideally I think this function could be assigned to one of MIRROR's inputs, so that it could be quickly triggered via voltage (and therefore MIDI) when needed.

@stoermelder
Copy link
Owner

Did you notice MIRROR has a context menu option for syncing presets (aka JSON) of all bound modules? It has no CV input for that as preset operations need to be called from the GUI thread and I wanted to keep the module as stable and simple as possible. I can add a hotkey for that, however.

@stoermelder
Copy link
Owner

stoermelder commented Sep 15, 2020

Ok, I checked it and it does not work because Host has no parameters at all and how MIRROR works internally. Maybe I can do something about that.

@xandramax
Copy link
Contributor Author

I had totally missed that Sync Presets option somehow. Thanks for looking into it!

@stoermelder
Copy link
Owner

The module syncs now presets even on modules without any parameters are bound (e.g. VCV Host or VCV Qnt). I added a hotkey also. Please let me know if it works for you.

@xandramax
Copy link
Contributor Author

Excellent, it works great. Thanks so much!

@xandramax
Copy link
Contributor Author

Here's something interesting... I was getting loud clicks coming out of the Host modules when activating the new Sync Module Preset function, so I opened up OBS to grab a video. While demonstrating for the recording, the clicks stopped happening after the first two instances.

When I watched the recording though, I was really surprised to see a graphical rendering error appear whenever I activate the function in Mirror. This shows up even when the audio click doesn't happen, and it isn't visible outside of the recording. Like a ghost in the videotape...

After experimenting a bit I found that the audio click and video-recording-glitch don't happen when the Host modules don't have any VST loaded, but it doesn't seem to matter what VST is loaded (tested with two different ones at least). Also, the audio glitch only seems to happen if there are cables patched into multiple host modules. This doesn't affect the videotape ghost, though.

Here are the video clips and test patches:
Mirror Bug.zip

@xandramax xandramax reopened this Sep 16, 2020
@stoermelder
Copy link
Owner

Without digging any deeper I think VCV Host reloads the VST even it no not actually changed by the preset...

@xandramax
Copy link
Contributor Author

xandramax commented Sep 16, 2020

I just checked and while the glitch still happens if only 3 Host modules are bound together by Mirror, it doesn't happen if it's only two Host modules. I can't trigger the glitch by changing which VST is currently loaded in a single Host module, or by manually copying and pasting between individual Host modules myself.

Maybe it could be resolved by slowing down the syncing process a bit?

@xandramax
Copy link
Contributor Author

xandramax commented Sep 19, 2020

I can't trigger the glitch by changing which VST is currently loaded in a single Host module, or by manually copying and pasting between individual Host modules myself.

I take this back; I'm now getting clicks even if I just copy and paste from one Host to another. I'll send an email to Andrew about this one.

@stoermelder
Copy link
Owner

I think this is a good idea. Maybe it works better if Host does not reload the plugin if it the same as in the preset.

@xandramax
Copy link
Contributor Author

I still hadn't gotten around to sending that email, but lo-and-behold the issue seems resolved in Host 1.2.0! I'm not getting any clicks when syncing presets, even if the presets in question actually have changed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants