How can we use C++ Third Party Node inside a custom dll node?
First, do we need to compile only Third party node and then compile custom dll node?
How can we use C++ Third Party Node inside a custom dll node?
First, do we need to compile only Third party node and then compile custom dll node?
Is it possible to compile multiple plugin projects in bulk and then create installers (Inno & Packages) with just a script?
@orange said in Resonance Suppression:
Faust constantly surprises me
Here is a spectral denoiser article: https://inria.hal.science/hal-04507625/document
I havenโt tested the sound tho.
@orange Sorry for the long time follow-up question, did you manage to do this?
@Lindon said in How to include external .dsp files into the faust node?:
@JulesV open the included file - copy its contents into your Faust file....
Thanks. I think I need those t-shirts now :))
Some faust files have definitions for external files such as, import("MyLib.dsp");
or myVar = library("MyLib.dsp");
.
When I copy the .dsp files into the faust folder of the HISE project, it does not recognize the myVar = library("MyLib.dsp");
ones.
What is the solution?
@d-healey said in Panel follows the position of the Eq Drag:
should be fairly simple to solve though I think.
So what do you think about the fix for this?
@virtuscapeaudio said in How/Where do you actually market/sell your plugins?:
@JulesV AND they don't get you the customer's email which is why I stopped working with them.
Therefore, when working with resellers, there must be a proper licensing system. In other words, the customer who buys from them must register on your site.
If the plugin is using simple copy protection (offline serial number method), good luck, it will be difficult to get back the customers you sell to later.
@d-healey It works, thank you!
@d-healey @VirtualVirgin Ok I used that, but since the panel goes outside the canvas, I also limited it with Math.range(clickedX + event.dragX, 50, 734)
. But something is still missing.
HiseSnippet 1628.3ocuXjraaaDkz1LHRIoIAnnmI3gBpDGUJ4E4zhhHuHkpVaG0HkE.C2fwbFRM0TyHSNz1BAFnmK5gBzK8Zuldn+B8mnGKZ9CZ+CbeCIEEorrSpaarMrm4sMu82StsO2lDDv8UTK1c3.hh5005LjI5sdODkozZCE0qp03ftj.gxZCGfBBHXEU0YenDqZg4Th95udvZHODylLFjhxS4Taxlz9TwXnsq+ETOulHLoKseFpWrdKaNactGODzjY0rTFfr2G4R1FIIaFMkOCEzSQ8NZKicPKiqsjUExBqfqUsRskt+h0V1xxAuRkZ6UauEPXzx0rTTuRCLUv86HPBRfh5bqwwC6zieDK9AdJMftmGQdohRG3kiA2j6gklnDpx58nd31ibQAJfTZO1gMarC6801hhoovG63tUDB8wbj0ApNSd0a1bpWkrpmUF0aJpjZFUZtXU51Zcr8oCDiwH0mqo0hIH9NHHNkUUhoUYlGdEs04.ELQ49n8IM8gKobXdeKq40WzxpzmTrHChJAPDhn23KeFRX2i3W7kEKBgv.g9gHe8FGn+o5Q4QkcIhFNNDagoQiCL.tKjgtVLGdaDi3AjO5sAFVm2e.mAWLMRoPxZ5kxXj.U1E7z.iVmAgiO4fXDE8It51dT68I3mm.ZLwADQaPFhGyCETFwzIjYKnbloaIvdJH0PDvjnGMPpVaxsQdqwCY3.SoenfqTBwYsliHxzfJH8iAZTJlJGHo+wR9H3GCdBDy0iXhlW+BDhfbrHuPv9niV0i5xH3t.RSCYM3Gqane2XEL0kLu9Nncr1EfWABYncpHOVSdp5txeuvtveLD7AaRbDFmivaBtvPByd3jufz2N0Wn5E8DmHSaJlMEASCF3gFlj9.d4FLWHFT11m.UDq4yQXaT.j8Y9xh55FTrAnI4YxXdIFjua.faGC6QYMFvaSNTdX2HJDnXJ1MQMxKkxHg.Y2qKOMqaKdX.ogT.Al6XzziifrC2tTORECocspmm95HOu8fdTAxGSZgmQpX7lTP+YfEXIUn9CDCAhSywRU240iT1RPFm7apitYDfxI4skJV.PUHSVbL5igH2I.hDtRXBhjtIb.+jKW2z3XPA1BAUk9PNHwLUj2UeLyOed8k.Et1BKFk3UXZxQZHUWxR+d5llMNPlwtpP3S2KTPLCHdPNNAuFhg0uCzJnr7zibb.NKo+Q5UWrD.dEqXomS1YqpSRGv7PnMXWdGP7L2+YOFniQuwz6N7u+A.2FbWVoj9T4cUP6bYWMetmovOjLgx3SFHa9XVJNNR7BHmK6NH.6n5nShJkFkHoyYayEjGwLiZZAX0mDkiyTwkHbOHCcZnkin8uHFMYg82i3OOTO6AV2HBgwP4msoc9y1xN50Nd.PFB4rVLp3QCHryafrRxTC3zSZsADckCDSfAzMf3KnRUPcCxgv5HwiGKnsAIXen6DrYQZQOr.jHB6MFM7TFDTnX4FPQmqnbb18aFl8x3d9.zqLB5dtigc5omNAkUyR5398YI9HJVzK8cz+t58HT2dYVnZXco4lZBWWjrRRrIjs0UjkbSsbcyxYP0yXPWsdhOL1g8AZa.MFbQPPqI0C5IG6axZdS2Q.1w2LcidAI3n.lZCsnN7og0VQs5gkEhZd2BlZdL.vJ5FrdlG+nmw82OZ+C.dTkQwSlvU85ucRWU8v5CP9fIkwckFXUx.7ZmWZfb+ojZyrNtVwNte9Uu58p8Sec8yjI7iu8YBASMS3zylInPOSlv10ObTYk5rJmcmPXaTNNzCIxuhpbIhDDPsct8Bk69wBnhgYWz++r8VeaUwaq0lBSTmtNNyTzQnCv+G5Xx192PKda1wJ3bZMe96fU6u4ndWqG5eHowAIuMbH6aucX+3JTYaW0Y.SPNtxJw6n+U26CqKATIAvu94+xSh.TMAvqOL7OefDvB4+zcL7hiAbqHVVZjL9ieyHBvxI.p+8+9ODAn1jxXkIAb+rBsYytMXxdLwdwYeq8hUt3fX718tvdO9TntUC7QcfpKaBDCYPwbpqJ4tk7tTk5PhbcZpxhvDjUj2USPVYDx2IuQejsO+E1wydkoGWMBBX2rnOkbAssj20qnDMONaEQe3Ch9Ba67h5LLV8xx3BWVFW7xx3RWVFW9xxXsKKiq7lYT9+IX0PAuebCNEksZ2Hd1nZlJBk+FXI4w+M
displayWatcher.addListener(0, "empty", function(component, event){
if (event.clicked)
{
clickedX = event.x;
}
if(event.drag)
{
InfoPanel.set("x", Math.range(clickedX + event.dragX, 50, 734));
// etc...
}
});
@Oli-Ullmann Yes, in the above snippet, as you can see I used that and modified it.
But for example x position, this doesn't work properly.
InfoPanel.set("x", Math.range(200 + event.dragX, 108, 634));
As the title says.
I tried mouseDownX, dragX
and y versions with several combinations but no luck with the proper tracking panel like the Fab Filter ProQ example image below. Any help would be appreciated.
HiseSnippet 1622.3ocuXs7aaTDFe2jrU0tsBpTEhiq1KrtXB6ZmDmV.gyCavPRqo1osRQQkw6Lq8PVOiytylDqpH0yHDm4HW3e.Nxodj+IP.W4D+GD9l8g85GITBP6g1c9dLy2ieeOba5ycHAAbeE07sGNfnndSsVCYhda0CQYJM1VQ85Z0NpMIPnr4vAnf.BVQUcwOQxUM2RJQ+4O+3MQdHlCYLIEkGyoNjcn8ohwTaV8yodd0QXRaZ+LRuR0FNb1VbOdHXIKpYoL.4bHpK4AHoXKno7onfdJp2UaMrKZMbkUsrIkWGWojckUu2JUVyxxEutckNU5TFgQqUwRQ8Z0vTA2uk.IHAJpKsIGOrUO9Ir3G3wz.ZGOh7fsRK3kiIWm6gktnjpxV8nd3logn.E3VZNNfsXb.6NZ6RwzQzGG3dyHF5i0Ha.TcgIMuEmv7ryZdVYLu4XRpYLokhMoaq0xwmNPLlizdtgVClf36hf7TVSIVVkE9CMss3fDLwx8QGRp6CGFog48rrJpuhkUgOHedFjUBfLDQu1W7DjvoGwO+yymGRgAB8iQ950NR+izivQK2kHp45RbDlF0Nx.zNWF4Zvb4MQLhGHd5aCJrEu+.NCNXZLRBopiNrLFIPK2EhzfhVyvv0mbTLiLbBHhlfBhGwCETFwzMj4HnblY2BfwmSZNHPIQOZfzF1g6f71jGxvAlRmNWW4MDCQMSExzfJH8iIZTHVJW.g+HodD7i.2Fw55QLQE0ujKQPNUL4kf8QmrgGsKifaCLMMjEb2W2P+ciMvQ9eQ88Q6ac.P2FxOn8skeVQ9UoCj+c4Cf+wPvGrCwUXbAWdcHdERXNCm9EjAx49Bktrm3LIFIeV7.lFLvCMLAq.Q4ZrtPNXYGeB.+2zmivNn..pY97755FTrAXISpjQQIGje2.f29FNoPDC3sIGK+3fHIDnXINHwLl7VVFIDHmds4ifX6xCCH0jWPf49F083H.czsM0iXaH8qM77z2B440AZHEHeLoGNyshw6PA6mAdfkzf5OPLDDdDFaj4VTOxXK.Ht74ntlQmjYD.ElCHla9X7j3ElGBMEZyaI7Aizr1QR7yFB3TmPAwLf3AHNBdSDCqeWnJbY4WOz0E.cEJpWRl9yM+Zk+8O.fJfyRnzbdp.IL+THhrKB5I3CEEDyRVVfNiC.OsHfvVun9ZkWov7TWFPKspk96oa9Oyy0ee8RqT.Hut0LWLzwU13wm6YJ7CISw1mLP1xvTR9r74HdAjKTcWDvME8eVTAPZ5Wmyd.WPdHyLpUCvUeZVttykWxk6A3p4wVNE0+xTzjE1uCwuHTE5AdWpfvjhIG+ncwiexNczItGcFA4rFLp3gCHrKZloRRic3q8ZrM.4jyrRnAxMf3KnRSPcaxwvFCwSvxosMI3PnmBL7eToJrihHh6sRmuISBJTrbIknusUNM6JHCydXbmZf50Ro1o6XZme94SIYorhNtKcVgOghE8F8N5eS0dDZ2dY14YXUo6NxEtoHYqgXWHaCmHO4MzlnGzDNT0LNz0qlDCiCXuk11PITWDjzpS8fNowwlrt27CDfe7h46zkkjiRXp0zh5KOJs1HpAMLOOpkaCXV2o.AqnSvFTd7SdB2+vnUD.5QUF4OapP0u80SGppFVc.xGboLgqQIVkLDuwEACjq3jTalMvsebfau816WJ27qpNCR36d0QBAyEIbdFjfl5OCGRcMM0ODNcbZ4j5hJyttFrnHGG5gDSt8nbjeBCnldhU1jqkwBnhgY2A++rUJeUMwaq0jBy+luMtvbrQnx++CaLYQ7aoEun4XCbIs5O80vV22Ism0Vg9GSpcTxaCej8sePX+3JSY6V.GnnHGQYkDcpd+e7cpJIXmP36u4u+CQDJM4uyhgKOMgUFS3MiTY0TB+J29kRBqkPP27rWFIQkDBeoq6aGQX8ouz6M8kZmZpuTfSL0Ta8E+z29YwTlwXsmwZsmvbqWucMlrqUb9YwW47i8kCOh2xuKrtgOE5DnAQ+VP8pCAPGLn8PTRXA4zo3yVxyRSpEIJonoJKqSXZKOqlvzNk4qk2nOxwm+Lm3o4Rf20in.9MK5mFmSaW4YcaknI7Yq05C+5ym43L4UMihktpJV9pp3JWUEW8pp3ZWUEqbUUb8+dEk+mCrQnf2Ot0ohxtMqEOsUMSEgxeAHNoouB
namespace EQWatcher
{
const var Eq = Synth.getEffect("Eq");
const var InfoPanel = Content.getComponent("InfoPanel");
InfoPanel.data.gain = 0;
InfoPanel.data.freq = 0;
InfoPanel.setPaintRoutine(function(g)
{
var a = this.getLocalBounds(0);
g.setColour(this.get("itemColour"));
g.fillRoundedRectangle(a, 0);
g.setColour(this.get("textColour"));
g.drawAlignedText("Gain: " + this.data.gain, [a[0] + 10, a[1] + 7, a[2], a[3]], "topLeft");
g.drawAlignedText("Frequency: " + this.data.freq, [a[0] + 10, a[1] + 27, a[2], a[3]], "topLeft");
});
const var displayWatcher = Engine.createBroadcaster({
"id": "displayWatcher",
"args": ["component", "event"],
"tags": []
});
displayWatcher.attachToComponentMouseEvents(["FloatingTile1"], "All Callbacks", "");
displayWatcher.addListener(0, "empty", function(component, event){
if(event.drag)
{
InfoPanel.set("x", Math.range(200 + event.dragX, 108, 634));
InfoPanel.set("y", 250 - ((Eq.getAttribute(selectedBand * Eq.BandOffset) / 24) * 80));
InfoPanel.data.gain = Engine.doubleToString(Eq.getAttribute(selectedBand * Eq.BandOffset), 2);
InfoPanel.data.freq = Engine.doubleToString(Eq.getAttribute(selectedBand * Eq.BandOffset + Eq.Freq), 2);
InfoPanel.showControl(true);
InfoPanel.repaint();
}
else
InfoPanel.showControl(false);
});
}
@Oli-Ullmann That's amazing, thank you so much!
So the fix is to add eqBrdCst.setEnableQueue(true);
@JulesV Any ideas? I updated the snippet and gif for a better explanation.
I am trying to implement to limit the dynamic filter band additions with the exportState()
and restoreState()
method (thanks to @Oli-Ullmann )
In this example, the 4th band should not be added. So available bands are 0, 1 and 2.
In my first attempt, the node cannot be added, but immediately after the second attempt, the node is added.
What is the mistake here?
NOTE: I did not want to use AllowFilterResizing
because this time the band delete operation is also locked.
HiseSnippet 1707.3ocuXEtaaTDD9bRNZso.snJ98hEpxARc8EmXm1RotwwFrnI0o1zBBgBqucs8pb2tN2cNMg1HUwi.O.HdA3G7FzGD9QkfG.dCfY1ymu6bSRihn8rjk2YmYmucluc14baOkM22W4YjIW2CGwMxbIyNGJCFVeHUHMZsgQl2wbmcZrsw5GNh56yYFYxL+WhykI6BF5m+4tqScnRadrHCiGoD176KbEAwRaW6qENNMoLdWgaBsWoVKakrtxQMFvw7lkLFQs2kNfuEEUaNSiuh5OzHymZVg0mVgUc0RV7xqwptrU0Uu4JUqTpTe1ZVU6UsWYJiVoZI.0MXh.kWm.Z.22HyBqqXG1Yn5IxPG7HgunmCGGXYzA7bn3lJGFtEQoF0GJbXsiBP9FvpzNNbMeX35plaJXhoxiCaWVOAI1hjAvLykFdymBdVIgWoDv6XfTlDPZgPHcEyN1dhQAwyf34cMaIC3d8oPdJITB00XtWdAy5JPCYPQW5t7ldvfoVT.BwKQfuV714fGIjW7gbDmzX6GSCrGx8x8zb4fjne.wkdvVicWmJY9j6PJe6H46S8.0AQZ9UwA7fF86ysCJjuw14g0MgV6sg2flNAskNM6BFDgKvj5J2QJIL.rJoVvBjMaJGskhwqqFi6fSdIRpEhAXM73CH9bG.XbFtI.iKc6PoXxBF1X6h7CFo7BzYuB5PRnm46stGqN7CPI4.gjWz1iC5rtmhxro9fWJ7z71Q.HO4VjY1FKQxy2OZp643PpScb5AmF7yeD5nHOTjFDPsG1U0XuFn995n3RjuOOh46w.VLtV3fGxcU6GOryj8V9eXIxSyKXnmhV0YbAiceAfYIf57n4iGwvHfuxkGLTHG.x5OVZGHTxBZTi7ukf3uyX9h.gHatbYE8imhbm6PRfuEykEzIapjPQedviP6KnWExmQrzokzJYOjJGvYXnO6QfazeNEOQt10RyHPdPnaVj74oXrnCCw0Lj.MdPnbxzfXrbiaPZ0mL1G3dOgBYGRfh.gShqxiSB.zSJS5g967C6uHIrO8P4ItFW+0FcgoJ5w8gRU7vsod2GNSHC2GpZsITlAJWut5fB46pT.xjGhm00awOFoNcGxgMOarCEYK3bCo9DJtGDticIp9QQDTcqvfYtSh+DQoeissOcR0ziPKdhzD7AOMQHjbSdhKNsQy1M6tyjBmm0ZE2hLVx38AEYSKRjPl9napEdZIhoE71TALxokKlstS5pMf.s5jnR.j9JORSGEj.kC5Jb3V4OFWlrjwC48ApyvlSJQDWAwGVG9AhsT3OwvFjxfiH.EIfB25Q.cnj9dJ2Y7WhxMSiKKQzgBrbCDqIQ4qhLO5.xydV3rEscD16xYjXICABj2hZafatNsS04zJcjNchLR8mivi3M.nCD2shtMTmlifHQIwM3CjEBKEdTNxrS0u+wNGdWkmxwAhgG2zXuSdmlgEjic6w8RUHFTD5OHcSGlmbSGI6IxN7pyDJpjsjhfGLhKOoNkLlbeK1fxDTApFnaO48mzdRGGAi6YHftP9.yTGEMz.Ot+vKVy3aZsAPJhVNXkAuMh6EHvMRlM36CcaF18SVyM396FnFAMNNk4Cs+DLocsPmmjXEAgjGHLNHYyrGFO3Z0dhfELbpfW7y0FxECFF2l6y2u1DLFBnOxbCfKN.Y1MENv1qMUxcL5MHYCuh.taz3KYtrUkUVtRo0pTNwDKi8vs1pqVo7ZkrpXniGYZZh797Si8sX4wdJfVAPwsfpCG.BttkdHzcqi5IOV4sqltBSzm53yycDlulFotvYNMEGidgSs3XzOdvLwnZ8pA0DF0Q7S7ju0.T6Od3kqY7pcxB8PGdmQ5FqwW+XyoWljpaVriUouH3vjN5+stsOqP7JlsEPAwiGiycLXDH1uIv3j2Q48LC6zNFfKX17aeK7BIWM5HY8wd6yar2DeOyaSBMwDdv.qIkYdXKf2kVZRzo1u7IWuFJvZhfW96+MSKX4HM9ie8utKJnb52IUxVII+BErZrfkdAJnRjfUWXfVipSD77ObECsf0lcQu4rKpUojIRsjHr9ae2e9rPcVd1kw5UPqUJ31rY2FRrnQX9Y9yb9w5zoGOTMFK7sIMvS.m+LgneGn5hMGXGRnvjNILGVBObbIbLBoNbcRwLy+BOSlzBGmYxjVQS9VwGtTaO0N1gWtfDuKpk.6ao9eMHq4l3Xh0r2lXX3BuX9N11oWpWwvkOuFV97Z3JmWCW87ZXkyqgUOuFt1q2P7+M4diCTtgkNML1rciva6xj3Dgw+wi+oDm
@pcs800 said in Buffer warning when plugin runs:
@DanH Worked perfectly, thanks!
I think this warning message was added for a good purpose.
If I remember correctly, it was added because of problems in FL Studio. So, the problem is solved by adjusting the BufferSize. It might be better if it remains IMHO.
I have custom made dll compiled Eq nodes running in multiple Hardcoded modules.
Is it possible to assign more than one Eq node to the FilterDisplay FloatingTile in ProcessorId?
@d-healey Wow, things change fast :) Thank you!
While I could make curvy shapes in Table with the Mousewheel before, now I can't.
Does this happen to you too?
@Christoph-Hart I would like to share with you what I can think of to solve the performance problem:
While compiling the Neural node as a dll, I noticed that it did not embed the Neural network into it.
When loading this node into the Hardcoded FX, we need to load that complex, large Neural Network json file again, otherwise there is no sound. Could this be causing a performance decrease? It must be something obvious.