Pretty sure this is some of what I'm experiencing here?
https://forum.hise.audio/topic/3388/how-do-you-set-a-vst-au-parameter-from-a-script-and-automate
Pretty sure this is some of what I'm experiencing here?
https://forum.hise.audio/topic/3388/how-do-you-set-a-vst-au-parameter-from-a-script-and-automate
FWIW I get the exact same behavior in my projects in the scriptnode version with the AU/VST version of the editor.
Hey guys,
I was searching for a way to sync HISE to the host's playhead and came upon a post about modifying HISE source to un-comment some lines used for accomplishing this sort of thing in the hi-core main.cpp module. (originally from post: https://forum.hise.audio/topic/2307/the-things-we-all-want-to-see-in-hise-3-0/18).
void MainController::storePlayheadIntoDynamicObject(AudioPlayHead::CurrentPositionInfo &/*newPosition*/)
{
//static const Identifier bpmId("bpm");
//static const Identifier timeSigNumerator("timeSigNumerator");
//static const Identifier timeSigDenominator("timeSigDenominator");
//static const Identifier timeInSamples("timeInSamples");
//static const Identifier timeInSeconds("timeInSeconds");
//static const Identifier editOriginTime("editOriginTime");
//static const Identifier ppqPosition("ppqPosition");
//static const Identifier ppqPositionOfLastBarStart("ppqPositionOfLastBarStart");
//static const Identifier frameRate("frameRate");
//static const Identifier isPlaying("isPlaying");
//static const Identifier isRecording("isRecording");
//static const Identifier ppqLoopStart("ppqLoopStart");
//static const Identifier ppqLoopEnd("ppqLoopEnd");
//static const Identifier isLooping("isLooping");
//ScopedLock sl(getLock());
//hostInfo->setProperty(bpmId, newPosition.bpm);
//hostInfo->setProperty(timeSigNumerator, newPosition.timeSigNumerator);
//hostInfo->setProperty(timeSigDenominator, newPosition.timeSigDenominator);
//hostInfo->setProperty(timeInSamples, newPosition.timeInSamples);
//hostInfo->setProperty(timeInSeconds, newPosition.timeInSeconds);
//hostInfo->setProperty(editOriginTime, newPosition.editOriginTime);
//hostInfo->setProperty(ppqPosition, newPosition.ppqPosition);
//hostInfo->setProperty(ppqPositionOfLastBarStart, newPosition.ppqPositionOfLastBarStart);
//hostInfo->setProperty(frameRate, newPosition.frameRate);
//hostInfo->setProperty(isPlaying, newPosition.isPlaying);
//hostInfo->setProperty(isRecording, newPosition.isRecording);
//hostInfo->setProperty(ppqLoopStart, newPosition.ppqLoopStart);
//hostInfo->setProperty(ppqLoopEnd, newPosition.ppqLoopEnd);
//hostInfo->setProperty(isLooping, newPosition.isLooping);
}
I made these specific changes, recompiled HISE without issue, and tested things out, but I've been unable to get this to work. I always get "undefined" as a result of calling Engine.getPlayhead().isPlaying, for instance (I've tried all the available functions though, and have uncommented them all). I've made these experiments in the AU/VST versions of HISE running inside Live, Logic, and Bitwig.
I looked around for other variables in the HISE code that could be preventing these features from working, but couldn't find anything obvious. Am I missing something obvious?
Having MIDI playback functionality without any transport sync is fairly useless for my purposes. Has anyone gotten this particular change to work, or is there another way I should be going about this?
Thanks in advance :)
a
That does the trick, thanks so much!
a
Pretty sure this is some of what I'm experiencing here?
https://forum.hise.audio/topic/3388/how-do-you-set-a-vst-au-parameter-from-a-script-and-automate
Hello all,
I've been working on this problem for a while, I'd love to get some help if anyone has answers. I have some internal parameters used by my HISE scripts that need to be automatable in a plugin host. The values are stored in scriptSliders. They are linked to parameters in the VST/AU, but not to any module/scriptNode attribute. Their values change after incoming Note/CC values are received by the device, but the CC values are not statically mapped via midi-learn in HISE, because the control definitions need to be dynamically allocated depending on the mode the device is in.
Here's what I've observed so far:
So, my questions are, how can I:
Any help is greatly appreciated. I've been banging my head against this wall for a while. Here's a test patch with some simple methods I've been using to test with. I've looked around quite a bit for posts about these issues and haven't found anything relevant, but maybe I missed something?
Here's a test project demonstrating what I mean....you'll have to compile it and run it in a host to see what I'm talking about though. Ideally, using the "cycle" button in the UI should cause the VST/AU parameter to change just like it does the linked scriptSlider. In addition, sending CC9 on Chan1 will update both the scriptSlider and the VST/Param as one would expect.....but it still doesn't trigger any automation changes if the host is looking for changes in record mode.
HiseSnippet 1181.3ocsWslaaaDDdoroajZcQCPN.DAnvTUJtT1tIE0vvJV9ADRkiPkiQ+WvJxURK7pcIVtzwpF9e87j6ROB8FzaP6rbIEojkeDUX5eXMu14aFNyNC6JE9jnHgDYU9rIgDj02X2aBWMp0HLkiZeHx56r6hk3wDEQdFIRsM5fIg3nHR.xxZkSzZYUdUTxy+r+AXFl6SxYgPmKn9jekNlpx41s46nL1w3.xYzwEzdmls8E7VBlHFPzJ1dnPr+E3gjSwZ0JYirV6n.pRH6ovJRDxZ0CDAS5MR7ItQ+yoQz9LhlnApGbPF1GKXAZDq4hZMhxB5lE4QH3T5lmGVwjGdgcGZ.cJ+h4Cs.mbKJlOrJcevqwCCOuEAOqBvaUC7dtcOeIMTkKQis0r6ngYQDYTCU5YqY2RvUDtZyw3KHGKAh1.sb.1m3tsmW8s77pt65UbVuhjLzgKTjSiG2mH20vveDlyIro7R0qOleQad.4Jm8b7LrgWgQJmKwRGcAy63h9frLmOjnZIFGJ3.g6KyT3kZOq+ixYTNwYPL2WQEbGAOSE8AHELW+LqqCtfESptdkqA2BOfFQBFYyPIEN6Ml57MpYTbWiZEQbhfeXGPxMI.3gP4lQZAI.oElw5CUmt2BhlXY9HwmgGG5BNrtCST2YDsZJrkDUrj6zAqFs4XJ207C7UY5VMQYMDuqTTqI9LxCmeVPNBBGEkadKtgSMCFySPupQcGu5NaW8G2IK6oexhWc13bsObcKXTMmFU+9clyj47qRRGNjH0tVWWMjrwBOeir.2pOvKnjDvc81oX1QePERbmBE4um6Vsx0I9NulGJM5.sUvMOZOc5T9tYvbltgY0tkQzTUmKz6zsMOLV8KPYYt+psAPNyYlYMcfatZ6sWipO8uLukgNK1x++uS0Btw7OBKhLevt0xGr0V1fs1SavV4lJNyW.NXPREX44jkVxxzUcKPrdxo79LzkmjFytFHSQXDxrynrebyn7McdETTvayop2GR320fUTZ6JLCqTJp.UUISv91zIX8Xz.hDQgoUUryRbnDLmtXfymO4u1GcW1ePrRI3I1+U1I85yXr44CsODqv5QooHBPYHQpn5Df0gjKgcTLCVKaeHI5BkHLAxo2v.SVeLf9pbe1n4jbh2zjF0kEOjxmtJE30RgyxxriSgiCUv+q9fAcAm+5hN+CMQ2d8AXIFQPLCqlcyF85boBfRoY1iPuq.OhplTbcuuf0c7dzai8Xg6ys6RU9iVLdKs.7pqBehwa5xiqaezfADeUNXW093eeY2T7K.J+lHVeqHrBgjBED1vMo8fco8IoCkzs6VkzMlFZOMsNyzivCRH9W3IUXCMsUpvFYBQiw9RwG8Msi50SeVBG.S7jJ3xvRn.sSir9PaauM8Pigsl+nuuNU7J.6K1lsVBa1dIrYmkvleZIr40KgMuYIr4muWazevxaiUhwl1jzaAMyVPVecQBaqxyVQm9IEItIYBYVc.T3JUEatNhGT7tgiiYraoil4b506BxmJRm7QIPzn4c8K97I+8e7m6+VETO2OVM68is4WBWgaZmPc5dTxU7VVGwwPiig6+M9.jDK
I've been struggling with this problem since I wrote this post originally. I came up with a solution, basically to rearrange my scripts so that the CC reception was in its own script. It had been in the main interface script, since the CC's were controlling scriptSliders that were attached to module attributes. I moved the CC receive functions to their own script, and used setAttribute to target the sliders in the main interface script. Just chiming in here to let anyone that comes across this know how the problem was solved.
Now I have some other problems. It seems impossible to set a AU/VST parameter directly from the script by this method. Sending a value to the linked scriptSlider causes a change to it, and it's linked attribute, but doesn't change the VST/AU parameter value in the host. I'll make a separate post for that problem, though.
Hey all,
I'm at a loss to figure out a way to update an exposed parameter value in a VST/AU (a HISE parameter with the isPluginParameter enabled) from a script.
In my compiled plugin:
My parameters show up in the plugins device view, and I can change the internal HISE parameter by changing the value in the plugins generic GUI in the host.
Any control widgets (e.g. ScriptSlider) I have in the HISE GUI for the plugin that are linked to parameters with isPluginParameter enabled are capable of changing the internal HISE parameter as well as updating the value in the generic GUI in the host.
I can use MIDI assignment in HISE's editor to link MIDI controllers to the controls in HISE's GUI (e.g. ScriptSlider) and the incoming CC's change the internal parameter, the HISE GUI object (e.g. ScriptSlider), and the value in the Host's generic GUI.
However, when I use a script to intercept the CC's and forward them to the ScriptSliders or their targets, everything works (HISE control updates, internal parameter updates) except for the update to the Host's generic GUI for the linked parameter. Furthermore, having isPluginParameter enabled for a HISE internal prevents the CC from being received in the script and updating its targets unless the HISE GUI window is open. (when it's open, things work ALMOST as expected with the exceptions noted above....when it's not open, no CC initiated changes get through via the script).
I've tried scripting to the ScriptSliders that are connected to the internal parameters as well as to the target parameters themselves, and neither updates the stored value in the Host's plugin window. I've also tried with both a deferred script and a non-deferred one, with no apparent difference.
Can anyone else confirm this? Is this expected behavior? Seems a bit screwy.
I can work around this for most situations and use the internal CC mapping capabilities for what I need, but there are a few parameters that need to be stored with the plugin instance in a project that aren't connected to an parameter, but instead just stored in a ScriptSlider and updated via the script. Is there another way I could do this? Am I missing something here?
Thanks for looking, cheers :)
a
FWIW I get the exact same behavior in my projects in the scriptnode version with the AU/VST version of the editor.
It did work for me....after many tries to get the right combination of version + modifications to give me the features I needed.
In what sense do you mean, "does it work for modulators and lfos"?
All I'm using it for at the moment is to get the playing state of the host software, so that I can play/sync or stop MidiPlayer sequences based on what the host is doing.
FWIW, using a shortcut in the global Plugins library that points to the local library's copies of the plugins seems to solve my problem for now, but it still would be nice to be able to set this as a variable in the project settings somehow.
Hey guys,
This has been bugging me for a while. I assumed I'd stumble across an answer, but so far no luck.
My problem is simply that when compiling AU/VST via the export command in HISE editor, they are placed inside my local audio library: ~/Library/Audio/Plugins/*
I want them in the global library: Library/Audio/Plugins/*
Is there a way to change HISE settings so this happens automatically each time I compile? I can't seem to find it anywhere....and I'm wasting tons of time moving them manually.
Thanks in advance!
a
<insert gif of snoopy dancing>
I am in your debt, thanks soooo much for the quick reply! That solved it :)
Also, I appreciate the explanation about deferal....I suspected something like that was going on, but am still getting my feet wet here so every little bit of information helps!
a
I've got a project that builds and works fine in the release version of HISE. However, I need the improvements made to the MIDIPlayer import mechanism that were introduced in the scriptnode version back at the beginning of August (allowing import of non-960ppq midi files correctly), so I've compiled several different commits of the HISE au/vst plugins to make use of the changes. It's literally the ONLY reason I need the scriptnode version.
Now, though, when using the au/vst builds (any of the more recent ones), if I have any scripts that aren't deferred, I get a continuous stream of errors in the console any time the transport is running in the host:
Deferring the scripts prevents the errors from occurring, however it causes errors when processing any Messages (HISE complains, for instance, that I can't Message.ignoreEvent(true) because the message is not being processed in the MIDI callback...except it IS). So I'm at an impasse.
I have none of these issues with the release version.
I've contemplated (and attempted) backporting the changes from the MidiPlayer.cpp, but there's a fair amount of additional code added to the the scriptnode version of those files, so it's not such a simple task. There are obviously some dependencies and variables that are required for the newer version that aren't present in the release version.
Any ideas? I'm stumped.
a