Alright so it's a problem with the export, not FL specifically.
Have you tried exporting a blank project? What OS are you on? Did you have any trouble compiling HISE itself?
Alright so it's a problem with the export, not FL specifically.
Have you tried exporting a blank project? What OS are you on? Did you have any trouble compiling HISE itself?
@graysan Have you tested loading the .vst in another DAW?
Dropping samples into a sampler works fine, but dropping MIDI into the HISE controller or a MIDI Player doesn't work.
As a workaround I can right click the MIDI processor to open a file picker, select the file, then drag the file from the MIDI processor to the HISE controller.
@x_Luv2xcreate Snippets contain more than just the script, but also modules, effects, that kind of thing. They're more useful than sharing just code, since all the stuff the code relies on is also transmitted, and make discussing issues on the forum much easier.
You can find snippets in the HISE snippets browser, on the forum, on github. You can load a snippet with ctrl + shift + v.
@Elezeid HISE projects, including sample maps, are trackable in git. It's well worth using and has saved me repeating work several times.
@d-healey Nope, it's the only namespace in the project and it was just to have some nice prefixes on the constants. It feels like something with variable hoisting but I'll check properly later.
@d-healey Of course, later, was just putting it here so I remember to come back and investigate :)
I have some constants declared in a namespace, which are in a file that gets included at the top of my script.
For some reason these constants are not available in one particular function.
If I declare these constants in the exact same place, but without the namespace, they are available and it works fine.
I'll investigate more later!
Just the inner shadows:
No blendlayer:
"Darken":
"Normal":
Other blend modes seem fine. Anyone know what's going on?
@ustk You can't store strings to value
. I believe the example was assuming that when retrieving the value, you'd go
this.data.values = ["First Item", "Second Item", "Third Item"];
this.data.setValue(0);
var gimmeTheValue = this.data.values[this.data.getValue()];
More generally I think Christoph was getting at the idea of only storing integers to value
whenever possible, and using a lookup table if you need something more complex.
That said I've been using a panel to store a big ol object with nested objects and arrays, and haven't noticed anything suspicious, so I'm not sure if he knows something we don't or if it's just cleaner that way.
I tried to provide some clarity to the docs here, feel free to contribute: https://github.com/christophhart/hise_documentation/pull/48
@Morphoice The solution I used was to keep track of all note on events, then if you ever receive two note ons in a row on the same note you know you've received some illegal MIDI.
It's pretty easy if on noteOn you check and store the event ID to an array (or MIDIlist I suppose) like
onNoteOn {
if (events[Message.getNoteNumber()]){
Console.print(You've just received some illegal MIDI!);
} else {
events[Message.getNoteNumber()] = Message.getEventId();
}
}
onRelease {
events[Message.getNoteNumber()] = undefined;
}
How you handle the lawbreakers is up to you, but at a minimum it's best to stop everything on that note, as this situation breaks the assumption that every note on will have a corresponding note off.
In my case I'm using artificial events, so stopping them all is easy. I don't actually know how you'd go about stopping the normal events.
Give Synth.allNotesOff()
a try, I know that doesn't affect notes with a timestamp in the future but I assume it works on stuck regular events.
It would be nice if we got this built in similar to setfixnoteonafternoteoff
@d-healey "amazing thanks" was for confirming the issue exists. It's been haunting me for months and it feels great to finally track it down.
@d-healey Amazing thanks, will do first thing tomorrow!
In a script that is not the front interface, make a knob. onNote, update the value of the knob, and call .changed(). Export your plugin as a VST.
Although it works in HISE, the callback function does not fire in the exported plugin.
If the script is the front interface, it works.
HiseSnippet 2300.3oc4X0sbbaaElqrWmpcZRSZyC.htoqbzP8STrcqmLwxqjS2IV+Ldk8zNsodvRBtKrHIXI.k7FO9t9Xzmg9Jz9pz2f9Fz9c.HWRt6ZYGMSup7BoE.myAGb946b.NKWEHzZUtWmdmOKS304m2czrTyzAS4xTugGh46dtPa99T0XuGOKiq0hPuNct02Qq2Y8a6Y+92e6i4w7z.Q8TdduPICDOUlHM0yd1i9dYb7S3ghykIMnd+GMLPkNPEqJftbqt63kwCtfOQbBmHastd+NtdpWm61Mb282M5AA768fc2euff8dv8262b+.AOJRbuc+56u+Ch1OhGryddctyQgRiJejgaDZuN29wpvYilptJ0sAuPpkiiEzfc8Fgc1M8STwgzQjl0avTYb3YUFIsGjxY0lra4LYed2ikgx4yWa59T6BrZNZZ.6rVa06VsTuceWp2JTo0ZnR21oReV2QA4xLS8Jj97qJmsVi1skJ4V0qyeqKKpHMvHUoLU5IJi3zz9a16M8Vu2a6szRQQqbsApTStJNVjuxkI2e90wX+zhjwh7sXWxiKDyIDGw11steX1MDcYDolFDpRGlJMmlIReWNauANlvud9vC4FNL1cJmCzkIxMRRE5bn3RDp6L8q28Pg9BiJCA6ef9kOpqMUYU9h09jeQ2s2VlFDWDJ5uQrZxDQt+qzar4C6s81k5heB+BwSxwfgXbNB+E82emc1hcuc.YoHCRirIA6IxXwSsR.VSF91da1HggYlJ0LihEwi0BlLhMSUvthmZnIuPHx.EBVD3lUZFq3drvbkPjhoSxjwbxCp8sKBB0F36xYCd5QG7rWd5IubvoGe1vmdD6aXl7BwCsjY+CQENYj50X1s2tVFwxTgFLVRkerhGdfdjIWlNo+l95rXoo+F+oTxrTu6Ub8G+gGVJQ6L9AwBNh8ZrW06DBGBgPe5BrlKlvhh4SvTVqT8rhTNB2Baufa6t6cY+AXIC3okTw1lEJ01eQVTxah8hckzL04DpRC7Y2caqLjojJWmdnElibaXeMk.rE4U1zRJRPfG4TbDjAWv3N+kx5LyYASoHLee+dqyVuzJBUl92nYZiHwehvXg9x62XxxP4MoUsoGzZ8sR9KYa3adsgr31s2psQNsh8EeSkcYy4K9l4+h9pMaVNdXqEaM.BcIYU8Y7A24FGXxWsylsEi.9iUxhJqD9ol921q9uy8dOWKZ6WVL4HCAfFlVkH.YoSdmtMKc8MhWap7UU6KRg0JDQ2fhG165N5sMivieNofWgppHdBNdapJEoFoxsCBKxsIlKxGBMrmMBGqYlaMIWkKM.vH3h9j.27Z7QMyZ7yJzSW7jPek4O0I+Ms6KjFZ.gGkhrCgePt.AHVG1oiekHvzJyEtSgy+OfGGOlSJaoUu+h1ZXNsGj2isjLi5Z6HreTRJuzYO2bsHuUo5.KLQPDVThrZCEjnzVNxtnnlE4LTvgBeIk3jYKqvlxSCiocENojhXC.HfU.8krHq7.pNheiffbQh5RAavYOmoyjW.Tr9iEA7BBY2rH6VNREWJxsm5sXigRKMrD4joFliqhzPQDNBgKo2iES4WJI3EWAJRgCwAHCzhZNZz9llwMrLEUyPxiWRBA4nqNgdyEi7nC6GTf2xXxUeNn9bgVjeonuaTrHcBfZ+x1wqtYu1cQk225Bax2xnQw0g+hO3rkVEilKox5b1LvxxbNo+JkL0Uo651gVvBASE.W3po.iRXgDxwYANFVN0T.x4P+TqHd977YTvZ6vYgCjwhYamlOlh1P3JE1Pa2hhIRhsiqAHIvA45l6O15fh7bqXrwwqJ4XddXeAvWkQ1IbohjpY2YMBEofu..ArbNB7ab1wCObnccBhvewBLsgEVM17FO6fAG8EarbMiMa0zByUelLGimgT6HNxe8qQGfJ3fEnZFpPVTtJA52yGhxUVSpekfFFAg7q0UsLL2BSfDgEv0wiST.uLUwfOHeJxYHf.AKuHFIdpnJA4Rvs3nVjrzYLWLk1YavB.hIgp0QIdv6R6BOCcUA4TIE0XJWWGOi5hvMWitQHTcXHdK5FntMS+EHXqMf8P.Odnq8VxX5v7u.2uD4wUMzxCCoab1eCZ9M1hgdYoh6zHRlkWQXNhOM+oUWb.zsX42Vq2mZVUkhso5tEnyoF5bo21l+Hc0AJEgs6WHAJllLja.jDmDvAuWOpigCPH9rzfonYbXqb8fU1ztqDWUbPQUqEMKL.Jo+45cymMz.WSVLxR08VJdzlyAeDvRzjK01.RM2jNaq965fyuNDkhPP8lBdriPBigXE5Rk2wIFJjHedNyVVl0Ja+OUm.DQB8ed7SEsZaKsVDCkBEvBlZYtNJEmLaINDd0p7VENvDBZJpHNd1VLbiMJ90Jgp8VkYa+pQgykrklbHPZl5JgtKafpkUMdicCMGELqg0YvAO+7gmdxukchMowUZTvuzdVqZZcdVCkJRsjP.atF+JSQKSghAZIocInnLfSoVxP2m1fGKLlqPPUwRqD9KEhBgeOzH463N3KGpdZJv.L0leaf4wNYRctSbeh81z8opF8VuJO5ETva+2MkNBCfqZBxfsQ4+e40+c25GZEH0XuH+mTdQ9QwRDu4Iwc1uSWxZ4Y024Or0+77Gcid6.h1RTJuNe76aOeMrCcnsaV0OzlYjQ3NcsObWhLD4Zmoz1B8Md1t+AtkW1H4OZU3274+8u6e8i+0uMo4K644kvec8v+7izEQQxWaeRN.ejnQgjrgIH9wqyurKcgoxRdL8EPN.G9BQ34JK8IpPA8fhGJ0nXjQrpWH4S6dLJtEyMseHM54FKWfNAMeoD5MORwIaVymi7mvqqsy095Zenp3m08LoIX5p0w0VgNROb2+Czwx2j7i6dTTD.lpUva28I+9a5CP9d19mAjd.icLGwBTnHPPFgaEDHvtmlhagSQkqQITtw6TEkNB3e1A+G7Ut3tz3NkKta0hHJLHW8xxBvzqd9yry.cJ09Bwq28XZLa2ER.o.XYn7kAAsE0RLt2Mkwu5lx392TF+5aJi26lx38uoL9f2OizajePgQk3Ra77N9rir.lc5T16HEs58eQVOfDB
@d-healey Lots, it's giant! 27MB. I'll try with a physically smaller image too.
Edit: Ah wait I already did, I tried with the same image downscaled to 1/4 the resolution and performance was identical.