• XY Pad with Optional Motion + Speed Control (HISE Script)

    6
    1 Votes
    6 Posts
    78 Views
    Oli UllmannO

    @JamesC

    You can achieve all of this relatively easily with the modulation system. Here is a snippet for you. The snippet is a little more complex because I am controlling the volume of four layers with one XY pad.

    If it's too complicated and not immediately understandable, I can build you a simpler snippet tomorrow. Just let me know... :-)

    In the end, this can be achieved with relatively little code, and you don't need a timer or anything like that. You can also use this method to control your pad with all the modulators that HISE has to offer. :-)

    HiseSnippet 3261.3oc6bs0aabbEdojnikRSQbaJRQ.Jv.ihhkITzjTT4hTcrrDkrIhtPXJaKEifjg6Njbg1cF1cWJRlF2l+JEnn+G5SwE8OP6C887TeNOkGa5YlYWtyRsjhVxVV1lDvzbOy4Ly24xblyLCop5xLHddLWsTKre+1DsT+rz05S8asQKrEUqRYsTuY5d82gYtOwyWa89swddDSsTol8NbFRM+bZhW+vsVGaioFjHRZZOfYYP11xwxOhZ009LKa6svlj8sbT3tzZULXzMX1rN.XlMcds1XiivMI6h4rMSZs6h8Zok58SmujA9iK1X4kV5S9jOZYy5DiFEH0+HCb9kwMVFCTKgKsbgRZotxllV9L2Z9XehmVp4VmY1uVKVWpb.dfkmUcaB+gBZ0fQVRdKlsIWE4T01nkksY0PqjmF.3pQ1rYk1r2I8NVlVCnGY6daQCnHITMfolIN7lMF7JnBu7JvKAHkRARyIgz0RWyv0pseTKReYEpOwsAF7SpPQxq1L+8qkdCFvA0OmC9HxVtvCCjP+CymOKBdKypKr.3q77QGicQMAk0CcSjHrIWSh+sss2rQChgum90qY4z1lf3wJWOtXGyr+LJqNWxGs.BdENvPOrAyoMiBOnecduW35YxdJrT7zYYoSmkRWOyBeQLTVESI1E.LlrPxl4ZVjHGLRtOHNiGNRFOjynKoIxqEqisIL6qiMDi.7W.P2B23Fnal7KdS6fa21h1bwMA2hOw1tCsIgNNYhPzNU18KKuNLLKVHe9b4WMVSkkMAss7PMc6CBZBgDRwGr0IVn5V1VTB1k.7X4YzBPBxyhZhrnHSAQePov17.DRWKiVvS4yUb4UFZbeHB5bdCPWaQ48IpQGpguEihLrwNs0ONKxlkE0xJyB+QgO1k32wkB1BHjzwhp2xJavC3d5bVONCXhe7H5u7EzOdndZv3.ZXVTgb4khCZZ.zQ54ykqPFzheJxbcjtvBBbgfjevTDWL02h35OPqqC1GvRBr1kPont2jqem.McIVMa4uOqbc8st+tazMDT1LCrMpKXVBwqrYv.wa1pARuK52yMZ.BFXLDd2UU33SuoPSh3P3IC5DP0pZQL.syifjNxUBa.527bMkqkQzJtLmFWsBoUHfOdjgJxjt0LBRRMJRq7AspK5FRVVU1y4JLfoXJC5CP5AQlKFPJC58Q9Rk7wh2I1djQNP.XVL.LvPpC3cvyiYnKGNzxH+ECHEanSH1xi3uMtOwE7l17+uB0jzKKh65LqG20ZVOz2pKaNaf5kMvIkIxKcm6WAgOxuC1FVvf3RnHcVKXb2.lYUGVCcwZswNRacXR2GEM9eQN.VO.a2gnCfHpWKWqJGveMu6TxhmYfazxqLoAnel5hU.T6xLC6Yg9qBeNOE4PrfrRTzV+y+JLumhNxFRW4iLwdqLf6SzebHdaeeWq5c7Imb3xwAVVTD7CFxs.CfGLpbmvcqTayEe.w0CbD2XqC3CHhJl25falE9niCxCVH12DVsjPWQseNE7jOXnGoeuSaSH6sv06AKo5bvgBmZucYtNR2ee9GiGAHZcnI3BZAijjq9IvU+.tB8jhAdwOuCy0jBofGLId6BqfX0Ae.f1i7xh1tXvytDvtvIrzJnN70mFvQoPBRVTyEwWjLX9iDlvjgfm6eBX2sHm6.K7Dv9RI04Ahm.6kRr2Gheg.JSIA2nR51tExDzmJrTHNKESfkhwYYoDXYo3rTJyfkRFyp5Gb3hUwlnOm.wrzwudtrnDdLZUHv0+drN9P3ndX3ndyv.M95qXvT42xxiWAx1bq25rNTSO87gVnl7NRVVtt7+7xU2FRqDnXMy0.pm+dP4d53wIS2VV9jAxX5h6JkAVLMRLdWsossUaOh9iDvBl4fy0C76E.+SDk9ATJJ92WvsfYVcBsg6f63MY1ucXc7HgoQiLfjigpzBMh7TgBB4LrsLNhXh9luAII.JYygyDppT2LfudqlPy8GzbekrZbWVucijDVzJz68PKS+V5YVMFu8i3suBu2UD+oqlu7fn0A5sqRubXD896pJPBY05saVTeUgEimKoMONTePJxgralrNv1b1fa8Fu0ZHMERhgJNJS2vZpj2jz174VNY0U1v3zWfCdAgKepZL+8.sNPoawNl3JU24OQU94WMdkKymz9.lj.dPqODUy1hWsMTFFO5+CP2WnHiSzgW.iQOfuQEWlstQ3tTfRn4VonoA5wAopqb9foTC7jBQgbxAzGN5c9Dr0BQxB9mlg9mLJq4dfLii.iClvFA6LIryAF8vmcJU+DUpnoYiRqNPQcBG7Hs5vj0pCUzpwG.TgZ4uhbGGSPFuAtmS3VPfZAw4qtvv57I00PNOwLrSLyZ7SnB5YkoRKnjYle1QtCLIR5wnkjGOA1z4t54GdR6iiFJerqbvzKwWRTI5YWlOYOprC.IPC2TiFI1VfuyF5wjZVNViQPcZGm5DWkHUAiZolK9oIkdzmlj5gcYHO.BEFYTdTydsIzQcDXZAmZglVpqDfJfUew4N8yCN2IYRGMKw4ncfl.rQG122eKsIRvCOaB9FoEGajpv4+wGWZwmL4BW77H7RpB2p1+9er7SgvkRP36WoLLiieReAldvczl35aw8zoJSN1xfHO2u4SWl3cjOqMzcCNQI3yxA8sBOUPdzsXLuZZYjtVuHir0Z8UenKOGfJgVho5pTfYSrtgyo.H8doEKmCaY3t704P+NTYnVnlVzl7fmgQ0HhYTPDUAQe+WulIoAtisLYhZrgCF1SVu8wtP9nJhdomFT0oS3oJO+Uzz9oFBlmPTb3nPwZ+4mBTzeXT7SmDEKbpQy8TOZcEOTk0bTOI9CehCNFqNLyf.CCq5fa2wxzzlTk4YwyrDwYtmzNbRNG1.Rh11eAs1XWrCwmHZ6JoEm9+SC9Kphey0tfwewyM9WRE+9Wz3eoyM9Kof+u8wWz3uTx3+j2awamNnVq3WiBm8fF3io5cWvueBJfk9pWF0yr6VYRg30RW0x2nUxXblDvHjL+4AFCtQp2Js7JXh.3bo25fmOW+j5veU4v+douiMqN1NxPAKaAHgHuFpeSPynAsiFvPgwbIi+qI8RFaOwWx3vkMM2jU1zobGgyco6NBmz33e4IbMdWfy1RMiBLulDloSu8V6EXofOEArBmNvV2pMyF6xaeKWxenCgZD19W0nw+8V7HjJT0noGhOlzf45DTM0fdZaRSXLUorOAx8VqO0PU7ZNLFraBZy3wcZZayXs2jhAqfoZmTsE1iuUAXKMw5Fna2msC1CxWtgMy3H0FqzjxbIxsenReiNd9LmPEPbk407IsEUNl5Qo+vR4fWM9.96exFvaKs2ylmeZRjUXxc+iOJkGILvkyiItDtlfDkCB7dAhxSapTwy0TIs+xd+uoSkdcdpzbSVP53W07BcZ0EJhGawgy9pcwgxqep4NhMECof1siSMn5KCBL5TJwleTUolgOmS9bd9yhItDpo3geBdEzXA9yoBZrPXiZxNO3HRlAJkjRLj6M4MheX.6H1Jib7jnPbgtgC4vdhu59+mu6V2tSu.lFDM8cBZI30pPOl+k7PXB0FIN5ONbjJAb.u9amcbnD.7tx.f2LMO0l3Krkv8+qRGlpCcGBTC9Iqt54dc36Y3CPXeWL0qMyiTHVJbhi09v1b8hQcHIJlnDwnVl32gFuqkjJN7xVaAlBE9t5ZgDKpRrJlFqyfmi0S6X0S8bgjqYUi.Zt4ddFfggami0Acr8HhibufpfQjKpR9tXWygWzL0rOO1NyUdoc6Lu.O4fXeqLmODixyDYSX9oMCnvw3uHcY4IIFRM9TucXTV6VLpULG88HPJulMItpXOQE5199X0pddm0tGwl.0JEQ52t11hueWxzRmIaQgm5ugpI5u90okvEwyWfd48Ded0dQ8XtyqN36MtHz9NgC+Pme7nVM4OUZwmTlXiiYndX7qb3v0RX8F4ZbU4aJYXy7rOqBamahiE3pz4Jd8BsfTdJGvj+xDfEgDu7.32leuZWBf6EQ42SrIAJH5xcN82MMTXVQjHwN5ESl8KXG1SwNBJdYYGA+v2McGAS2QvqS6Hn3zcDLcGAuZsifhS2QvK530mE6B3B.jm+J+u.VT47Vs+KMELNsB+WcqveoKMU3eqoU3OsB+WmpveooU3OsB+Wspvejql7s7eSCSqveZE9SqveZE9Sqv+hrB+RWZ9V8r1zJ7mVg+qSU3WZZE9Sqv+UqJ7KMsB+oU3OsB+oU3OsB+mCNrKhwvAa3x9RC4eaJ34FupfBn2Twe1cmO8N7mQEF9ODGZ7eF3VeogQ7t5DBV7rJ3RmUAKcVEb4ypfe3YUvO5rJ3Ge5BxqW+1c7YNx4Fv9Vpto72uVpA+34RMq1+2DSycn
  • 1 Votes
    20 Posts
    449 Views
    David HealeyD

    @Christoph-Hart Found it, there was some merge issue.

    It's not working correctly though. The callback doesn't seem to fire. I put Console.print in there but it never runs.

    The expansion seems to be kind of half loaded. If after triggering the error I hit compile in my script, I'll get some errors about files not being found and my Interface won't render properly as if it's trying to load another project (the expansion) but is missing some files.

    By the way, in the next version of Rhapsody I plan to go back to using hr files instead of the zips, so you might want to drop that mode before HISE 5.

  • Code feedback on this custom envelope panel

    15
    0 Votes
    15 Posts
    127 Views
    ustkU

    @David-Healey said in Code feedback on this custom envelope panel:

    For paint routines and mouse callbacks I'm not sure it makes a difference since the paint routine or mouse callback is still a regular function.

    Yes but the way I understand it (might be wrong though) is that it's faster to execute even if the outside part isn't inlined. The inline part containing locals, the code execution inside it seems faster especially for long paint routines or mouseCB. Then what happens after this isn't affected but at least the script part might be improved.

  • Sample import dialog menu + alert window LAF (Example)

    3
    1 Votes
    3 Posts
    41 Views
    C

    @David-Healey Oh yes! I did watch that video and have been using the unicode with buttons, but never wrapped my head using it that way.

    (Might be easier for newbies just to copy and paste this in!)

  • Anyone doing this to declare components?

    11
    0 Votes
    11 Posts
    321 Views
    David HealeyD

    @dannytaurus said in Anyone doing this to declare components?:

    Do you mean like this?

    Kind of.

    I split my scripts into lots of separate files, preferably one file per part of the project - what constitutes a part could be functionality, or it could be UI, I often have one namespace per main UI panel.

    For example, I'll have a file called Presets.js which contains the Presets namespace and this contains everything related to preset handling, including the UI.

    I'll have another file for handling expansions.

    I'll have another one that handles a drop down menu in my plugin's header. This will have items for opening the Settings page, the About page, etc. This is an interesting one because the menu itself shouldn't know anything about the Settings or About pages, it doesn't need to.

    But the Settings and About pages are aware of the menu's existence. So using broadcasters those namespaces can watch the menu and if the Settings option is selected the Settings namespace will show the correct panel, if the About option is selected then the About namespace will handle it. Everything is very self contained and links between namespaces/parts of the project are minimised as much as possible.

    Here is what the on init section looks like for my current project. Nice and clean 😀

    f0136148-47c7-4818-82cf-fc6d90abf1d0-image.png

  • 0 Votes
    2 Posts
    84 Views
    David HealeyD

    Each time you add a new entry the indexes will shift. Do a search of the forum and you'll find some solutions.

    One of the simplest is to use the item's text instead of the combobox value, but that isn't always suitable, it depends on how you have things setup.

  • Hise with Gumroad licensing system

    2
    0 Votes
    2 Posts
    126 Views
    bendursoB

    @Avián You should use Server.callWithPOST
    https://docs.hise.audio/scripting/scripting-api/server/index.html#callwithpost

    something like this based on what I read from the docs of gumroad (i'm not using gumroad, so I don't know if it works)

    Server.setBaseURL("https://api.gumroad.com"); const var params = { "product_id": "1234", "license_key": "your_license_key", "increment_uses_count": "true" }; Server.callWithPOST("v2/licenses/verify", params, function(status, response) { if(status == Server.StatusOK) { if(response.success) { Console.print("License valid"); Console.print("Uses: " + response.uses); Console.print("Product: " + response.purchase.product_name); } else { Console.print("License invalid"); } } else { Console.print("HTTP error: " + status); } });
  • Sampler playhead reset on noteOff

    1
    0 Votes
    1 Posts
    37 Views
    No one has replied
  • Phase Correlation Meter

    14
    0 Votes
    14 Posts
    357 Views
    dannytaurusD

    @resonant I find Claude very useful when coding. I use it every day in the Cursor IDE when I'm building web applications in Ruby on Rails. I'm about 5-10x more productive with Claude.

    I'm on the $20/mo plan with additional OnDemand pricing for extra requests. Given that I use it every single day, often for hours at a time, $20/mo is a bargain.

    If you open the HISE source in Cursor, you can ask Claude questions about code locations/definitions, workflows, how to write scripts in HISE, etc.

  • This topic is deleted!

    1
    0 Votes
    1 Posts
    14 Views
    No one has replied
  • Automation problem in daw (get stuck when hit play)

    1
    0 Votes
    1 Posts
    26 Views
    No one has replied
  • XY Pad Gain Scaling...

    Solved
    3
    0 Votes
    3 Posts
    94 Views
    LindonL

    @JamesC yeah thats one way - but for us this algo approach wasnt quite good enough so we added a simple array of gain(dB) values that the xy pad reads to get the correct gain for its current position - and thus allowed us to have a little "bump" in the middle

  • .set("parentComponent",??? Canw e do this?

    2
    0 Votes
    2 Posts
    52 Views
    David HealeyD

    @ILIAM You can't dynamically change the order of UI components.

  • This topic is deleted!

    1
    0 Votes
    1 Posts
    2 Views
    No one has replied
  • Any way to cancel installExpansionFromPackage?

    1
    0 Votes
    1 Posts
    33 Views
    No one has replied
  • Modulation Matrix CSS

    3
    0 Votes
    3 Posts
    57 Views
    ustkU

    @dannytaurus Thanks, yeah I tried using th as well, it does nothing...

    I agree, but unfortunately I am very limited with CSS, so I usually don't know when I'm doing wrong and when it's a Hise issue/limitation

    AI is of no help because of the particular way Hise handles CSS. Conventional stuff often don't work

  • Custom Display panel questions...

    Unsolved
    9
    0 Votes
    9 Posts
    153 Views
    LindonL

    @JamesC said in Custom Display panel questions...:

    inline function onrvbfilenameControl(component, value)
    {
    local currentReverb = ConvolutionReverb1.getCurrentlyLoadedFile();
    if (currentReverb == "")
    {
    rvbfilename.set("text", currentReverb);
    }
    else
    {
    rvbfilename.set("text", currentReverb);
    }
    rvbfilename.repaint();
    };

    Ok well lets look at this:

    local currentReverb = ConvolutionReverb1.getCurrentlyLoadedFile();

    is trying to get a file name..... from ConvolutionReverb1....

    ConvolutionReverb1 is an AudioSampleProcessor, because of this:

    const var ConvolutionReverb1 = Synth.getAudioSampleProcessor("Convolution Reverb1");

    but when we look in the documentation at AudioSampeProcessor it has no method called
    .getCurrentlyLoadedFile();

    https://docs.hise.dev/scripting/scripting-api/audiosampleprocessor/index.html

    ..it does however have:

    https://docs.hise.dev/scripting/scripting-api/audiosampleprocessor/index.html#getfilename

  • Empty slot for combobox?

    Solved
    7
    0 Votes
    7 Posts
    125 Views
    S

    @David-Healey thanx, this helps a lot!! :D

  • 0 Votes
    2 Posts
    53 Views
    David HealeyD

    @Yinxi You can use either parameter\processor id or a control callback. If you want to do two things then it must all be in the callback.

    Or you can use a broadcaster.

  • Scriptnode - Midi frequency

    3
    0 Votes
    3 Posts
    79 Views
    B

    @ulrik

    Ohh yess!! Thank you so much! You helped me a lot. I am good at c++ bad i have no idea about scriptnode.

    Thanks!!

25

Online

2.1k

Users

13.2k

Topics

114.6k

Posts