• [Feature Request] Cleaning Networks

    2
    2 Votes
    2 Posts
    295 Views
    Christoph HartC

    @Matt_SF you really just need to delete the network xml file and I‘d rather let this do the user manually.

    Not sure why this should crash, however it might be the case that when you delete a xml network that is still compiled in the dll it will cause issues, so just recompile the dll after you deleted a file.

  • Children panels don't return their global position

    14
    1 Votes
    14 Posts
    355 Views
    ustkU

    @d-healey Actually the broadcaster isn't a solution... because it is also called from the components that are below the "label", making it react when it shouldn't (in my case lose the focus when you simply want to move the cursor or double-click).
    That mouse click isn't "cut" when components are above
    @Christoph-Hart were right, the focus system is a can of worm...

  • [feature request] Get set sample envelopes

    3
    0 Votes
    3 Posts
    235 Views
    d.healeyD

    @Christoph-Hart Manually copy paste in the XML it is then :)

  • Lose panel focus when clicking outside

    14
    1 Votes
    14 Posts
    459 Views
    ustkU

    @d-healey yep it is very straight forward finally...

    const var focusPnl = Content.getComponent("focusPnl"); const var overlayPnl = Content.getComponent("overlayPnl"); overlayPnl.showControl(false); focusPnl.setPaintRoutine(function(g) { g.fillAll(Colours.black); g.setColour(Colours.antiquewhite); g.drawAlignedText(this.data.hasFocus ? "HAS FOCUS" : "NOT FOCUSED", this.getLocalBounds(0.0), "centred"); }); focusPnl.setKeyPressCallback(function(ev) { if (ev.isFocusChange) { this.data.hasFocus = ev.hasFocus; // in definitive we just need to toggle the overlay, since the focus loss is made internally... overlayPnl.showControl(ev.hasFocus); this.repaint(); } }); HiseSnippet 1012.3ocsV0taaaCEkxNJn1qYXEnO.D9Wx.YF1cccCannNwerYzlDipzh9uBZIJKhPQ5QR4Tug79s2g8Rr2fsKkrrjWb75LvDLLz8ii3gWcuGpoJY.UqkJjSiqWsfhbdrq+JgIdPLgIPSFhb9R2KHZCUgycc9pEDslFhbbp+SVGNMNBkc8mu5bBmHBnktPn2KYAz2vRXlRuS6+ZFmOlDRulkTI6m2eRfTLPxko.ep61EsfDbCYN8RhMsZtHmiGExLRkugXnZjyQmKCW4GKuUjm+6YZ1LN0ZzC4COnb2ik7PKisdQChY7voE6aMBdJSKqB0yqBO08BVHai+xpwWkE.WhnZ8vo11zq9Vzq2CQucPImJT5nbJ8DW+.EagoLhkOeg6DA7xIh.k8pTIOWTs+nl6.IjgvzIgbCcrBL1fv6Ec6dJF9q8O1rIT50F7RhBGICR0SEb7KwEXmSMCjIKjBvvqUQBs.bkvjKoJNY09.VlhEZoUGMTjrPTRtWDgqoVF0rXc5nolova.yakoFlf5EkJBLLovad6l+VyFy6DAMTmw4d4MO5Ny3PmC7LfPZKCrd2DjHLreIkdaLyPyyITQt8LNatfFdM8SFOSLS2IjXHchI5wVVfeEt0OelOd7UCdmeK7Ofac4UWmaMZXqSwYHfM6ajAD94xTQn1qamtsOE2J.15JZncGe281VultZpBdcNfv4y.NWt0nKy1arHLbaGVNMfFQwbZ6lMfHM1AKeIFxsvB1ZMfeOPYtRhsWmY1CTQWXK0dVm2YYbAivRwkRC8JgWFwZdWS7+LTTzNisdI4T0NCaUAT6CnmHMYFUcJzlwSoaRDFM1dd63Ou4sf7dyJIJESDLyUKnqs2ufAZcyMb26lLDp+1A109f7VPUFlkNNCoKA0u7w2FtCo5aLxEfP1lIBfxlrnmTLbSDTNhAKcS2h1DzmJkHY8Wswnur+srPSLxw042A6XJadrwZEhxH4lE4jGZQdraYyQ0kAgVU0Xyx7gZUWFq0r4E50MNtHcXrJYedeVU2FXd69IOSpBoJe1ut0gI4deKIjkpq5eYw6Ym5n6KbBR1xvTNwrsNt8vq0AflssDOsBjBMyrp5ga+GD26tWw8OWJ9D2oLSP7t4XscvQnM7+CNt9HwSbGEEQCLkD7H2we3PO+6eY4yE5meAwnXPeo6koI9PKR.0J.BcuZa+WMaWdtcWqssB3SEgYF+EbsNXOqsy5f8JBhRHAJ4GCxkXrG59nLO.mDYeuQC3Ce.abOTlrCfyETzQIv4+eLHvt8+ZPcX2Xd1Af4aN.LO+.v7sG.lWb.X9tC.y2uWL1O85rTiLIeb.bLcTl9qiyHAA5rx5BQ+Mpcs8rA

    So as soon as you click the overlay panel, any other panel will lose the focus...
    You just have to toggle the overlay and bam!
    If you don't want the focus to be lost when clicking the keypress panel, just use 4 overlay panels that you dynamically place around it instead of using only one that covers the whole interface...

  • MidiPlayer.clearSequences, clearCurrentSequence

    5
    0 Votes
    5 Posts
    172 Views
    clevername27C

    @ulrik Cool - I'd be interested some time to see what you've been up to with HISE - you seem to put a lot of work in.

  • Change panorama position of a noteOn Message

    25
    0 Votes
    25 Posts
    988 Views
    FrankbeatF

    Wow, this works like a charm! Thank you very much!
    This way, it is even easier to set the right spread amount across the mapping range. I helped myself a little by printing it to console, since you wrote it has to return values between 0 and 1.

    function onVoiceStart(voiceIndex) { local normPos = (Message.getNoteNumber() - 45) / 45; normPos *= spreadKnob.getValue(); local newNormPos=(normPos) * 3.21; // dev state only: Console.print(newNormPos); return newNormPos; }

    The noteNumber 45 is my lowest mapped key here, but I don't know how I came to end up with this modified formula omitting the +1. But not to complain – it works. 😀

  • Breakpoints don't work with included scripts

    15
    1 Votes
    15 Posts
    365 Views
    clevername27C

    @Christoph-Hart Thank you for your reply. Please know that I don't feel you have an obligation to "fix" anything—you have published at the source code. If I really don't like something, I can fix it. I likewise feel that you're probably well-aware of everything that needs to be done, and having someone document it excruciating detail may not be helpful as I think. 😃 But as I've been encouraged, I will do so.

  • Sampler Loop Function - Alternate Direction Mode

    7
    3 Votes
    7 Posts
    225 Views
    ulrikU

    @d-healey Haha, yes you're right of course, you can even hear it in it's name... :)

  • How to Customize Audio Waveform CTI with LAF

    8
    0 Votes
    8 Posts
    502 Views
    DabDabD

    @DanH Superb... Thanks buddy.. That's what I was looking for.

  • Exporting interface as png?

    3
    0 Votes
    3 Posts
    199 Views
    lalalandsynthL

    @Christoph-Hart Sweet , thanks !

  • [Feature Request] GUI Scaling with window handle?

    15
    2 Votes
    15 Posts
    2k Views
    T

    @orange yup, that was it, thank you!

  • Better Table editor

    4
    0 Votes
    4 Posts
    386 Views
    lalalandsynthL

    @Christoph-Hart understood, thought i would put the suggestions out there.
    Isnt the c++ code in an external tile disabled when the ui is not visible , seem to recollect we had that problem. Or do you have in mind that its just a ui object that then runs the underlying default table?

  • Link tables between scripts

    17
    0 Votes
    17 Posts
    1k Views
    d.healeyD

    @Christoph-Hart Any way to do this yet without resorting to global variables?

  • Load from Purge

    9
    2 Votes
    9 Posts
    509 Views
    Christoph HartC

    Alright, I've added the feature using the first option as this is most convenient for the standard use case.

    I've also thought a bit about the option of purging only a subset of the samples and I added a function Sampler.purgeSelection() which you can give an array of sounds and it will purge only those (while unpurging all other sounds).

    // I'm pretty sure nobody knows that funky function... var list = Sampler.createSelectionWithFilter(function() { // it will be called with every sound as `this` object and you just // need to return true if you want it to be included in the list... return this.get(Sampler.HiKey) > 72; }); Console.print(list.length); // now you can purge every sample that is mapped above note number 72 Sampler.purgeSampleSelection(list);

    I'm curious how it will hold up in a real world use case, but the only problem I can see so far is that changing the purge state of the sampler will overwrite the "custom" purge selection so you need to make sure you call this method and restore the sampler in the correct order as the information which selection must be purged is handled on the scripting layer alone.

    It might be one of the things that I'll regret adding like the Ghost panels, so take this feature request with a disclaimer that I might remove it if it becomes too annoying :)

  • Time Stretching

    36
    0 Votes
    36 Posts
    3k Views
    B

    @d-healey Excited to see where this goes. I've done some experiments abusing the timer, here's an poor man's old school timestretch:

    HiseSnippet 2440.3oc2ZssaabbFdWKttgzwEMoBEs2MUn0cYprDojkRRUULsN4HDqCQT0tWXffQ6NjbhWtCwtC0gDHffhh9Zzq6M4YnnW0K5KQAJ5UEn4Mn8+elYOQtThV0IF09Bat+Gl4a9Ouy5CiDdr3XQjkc0iuX.yx9scZeQnr2l8n7Pqc2xx9tNRdeVrLhI85YswECnwwLeKa6YdLJhc0JVp+7MObCZ.MzikQxx5oBtG6I79bYF0Ca8I7ffcn9rigENi9CZsqmHbSQfXH.mYbZXMf58BZW19TTra4XYe6s84RQTaIUxhsrqrgv+h18DmEpk+o7X9IAL7glVsgERSdGQfOhXjp0l83A9GlbrisrrcNLyHLi1HLqydbedJ8LiwOPwfjoQd6g8sJBuYJ.ul4gWibvqDHYmCRNZH8NNs8h3CjYbP7bGmcCkrnNTvrmGJ6Ore6.tOK5PvDBPww9VfEVuBV1+EmMEfZgxE5SeAamH3gzkwc0FMlm.+U80pUqyvPOIWDRDg6KjrCBcqW6KqUs1k0HixpSmR4gaTjHHfEUJaLBH5pTzMbX+SXQySNkFLjkJH36KZqclrsNenfm9bmSPQ3tgb4ACXgSJ.wxXrfe8a1cKpjhNHCMPtArHIGgf8VrSgncs6ppyVr3WHECf38LeYEMSHJR3OLfJKFZg4SFFfMnf+DcOgwb4E4y2FMdqxzEuc0oCSKbeGmC4PAgxw6sJAufU6aa7Zxduqy1c5v7jYfshyN+1qLUsxzE9L8P4Gl.kGMzmKdh.CSTPYVMEBRhbX.8BVTyIUUkr7e5eLsUUsl5ppP8cOvswxGJo7kGGAEK3gcyy.g41gTvV3mGAGIDRLsOkVqOsUaZ+AALvhFIgkufzrSYQwEWgc3AlB6+Bms+UOGLceN3xhe9wa7wOeCFUR1fJkArmCtGobgynmZ0GsKN1nx8omi+rxezxJ..nZOS3EnPreBe6YtQEJx6oO.P+ob1YYzJsnckWC8QZN88QpbU8QtqywSnIuomws9muaZSiXl7YbeYO2UVF6Rji7Gy3c6IcWQ07XwEeLSRnpnczoPFnh1qAgiwRnddDIM2vjGPVmnF9XgtLohmNjJEptyMdtyb5sBKhShUhSDc5.XIlzQDQDfuKfNX.DVaXGWKhk7aUfySoAvF2XsRnuDvXDI+kiPXwkzG0Hv0Rh4eAi31GRD4wL3b5GWWspcQtsQlqSVogRg1ZaMg1WLLTRbg5CdfUDF2QqhwW7n9RPmlKzvbJgtzPmPxIWPNqGGTWJH7PuHFMlU73SfEj.KQDuaWvniKIOQ60y.z6ksOY1QHcEfztaoMUpm10uAhi0xSoolhhTDTPHDJH.jV0XJy8nIVP1KAjQPjMwsixBfT0QIcfZBDZnOo63B2IRzGnAEF3P3Ci5WOm+RIw5jsC6xCYXziNv4HfracCB6SCGpN6xngLEjvhXJTZBIiLE0.YRhoo99eRn3D24hPFyMOAlMBCtSDEC5cmSxNWB7lKcAmaLQ5CEbQQdB.PZz37giz.ze.x.N6w2Bn3Gv5AkvfdNv3Cd.dL4gAvxmeJpDYSllxSzefHDNY4GnJmuSQbsZWBKVhI.rlalnUhcnNt2l0bSZPvIPiC2w1MDR4hzyhvIu.roj6kBTi82DJVl42rFn0YYiKvHcQOPhbixWa9ZrPiliwQY+VRayGQGeen3i.FiAvXlionPF+59hn9z.vA5eX5wbLT3y5PGFfUMFlyQWhayn0U503cb0gzquNFQWuVUfXUPkXQ.agAQP1tqV50.5EJmX7xUurVUV.T3H2R0gBDLqkGMvCGtiYrpXpDpy0VGo53UQGM0LdGQzdXcx155jtIKZcrf5ji+RcvkGAVzvoaMrYxwHM.ymAi66isD.qsJx2ssnOS1CIcF75PcqOlSYbigwInz+ifxbFqVAK8dTna1.wYtP.172W8D8jXkN2OIsq9hMAt0IuW9hYKl6ghdJ098qml86+4sqjMP0IB3eIZY2SWREZyR8+7gwRz7AMjFfCSZxo2KopatT5MFJkhPL0C4gYeqB4zMwbAs3Eyo0zlq7LEMyqKQ4mZdpp5.UMsUfJZGSOROviHftWAxexgjliwDhHK.v5iNqP4EBSypvhekUNLU.v9r7GZJHVPqhlvrcbtxEb71SkIjpH5RqLAt5BoMl.TFo1mZUJweVPyqzslelpjBZE2WudzvtLeUYqWm0rx7VSHForCsNT4X83aD7J3hFOPAGh1Lgm5lTx.MNRnT8pfQGbB9lUnUHunHRT+HEG44tINTJKpLeTIhkTKj3N5X0vb0lxT4lhTOiO91.3vBOiK6oT3.0bqtMmWURFJHrz6O+HCaqakM5n6iMg9z63VarVliugY0dG678QjFj6cuQA.TbdkFMdC+fu5JqjdDK6ko9+6C9kS3lO2CdOTXxtE3cCEQrswSnqZ5KPKyHzIh.XA0be08WpdKjpuLyYMEUrJY7sbSBVnscxXn.nTUfeI1BchcgRG7X0+dzvvPnkuacLOWcfvjgjdm5lmo8be0EM7JObnZw5h3xnuW5TiRc8L.4xGtI1iDe9aNFjKqMoOCvHqfXf4l9GqQqoZgAfPuHbYhUqCPNmQBj5xWCeXga+p5CKbM2cb5GYvthAgfnR0U188MWYmdtYKNrHukiNrxRg97WXq0jzV+8fTZ+8bTuF+nJ+oslFkq5XJSUP8uZ1u9eOU68cbRChJr.+4+1+5YstQefEzfYl0xx145MY5qN11x5B7G0f8FGSFEPOqN5KRWupWqQ77jKd9hzamtvEGjYeOnkditiS5EEouT6p210bq3pK1t5sO17XxsBMhCNEc0lBujBe+toAeeyCiG1oC+bLF8ma0W8IB9QNkcyFV4mlO+BnONU9xY+5G+2+he+C0GmzuPwzYXyGgn.+ev95AekuxXbeamrW1Iw59SJZc+qlGK+P7gs9t6K18p4KDWMAis4Xk0sCOkE.YMJL9tPZh5TlPcoBnbOQnXPOQH2q32qwT9NO1K8.8HoDd0gLJy15HV.dYzYj9YszuT4nexouU+JGk5u9wNZ3RvlCj2L9Rqy7FzWZ8k.JGIFh21zdTHPEqQf++cPLDJOAHILDlRK4+xClmajT9nMKzW8v+A9igYS7YaCylIL+NYO5S8hDelmtsIFK+VJJv4NT8sQqB8jfmIMS5U53zXgFXQP9m44gl662zxpbcV5Fnyx2.cdvMPmUtA5r5MPm2+FnyGbk5fe21GMTJ5qSEABGtsZlEa6zuSt8LV+WzjHKyB

    Works alright (for samples shorter than 65500-whatever samples ofc) and I managed to build some other variations for detecting and adjusting according to BPM, beatslicing etc. Pretty fun for lofi and breakbeats but not really for Hans Zimmer stuff lol.

  • 0 Votes
    32 Posts
    4k Views
    gorangroovesG

    @Dan-Korneff Are you referring to the regular GM hats open/close/foot or the variable hats?
    My plugins utilize both for compatibility.

    The design I came up with for the variable hats is unique to my plugins, and they work with e-drums. The basic principle is that there are 2 notes: one for the hat tip and the other for the edge. You use CC4 to control the openness.

    The way I accomplished that is by having parallel samplers: 6 for the tip and 6 for the edge. Each goes like: tightly closed/ closed/ 25% open/ 50% open/ 75% open/ 100% open. So, by operating CC4, you move between those samplers and mute notes in others that are not within a specified range.

    This system is not 100% compatible with e-drums out of the box. They still need to set all of their tip to one note and all of their edge to another. I made the system that is the most practical, in my opinion, and can work with either e-drums or keyboard controllers, as well as being able to edit things easily with a mouse.

    I'll gladly share the scripts with you if this is the system you want to implement.

  • get/set sample gain and pitch tables

    1
    0 Votes
    1 Posts
    163 Views
    No one has replied
  • ScriptPanel.isTimerRunning()

    1
    0 Votes
    1 Posts
    76 Views
    No one has replied
  • Saturation modulation

    5
    0 Votes
    5 Posts
    185 Views
    d.healeyD

    Looks like the poly shape effect will do what I need.

  • Macro Control for ScriptNode

    14
    0 Votes
    14 Posts
    267 Views
    d.healeyD

    @toxonic

    But won't I need to use an inline function for realtime?

    No, and also your UI script should be deferred (non-realtime) anyway. I think all callback functions (except control callbacks) are non-inline.

    Yeah a loop inside the function is fine. You might want to reverse the order of controls in your array, it seems strange that element 3 is knob 1, but it won't affect the functionality.

38

Online

1.6k

Users

11.1k

Topics

96.7k

Posts