Global Mod LFO in ScriptNode
-
@Christoph-Hart said in Global Mod LFO in ScriptNode:
@DanH try a
ppq
node connected to the phase of the Oscillator (and the Tempo and Multiplier set to the same source as the tempo sync).like this?
HiseSnippet 2426.3oc6as0aaajEdnrFYKGmrsqK19pdzEHQfj5FE1GZ8EoFgtxQ0x0H6SFSnFYQXJNzjT1Vcw999yp+j5+ftyvKhCoHknnkS2MvL.AZtet7cNyYNy3AVDUrsMwBHT9x4lXfvAvgyMblb5DjlAn2Y.g2.6ircvVU7p5j4lHaa7HffvN+HqBgxEAte+92eBRGYnhCqB.thnoh+GZS0bBqcvO7SZ55cQivWpMkq20+gdpDiSI5jYT5YGnHvDodK5F74HV2J.ABk5LRygXMzA4fso84Dxn4CmPdvvq+WoYq8IcLqfDXHch7pFb5DM8QCB3Ua.Pn3fPNeGON+af80Fosn9PIvW41PkvQvKCDJrJRRZCHIANRpnGI80vgpVZlNgsvnmWA6YPUHiQTQMOo30WfvuAOkP6fgS0onawcsnEVLfiZJJ91Jz+6696imYn5nQLpPLNm3f+fwQe29+q8Ku++d+JwaZ73DaisLVDccrUhMyztVqZfGYLa5mvVusx8H8Y3Ecjx9QkokxlLU0iq45HwnmglyGLw9k6RzGwjUreurF.3K1n+5W5cFxAwTJ90Q6mI1xQiQNBmgumhp8TQkgmgsu0gXRw0Ko+nHGxnY5HmnvIlcieCT4QDcHSQYXq4Lm2tJNFqX5xCQN4wZ31LRteMbfli5jjo2BIPuTo1yM85aw9ZXmwiwpNgDaQX2OtRyyhYCJERJq0TE5QK66apRWeFgbfewJc+nTDB57YS6poSsFoDCTXGJeEX19efglHlVXSjE9Rx.cz7irQSM0wWP4f2V4S5D0aGp8q3ksqL8HpSX83H0IHCCrtcdL+JskboAtfLyQy3l9HGKsGo7Kk4GRctqhO0m5XxfBLKOuxhrxLDzPrwH2B+A8yuQIVYA+FkBZjyn8bryCDqacUP9+lxKdZCShsyXW4N3JprmAiE1EJVk9Ovw55jGNkL0TyGfSUSt0MfnO2bBwPSkUkWOBH8imRlQWUe5+8H6KQZ5LKBgBmSFQENk5hToBw4CPNSXVQLuSTXJ1pp5B3ZD5JDk3ZVPk2CPVzc97vJLYMahC1dzSNQoooLl2cywcXs6w8tT.jsD6AsM00bn99RibbaO1pm0Up.2Jsq2J84Xg7jfqQ.muEBxsPPn4TTzk40tKC03oJqoMaIBcgdIx5FrCa4nnJJZR0C14xj8FwVX66GCVn9YU8JXWK7cyvFpyc2nZ4AsGaPWiuaSGWYHRWmwGqXfbHQJMunD0eZeMiqXtOXDMyXpO5wEkknk8TXdUc7LGxTpOk.e7a57rOr+LcGMS84YbpJAemTJyEDd7nQfHKIfaSd.v2Jl02WCsIict9StZ6n3gukGey0onHC9c1xiQrGdHFPzysgcUVSaFPj4ISG+XPHNA6Gs3m.195ivO5MacnaRLhR9tcmMAQQCk3D8PdQubT0XYZEzOZcCuE+fGuvB5Vrprb61h0azTVtVckVJM7CxMD9sBkM2JdHcppI59II0VVrsbatk+PX6pJsYeMkTZTSTtUskIjl0aI0RQpUMwlMjTZ5RH6.+4Lh11kh1ThvykftUvllRtQ8EGvkHijrAPbhslnjHica2Vod6VhR9RsgSIDmIzMcCVp+Fa1Da680pUy5JxMTjy9ZWms1NXSVLG7FPkXAKhyntIEVJgosLriAhFcAmsozR1l7.vHsHTvuzbFFlNc+kPAh6gM8mzhTv3hQFz2Cf8ruhMSpH8fNR2cmyQva3cDH8mgmfEN4ir1eEuy.VqOe9Cjdwev1zevSx74+M8HDoeew5O.tj+.473OHOw+FFvVrHfCbBDz7ykWfhTf8KtA9hOrfLESdbidwOaF8bVDkf2rzABeE09yBW8lM9nfER8vNkB4k8nJUw3riXD1goMjD8Qd0aSQeMkhntND1nZcYY4VhsZUWotTMw1IfIND9tZUcUTJMZzzsqQDvkRW.uGTx2zJ6D0lfg7MlAe9EQG.u.aic7l1UbHt+r1XXWW.o7WXHRN+cT18EL3SECJjSbkzK3pWvUoiq.QNunaxPkddRVJeTo6CmRFkPhY+Ft0ZQOx2xsG2Qw2C93XzHpZI1AgCROqeq4+z2qY2hymMkSA3ql1AJuzlEwCP5h9CAfgOvtSsvz.WfuB+qczOSs1QKxk31.mAQRaquIEH+SnbxSXDeEBaqT.yoQO.5fmZRt1dtgZRPHlVkqG4WylTd3SVfv7rZbOUYR4yHBk.1IpToX1h6k5ZoVJA9tK7RFGl4zBHE+bEMSYhOHH04Zra.KZP0OWAqmo4Mq9w8Nt8uXvz83Q7gnsK6DjqJ887ZwH3pCWfqB6vVxggvJ8BTF12VlcPV.H6fwCfDaUMc2qmOqWUyV1NM3VwLuK0aEy7tsvshsoBfcgClfriaNV3+SLGWZ1SYu7H7+R6mSi.jq4mTpeNSy1TGM+jYiG6CihTCsLehfxTde1l2qPrnBk3l1cgMxSPgaoTMsQ..1jW4BFveK6OlsgsCN8IMi9A7rndpWYa77aIsJG0kg1Z2HSCRLJ59MPJELoZPa41CcgsiqwrcmwkflXzsIdPM2FxMWTbSBeQawyyJ4vW1dF9o50hmHRY22vN7bs0g2K4HhLf6wDjqsMV6dlQOqmbUEYk5rC60rVs1sjk2LC8v28omfZEqEygledcazpohjRslJOqojPUGihsgzAdlrds7DxIwygQ5Sl4SG1Gg1eEu90ykP2K57yfsykgrH6vsjjaWUoAcqMQ2rITOiG1KAShkOUiOkytriUI8Y2lgeAFwRg3xMZVSrkRMwlsa1b82nRbRNyOKJFksIOGpz6eJOCJ2AviB8rDGz43epxOdbuyAY3hdVbkKuiJ3ZWugXcoFh0ZK1TtlrTFUWIyNKc37EPs9e3rNf0E+UJotxybJqvnkzI9QvsjTCBGdUWv5rhizX1ngnuOqXd4W38YI5ojqVLqDzekgaUn3ZIwZMjnVhMxH0E6QijYxiFB16OdXmmCAVr6sNyjDD1u2GyJAw890yHB2Omcq0mjuMXuyury4C6c4+L6hnriqSM1I9cgSvt6hiubUprTNr4hd2HABbmTNMLWxvhIx7N0JHM+9l28DGPjiutjPXW3v2e7f068IUgP10RomRfENgxwF7mPH2NE49Rxy2eIHeNd26SQpVjq8Cg1M63t0PgKFt+4RUF1mUthD3ddkvTsQZWqpFDBexiQNGioVNFS8bLlF4XLMywXZkiwnrxwv9qHyOtcFJlVwfNdudFgfLnJHrC3+B7Ean8.
If so it doesn't sync with the normal Hise LFOs in my tests so far.
-
@DanH it seems 100% opposite actually, and won't reset when playing the DAW
-
Can anyone give me some advice please. I'd like the LFO I've made in scriptnode to keep in time with the stock Hise LFOs, which seem to follow the DAW playhead / track position. @Christoph-Hart suggested using a PPQ node (as above) but the LFO doesn't reset when beginning the track from 0 bars (for example). I see that people have been using the clock-ramp. Perhaps that might be helpful - I've never used it...
HiseSnippet 2300.3oc2ZstaabbEdVQMThxJtJINooEs.KDBPU.bD3RIKam9CSc0lHlRzhzxs+IFi1cn3.t6Na1cokUCBP+YeL5iheDJPeAB5SPdCROyL6xcVJRQJZZKmHCXn4L29N2OmYUiPtMMJhGhLJ05h.JxXYbyK7i6raGByGUaOjwh3lGZ9zCNBsyEAjnHpCxvnviEyZTZdj7me9Q6PbI91zLRHzIblM8oLOVbF0FU+Vlq6ADGZKlm1p2rZMat+tbWdO.IEvkQAD6tjynGRDKaNLxn39NrXdXyXRLMBYL+NbmKZ1getuZ8mvhXm5RECrPMgCRQ9.tqi.wBpnc6vbcZjxwQH3Pajw+ET7+cv0YNr9zyjCqHmvLaG5xCi4xCuB4fmkN7JqAug.ICMHMuBReLtocHKHNaFAdtEtleLMrMAD65PQsVjwav6xgE3GutGoK8fPXP+Mr1VkKeWS3+9p+Z6d91wLtuI2+PdL8H+09pk9gkJszOtj4fS0t8PmSbMgbWWZ3PmVnoCupMtleOuSog207UD2dz9KDX+7xT7nko5pbaEWqsPteMeV7QAT+QYHfRDUf7uPBpfeKVJ8uchzuoKygFhXfPtH93sasORh2Li3Eqhlf8t.t4S1twk1bBFFylAc9gs1+vl0Z82G7.94Ggdds8HwDgMTB6.rX.MLlIjdF6QeE3PprnJg2iF0MlG.B4c4dAbeAyaTJNwEPcwG3xIwL+yZw.or35+cXcRVnW2+5ey2U8h9C92NUS.f51fswbAKu8XQAtjKPmdVpmdoharwF+hXOrXpWF0eA9IO0JIj+mBxR1z3aw+vRllq1WOVyY0uwbU0UYs5cEyUy2g9Zf5WaIGBQCb4m+BdX2HH9BElnMwMhtzOJD98kBKMN8tFa+BM1177pdbGpPK0hBmFDG0F4QxVM59UihoAMY+ib5MOliiKsAOhI7Kxl4uTMHi0DWdSQT3.RHDSDXwZY.RG8KNVKuL.8SA4g+XuuziHGWsxP4JcLUbhLn0Dqmogq2DNdbohE5CRvKfjLWJ.JD5l6zykDmOdtHIVxDBAudPzriSiklYA4mTH9w3FrX6NCGiyMDLB99uKvXRpwOBue61T63L.NO9f+16g7fIkl7I3Fb2KB5v8Y1J2bIHJkDdw5JpPAgNHj988n91YRq+0+s5yzUu0kNuoi+hpOqGwc.o6Nr.tKI7sUxac0r97Sn4wmi6yTl2H1w4TRKpP5eB+XW9oDWQZ+SHgLhebenKQsYxBLEqvLYIl8Wi03w+yinsHR.JVvqfLbpEKIpxM.ULBof7o1pPpqldm8uFSQFJPPBlMeiLdxLS8M4N2BSTyOnC.8GvIV7lBKsOrw5swO6lGfINA+wD6sLXlZsIg5e9pLGuhnX+mIsOqfItOKiBWUeUVSYeUy+AWeUSpUzmdIUSzMU.0hoATUUMMx.pIEDMVTl3JKJcHsGw+GNqerfPJTSEsEuATi9ZQDu.W5w.+bWS0uG0fFtiK2t6kakKo9L4rqcZOnHgvQ1D4Lu+xw0EIdVEWueOhnCowmKZhPnvR9cPMHzEPAxGJTFmPCijYdV.Wdc3ensEcdHJIlkDeBzRRZYkzHHoVAErGgjWta6w6IpeFaLGbqOgD0hvbE5Oi4NTVrRwCH1.ucQCRbGQFE6znHqa22hNERY1GB9Sr+z3.XCU6mddxp0gbmB4SizBrij2XAwNTbr7pwpRu74uD5eggxAjOUCHoKP277pubiBZ8spbIDi.a44D24x3ZQmHl0l3hNQ0DLHeRgWQM3sLNVzH1KiDchkCg2QhPvrYcsUbcjPFExx0zhDdFMNJow69EcH0QptSfKSVlRHpQ91oT3GoIqEAOSGAbScleBOhEVRn5jWmLtHtxF.gl868BisfwJUtrATT+ctkvBrWL2inJUZNj1cf0uCqAtCqsFwcrLtdO2XVfKCNibaejmcd7qV7vN5R388Ekx4LUm6hXqxkKm6nuCrDAQwOVa9vxVVaYkTyvy8EpdpiLOYxIr.th7.P51gHM6JcE5PL7ElUYK35YUckl9EwxdTRfYIb8nJh5xPnI2VbYLOxFpMPl8nQ9dnyZQJuAoglfe9woPU1eJRZlbxBEzDgXbPv2mW38Q8Edhol13EyDYwB3FcHQC5XNmlbXgL4PVoXYxhrW7o4PdajlcomqXccpCwyM6nGo26P.BzJ6k.R4qIPFl6c1JxilbQb0DoWJ4THccsoudNFhLitzWm9BmIuk3NxhMhtDEXr7s+DOQwWaMfdr3jEfEi2bDAnx6Gp12HUPCbCVZ2vBhPUiORktVRrfJUd3CKu481pRkM17A2+A2K4yAj49Nne2LHXur+uiEtUy3f8Eg1fiouEGpxsQ4uNYZjIJFVQY64ChqQjPnDNhcVEOtSda9aig6uy5oycsL3ma1DBN2BGI9KhCnjt4A+sTNrxItVHe9YmqJZbQ1GX0iJZcQESJer7Yef6A15JU0y2Dk7MkFV5GsZOGH8iJK.Zn6Sk57saC4BuiFTRk9L+SlnZkoWTgtjn55loNITLZZZYXGNuqGQ1G2T8sylIOiegeS+L9ni48Deuv5j3PF3hiOrmWSHvgcZKtQoc2lLtbZHklTeG4.w2BLYRKwXijIsRmTmE+LEKdK7KHuhJ+CYPxfelbbadnm4ioPWoW9glem+PaGYGCPnUHwOJfGQszO4Alqh9b6Qi64me4JR4Vkf8N.XOK8OGcJwJ5DaP7ycXv3bmTcl1m16mdjpSrlTfabNJyGTyktQO2H5KXNwcrz2XF4J5jeBIzQ9gQ0M1em7FjE+U6aPdC9kIG1mcaEbSlHg99PGstPPQIF+DHJXaBjCIkZd2o5bed5qZkonOlBQAN6LZ9tMFFCscbLwtaFk6T8XpKUThWeReY0mx7ojv7e1tqkrv5Z+mhyP0WeAVAW0Wz5WueQ4eimJZh89fPfeXqE+8XHTbESopz7lQW99Hu96i6viXGxeYxCOIb5WTRA3ae4e5gkv0EiMsR+6sR0Ik3IseoscZOKCeOUlh8rwTrmMmh8buoXOaME649SwddvUtGQl5jV6E17.gF6q9n+FoOaLX9i9+zIhOgF
-
@DanH You need this for the Clockramp to sync to playhead, works great.
// Create a transport handler const var transportHandler = Engine.createTransportHandler(); transportHandler.setEnableGrid(true, 8); transportHandler.setSyncMode(transportHandler.PreferExternal); transportHandler.startInternalClock(0); // The grid callback needs to be enabled for the LFO // to sync itself to the clock. // The clock will now prefer the external clock source. This // means that as long as the external clock isn't running // (the DAW playback is stopped) it will use the internal clock // and as soon as the DAW playback is started it will resync // itself to match the DAW position // Start the internal clock. This will cause the LFO to run // even if the DAW playback is stopped. (if you omit this line // the LFO will not move unless the DAW playback is started).
-
@lalalandsynth amazing thanks, where does the clock ramp sit in the chain normally?
-
Here the clock ramp is controlling a table.
Tempo sync is used for retriggering a tempo synced table.
Input toggle is used for switching between, clocksync and temposynced or free running, retriggerable table. -
@lalalandsynth Thank you this is super helpful! Forgive me if I'm being stupid but I'm confused as to where I should send the clock ramp's modulation (it's target). In my example I mean
-
@DanH You mean to sync an LFO, good question ! :)
I just used a Global MOD LFO with a global mod Node into scriptnode as I could not figure out how to sync an lfo/Osc.Maybe the clockramp cannot be used for the LFO, in which case I wonder how the osc can be clocksynced ?
-
@DanH Here is how I ended up doing a clocksynced lfo controlling a filter in scriptnode.
-
@lalalandsynth are you on OSX?
-
@DanH no
-
@lalalandsynth have you tested the global modulator in scriptnode on an exported plugin yet? Because it doesn’t seem to keep the right time on windows. Which is why I’m trying to make an lfo in scriptnode
-
You can just waveshape the clock ramp into any LFO waveform you want, no?
-
@Christoph-Hart how do I do that? And is there zero chance of this global mod bug being fixed?
-
@DanH good point, no i havent.
-
Took a look at this and I could in fact reproduce the issue with our most beloved DAW (who shall not be named).
Turns out that if you throw random buffer sizes at it, the global modulator containers still got the full buffer size for each call which explains why it's calculating the LFO faster than it should be.
It should be fixed now.
Now for the other question: in order to transform the ramp to any shape, just use the
expr
node with a formula for each shaper.HiseSnippet 1968.3oc4Y0saaajEdnrF4XU21Tz.r2r.kW5rIUfT1VwtEXsisi2UXicDpbC5cFiHGYQHRNrjCis1hdeeA5E8hhceM5c8EnuK8MX2yLCk3PIJEI07yEUAHVyumu4b9NeyOpSLygljvhQFac0nHJxXab2Qg7AmNf3EhZeFx3ivWPR3zXSUUmLJhjjPcQFFa7ODUXrUUj7yuezIDeRnCMuJD5kLOG5y8B7340143+kmu+4DW5UdAZ8duia6vBOk4yRA7rA1BEQbFRtgdIQzsJXjQsm45wYwc4DNMA5yIL2QcGvtMT0+W5k30ymJJXi5BSjpZzoC77c6LdslfPFU6jux2Psxe.9BOWuI0m6AturAy7Qn6CLprHHYuBPxPCRUUP5Svcch8h34sHvyGfaGBAj9DvUqCEUeQF+J9TFzgPdi.xP54wPgICXmVVVO1D9uG9k8SCc3drPSV3kLN8Eg67v5eW8sp+80Mmto98KsMgYhY99z3RaVDciWz.2ILMnGM9wluh3mRmzQX4WzmVa47oNpUsVGYgsC83uHhlU9bluqvWI99rQ.TlaC91W29LBmHBJY0A8KhFy8Dvw3L5q.VsJDsE9LZxPNKB30yD+.lCyM0mvKRmD4MYM.9iBwPQfJLwiOROuZE3XVKjisrP7Svc73NCJGiUJAifm5sAFyxL+P7y52m5vyAXU74ey5lFZsxog0yRCAaJL91YEMO+arKMA7Gv4j8nXZDIldEqiOYzNIjfHe5WAX7wl87YNC658uoylgDofvIhdriy.RXH0OYcRjp8FRbB8UrTtW3MWP3wd2gLvWlFzEjocnmlgNnNiJhbHUYKQYAunKMzUV3+AexZzVT1HqQ6wMpk9cIkeKKdnLbj8cXsn78IRm708uyF8Tee1smxBh7xXopEEMNQVXSrUC3ept0g4OJZ.KzyQDoTCZL3eZ.KEra1J3eRRth34KX5FUtj4BtmZmSb.23nND9.Q1gPoAnhz3FNSnjEPVNqPx2.OdGRLrKFnBmnPoXhGuUmxSAXJPr7kazsgncw5OCAXkvOX3WAxPzXTAD8oRDADgF4cnHDdclSSeSkBHJAI3UD1slPifhdofbIT7NOl9sMu.5Yt.wUj3an7jLEyPpiJdHQeaWwT.K+HzDufntswcnwdLW4o.PZNHABFWBF5EdgYltFtoHfdA4tIXooE7ApqKmFIRlfkGD1A17P5sJejXmcqFMad3gV6s+9GrWqCZs6AMkwrMwp44oobV.jhLdqAMedcb.yUEkK3xefFIXROVMedYg3L+TASIB6wzFxFVIKTUPy8o2Mdury7Rh.UnSRA0TkatPMP41gtz6Dxqet8TQjMzhH37Hhv0Zao9Xu2gV11sr0hO2CaOc3ozQnRfznCSGQzrd0bqKB05zAL1FJqRUdNiEA5dwbTgNuxyTMX6ZNEUndjd5RYYAYLHoj0CvIr97dx.20I2J1XcezqQPoLEi0ibgKvkUleZ4i6OQ93t9voxWj1w138ZdvAM2uks0tKRBoxTRHerXGCsUTl6bC7dSblkq1bObWIlgMKj+MWnopdEEEdluNzGfS7BuNY.A1WufXTc7jEMZcl36igcFIg23SeaL6.rI291Xh+Hbx2lBmO40M2yUcFuL4Pi0YKzQsTbXeWMZJfodWOIi30kpLW1YQR7Jrc2131IuTzpCwOmnZoRpkLuB6ImSnJfz+hFREB.WqT.VO7N1xFZVdSL8tn3lSuWA3RGzPzxpIXTYgou0fqTlmSZguPXDXguiWXTJ27uYJqnSa3aMaX0+gvesZreeyGI+yLo3aBWZpW5MEbtykgUcsXXyHSWhjT2.FiO.NVqbKmrgVENRwL.tLJAPZ0wrNCdFwf2sLiZRlw6AhwmoHFjdIJhwCy3CletIDO9yGOPW19cKE3dX2zffQSoNTWQBBR8mwRGt2gsdRyC2edVZCbcgq6sbv48VjZp8Aeenja+dHg8uhUB3+ckb8QxzTyu.J8mkr04QHfyJKsyzG.4iUWFaRi5u+ypDXJ54pn441L2yk+7ZZW4UU2w+miyuSkrt+6O8S+xQ5W6UVq4u8y+1QKvwI5DeX+V7iKddrxu.9B.D52OZJ.I+LCfj8TkxcFsOI0mWfCjORTgczhnjgkdsXYCq10hW9msXabTZOeOmqgq3W7vwiotn2b2wtnRn1pu.Jl5UHhUOLWCsdLG4meDe0.uDyPXdMAlK07VOeeSmXJDyMIlASbJltwjatgFad6.Zn4HVpIHBwh4PmjClyLO8QOxLgIaygDZll.0JlbRh4.RrqCzMWyme9K.avG.iKRtxzsA.aP3oQIwp2T6xLySHL2ruk99L6N0CMM1jStj5T1b4tCl10xKmhsx2VYFQt+fSPwW+QkPJeZ7U0YMoQ3TgKo2ozmOofeJ+IBzoJpyeIdpxTZnynE.0ZXaqbr8o.PaY0Z2lMasq8A6t+g69jk9R54u95bBjZhpJ7MQSF8lW0eF84klNNdysBqho2.YsXUmvXCCHxm1e89Q1dW7CQDPbhYWm8lXhE28j0.oAgxeI5sfq4.kMsQuRmQE345csiyXo8xGSy0XL6tFiYu0XL6uFio0ZLlmrFi4fENFwOPel1qfLCUz4YRxkgwyBI87UmOC8+AI5p9E
BTW, If you compile this network, it will create a modulation output so you can reuse it on a higher level.
-
@Christoph-Hart Oh NICE ! Look at that switcher !
Can I somehow add that to a project without using the softbypass template?
Or is the softbypass module needed to use this for routing ?What if I want to use this switcher to route stuff that is not in that container ?
-
@lalalandsynth If you want to use the switcher for bypassing something, you need to add a soft_bypass container and connect it to its power button.
But you could also connect it to any
math.mul
node in order to silence all signals except for one.And they don't have to be in this container.
-
@Christoph-Hart I see for a moment I thought it was a multiplex style router.
-
@Christoph-Hart amazing! testing new build now