modulators, global & macro
-
@ulrik The fact is that FX plugins don't export sub-containers afaik.
But does the modulator work in the exported plugin? I think it shouldn't anyway because it's not accessible from the main container's FXs -
@ustk oh, ok, no they don't work in a compiled fx plugin, so my work around is to add a simple gain and add a modulator to the delay chain (set the delay to zero) and read the modulator.getCurrentLevel() inside the Synth.timer to modulate other parameters.
That is not the best way though.I think the best, in my case, is to be able to use Macro Modulators and have hidden knobs connected to the macros and set all other parameters inside the hidden knobs cb, but it's not possible I'm afraid
-
@ulrik https://docs.hise.audio/working-with-hise/settings/project.html#enable-sound-generators-fx
That will give you the macros in an effect plugin.
-
@christoph-hart beautiful, thanks as always!
-
@ulrik what are the macros used for ?
-
-
@lalalandsynth I use them to control fx parameters that not has a modulation chain, or to control any parameter you like
Here the chorus rate
-
@christoph-hart yes it works but... it's very high cpu usage, I use 4 Macro LFO Modulators and when compiled the cpu peaks if using all 4 Mods controlling 8 parameters...
Actually my old system using 4 modulators inside 4 SimpleGains and read them using Synth.timer, is much more efficient and less cpu consuming.
I guess I must be doing something wrong with the macrosystem, or is it very demanding on the system?
-
@ulrik Can you make an example snippet that reproduces the high CPU usage? I never optimized it but that CPU level sounds super unreasonable so there is probably something fishy.
-
@christoph-hart the plugin I tried it on is much more complex than this example, and deals with a lot of data and calculations.
But I think you can see that using macro modulators are more cpu demanding than the comparing example I'll provide as well.
And when using the macro the cpu suddenly jumps up 10% more and then go back to normal again.The second example is exactly the same setup but I use 1 callback only and that is the Synth.timer at the speed of 1/200
Macro example:
HiseSnippet 2458.3oc6a07ababEmqjXRjrbPRSZCPOQHz.PUKugereIXjn0Ve3pDIsaz5Z0.AWaJxY2cp4RRSNqk2TD.2a8VOTzC9PQCP9GnW6gh5doWSuTzhdREAH4TAxgdtougj6xgRj6RsVRYSiWAHINy7l26868dy7l4wstqsNxyy1kK2r2pmChK277M5YQZuZaMrE2lqwk66xSPdDgNZ5t1BDaA81tXOtazyQyyCYvkK2z2jNzbyNCm+mubkanYpYoihZhi611XczV3NXRTq0q9dXSyMzLP2B2gYzEptots0p1l1cAwZZdINGM86q0BsiFcXSwyk6EV2.SrcaPz.YiK2L2v1nWi11GZEL9ai8vGXhnOHy0.lnfl2v1zfJwzV4VsM1znde02iiKGe8HvX5.v3042FafGzdDn7J9cHDQAKdjap3h2zwDOYVwShQ7RPjxwHRyDHRuJeCcWrCIpGp7bI9MsHH2lZ.ryJJAikaJoKwupMLBKR9NZ2GsgK7v.JDKIIsj.7qEu1by8Vu0r1VBc5QM3swVHAcmtBGBFJAGjkgvAHxgHjkfpvUEJI7lzgqAM6Y2AQ.qnmvOqaGGOgtNTWEYIXTxzgMGXQAmnGp4Jz.2wwDsK5gH2CjEdaAe2s7sPj0a1DoSDWHX.BgiXAPnXHViz0UCv1jobPuoP06YcfGP398wBf1Us63XaAOHt.0OGnbo4DR+S5TpL1TpN1TVXgEuy0XA2.PazpYwgwxzIqz3QV4wirJAZGi54nYgLopFCQW2zb.cdhKT2xjZ7mCaYR8da10RmfAOZaK.Ujoz4ZaJp2mhkf40rKZw494yMavruuzcx6gH2l1rXPmWisOWjCrJ.Qj1ZLGqXDpTP3GJLf5HyRxy9IlG81ZVsPFhmjXld9HPMSF8np5BKRYTnBuplo4AvpnhwfgTwIkrfSxCAmjGFNkHgLZo7ngH4TgH4rCQJCAhTFEDolEHRYHPjxvfHkQ.QJiFhTREhTxNDoNDHRcTPTgr.QpCAhTGFDwR3UgvsqHjZLm5nQK0TQK0riVEFBZUfAsBVPq9tvBYh8gLwV9nRq7Mg8Zg0zDWP5Qppa3+gtf1rz97mbZdQhA+wK+gswDe0Ifvcs6ZA43rKrcHHxlHw8gc1Krj.oM1iJu6gMHsEWDvo9sDfJKFMjeDB2pM.3vV2UtyRBJTklJzMscEDcDvVgqBGXDohTcpEB3LAbADquKk.+7HBQXP4Rv+HF7OTGESacMH6CMWH8OHiE+c1TVR.TL4kDTgcHBGA13QzjBXm27X.MdTslQSb.RFkn.U9uNg3hOnKAIFwj8gY6NKMva5iB0eOp9GiEKN2rdIazSRCCyvx028JATIxu6TCIA3A.LENNjDMoohGr4jcJgDWJjDwB.ObSFONgtASBipuiMAUyRzW+fIW33c0rYh8ENWlH2D6ldzB2gQnnU2NGfbYQW5.g7simDOe5IwydFC8f0FXFns0lVXRMH64zN4AW3BJPB+yGJUvPI9o6+xgo62vDafb4vPV8u.OcKbNe4M7TSG8al5yWgKqzpDi1Ge4FGkcZUiQqvWo7myNsEhy2u32+ayDsun+APiqvs+xegT0rS7XpwADOlpb.ww04e8+b6xOM6DWb7LxADW5YQmK+rnyURvN+i2bMMhF8HsgN6P.fCxkfowV4VC8PrNJ3.tyxuFx69DaG3T1C1dE7fFU7viXuugdrObHcSunF9oUa6uEWTKaRckxJmTX3T06U8bjSprbx47jSEX3z8dzYAmtb+qoflqPHifilEyL8CXYzNUOFi9fSvn24TvHVqzi0NGYDqQ5HmyQFwZi358LwnKMx0ZSIX5w6WMCtCcrMBii0wG.pPGMloqRUOBxoA9C6u9vG+jm7GVwqaylXXT77BF2fqC1vvDU21CS2qNhVwXZwribQ+TBTOMZw2ieGa2NZlf7ZTG4pCbVqEhqu7NM+alpz5udalk1TC1+ZQZmejaqkxBFioGB6EHW4owbX33FeGFkmdZLAESysuJZBzgoTZt2SjRa4zbumHk1Jo4dewIsm7l+eE9ssM5ZROQIagHnUeIrC5bvd6+za32Bl6drUm43UmXlrUchgW7jrJtuJecLQucxx6TIHuPFim2xaXsdtLePYDhD1Y323mLzB6bpEkDKxyT0OQQ3.GSlSjGZniWWjXB1t11cXVg7n68m9cqrlVGGrUqvlp1bu+3J6gHaATaN.d+We1Jq41Kdauy+Xk8XbwO5IR+sU1vEg9Pz1AqZOXM3bSm45bIOz5bwEb4Qs1Vi35un9Nc6zvtKDx.FCK5kMAskaJ5IkCdVh9LUXafrL7e3qfOgcJSeNWXmx86j0h+hAn7k3GbEM9P77QOGGditHK1SSAn406X20hvBm0cQrkC8W9oewJP3Mgosp+kKK8zyLnKoRDlXj2avGoEBe8udwErE+kBPl2feaZYriT+.d5CPe+f9XvFgfdkGRwt+qYsX2NYtX2G20Xlr4ZLhhaO+DWwsu31g6bWDG5tZSmoc0NSjwwemrycHZ1vnK4KPyWr0Fe4.gimeqMpE5WA+mv.QMCBFrK3C5hrz6wlnFMjdynUDp9qptm1CQMgL+BuNqAjuEpEvH1VtEBxHsQOKcVOiFcrsIsg0FiuPwqWcKaam0sz.U2fcRp2Vyid63dHB6zrZWOhcm9xh+qMSC3bT92BWt84KUH+gR31Ku1d0d2x81B9o1181pwUZ9fatdEr4GXdXsRueqGrL84hqRLtkUsCpXk+J0a8faVogZw2Wp1p.oWIO7wm9GTq16df9x4OMd1iXqsoxnu0q4aIGXxn1zI7zfCj3A9SeCPh6G+pLoF+pb5ieO5Sb92eCN9E9zzO9a4UgeoV6r44mG+9+0wupSpwupiw9u+8O4+7732mG+9so32BSpwuEN8wuerya+eed76yie+1T7awIvqunurUZBV1JOAKaUtHksKhKN8hfG9eehtqdv6TDc0pWxuEPus7+Z9DcgQguLQuFekx4UKpTrRgJpUpTpr7xz5mguqtN8BttJL04z6+x.Zb2Au2hvTQKrG62PFl9B95EE93cCXc3KTjeQo44kxKE7FLvyKC+qo8g8asMtU69MisdHxkzuJOtHMCaKydgqZjrloDoYvtIkqTtXwkKJsrR4xpENSzL4j0LkycMavaL22gWtbdoRfAqTQIEoxEUNSTLkjUL0ycEqPjISMeoJJpUJHIWPVY4RpmMNipIqYEN20rAupgg7HltjBMkFCZJOFzTYnzPqUw06B4pEby6PC0WOHKsbCx1K2zb+O.OmES.A
Synth Timer example:
HiseSnippet 2396.3oc6a07aaibEmx1L6JGuKxtavtG5kAtcAnabTD+Pxx0aqUhc7Vi3ODrRi6BCu6RSNRZPnHUIGEakh.jK8bOu2ZQO0qE8RukiEn+AzdL.6kBr.K1K8712PRQNzVThVwN1GDOXaNy7l2686807AcMWGCrmmiqPt7OtWGrPt4Dq2yl1ZsV5DagMWWH2OQjh8nHWbytV5tHqFNHpCxnkKwS3A85n64gMExka5OmQPt7yH3+7Cq9.cKcaCbbSBBOwgXf2hzlPiasV0GQrr1P2D+XRatQqUcSCG60brb5BB2zhEE5na7T8l3czYCaJQgb23glDpiacpNHgB4l4ANl8p2x4X6fw+DhG4HKL6EYg5vDEz7FNVlLIl0pvZsHVl05CBdBvrTKFRlN.Rts31DSRT6wPys76.ESAOdjapjh2zIDOYdwqHm3M.QJGmHMSfH8Ah0MbIcnw8vjmaJtoME61PGfcdQIXrBSswbhq4.ivlVns9Swa3BuDQgT4hEWDA+XgUlc16cu7N1n18Ps0MZQrwHiNcQGCFJzQXjGEqa1C9K5wXrMRFcWjJ5SYzbLg1BQagAuEcShcSjWGL1D4z.46TUvip6RY1YWI46o.rZV3ALyf+0y.eq5j1crv6geF18HYzuLjnlX5Caz.aPklOX.nvQLOHowD+T6i7.Z5qf.U22xZMm1cbrg28jl+Q1Gwnfme5ztt5fMZvLKp2jLJp8GEvwC3XYD+jlmE0.Tt3rnzeRmRkwlR0wlRs4W3vD3S.NOZ0rzvXY5jUd7HaowirJAZGm50Q2FaMbelZ1VIM9scLgzffw2i2kAnZ6nNjleqM1EE8tuOGw1hEE0nqsAk.QVN1.pJy3qqikjQeNtHvCqt3El82Oa9.o6fhGVvCSeBqYofNWguOWbGHaDUh0ZBGyDDpng94nHpiMqCd1Oy7XzR2tI1T5rDy0yK.0bvnOSUmeAFiBU30zsrNBxlKk.FREmTxBNIODbRdX3z.IjSKkGMDImJDImcHRYHPjxnfH0r.QJCAhTFFDoLBHRYzPjRpPjR1gH0g.QpiBhzxBDoNDHRcXPDOg2EB2tCJ0XN0QiVpohVpYGszFBZowgVAI2psGjPSpOjI0zGUZVnATyGxtIMewSTU2v+gkPKOqO+Ims9Lofe4U33VDpu5DP3dNcsg0ZsGTNEDYKrzAvJLzVDVg.wiIu6SLosjV.vo9sDfJKDOjeMlzrE.3vZLpb3hHElRyD5FNtHoNHhcXV7.iHSjpwrP.mofKfTs8XD3udlPDFTtA3ej.9GpihkigtEvTWXYnvJm7qLprHBTL4EQpPElvQPLOgUgfedKP.z3jcaDOwAHY7BMXx+8oTWxQcoXoXlb.LaGtXj2zKB0eOl9mfEKLaduAazGjFFtROWe2qAfJw9cmaHI.O.fQ6zPR7jlJdvuLvyIj3xfjXV.3g6fwiynaLvHkUotxrbfxNNT7t1R9ZNvVzo6pQiA1WHWrfIcPcGvN+d70CBfTEWAQPeFRC90ctCnIPe4YqAwB5KdcHGPNzO1uqqKffaApkkeRi7rEDy5LJYiUhl4Sv7hAKrR1caeD1k2VyFHrKjjasQL8s1vuyKifLUbCzwdSaBc2NX6z1OlPX5MXaPyEJUvPo9aB58C2DTcKhI1Uf.604FhrETH3Kug6kr5J+zucUgrRqRBZe4u3u8WxNspInE87u86yNsZIn8U+3e8+lIZeG+MmmTge8+4uuX0rS7XpwADOlpb.wI04Je12q7prSbowyHGPb42Dcdo2DctRRNSx+uVU32r455Tc1F8Cc1g.fNXWJgEakac7yHF3fs8mWbcr2SoNcDxcqnh8fGznhGNg+TX5w+xwrRvwM7kUa4WvMtkMYtRYkSJbbp5WW8RjSp7bpykImz33zWexEAmdu9GdCakKgLB1nYByzOimQ6T8TL5KNCi9UmCFwakdo9kHi3MRutykHi3sQB8diXzMGYt1TBld4AUyf6.T2NLN1fbDnBs04ltJU8n3N0IOue9g+z27M+iU851nAAFknHx7ABsIllV3ZNdDVs5XZkRnE4GYR+TBTOOZwGKtiiaacKPdMqgcM.Nq2DKzWdmV7SSUZe8pmGoM0f8qDoctQVVKkDFioGB+wpW4UIbXDDFeGF+hsY1DTJM29p3qgNLkSy89ZoztTZt2WKk1Jo4d+1SZO68gbKwnyak+5YX2IUXGr4f+NQX26gML283uypSemMyjs6rY3WoTVE2OPrFgZzZvx6TCPdgULdYKug2.16IFboHwB6Lha7aG50cctEkAd0W2n1YtfRvwj67ABMzIuXnDB1dNNs4xP5uSg00a2gX2je8+6iC16L+x5W2sGeaBe4+7Ou59bt39aSaCWL943sCxZGkCN2zY91+jG5s+IDbTVM2Vm55mTemtsq6zEBY.igM6nuf1xMEamxAuWj8NSZqisM8e4GgmvNkYumKrS49cxawem.T9lhQGXjODOW76Ig23iU6Tn48a6z0lxCm0bwbWRr+1TgvaJeaBS8wu5BC5FzEmNvHuOQLVKPuI4KF6638ssU9citre+.mOuORzO3BwZQdH2uufv5XK8DIi1+zKzd.eA.aZCAnzZNV5tmNU1ElUelLmukoRWQ16LJiennOLe0HjIhed+.oTTbqM1MLoahq4TdzBFjo720EaaziuXN6K+XyXGqp+wp6q+LbCX0AgG4QD4agaBLhukGigUsTumsAuiT81NNzVPrTxumjaWcKGmNOzVGTcS9IoVKcO1o15go7SyZc8nNs6KK9evI0g0Z6eRM4NPrrVA3owcX+b40fent6Ey6BmCy2HBDlJiNYejukLxjwroWCCEBjxHenqoR4GJ5mF75cVkaIVSeRgt3BcJSJzMoPWVKzoLVE59gIE5lTnaRgtIE5tRKzoNoP2jBcYsPm54uPW0Y+2e2jBcSJzMoP2jBcWoE5zlTnaRgtrVnS67WnC8G9t+2jBcSJzMoP2jBcWnE5davi15FtNekQvmrJKZ6c8aAzaa++2ZyKtM6cTzmU7GIpUnXI4RJUzJoVQo7xE0XedFjuxvf8k.bWYAgAOCQeaw2VrXAUMEshxkVVcYE0RkqrT1lB0XgX4xE.5UTJVVSoXkkqjQgPKdFjkKUXIkkKsTYY4hUTWtR1lgnu0XQPMJlMZJOFzrzXPSkgRC6+O462EpFDDr.MT6gA0AxEUOI2zB+ebPN1dK
-
@ulrik hmm, both use about 3% on my MacBook Air M1.
-
@ulrik On my MacPro the synth timer example hovers around 1% and the macro example around 2%! Great stuff. I used timers in my instrument as well to make any parameter modulate, but the macros are are great too for that maybe...
-
@christoph-hart hmm, ok there were not much difference in those examples.
Now I have two examples again, and this is heavy operations going on.Both examples execute exactly the same tasks.
- example 1 (4 modulators in 4 SimpleGains, level read in synth.timer)
- example 2 (4 Macro modulators, 4 cb controlling the same parameters as above)
!
Watch the cpu
-
@christoph-hart you use M1, I use Intel, is that the problem you think?
-
@christoph-hart I guess I'm doing something stupid in the Macro version 🤪
I can send you the macro version if you want to see it?
-
@ulrik You are running the timers in the deferred callback, so it's no wonder why they don't appear in the CPU meter (this is just measuring the audio callback).
The macros will always run in the audio thread (which is what you want, otherwise your modulation system will not work if there is no interface present.
-
@christoph-hart Haha...how the heck could you see that??
You're right, I forgot I had defer true in the timer cb, sorryWell I took it away and now it's running defer = false, in the audio thread right?
The cpu increased a lot I can tell, it's almost as the macro but not really, the macro version is pending between 20-40? and the other version between 15-25 ?
On the other hand it stopped with "Execution timed-out" in the timer cb -
@christoph-hart thank you, I will stick to the Macro system now :)