Scriptnode clock-sync - is there a preferred solution???
-
Sorry if this is a bit of a dupe. But most topics on this seem a few years old at least.
I figured out two ways to get a clock sync'd ramp signal. But is one of these preferred?
I like the Clock Ramp node because you can get very slow LFO's that way by using the tempo division and the multipler control. But if you want free-time, it seems like it might be tricky to do. Whereas the tempo_sync node has a switch that can go between the sync'd and unsync'd time.
Long-term I'd also be looking for:
- Sync Yes/No
- Retrigger Yes/No
More or less, both of these solutions seem to work. But which do you think is best?
-
I often use the clock ramp, since it tracks the transport position as well as the tempo.
However I wish there was a node with more time (bigger than a bar) so that we can track discrete position over the span of 4 bars for example.
-
@griffinboy you can use the multiplier to get a longer time.
@Orvillain you can
container.branch
between a normal ramp and the clock sync one for switching between unsynced & synced time. -
Thank you!
I was wondering what that multipler was supposed to be for -
Yeah as I said, the multipler feature is great for those super slow LFO's. Awesome when you start combining different expressions to shape the ramp too, to create some organic modulation shapes beyond the basics.
@Christoph-Hart said in Scriptnode clock-sync - is there a preferred solution???:
@Orvillain you can container.branch between a normal ramp and the clock sync one for switching between unsynced & synced time.
Right gotcha, and just sack off the tempo_sync node altogether when using the regular ramp?
-
@Orvillain yup
-
Sorry, two more things.
For retriggering... is it better to just use the monophonic/polyphonic button for the modulator in the module tree....
Or should I attempt to build the retrigger functionality into the custom envelope modulator scriptnode that I am building?
I'm intending on compiling it once the network is done.
Also, am I right in thinking for the clock-ramp it just syncs to the incoming clock no matter what, and that there is no concept of retriggering or free-running to think about??
-
Or should I attempt to build the retrigger functionality into the custom envelope modulator scriptnode that I am building?
if you're loading that network into a hardcoded envelope you cannot replicate the monophonic with retrigger behaviour as it will follow the voice allocation logic of the sound generator.
Why don't you want to use the inbuilt function?
-
@Christoph-Hart said in Scriptnode clock-sync - is there a preferred solution???:
Why don't you want to use the inbuilt function?
You mean the built in LFO block??? Coz I'm adding a bunch of waveshaping and warping and fun things to the LFO shapes.
-
@Orvillain No I meant the inbuilt monophonic / retrigger function. This effectively turns a polyphonic envelope that only runs when a voice is active to a constantly running, monophonic time variant modulator (basically exactly like the stock LFO).
-
@Christoph-Hart Gotcha. No, I'm fine using that function. Just didn't know if there was a reason to do it another way.
-
@Christoph-Hart I'm a bit confused here.
I put a regular ramp into my network. I put it inside a no_midi container. When I play and hold some low notes, and crucially then I play and hold some high notes afterwards, I get the same speed ramp out of this.
But if I try the same with a clock_ramp, the high-notes change the speed of the ramp I get from it, for all of the voices.
In fact, it doesn't really matter if I play low and high notes. If I play any notes, then while those are held, I play some others... the speed of the clock ramp will change. Why is this??
This only happens in polyphonic mode. Does not happen in monophonic mode.
-
@Orvillain ah damn, that's a real problem - I've never used the clock ramp in a polyphonic context and the fact that polyphonic nodes are only processing audio when a voice is rendered make the synchronization super hard.
I can fix the double speed by adding a polyphonic state, but then it still resyncs every time you start a voice, so it's not synchronized to the clock position at all. I need to think about how to address this best, but this might get complicated.
-
If I add a monophonic modulator that uses a clock ramp and sends it through a global cable I can pick that up in an envelope with the proper synchronisation, but that's rather hacky.
HiseSnippet 1840.3oc2YssaaaCFVxILMmZQ6V251PGftXWjNDDX6bnsaWjyoMX0IFwNo6t.FI5XBKQJHQmDug8Rsmf9HrGgh8Dja10c+jTxRx1wM1MmZSAJL+4oO9e36+mhkC31jvPdfg4jUa4SLLmFUoESTe85XJyX6MLLe.pDNTPBrzhVqkONLj3XXZNxqjBLmXTC0emu7ZXWLyljHxv3.N0l7FpGUjHs7J+F00cKrCoJ0K0nWXkss4r04t7l.dFAk2vGa2.eLYGrbX4PFuFGV2v7mQOuvKW5EjWle94e4REHKr.oXgEWbwhym+n4ymu3hKLuC9n7O+EKYXN1lNTAOnh.KHgvhtF2oUk57SY5M3.ZH8HWhrQAiJvNqEardcpqS4XkSnArPkSTUinUUOFUh5PaKOQk8PUGVIyHsRyLW+fTgA.RlofznZH8HTE6.puHoGIdlBsMCrf0vfsIMTzi0v7cn04v.Xh47vMHaE.MZOgYVJe9Ysf+6Y+ZslLaAkyr3rc3BxtrYd1j+4jSL4eMoUmcUqVO6StMAbWWRPO6V5NDzuINCqo2QjfYsNA61jzdfvwOqNcrKmN0VepSMPNaaFUrqOIp8VbWGotR96ts.FQpM3W6u8FXAVZThjAiymDHnR3XtA4DHLPahl.sAIrgf6CABcY+.OGtSSWrHq6jLPKpCPejwFJMTrPpnU5.wAvGKee8wtrP7QnxTgc8diwb8.ifl55.iQQl2GsYsZDaQB.GEs0uOrggW9seb81+CnW4xOB6lnn.eB.IDc33OF0sU69sZOfB8gf8etrDr9WZB1NCbFdxnQuE3GuZ7c+5tLGg2fQXl4RAywzv7oQr3Rq2A3.JlIZiMEjmFsG1yuBXF6fQumXcMpO2EGjlw+eQIrq9ADeb.oJurKt0LgvB6R1CNUyZo+cXYRvZtb6FcSL6qgtp2YNpIDyEbgoDtxyV7wxIfthbsSwxuCQbJOngJ4azugfdsEI.TVgZKxptt7SWm64SiHCAMuRVYtaK+5bF0VJROBB3IxXD2U83MgMwDYlC1oDlTkxsB8OHxtjFTnHnpXpqjXsRyPHUkytrJv5nHFLG4.RPnZOuGJ+bv+.Orc3NPWisE1FzGsJiE0kL11wbNyY2NVHywHsiktDrLcKW0XtDMxfCjmTQIKUybjTY.00pHaANl4zaz1gGH60F6ZbfzxIOOp0TETDAY8PskpfCkasQWmg.xbo5tWPNU2eDHOZZHmxDTEGbLQDFkcmQr0FUEH21QVh7wJFjCswROpxXXyHP8Sx9tGRe5j6DDLcVbYBaPC8g3s0TAMgcIQplXNjyj37CveaB93NPoHpoGIKYijyG0tE3RVhxhTpIYJJgOqCYEWohf3q8sRnKpzfbpVMmVpzRbOTUhmO2nJ4LQUtZw.8wIfFStoSg1GPbMvixwniM5wqrAoFtoqnK4F8G0mub2nN+.h5oQkfcl56RgMYfg94K2ane9xFCtBGf4.A86iV0woJuB8XFDlLvX2vn2XWla7ZG6Si122AndKIijucU6FCnGyjv8kfNnmPtR04o3z5fwHCq12hB3MET1wykYLcSs0whjlbahw9a1q+v.yImhcKB9OHh9LT6B1KRwrzPloLOSL7dVFF8iFRu.WgNUq1Tv8.mU00UxbfLViya3gUI8+jukWz8C99n561D.sKr.YKt6gn0kpbq3dyX4KwY73JHRzU6QDAziOlDbAk80yxBiqEbVzc1ppdJJTAxCIQ5hC8hUUEtjUYk6NXUV88X0cbdeG9MUUXeIwXcAkwgPXGmKn5sKjia7Oa33Rm+QeTyXDmDADf0mSJuaCmd7eDesbYJe9ylrBWbF6anrBC8GVajur+vZ6oIUJggjaxKBsSSO8m7HhKOLlFOpc9XuxJ.ac93aIE0YAYaynNKz9JT5EWa+Redeh97NE5s3SHpWDQcZ+FU6Z7.OqWQ.R8toru1+jc6ZK.HTM.yB84gjBYhNHdzpbFILizNlQwdNihYCHDMYYWZsnLiRpJ1BTEoF23qDKrXZgkwrLKFzNyJURZeia99k2jISOTg.mbmcCsAECti.9xMcCIuk5HpWH8DSDWLs3WiCb.aXlRlLGIqa5nWtBYx9k3SM96HOYzUymD8V7EGx7pVSDiwJT4GOocEwRL9UnHZ6XoEF1Bk64AZUg.a2H8mpXOhKAGlJ17mV4MP9Dbf5FtCmtXvegudZu9NjFtVRxCqOeeonq4DZYzmSEeWL8W+u22E6owuMPb2IORPgO86k00Ci8t+al2u79gjppxiU5CUALpsPIT+8+fpsRWA6r86Ak9kNtM4Ul24cn2cq+bYP1k61wDOAAY4JZoBLrtcJ06lnVqah8vCaGvOzV+QLjg7iqj.mal5hLSfJIaaUv3jNq12CR.ensc1kpqIVbXm37C6DWXXm3hC6DWZXm3yG1I9hO9Dk0GEcgLYrATzX4M0rgl55EUgIF+OghS8tA
-
Alright, I've fixed it - the solution was surprisingly simple as I could simply hook into the callbacks that resync the clock when a note on is received in poly mode.
It should work now correctly.
-
@Christoph-Hart You legend! Thanks very much! Will test here and report back if any problems. But I've got quite a cool LFO thing here now!
-
Just to report back, it worked perfectly. It even now picks up the lastest value properly, whereas I'm pretty sure it didn't before. Very nice!
So here's my take on how to do switchable LFO's:
You primarily rely on the built in modules monophonic/polyphonic flag for reset/retrigger behaviour. Don't bother even building it for your own network.
Do your sync this way:
A branch container, containing two chains. Each one has its own ramp source in it. Make one of them the regular ramp source, the other one the clock_ramp source.
You can even write a simple math expression to adjust the phase.