Categories

  • Let's discuss the latest AI tech and how it influences your life as a HISE developer.

    4 Topics
    93 Posts
    David HealeyD

    Someone just sent me a link to this free AI course from Anthropic https://anthropic.skilljar.com/

  • General questions and announcements about HISE

    8k Topics
    73k Posts
    V

    Hi all,

    I’ve been playing around with this in my free time and making some progress.

    So far I’ve populated a couple of samplers with instruments, just to test different mic counts: a kick with 7 mics and a tom with 5. I was able to get the multimic merge working, and so far that part behaves well. I also added simple per-mic gain controls in the sampler FX, which is also working fine.

    For routing, I’m currently using a container. Based on what I read in the forum and the docs, I added Routing Matrix FX modules in the container, one for each mic.

    Here’s a snippet:

    HiseSnippet 3290.3oc6c0sTaijEVFP.1AHYxlsp8loJsY2KLa.hk7evvxDiARBUvXVLI6jJ0TTxRsgdQVxkjLCraMUMuFyc6ivd6dWdjl2fc6V+X2pssvVXL1P6aBce59zmyQm9q++jiLMT.VVFlbwRbx0M.bwVfux051muy4xPct82Emgkl9oW.sOMkDWwqaHaYAT4hEa52gKQr3yv4762dSQYMYcEP6r339jATAb.rNztctGU3CPMs2JqBNAVmnzYJruhg9NFZFMQRyz7o3ZHqbg7YfCkwEaJdt2KacNWr+Be5p0xkQQLeU47RaTcib41HqZ5ZpxRoAJUqJKAPjyjsVNtXytmJz1vrhsrMvhK1LEMTutx4F+jtaC7InErpF.mPjqBpkcy9sFZpXUDmK2NmC0TOx2LYwgX5QsMZS6ZzdAeInJrU9sMdOygfP6ZPZ.iMUPwa5.hmHo3khP75hHEiPjlwUj9F9JJlvF1sofkmmvuutMvrlL56Don3VVtoVHA+NFnRnauVc4K.u0DknUMRtdpTqHjIUpk2LQBGuj0TA0.l6HqoUE8sxJosYS.l3qe8G1emOHTZ+cp7cBhas6mObEAos1oL5eRu0Ie7vC26.Di1p76WQH6VGWtboUDxs0m163hBUde4iOYEg7toNn7guKAxqvxV3vOV5TLSOEyTgsDxuo.pYNdaTybR4RzMElyo83bl.bNaW4LlO9bNKRA7HcF563a+ATde4G2zKqKzqhc7CjWUa8RMsAd44q8qNz9knlgoPRHh+o1T.J7WCZLPY8pWs7+JQ7W+5+gfsgvE.PCAcTmFKAz2WCEHx6RESnNTQHYIwUDJIsh.vVYs0Va4DwuT1DS4vl0qBLQMA7UhHSah3t59ZMZZcdR2O1mAr2qVMfhcxWV6pO.Ut.aHNsDT4kBupMKVF6.D2yL4VceWJDC1wndCCcThjuDUjPYhOO9B7GWyBWScaSCMemsjF5evktGgk2LdheNQBemh6XqeKGFBqeXF9+DxxCUv1dnxPv5er7Pv5GJSZY8C3q8pA6aQBntFTGHTqothMzPWftfIU7knUDtTVCgdfrjZFJxZBPcUvUHKhut3jtbs10.Kjtlou3PyQx1111DVE0YLYPRXV32Da5JaXWkhmbXEgS1qxINoPnvNcl+NASCb+YbGFQmOf3d7nrZzz1qKO96FpjXGX720SLJ4BJzcisWIcKE1bK9RjTzQ86tosnK5Bt.tXq8TLkadkP0lV2fjVDUhaTPQEp6xIhPnhIhtqT1t0MqiqtC6PMbGdyDjQslPharhGizOn9YkjQepuht93l1yrfLXcwAjvb1UuOT0ayPrp5ONYRmhf5+mZsrXG73HZ91Eamuedk368KwO2VXPeV5srfrYcUTBz.3B0I+6focJTPqx5HtkP.8iT0LA0MtDTAnqh9XpCbpdRD1Dd389proWQPD2IzozvZB9sT73jUUVUs6sQb5FoyR52B+LVUCUSwVmvUzfBfTOUxfMe59RA6j2cS45BmwJFg+vgF1fx5IWNApMPTDnIUqVWo40YTCX1Ux34YaFVESp6.66644WPzbICNAU9dOAUx4Oq3BsPTPC880g1ka.z60rp47viPSlcIOoBUTamoxtj2TYqnAUAlbPzLVeNO0rGD4bjcxEevEE9HQymO+0HwmzCI9jYHwmrCI9jaHwm7C.eJ1z11P2gOufuygRo4zu8l9gS+N9NFqa.XDspQNUpaiqHIejFR7I8PhOYFR7IaW3yG2eWYaY7JY8vAPXCM.l1PLrSrcAWBU.tqqMN+t.qKrMZvEapVSbAsnb21eQ+U8JqCzbZ944c9aQtqZ2feegqIa8eBpZedqLJXT3b.7ryI1xhqKDKAQasvf.KcE4NbPzr6Vntgpm9n.qhj15jamxm+Zc4qHERKaPiJv+ouY6e+q+5+8MVMqUChJEOufZQT8UU0.GYXAwn6sqqzWsAWYiKEZwwbMjMQJAg1zx.wEMUTpWp3u7o6AUbmx2ApX5dphxibUbdd28OoO0xEGjgZ5gV90yF4Z4L7keOGzFT2e+.WfWLuTlLqKkYiTCeUOaO6lpOxU8Y4waa0HT4y0KkWv7dv61cu5Fgpe9do9EZdeo9GbaU+3C1DnHzBURm+8K36RVZ68OjZbxe4u0w3jYJzawycmhCtqA9KFfn3Cz705gbijL+gCJ9wJ2NwtKVU+4Xbfb0Vywv4u68f8+4VFR7NoQ70UB+4MijnXp0EkDywU8r1e0yHkecwMRkZ8TAbGhymMUZQQo78ouvMMyHxwuQ83G3YFMa+OlZvYIOoLyHoAAYI3D3mzGPMxpd5G.CnFYkOyChATir5m8Aw.pRCDzuzMB8mf2+rJuqg+QRdmGG7y3KYn1TS1N3oSi+l4Q.a+HORX7w9pirqWStgHCsirteEwug+Hnsx4cWFmpKxHG2chL5cP+Kx6dpEsEvY3e6Ob2bp9jM+783xY7T9KPSIBOsJTN.ygw8ynQee+LhM8cw0qfer65Uv5N8Pn6Tr45r8iyiOKQ.pIws8h7DGXSPgX59VHDC2FD3rK4h8GOrY8JnNTJ.jIPGAdiOkkXOCuyptoSgS++P+vmLVqDdDEIIJRQTBmdJDmvDcRv0lsowom1inShXsIlgjsYnXaVRhYoHlijXNJh4IIlmh35jDWmh3FjD2f1HDvDI1gMJnQh1JIJEfrDM4zAHmllb.SkHssRLfwpcJtAwST5ggmnOQZKb.CLs80wfNimaZFJeXGyIuGwrT9vLOwgumX5G6dhQGSbVO2zbT9vNNey4QLOkOLySrWdhYXdhi9Qmm2yMccJeXGmu3dD2fxG9gtmXVlm3D07DS34m5lhvK1026I9jEo8iG68Dyw7DeDshkE7cToWYmqu2h9joWa2nvSLOySjs149DSbIeGU5U24568TexsVeGom3255I9b9J1l.45HeiJx0anAL8bIsbSg8KGc6LZB9Z0jqplKeVjnBzLjUINBC7g+UnXyZ0.lAy8+TvoE2ttQS8.MomFcLnAP1tj6wm3Qb9BGe76LMZ1ftVBEb1kuSLkUt.YTHU0x5.TeOaRUcGSCKqZHsxgWVjjNpo4YXSV6bNFbIvzJXdn9gj8.wKm4iV.b+cnhem01k1oURchrSe9o3cSKRkVhJcZpzYnRmkJcNpz4am10fVRtA1GIty9meZ85cbWmms+foP7w4PWHJYQ3YsZC2bl3dPgS.63cf27XbeYrBDa32S+RTGOTNXY7476BpI2Ty1O2fasaICciFmanCUB5libaO6LfIor2UEZaaamaxheNunvw.MfrEf7H.O.pCjMC16cfrEhC76+rqeu9C7thq.F.SXx8jJl9wyIUz9j+bbseWa6Sv2foXHivwwsKPSNfs5uG3l8v84BcYLv8QcXLsOxPS1j1ROrlSWrY5a2AmWc6XsKKFoAYlG2ERmO8i2B4yv2jg6IQjZUFeaWWkwRTqxfyadpccUFw7mDKaUFitUYvEALzvhuEe9qLLTFFJCC8tCCcHcKGnwPCbKGXXn20XnoYXnLLTFF5DGF5P594PigF394vvP6OLzLLLTFFJCC8QDF5P5lkQigF3lk83BCMKCCkggxvPYXnit6DIMFZf6D4jHFZNFFJCCkggxvPmLtMucfgF717d+fglmggxvPYXnLLzGC2C8NvPCdOzowPCyUaId2KQo.xywzdLruvB7N2rTA78AdruevTgc+TlNr6mxLgc1p7gc1pyF14BLWXmKv7gsmVwCaOsRD15wdRnqGagvmKwhgOWhkBuevS6refh+mKtXy482Nw.0XSCzwWVYmHxfF3RfVfPhiW3uYd9RhqhiZUbQptRqhCTlQntOguT5U8h.kQn5ywWJypkeeTpZb9RYW0IRNEMwN2p3PAzpUhX0y6V8Ch3yPI5WPrne4Fh9AyE8MU9VrgH2tIyOvCDExyPoiGDUvmgRuWJ.cv4A+.LXAmGVv4gEbdtoq7Ne+7.CwQYNVv4gcs0t+ez09dhrfyCK37Ld3IxBNOrfyy3gmHK37vBNOiGdhrfyCK37LR7D6y.QA1ujEHJFYAhB9Ip.QA1FwBDEOlBDERr.QAKPTLwrqbgcgWB9erKr.QA6BuvtvKC6C5+220UYjfEHJ5iUYvEAbLIFNFCGigicOgiwBFDCKbrzLbLFNFCGahCG6gb.YHJ3XYX3XLbLFN1iHbrw+fhPTvwxxvwX3XLbLFN1XTfIf8nrlr1q1GxuIDxGFE+n8gQMG9gQE4WmT5ayqSJys60Ik8185jX2MoGX2WyQ7aTi4ELV5ETWVwz3TECcaSCG7z4cxAAqnK6buw3KgSKHxcorVy.KonNTEdphRPV0QEkhZESG0JlIpULaTqXtnVw7QshqeyUDe2q1tosQc2YcywU5n8bGwH1dsFwXZt+OHGS6jI

    I’ve run into a couple of questions / obstacles with the Routing Matrix approach:

    At first I thought I could access it through Synth.getEffect(), but that didn’t work. After searching the forum, I found that Synth.getRoutingMatrix() seems to be the correct method. Is that expected, or am I misunderstanding how Routing Matrix modules should be accessed?

    When I use removeConnection() or removeSendConnection(), the signal seems to get routed back to channels 0/1 automatically, and .clear() doesn’t seem to do anything. Is that expected behaviour?

    In this example, I added two buttons just for the first kick mic:

    one connects / disconnects that mic to the main bus the other connects / disconnects it to its own aux bus

    I’m not fully sure this is actually the best feature design. It might make more sense to have a single "THRU" button for the whole kit that mutes / unmutes the main output using send fxs, instead of handling everything with Routing Matrix instances. But I’m also using this project as a learning exercise, so I’m experimenting a bit to understand the options better.

    Overall, does this structure and routing approach make sense?

    PS:

    The code is still pretty rough, I’m just testing ideas quickly for now. In this example, the rack tom is not routed properly. I still haven’t compiled HISE for multi-output or exported a VST3 to test in the DAW, so before going further I’d like to understand what the best routing approach would be.

    Thanks again!

  • Scripting related questions and answers

    2k Topics
    16k Posts
    O

    I'm currently using a transportHandler coupled with the .setOnGridChange to create a FX plugin that sequences different effect settings depending on the measure in the user's DAW. I've noticed odd behavior with the clock.

    If you loop measures 1 through 4, the clock would read these grid points correctly on the first pass. After the first loop, the clock no longer recognizes being positioned in the measure 1, and instead assumes the position of measure 5. Therefore the clock reads:

    [ 1 2 3 4 ] > [ 5 2 3 4 ] > [ 5 2 3 4 ] > etc

    While looping your DAW, the clock acknowledges the loop END point to trigger the Grid Change instead of the START point.

    Is there a way to get the clock to trigger on the loop START point? Or is there some other way to double check the playback position?

  • To share HiseSnippets, Interface Elements, GUI, UI/UX, Panel LAF etc..

    196 Topics
    2k Posts
    C

    I opened a thread regarding the problem I mentioned above:

    https://forum.hise.audio/topic/14273/clock-synced-arpeggiator-daw-sync-makes-first-tick-off-grid

    It contains videos and snippets; I don't know if anyone has managed to fix this yet.

  • All about ScriptNode DSP nodes, patches, SNEX and recipes.

    358 Topics
    2k Posts
    D

    @Christoph-Hart That was totally my fault again. It turned out to be the default envelope with a 5 ms attack 🤦♂ . I literally spent a few days searching the forum and trying different solutions.

  • A subforum for discussing Faust development within HISE

    114 Topics
    940 Posts
    S

    @PV3679 I solved it on my end by doing 2 steps.

    Renaming the Faust modules parameters to something less generic (So FXslot1_Cutoff instead of simply 'cutoff'. It is my understanding that Faust modules dont like names that are re-used. I compiled ONLY the Faust module (so got rid of other stuff and compiled).

    After that the knobs of the Faust module were working 🤷🏻♂

  • If you need a certain feature, post it here.
    626 Topics
    5k Posts
    P

    @David-Healey thanks for replying. I will check out the sites that you mentioned.

  • Develop better software through collaboration and shared knowledge. Not just about coding —> covering the entire journey, from development to launching and promoting plugins or software.

    148 Topics
    1k Posts
    N

    @David-Healey ill search that tysm🫡😊

  • If you encounter any bug, post it here.
    2k Topics
    12k Posts
    HISEnbergH

    Just a little bump to this topic. I believe test begins to run, but the impulse doesn't pass through and the Alert Window fails to show up reporting the latency samples.

  • Post your example snippets that you want to add to the official HISE snippet database here. We'll revise it, upload it to the repo and delete the post when finished.

    22 Topics
    135 Posts
  • Everything related to the documentation (corrections, additions etc.) can be posted here
    71 Topics
    481 Posts
    Christoph HartC

    @username1234 this is a thing that I vibecoded last week - it‘s super fresh but yes once that is tested a bit it will definitely be recommended as the preferred way of getting hise setup for development. Just be a bit more patient my friend.

  • Collection of Blog Entries

    81 Topics
    770 Posts
    No new posts.
  • The nerdy place for discussing the C++ framework
    184 Topics
    1k Posts
    HISEnbergH

    @Allen Ah thanks for clarifying. I believe this should work the same for RNBO node as any other C++ node. You need to add these flags to your projects Extra Definitions:

    NUM_HARDCODED_FX_MODS=4 //or however many slots you need NUM_HARDCODED_POLY_FX_MODS=4

    It is possibly you may need to first add that to HISE's extra pre processor definitions in projucer first and recompile HISE, then also add those to your project (so it works in the compiled plugin).

    The documentation about this is a bit hard to find. There's also a forum post about it here.

    Here is a spreadsheet of the different HISE flags you can use (it needs to merge this into the documentation somewhere).

    Just for some extra context this is straight from the docs:

    // number of modulation slots for Script FX HISE_NUM_SCRIPTNODE_FX_MODS=0 // number of modulation slots for Polyphonic Script FX HISE_NUM_POLYPHONIC_SCRIPTNODE_FX_MODS=0 // number of modulation slots for Scriptnode Synthesisers HISE_NUM_SCRIPTNODE_SYNTH_MODS=2 // If you plan to compile the DSP network to a C++ node // (which is possible with this node since HISE 5.0), you will // also need to set the corresponding preprocessor variables // for the hardcoded modules: // number of modulation slots for Hardcoded FX modules NUM_HARDCODED_FX_MODS=0 // number of modulation slots for Hardcoded Polyphonic FX NUM_HARDCODED_POLY_FX_MODS=0 // number of modulation slots for Hardcoded Synthesiser NUM_HARDCODED_SYNTH_MODS=2

24

Online

2.2k

Users

13.5k

Topics

117.2k

Posts