Delay Tempo Sync
-
I know this has come up a few times in the forum but I'd like to find a solution to what was discussed in the linked post as the OP never indicated if it was fixed.
In summary I'm trying to control delay time from the interface using one knob (could be two if necessary) and using the TempoSync button On / Off. When Off I want the delay time displayed in m/s and when On I want it in Note values.
My first question is do you still think building a delay in script FX the best way forward?
Secondly could someone either point me towards some resources to help with the script FX or even better share snippets, etc that might help.
I get the feeling that this would benefit a lot of people (basically anyone using a delay effect, right?) and I'd rather not have to redesign the wheel if there is a shortcut out there already.
BTW the snippet that was shared in the linked post was useful in that I was able to compile the Script FX and then use it as a hardcoded master FX but it only had one 'Wet' control knob - though I'm guessing I can modify that!
Ps. I'm new to HISE and though I have used basic scripting in Kontakt before I realise HISE is completely different.
Thanks
-
@Tangerine_Sounds said in Delay Tempo Sync:
My first question is do you still think building a delay in script FX the best way forward?
Only if the stock delay doesn't meet your needs.
@Tangerine_Sounds said in Delay Tempo Sync:
n summary I'm trying to control delay time from the interface using one knob (could be two if necessary) and using the TempoSync button On / Off. When Off I want the delay time displayed in m/s and when On I want it in Note values.
Simplest solution is probably to use two knobs and hide/show them based on the mode.
-
@d-healey said in Delay Tempo Sync:
Simplest solution is probably to use two knobs and hide/show them based on the mode.
Yes, I thought about that as a potential solution. I'll look into it. Thanks
-
the long runner, i had the same problem, here is my solution ...
HiseSnippet 2261.3oc0ZszaajbDdnjFulzV6JuwIdCPBvDgbPNwPKeHoXi.CQIRwULVTjhTq273fPyYZR1Pyz8jYZJK5EBvGy+fj8lOkeB4V.7egf8RNl64x9GHvo5dH4zCEI0HpG6ZI.AzU2c00q9qppGUyiYh88YdZIRcXOWrVh6q2nGk2oPGDgpUtnfPSWmiPTqi57Zss64h78wVZIRL+WHVQhjKnI+461bajMhZhCIoo8RFwDuGwgvCoVK+KH11kPV3CINJqds7kMYzBLaVWPZlWOslKx7XTa79HwxlSWaWjeGsD+J8rYaY9zzoeZtbqmFgxYgPqkAm6Y3Vazxb8zOKsUy0SC+tgVh6riEgy7ZvQbruVhE1lY0qQG1qnAGvKI9jl1XwfLZMfSNfbIlskPEET0JzgXaUafYxWSKgdsPi17AFsGpWgXQFROz3sjbBivcnZ.SLWTwa9HhWFUwKsh3MFQJghHsPfH8.8FldDWd3LB44d5kobrWKD3mTEkf0pM2eKkdAFrBJeUGzw3Rdvfg6XkMRm9IFqkN8i+soR84etQ0FELJQrgYMpvrLpi8YoHTaBEazpK0jSXTCFcuRUCVjXdH1xrJsZqVhSwiYuhIywkQgy6IFmfr6hebpuNURalIx1vtEy34FxnwUai4vQz0FAlqUVNBKA5KCBTRX4q5i4aw4djlc43UDDNDCrWbnCXOrvTIIsVQNx34O2H8iSkDNxjCTa3jJLPlVY4WPYMOmBr7iEGzJK6vrvK+DikK4g+ycwTydR4Xl3DgJXT5UWe1YA5TAKVK8pomFOht4hccb5Uj36Zi5MSZULXWrTsXvmQzuyRkDa6iuxNugQHyrk2B2B00l+RQDkfiqOcOP7BDReUCDx7zqq.gXYgtX1cIMSWhHqzWKQVCMXmk5L.ea7ba7fYAbpOjVAjscSHy0JW.zGbTiGC0XGpkDesHFjRic+iFaWqxX.VaxoxUH8Ow.O0RxNED0cZ0BaBJkjKY.cewTIkKJJNZ.oqJR5wPLq7f1al.ZFy1iEvxX1W7.JGtw5WM4s9LJu0uB.eS1VGq6xme6Wx6tSwYkdlbVWDX1jcVWNEt9UUgqOiJb8YALJB.vjvfFGJQ.ziJ7hDyYwToTfW1mwwUoqHAPRcVJiQmpUqwNW+ivF6M1oE076MsMtBsqSSrmJ7kXgPcsQKVVexEKqVKuYfkSYgLZYJgW0ESmTE9Z8M2hZ86KUvR4xxp+39kU2vlXg8zHP0yORer4i0jJPX+MKkWaRLa6tbNiJY1moO9jFixsuaSsXHZ2WO7J0nbX47WRNTeTNXDKM5SziDBNFE4KKWDwQh1X5a3AmgK1iSD94DEwm.MQFzTSR8hX+i4LWn0tgWD.g7R6aNMT.NLeuvA6m2gXYYiqw7Ih3xvY9k4gqlvwpKtZp42sUKBLTW2X2WqI.aD8VMDrQyGh2NDeJea1oAwgp.JgL8g4cGD2U1Rn.fjlas9c0.8+5As9BhsXt6oOLuiH.cnt+nIp6+L8IW6ihAHuqpAn70jAXR5qO5DbYZMOL.VIZ7DJp4Xr0grI6pHbrSvqBjEXzcF7zBgjETykKmjZy1gzd+6eujFG7Cmm5qHV7Nf7mfBC5fIs6vEixBiDNOofWi41EB09H8sZxNAKYj7gH7gxovkPlbV+WpnEw1wGpWxsrCpMnuF5ecs5U+c6T3viJUcuh6T+rWre0sOp3WVoxeXUWZaM.jqgX89AXPQhBfCP0Aqe4wJBctusmhy8MGjOPEtefixPZeUOqEiGRxoprLj+uqc9yGHDIngicaPdcja+mObKgXB2+5PYcObKdPxpn1o6pGT3Zz6IeR.UQdFwFmbfXj.3KsQntJDB8l1HrndcQ.Z7sBKEZEj6bFLCKDaD8PKw6ZpXIxyxqc92kZI8gOji5yjIdLw9SHr.puMk38mnfkompE6Z6syhqH9.8ZDtYmwKiyMFYDxmcSHi8ewwE0C5dKT.WPuzu+F54EmS47SFb9epdMlcO2NLJwL.BRJD2seNmo7PwZZgIxBH9l+4u3ej+f9Cd627M+uMqHuAEVmwAcQ1gF229u96ucqsItLaj2U0vmY5Z9BwL53mDlc13FJLNS7eB3kBjTcQ9Ao38o5i9joSUzdy+8f+8li5kjvEhmsubDm4WAIzaw7b5Wf1vhc2C2FLQp5ZHbnBwFNLFuCg1N5GCPSaOFycGJBTdK00WqCxWz6gr7gvUKX6grJH.b0qfMy7X0IK2lx7vA8ynRuPWeNyYfBHS71..mkEil3OouwZqB+z5WK96yJ.+IW0qmwWiwmyEy3yejH.vXne13hh.Fav4BwC.Y5e9DsKkDG4V0Ovk3GHShckt9eqJu+T89XnRq7GNx8GqevOrD16EHreTPMW8yC1upLUoKZgoJMhORsZJI9JgwVhGxQYG4yk6a2b.c0MHmXO1qpAGnviNjO+kuM+tjyQUqX9JDkhX+OiGfNw7WSXUZ0Yc4.PeEDz3inhy8gdfflxLwfqkRw1hG0IwbBb4fwoEikf6Xpkb.z6166OYFw3D8mLyfIU8JOJvqbOcA.u7Mukdler9..eiu.SwdhXqLSpbEiM+4uKteWa2X+csqZxAQ3POD02k4iyDIQF1gbHTAteDpiriricGQnVDy6Rix5.RYGM4cIvTnrt6le.wrpDqgnQXFLNBmFITJHycCLn4VU8MACCR1rrRh7t193uRzDdF0MFRNqJ4cQdVQiLgjeyG660Whut+cto9592pXjeO1PUjJQSNPFaPbbsw6POAay.JA4KKFzT5PppBYEFkEzdgpOuNF.OZ2FGITZr5yVbNRsLvGluN1FCEOp9hV6QnXjWztMtoJJeZtqOSOPbMDPGe3jIdp8DOerZM6ZWdm89iukufBHle33oejNfhm0P5tM992eeaTJwswY3fL8XGYF7QTD.F2URAzap7e5sj5UDiMxL5WMQSyAx7bjoYTVctMlcV2XtYciqMqab8YciaLqa72Lqa7oW7FEEFrUWNyI3dBTfTscBdXgDCeUiDyq8+04lJhI
-
@Xearox73 thanks for this. HISE says it's not a valid Snippet. Am I doing something wrong?
-
try this
Content.makeFrontInterface(600, 400);
// OSC Filter Mod Reso
inline function onLFOFilterResoSyncOnOffControl(component, value)
{
local lfo = Synth.getModulator("LFOFilterResoMod");
lfo.setAttribute(lfo.TempoSync, value);if(value == 0) { Content.getComponent("KnobLFOFilterResoSync").set("mode", "Frequency"); Content.getComponent("KnobLFOFilterResoSync").set("min", "0.5"); Content.getComponent("KnobLFOFilterResoSync").set("max", "40.0"); Content.getComponent("FilterResoSyncDummyDisplay").set("mode", "Frequency"); Content.getComponent("FilterResoSyncDummyDisplay").set("min", "0.5"); Content.getComponent("FilterResoSyncDummyDisplay").set("max", "40.0"); } else { Content.getComponent("KnobLFOFilterResoSync").set("mode", "TempoSync"); Content.getComponent("KnobLFOFilterResoSync").set("defaultValue", "5.0"); Content.getComponent("KnobLFOFilterResoSync").set("min", "0.0"); Content.getComponent("KnobLFOFilterResoSync").set("max", "18.0"); Content.getComponent("FilterResoSyncDummyDisplay").set("mode", "TempoSync"); Content.getComponent("FilterResoSyncDummyDisplay").set("defaultValue", "5.0"); Content.getComponent("FilterResoSyncDummyDisplay").set("min", "0.0"); Content.getComponent("FilterResoSyncDummyDisplay").set("max", "18.0"); }
};
Content.getComponent("LFOFilterResoSyncOnOff").setControlCallback(onLFOFilterResoSyncOnOffControl);
// OSC Filter Mod Reso End// Delay HZ BPM
inline function onbtnDelayTempoControl(component, value)
{
local delay = Synth.getEffect("Delay1");
delay.setAttribute(delay.TempoSync, value);if(value == 0) { Content.getComponent("knobDelayL").set("mode", "Frequency"); Content.getComponent("knobDelayL").set("min", "0.5"); Content.getComponent("knobDelayL").set("max", "40.0"); Content.getComponent("knobDelayR").set("mode", "Frequency"); Content.getComponent("knobDelayR").set("min", "0.5"); Content.getComponent("knobDelayR").set("max", "40.0"); } else { Content.getComponent("knobDelayL").set("mode", "TempoSync"); Content.getComponent("knobDelayL").set("defaultValue", "5.0"); Content.getComponent("knobDelayL").set("min", "0.0"); Content.getComponent("knobDelayL").set("max", "18.0"); Content.getComponent("knobDelayR").set("mode", "TempoSync"); Content.getComponent("knobDelayR").set("defaultValue", "5.0"); Content.getComponent("knobDelayR").set("min", "0.0"); Content.getComponent("knobDelayR").set("max", "18.0"); }
};
Content.getComponent("btnDelayTempo").setControlCallback(onbtnDelayTempoControl);
// Delay HZ BPM End -
@Tangerine_Sounds
i tried export as hise snippet .... no idea why that doesn't work? -
@Xearox73 Thank you, I'll give it a go
-
@Xearox73 OK so if I understand correctly the LFO is just acting as a dummy display. The KnobDelayL and KnobDelayR are still controlling the Delay Time Left and Right.
What I'm unsure of is the difference between LFOFilterResoMod and KnobLFOFilterResoSync?
Also, which component should be called here?: inline function onLFOFilterResoSyncOnOffControl(component, value)Sorry, I'm very new to HISE scripting!
-
no, these are two different examples:
between // OSC Filter Mod Reso and // OSC Filter Mod Reso End - is the example for a Filter LFO with sync incl. a hidden second dummy, in case you want to display the value somewhere else on the GUI.
The second example between // Delay HZ BPM and // Delay HZ BPM End is for the DelayFX
i saved this for myself, that I can always fall back on it.
if you want to build a synth, you are always faced with this problem,
unless you use the standard presentation without filmstrips and a very very simple design.
Yes, you can also work with hide/show and two buttons, however, i would not recommend this for larger projects.
I'm also relatively new to this (8 weeks or so) and I'm still finding some things really difficult
I think i viewed every video of d.healy and read tons of forum posts, but some things are not clear to me. In addition, simple ideas can only be achieved in complicated ways
The best example is my bullshit solution with the value display that i want to see somewhere on my guiWhy is it not possible to simply display all values in a single display when i move a button?
A solution for one or two buttons, ok, but what if i have 4 or 10 filter 2 delays and tons of lfo`s ???
Most of the explanations work on a small scale, but when i start to get bigger ... hmmmm
So, to program a Serum2 with HISE requires at least 8 developers, 2 graphic designers, 20 testers and at least 2 years I think -
@Xearox73 I understand now!
The second example works perfectly for me. I just tweaked it slightly by changing the mode from Frequency to Time.
Yeah, It's a pretty steep learning curve, but I'm sure it gets easier over time!!
I'm just looking to do fairly simple stuff for now so your solution is just what I need! Thanks again and all the best
... I think Serum 2 (or 3) will have to wait awhile
-
@Xearox73 said in Delay Tempo Sync:
Why is it not possible to simply display all values in a single display when i move a button?
What do you mean?
-
@d-healey
Hi
i would like to create a display at a fixed position in the gui that always shows the value of the knob i move.
I haven't found anything about this yet, or have overlooked or misinterpreted itsimilar to your video with the custom tooltip panel, except that i want to display the values of all needed knobs in the panel
..... as a musician, you just try to do things that you can't find with others or that you miss in plugins and the learning curve is a bit steep if you want too much
-
@Xearox73 Do you want one display for all knobs or one display for each knob?
-
@d-healey
one display for all knobs -
@Xearox73 So if I move a knob the knob's value will be showing in the display, and if I move another knob its value will be shown. What happens if I move both knobs together?
-
hmmm, good argument
then probably better for everyone and then make the ones you don't need invisible ....
or a possibility to enlarge the font of the TextBox
Then my trick with the hidden button works and the value is alwaysvisible.
similar to here, only the font is a bit small