HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. ThomAce
    3. Posts
    T
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 16
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: Mouse Scroll Wheel Detection

      @d-healey This is not something that implemented, yet. Script panel mouse wheel callback still not implemented. (Checked the sourcecodes as well on github, latest branch) Although, it is detected by JUCE, but the event could not be catched as there is no event.wheelup or wheeldown or anything like that. An EQ contains scrollwheel callback indeed, just like the knobs, but other components like images or panels are not. Panels should have this feature.

      I'm also looking for some workaround for detecting if the mouse wheel scrolled up or down under a specific Panel widget.

      @d-healey @Christoph-Hart - any idea how to achieve this?

      posted in Feature Requests
      T
      ThomAce
    • RE: FFT analysis programmatically?

      @clevername27 Yeah. I'm an indie music producer and this plugin does exactly what I wanted to acheive. (I know you know these, but some others might not, so leaving this hear for making some explanation for the tool: )
      Masking can be intentional and unintentional. When you are doing it unintentionally, it can cause muddienss, muffled or cloudy song. These are the essential parts that every producer must learn when producing. Sometimes, we are masking intentionally. But, if your kick and bass "kicks in" together, the lower shelf will be roboust, muffled and muddy. Also, you will not be able to maintain clarity in that space and therefore the whole balance of the song was bad, low-shelf oriented and loudness could not be maintained. Here comes the VST I'm making into picture.

      It's earlier version (Space Maker) was based on Mix Space, but the PRO named version is something that I wanted to achieve more as I have seen some cool features in ProQ. Although, almost all these features I can build in Ableton via racks. Configuration and identification not always that easy and requires extra steps. When I have asked for making a mix and / or mastering for another artist and the time-frame is very tight, these plugins gives a huge helping hand.

      Just imagine, that you don't have to do long hours of fine-tuning the dynamic EQs as you have visual feedbacks as well that helps you more easily spot the so-called "clashing frequencies" that would cause unintentional masking. So you can easily tune your dynamic EQ to those parts and you are done. Quick, smooth and easy way.

      posted in Scripting
      T
      ThomAce
    • RE: FFT analysis programmatically?

      @ustk A minimal one? Yeah, maybe, but it is not fancy enough and full of stupid things.

      Please double check everything, becuase this version did not fully check if anything goes wrong. And of course, it is not perfect, yet.

      Btw, I'm making this for my upcoming Dynamic EQ for detecting clashing / overlapping frequencies to avoid masking issues.

      If you wish to see a snippet of the VST: a05a9759-fb44-454d-bd01-ffc6f9e57ddd-kép.png

      And there is a HISE Snippet for the code I'm working on to make the FFT processing and visualization working the way I wanted... @jdurnil @ustk

      HiseSnippet 3385.3oc6ZrrbabbbAIWYCX6X6DUoxwoPkxFPhFD.TR9AsrIAIgEiIoPQfPoDIFUC1c.vXtXGjcGPPXUpJma4SHGyg7AjefjJeA4PtjqoxWPt5S1cOy9D.jhDxJ1RkosH2o6d5tmt6o6dlca3IrX99BOiLYaMd.yHyqa1brqr2l8nbWic1BfaVudqsX8EF0FOf56yrMxjYwOCQmI6RFpe9eeZMpC00hECxv3PA2hsKuOWFCsw5eN2woN0l0h2OA02X8crDtaJbDCAUYQyxFCnVGS6x1mhjsfoQlqrsMWJ7ZJoRluQlkpIrG2rmXjql9C4971NLbPEil.izfqKbrQMFgZrYOticivkruAvzFwFfE0FfqZtG2lGAO1P7VJDj3YjzdjYgzp2hoTuJIUuxITuYnRYRnRKoUo21rokGefLFCpOul4NtRlWGJX1SpJZZMV3udUyME.EtxR8oGyp6AChlQgaUt7xD3WEWKWNvz6KImP8H1s6PtMQEATpKStE2efCcbsgc5v7ZB9FXh407mT+9UxCSNwbSR7F.a.lMESJT9rmSsyZNURqjP73iZtyucaf7OnxGVMI+1ai6+nc2d+Oq0c.j25l2b0aAybkUHnAf3OziQj8XDOtaWRaEuIbeB0mzl2E+y.guxMkK8ZojOSd.LG8PvKLf4I4L+BONGgjWCcWlaWYu7eTBUXYD69C6CgPttLGe.YkbOAWKoW1emydXAa4wf.QBEMVDQ6ufYISXl5zQhNnsc6xcYkzzBDVHkuAHp1YPDJAPoUFyQbWawHhDhTyg7EWM2SACCdKn.UyA1M2m5dGpmG2GX.x6oIr1zDlTRhSXdNzAjBiXDag66JItLlcD3dLOVwHU3tZnEJWpbB4kFJx7e0PX4BKZ.gzWIl1b2cbsYmRjBBGfYwvMMjNdre+Plq0XxPeL9AI0m1efCyCLLHqnt1JnnI2m+krR43tNfsizYnqkjKbiXcKQcfaE31mVL2iyk0iIG54RvwjUhBuKRtVnwG1QzTIpC.QgNfmjaBu4iroRJ3sd7SVKGBa.idL5hKOoGcVDVaJBCVqPPXBR6SOcmstO.38g8bQF58ncc4xg1r5AqxBgK2B8oAwzKSDc5.zpVsIkZDEOn7Qk3no4tcZ.3v0nhPzjnTtr4x1Q3A1HX3pqQ3jOF9a0xkgGu90KlKKv3rIT6G.S7HfzIs3EWakU1iBY27DCcsKndriiP3UXJJKVbMxJqD41Q9GZnC4dR0+A7i.dG3vrECgzHsDMkXtlBSP2xjJJd2OzzA7F9edGb48IjUq.okgwYaC64Nds.j1md8quF7XDgeLIjNN452lTEIDRCvHIPm.+MKOEAUSQ.PdHEJIFvVEzmnr+OUyK5PtvVXEwSYjOeaLNmKnYVQ5LrzQQwnEsBrUZYhzaHCSGDkl3RGSC696FjkBVkDUjLjYT1SApGuaOFr0Bi5QZw.aYOtOFoeQ1DbY1sT8RrcILc.Zpq9++34peuGPe9Ffm8fsDwVPDhKTlDJcYQcg+43PF3wFPgVR7EPz.UFU6PWtVQGGXDm5vg0HLCjI3NEtGT1S2+heIch3.dUHr3wxjpgk8lMJjW2i8tfZDzpfbjHjmZ0YjFqXvXcSSLZnPwJii5wbQdnB4GJkP0MnUJPVXanIJk3wrDd1wME9.8iA8STHtclhKSNSTGs1YvwZOCbbppyTWpyXecONAap2Lb0GrviK8K6oLH9zNLsMpOS1SXmK6DsNh3N.nLnU1TlCba6DsBdNjWqnZaMnUCzmCHohEkqIN.pDoEjiAv.dQHD.s.1NiULPE9gTGEpFaEfHT+ALKdmwZl56.GiyGR1olfZ59pSB.AmCFJwn2ff5.6GzzjpUHnKVHETeHRAj7InNxTydD0UhQP1Bc19RAKmosMAguSis1js.sKsMyoBDLDdhGHa7lh9CDtvfB40nwiqLkSO3LU3NZkSOYPfxd6H.qEInqo74S.CZaCC+NJc11xprsAMKkLcKljpPhTNGAoFeuOrbQx67NjBIJ6EBGSj8XUZqNSgOIaTI7TDlckqUGTCaV6gcgTVcKUpjBLXT7ENLvTxAqgBT1YWhNUI9iJVjbcR967kj26SH4gGmchvjpFlBDmicMxI9p47bPZ0lVZ4Uho3ZWaE0CpeobYPB+WxVo3ednKFGFsRg.wRCF52aRwnnApzg+SUvSuO.6voPdI6TY9kUA15.8fSg.+YhMWMntm2lKM5z2EPMHAvVdTUT3cvqfwSQ08.lnIG4Qg7i31vgZSMyVUl7Lm3ME4cWUJM0YOi15VOrqwVhF7SYNEh.rL4dHmKRvcz31G0PrCBbyhdvsOSkDjAA9QcjGtaDSIAgRNhtEpBaaWIdXE7zjQygd5YLGr6jYNsvC.FgIhASRO48RoSH5BoD3j3ul1TnboAldv8qroaBUAZCm2Nt4VUFPryzRXXQofZK2NURRv5nIAaq.ymf4hQnwbuAB+.wPI3DiYd2hgdiokvsItCcbPmi1TD3B5hbSeqfEJe5MJeqJU298qDXzhL3CBNhXDPUtXbu.ThhLovJpHAzD7OpoNUbDN0kI27ln6QQl92cKY6QGsKtnFb5xD7ekglopB+JxS9jz1BI0SaqKTUeUasdpl+z1ZjaQA7B28ER1ccCaOIcd836JHZAAUCv6rDm09C62FTi8.VS6pnJAT7XXP.BYRI0oiVTSfCyC3IbbvYNCz5E74LwBtJwtL38bftiCIzHyRouDUyy9RTSdGuV5zRIHT.GzjKu6.l6YcyuFA4xfm906rEDcf27Z.r3afCfsE6Dn+G88vl0bKl+wRw.iLKDk.zHyqIUXeifaoUkj0faaj4UM0IbMNM9lt+j0GGOX75pLfQ.9Oe058XvgESbi4+t06OzQxwlV.sYA3r.cc6qDaVSPS1k0QZzta3Mmm8Je8W+0eCNOL8dLT.PDT00oajP+uRZ8WE6Fn+pmqdl5+MlP+K+GlT++piWOyhIj0aHCtjcsrp6HnPVhts3faEE4aZlDTJKGXtRN3BH4.+o148llaLzlK1P2emWJi1pqtpZNbIqeRi127WRCsJBdqs1Z1VX0OpXoL6Zpt61nHtcry+Qj7gxtRd0c2ptLD7VaUipCanDitmv6X+ATKF.uCEN4ZtmXfmdyUlvHF4WLlaKa0uWsre5+5u8mdtXYq97vx9JOk8GOiQomiRL8qB5sL2SXOzgJS+lovWGW.BHSapWGD9Jeb84xwIeccem85ptnp3aa1fKs5MacbgYniP93mG5XvK46ML2F5EvRFqfKYV+9OmdidKlP9lZ4mKbW58UB+0MieoZoTBn9bpWEFVTLyBvRJ3k7k4OZFWeM3hdftX.5K3G8BCVlzFNv5wM4eIa5hxAGutFRQAqfWkz7T69JWXyUky2aoabrKz0qGG2XA1.8qdL7Ecg1.LJIXbYbLFvzj4ZqF7MvOAHqfiyDfrxDHqFYMAjUm.4p33ECPtZHxD8MrOSNByofcND7LjqP6N8UtmG04TXgCdMLdOyqXVtD7eFafYivs67fcBfeVAqgvY7fdBWtEBRSQ3hdi9vQJkg56cn9snbGbqSyg9PaN120sIPr5MvCgtY1WXCOYVmZAtjwMnXNn21DaTBh2wKDKJtOktFG5g9FjIgog0VXPmz8dfuP9EQ75UuVZH6dESU6JFmoj0nmOAsPBA8SLE9Vbvr4aAcqkVd+byfawoTJZtbBEs+NrSC6MbhsgSBw.ShAEcz7daXKhsMyVWxBa2pA0i1mIYg4iBavzvHwZ5MSslp7CpEUkK0hZNvn9vGvQiQwphL2w+PDqE0w3PLaCFuOWsqaLqLvQ8qn+XJhZNKUB3fO8AH0Yboo+w5M7.wvFEHl.vuEzo6Kn4.wwmYNvPjw4.uDVypuvZMCW1yzZFh76hJJIrl+rvtSTMTuq.CrUFzqpgPPPDr79jwoy42i0fK72iUywtV6oRUEKDUKcs7nVGCV2jhBUyscof2wNI8GHDpacH42Cl96ZnIdQI.6SxjCvWZfOKEr5PQN8mDls4dezCUFkSnxnGv6xgQ.UBV6jCU2RuV.jFfV9vcYTa+GVeiCacHQ8LYOlCDUQpr5GzdPexmyFS1frG8KDdkFQOwnOZT0ar5SOEe7u+vrFNvpSovg3bTKW6P7SF3tzEKv8o7opszO39T0dA33Io9Z5xFpiM4XHw1tm.Ne.Bpi+TnVQGJzaRHzzIt1S3JBaMKYDJjPoaWrPYrtOyEzFRID+EC4pqe.ygQ8SrU3WtNdyhTuI2jcIrEUtzeYgyze8KL0pKAyIPdw8XkK9R8wJmrpl4LqpsvyTOByasopmUso+7+7e+ee4u1zuYdpMsk2v9JaXXApOmCaAOP33nKNcFEjdmJu54VPBw+iEjdInfzp+XAoerfzKeEjV37JHs3TEj9g8Ai6Ss7DOxReSoXD9qpf.VLWUggrl6giIULNQeeFwQA8g7iOxxJMqlZhUm2It57NwaLuS7ly6Du07Nw2edm3G7zmHV9ZigRQe8lZCi8Zrs9hvxD0LADt9s.3iBSsA
      
      posted in Scripting
      T
      ThomAce
    • RE: FFT analysis programmatically?

      @ustk Thanks mate. This is where I got stuck recently. HISE crashes always sending me back to starting laten unfortunately.

      From the forum and what you suggested, I came into an almost perfectly working "solution".

      posted in Scripting
      T
      ThomAce
    • FFT analysis programmatically?

      Hi,

      Wondering if there is an efficient way to perform FFT analysis on incoming signals from two stereo inputs (4 channels if you wish)... Unfortunately, FFT objects causing HISE crashes when I try to read their buffer from Script FX.

      What I have tried from (https://docs.hise.dev/scripting/scripting-api/fft/index.html) and under the given link to the forum, either did not worked properly or caused immediate crash (certain cases even in case of copy & paste some functions couldn't be found - as HISE said) of HISE.

      I wanted to achieve to do two distinct FFT analysis on input signals (1+2 = mono, 3 + 4 = mono) and "slice" the output into double array by certain amount of frequency ranges. Maybe 12 - 20 - 36 bands... I wanted to make these "magnitudes" to dB scale to spot the highest part and of course, the frequency (or freq range or mid freq of the given range). So these data would be in an array I could inspect.

      Does anyone knows a good way to achieve this? What would be the most efficient way to avoid excessive CPU consumption?

      Many thanks in advance for any constructive advices!

      posted in Scripting
      T
      ThomAce
    • RE: Output the value of a slider in a separate label

      @nic As we told, you have to remove the parameter properties from that slider and then you have to use scripting. What I provided does exactly what you are looking for...

      Just for example:
      3e0a44f6-cb5d-42c7-b298-db16a2f2f205-kép.png

      posted in Scripting
      T
      ThomAce
    • RE: Output the value of a slider in a separate label

      @d-healey Yeah, but you know how we develop... :D Typing something, then CTRL+S, CTRL+S, CTRL+S... But good thing anyway to use the F5... I didn't knew that this works on code editor as well. A visual feedback might be helpful for such idiots like me. :) I always forget that the code not in sync with the gui design. But, despite some bugs I found in the tool, it is awesome.

      posted in Scripting
      T
      ThomAce
    • RE: Output the value of a slider in a separate label

      @nic You can use only one way as d.haley already mentioned that above... If you configure your slider in gui designer to Parameter Properties, and at the same time you set up the callback in oninit part of the code, you will lose controlling.

      const var MySliderValueLabel = Content.getComponent("MySliderValueLabel");
      const var ControlThis = Synth.getEffect("YourScriptFX or whatever you wanna control");
      
      Content.getComponent("MySlider1").setControlCallback(onMySlider1);
      
      inline function onMySlider1(component, value)
      {
      	MySliderValueLabel.set("text", Engine.doubleToString(value, 0));
      	ControlThis.setAttribute(1, value);
      }
      

      10907520-bbb8-4570-9fd2-b8fc20c28cf6-kép.png

      Also, at the bottom right corner of the code editor, there is a Compile button. You should use it quiet often if you write codes...

      51c467ea-493b-41d5-a21b-73ecc47f85c6-kép.png

      I still need to used to this tool as none of RDEs worked in this way I used (Delphi, Lazarus, VS, so many Java and C++ developer environments...) But, it is still more userfriendly than Java developer tools.

      posted in Scripting
      T
      ThomAce
    • RE: Making an activity LED

      @d-healey Thanks! Yeah, you are right. Just for debugging purposes I kept it simple as this to see what is going on, but you are absolutely right! I still need some "housekeeping" in code as I quickly dropped everything together and I'll do some optimizations. But, finally, everything works as I wanted.

      posted in Scripting
      T
      ThomAce
    • RE: Making an activity LED

      @d-healey I figured it out...

      Just quickly made this together. Works as expected. Thanks for the direction.

      const var GRM = Engine.getGlobalRoutingManager();
      const var Cable = GRM.getCable("LimiterActive");
      const var LimiterActiveLED = Content.getComponent("LimiterActiveButton");
      
      Cable.registerCallback(function(value){
      	if (value == 1){
      		LimiterActiveLED.setValue(1);
      		Console.print("high"); //for debugging
      	}		
      	else{	
      		Console.print("low"); //for debugging
      		LimiterActiveLED.setValue(0);
      	}
      		
      }, AsyncNotification);
      
      
      posted in Scripting
      T
      ThomAce
    • RE: Making an activity LED

      @d-healey Yeah, the hiding is just an example. I could even use paint events or change panel background color, whetever. The thing is that I don't know (yet) how to route out any events in a practical way to the gui.

      posted in Scripting
      T
      ThomAce
    • RE: Output the value of a slider in a separate label

      @d-healey Thanks for pointing out that. You might have some good idea for my question that I raised not a long ago. Would you mind to take a look at that as well?

      posted in Scripting
      T
      ThomAce
    • RE: Output the value of a slider in a separate label

      @d-healey Is there any good reason for that? I know, JS is a bit dumb and quasy-OO language. But, what is the reason behind to make a global reference of the object at initialization (wasting memory) and referring to that instead of calling it when it is needed? Javascripts superslow memory accessing/addressing?

      posted in Scripting
      T
      ThomAce
    • Making an activity LED

      Hi!

      I'm quiet new to this HISE development and wondering if there is an efficient way to make an "activity led" (For example two image layered on eachother where true and false could control visibility of one layer.) on user interface that would light up in case of - for example - a limiter is starting to act. Making threshold of this activity is not a big deal I know, but I believe my approach is more than suboptimal in this case. (Added a limiter, controlling a switcher and logic operator to precisely tuning it to the required level.) But, this is a point where I got stuck. I don't know how efficiently make an event data or utilize any network device that can send event to the interface. Unfortunately, I get lost in the documentation at this point. Does anybody has any technique to this?

      Many thanks in advance!

      posted in Scripting
      T
      ThomAce
    • RE: Output the value of a slider in a separate label

      @nic

      You can do a callback.

      For example:

      1.- Drop your slider name the component as MySlider1 (just for staying at this example)
      2.- Drop your Label and name it as MySliderValueLabel
      3.- Go to Interface oninit script and add this to your code.

      Content.getComponent("MySlider1").setControlCallback(onMySlider1);
      
      inline function onMySlider1(component, value)
      {
      	Content.getComponent("MySliderValueLabel").set("text", Engine.doubleToString(value, 0));
      }
      
      posted in Scripting
      T
      ThomAce