HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. Christoph Hart
    3. Best
    • Profile
    • Following 0
    • Followers 77
    • Topics 102
    • Posts 8,186
    • Groups 2

    Posts

    Recent Best Controversial
    • RE: Finally: Fully customize stock UI elements with a scripted LookAndFeel

      PresetBrowser

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • Sorry for the code dump...

      Bear with me, I somehow got mixed at multiple places and now I had to commit everything to the dev branch, but todays commit history gives serial killer vibes.

      There are a few gems in there that will be documented over the span of the next days:

      • complete rewrite of the profiling suite (basically a extended version of Perfetto with much tighter integration into HISE). Profile your scripts down to each line of code, quickly check the DSP tree for the worst runtime & see event dependencies across different threads (broadcaster events etc).
      • complex sample group manager (the UX is still all over the place and some functions are missing but the basics are there)
      • WebSocket server communication for fast data transfer between web view and HISE. Oh and the Webview should now work on Linux too - David let me know if that is the case and what needs to be done to make it REALLY work.

      I tried to focus on it not breaking stuff (most of the profiling tools can be completely removed with a preprocessor flag which is disabled by default), but if something behaves nasty let me know. When it's dusted off and documented, we'll call this bad boy HISE 4.5.0...

      I suggest we make these things the topics of the next HISE meetup :)

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • 4.0.0 is here

      Alright everybody,

      it was time to finally bump the version and upload new installers. Enjoy

      Link Preview Image
      Release HISE 4.0.0 · christophhart/HISE

      The open source framework for sample based instruments - Release HISE 4.0.0 · christophhart/HISE

      favicon

      GitHub (github.com)

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • New Feature: SuspendOnSilence

      Hi everybody,

      I'm currently profiling a project I'm working on and noticed a rather significant optimization possibility: when there is no signal input, some FX can be suspended until a signal is detected and save some CPU. This might highly improve the idle performance of your plugin, which is important for big DAW sessions.

      This is not a new idea (some DAWs implement this already) and in certain parts of the HISE codebase this is already implemented, but now I refactored it to a general system and also allow DSP networks to set the flag.

      HiseSnippet 1427.3oc2X0raabCDlqrobkSbRSQP+AnG1C8fCfqgTRZZAxAKaYqTgFYK3UwMsWLn2kxhP6RtkKkrUK58donmys9Zza8Qn25w9J32f1gbWIsqzZAaE2DzJCXHNbH42Ly2LbnZIEtznHgDYUp8vPJx51XmgbU2ZcILNpwtHq6faRhTTocrncFFRhhndHKqkdlVfUokQlOWr0NDeB2kNQDBcjf4ReNKfolHsU0uh46Wm3QayBRo8iq1vUvqI7E8A7rDtLJj31ibJcehVsBXjUw87XJgzQQTzHPmcDdCc5JNiGq+QrH1I9T8fJHGXihEip0k460ZjsFgPV3VSr7khs76iax7XikOwC7tlIrmrhz9.qByCRUtFPxJEjVNFR2C63JYgpIynwysvM3P.oCAb0ogRrtHqeGWS.JvUaFP5QqKgAiWv5Oob4Mrg+8fm1oO2UwDbaAeeghd.e8Gr5OrZoU+wUsmdpNcxcN8wHE99TYtSqitx4sv048CNgJ2vd.wuOcrhf4m0mV7p4Scis5TJJ3M3L0Agzjw0E9dZek96yFAPItM3aunwtDEQGTRjA5ERkJlFNV6RG.r53PTI7tzndJQHvqmI9ALGgWeehJKcRm2jLA3OxDC0AJdDSMLcd00fiUdtbrqJDuGtES41MeLVHGLBdp+MvXRl4Z385zg5pl.vkw0e4hlFV9ZmFtZRZHbl5C+1ICsq+xJ4l.9S3Ij8PIMjHosEs7ICWOhDD5SODv3F1m3Kb64v9d5rYHgwPXGsFq61kv4T+nEIQp3MTwIzgh9JF+zlDkjcNT9b+9ANPYZWZsDzAxrJnyghGWVOVyKbnbOyf+F9jLYE8XqjIqLZxToe6SUmIj8LgijuirVI12GYbxG247Jns88EmUSDDxRXoPLvHqkveXXWAm4pEEqwHjtcfnObHIv8KIQsILeMs1oeDTnv6.tCnr4ZLqBGQkQlMdEb4Mg+.Z99BOXph0ItficXKhpqNeQW6AHmT4ltiIoYvZZdhdKFcMWrWBfXf1z0WxoiOsHR3NOnlstbSAqkRU9IlgpGA4eEhOmFQGom0k3iNRy.zKBoOkXOnAwXspqg6vN+QO7XC2CkwF9fT1PZkt5.+0ClERAy6iiBDBUWp2wgi7DYQ6GaPKP82LGMuwfbQcwQ5HvtF94f2gHsODxhQnIUGaSjmRUQIWWvotwjQiE0vSuMJBuKZbPUKaEb7thREp0vYrQXsRSFO4jmTlsI47ojcwVNJZntNRZ8b5QOK1gkVSsMM5fmYq2tuRD.0IL03Qo.Rwo.xu9pW8aaMCPp9KUmBHF8tbfbWriIzAkUL8ANEf9lpyCCWCmwEyACkv6wIPEPOzLaDJEe7tXw.H.YJdW4ImmkJ9QoRbxp1apTmzY3IbsLH7VXHt1cSyDWCLUHMlxxSslOO8hYoGnpUuQ3oWr0kvSmFiWNfKFu86JYCnna9jrwK8a8d5ecvO+maktpvkWjH2Zd4WxXGgnW.wb+3qcmp2Idxagc.Br4oel6tdeyX6ulLfZ+LJPs0MHVYNu96Otpu9K7J+5uCbUvw2VR3QghnrddZ.qsfqswIBeQD7XG52cntlbZ40DDYtScwV0AiL203PT8klh6i5WHUqtKksqpkuZcUksq+T5mSSnK+V34o2LOc3s3qaxz5doQXzgoKGuGe.0GRLLX78fLgNj99pQRyRraJ3hQcONIpeHEZ88zSoYKTkmAssRQfFmFK49UOj5SIoYveR03VILsWrX9hq+ulPtwqODGCWac1n8+ceU5R+u9UouQd+0ahyHf3JEGmz6tlm9NFIfcyM+HekvM0isqfFDeMJV+vKT.Tg6XWWsK9SgBl4ulGt.q4QKvZd7BrlOaAVySVf074KvZ9h4tF8kKIsboS4.As1yzxgk0ndmAlN5eLgWzyA
      

      This is a simple overdrive going into a 16x oversample node. With the new SuspendOnSilence flag enabled, the CPU usage goes down to literally 0% if there is no signal present. You can try to disable the flag to check the effect (it's in the DspNetwork properties, next to the AllowCompilation and HasTail properties. The flag will be passed to the node compilation, so the HardcodedFX will inherit the behaviour of the network.

      Be aware that this flag should not be used if your algorithm produces any sound from silence (eg. a test tone generator or a background noise player), because it will obviously mute the output when the input is silent.

      You can also see the suspend state in the Module Tree, if a FX is suspended, it will show a S over the peak meters like this:

      dac35fca-916f-4a69-80b7-8f129037138b-image.png

      I've tested it rather thorougly and tried to cater in all use cases (polyphonic FX will also be suspended if the voice is not producing any sound), but please let me know if you find any issues.

      There's also a preprocessor macro in the hi_dsp module (HISE_SUSPENSION_TAIL_MS) which defines the time that the processing stays active after the first silence detection (the silence detection is pretty sensitive, so it looks for a -90dB threshhold), if you prefer a different default value, let me know.

      In my project it yields a ~40% CPU improvement in idle mode and ~10% CPU improvement when in usage (because some channels of the plugin are not always busy). I also improved the performance of reading the peak values of routing matrixes, so this might also be a contributing factor though...

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • Faust is here...

      Hi everybody,

      I'm very thrilled to announce that the Faust integration is merged into the develop branch and ready to test.

      The implementation of the Faust integration was a Google Summer of Code project that I was mentoring together with Stéphane Letz, @sletz from the GRAME Research Lab. The project was carried out by @etXzat which I would like to introduce with a warm welcome and I'm sure he's happy to answer some questions about the process or anything Faust related as he knows much more about the actual language than I do.

      The Faust language allows you to write DSP algorithms using a very concise language. It's been around for quite some time and has a lively community of developers and a vast library of existing DSP algorithms that I know all of you are dying to play around with.

      Bildschirmfoto 2022-10-11 um 23.12.59.png

      The current state of the Faust integration allows the full production cycle of using Faust within a HISE project:

      • add the core.faust node
      • write / import Faust code using the LLVM Jit compiler. Parameters will be parsed automatically and show up as node parameters that can be connected / modulated like any other parameter
      • export faust code as C++ nodes (a DSP network with a faust node will create a C++ class from the faust node and use the C++ class instead when you export the network to the DLL)
      • reload them as HardcodedFX modules or nodes in scriptnode

      @etXzat has written a extensive blog post about the integration process as well as the build instructions and a quick getting started guide:

      GSoC: Final Submission – ResonantBytes

      favicon

      (resonant-bytes.de)

      By default Faust is disabled in HISE because it requires a few non-trivial configuration steps and let's be honest, HISE isn't the most easiest software to get started with so there's no need to make it even harder...

      So if you want to dive into Faust development in HISE, make sure to read the build instructions on the blog post and let us know if there are any roadblocks (we've been testing it on all three platforms the last week but I wouldn't be too surprised if we missed some build issues).

      Also we would like to start the discussion on what steps should be next as there are quite a few features that we couldn't realize within the projects timeframe but hopefully will be added over the next months:

      • support for MIDI and polyphony (at the moment it's only possible to use Faust for audio effects)
      • enhanced IDE features (editing within HISE, SVG path diagram preview, etc).
      • support for complex data communication (tables / slider packs / audio files in Faust)

      I've also added a new category in the HISE forum for anything faust related, so that this topic will not explode with all kinds of different questions.

      posted in Faust Development
      Christoph HartC
      Christoph Hart
    • Who is back? The master branch is back.

      After what might be the single most offensive violation of the git flow branching model in the history of software development, I finally found the motivation to merge the develop branch back into the master branch, which had a pre-pandemic state.

      Also from now on, I vow to respect the traditions of software development:

      • keep the master branch stable and build at all times so it can be a valid entry point for HISE newbies.
      • use the develop branch for testing new features / daily development work.
      • whenever I merge the develop branch into the master branch, I'll run a CI test that ensures that it builds HISE and exports a test project on macOS / windows so that @ulrik can stop being my human build bot for macOS and notify my that I broke macOS again... I will also try to bump the version numbers with each merge to master.

      I'll expect the frequency of master releases to be a few weeks to months so the general advice that David healey gave in all videos since 2019 to use the develop branch for actual development stays valid.

      Oh and I've thrown in VS2022 support so you don't need to crawl the web for an ancient version of 2017 anymore...

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • Updated Build instructions

      So time went on and I simplified the build process for Faust a bit so I thought I'll post the build instructions (or the link to the instructions) here and update the post once it changes:

      Windows

      No Projucer modifications necessary!

      • Download and install Faust to the default path (C:\Program Files\Faust). The latest version is available here: https://github.com/grame-cncm/faust/releases
      • Open projects/standalone/HISE Standalone.jucer and click on Save and Open in IDE
      • Change the build configuration in Visual Studio to either Debug with Faust or Release with Faust. This can be done with a drop down menu in the toolbar (which initially says Debug).
      • Compile this configuration. HISE will have a text label in the top bar indicating that Faust is enabled.

      macOS

      See here: https://github.com/christophhart/HISE/tree/develop/tools/faust

      Linux

      See here:
      https://resonant-bytes.de/blog/gsoc-final-submission/

      Then you just need to add the directory of the Faust installation to your HISE settings under FaustPath so that it can find the Faust libraries and you're good to go.

      I'll lock this topic and pin it to the top now.

      posted in Faust Development
      Christoph HartC
      Christoph Hart
    • New feature: Code templates

      What's the best way to return to coding after a vacation break? Yes, adding a fun feature that is easy on the brain cells. So here I present to you:

      Code snippet templates

      These extend the autocomplete items with templates of commonly used code snippets. Check out how it creates a CSS definition for a button LAF within seconds:

      snippets.gif

      These are the features:

      • use the stock templates that come with HISE or add your own templates in a JSON file for the ultimate customization
      • use the preselect range feature to create multiple selections after inserting the template

      Docs:

      Link Preview Image
      HISE | Docs

      favicon

      (docs.hise.audio)

      Have fun! Also I'm happy to accept snippets to be added to the default list, so post them if you find them useful!

      posted in Feature Requests
      Christoph HartC
      Christoph Hart
    • RE: Ability to move sampler / synth / container modules around

      Alright guys, here we go:

      Link Preview Image
      - added drag&drop of modules within the patch browser! · christophhart/HISE@888851e

      The open source framework for sample based instruments - - added drag&drop of modules within the patch browser! · christophhart/HISE@888851e

      favicon

      GitHub (github.com)

      I tried to cover a few common edge cases, but I'm sure there's lots to discover when doing monkey testing, so let me know if you find glitches...

      drag.gif

      posted in Feature Requests
      Christoph HartC
      Christoph Hart
    • Tip of the day: Connection learn mode

      Hi everybody,

      not sure if that feature made it to anybody's radar, but there is a quick connection mode that let's you connect parameters to your script controls with a single click and I've seen a lot of videos / screencasts which are missing out on that simple function so I'm trying to raise awareness for this awesome helper tool...

      I've updated the UX to make it a bit more approachable, so now you just need to right click a component - either in the interface editor or in the script component list and choose Enable Connection Learn. Then you need to click on any parameter (either on the module editor interface or a macro parameter in a scriptnode network and it will automatically assign the UI element to control this parameter. It does this by setting all relevant properties (processorId / parameterId as well as the parameter range) so this will heavily speed up the process if you have to connect multiple elements.

      connect.gif

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • RE: Finally: Fully customize stock UI elements with a scripted LookAndFeel

      SettingsWindows

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • RE: MIDI FX ?

      Alright guys, more than 6 upvotes and I‘ll look into it ;)

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • RE: Feature Request: bind save xml to ctrl + s

      OK everybody, vote is out: upvote this if you want ctrl+S to save the XML, downvote to leave it like that.

      posted in Feature Requests
      Christoph HartC
      Christoph Hart
    • The definitive feature request & bug fix roadmap

      Hi everybody,

      this thread is the next attempt of organizing bug reports & feature requests. In order to keep it clean, I would suggest a few rules:

      1. Every post must be a distinctive bug report / feature request. If you want to emphasize a request / feature, upvote it or downvote it if you think it's a bad idea (but please do not downvote other stuff in order to bump your personal favorite). Any discussion about a certain bug / feature should be a dedicated thread (you can add a link to the discussion thread in the post).
      2. When I find the time to implement it, I'll sort the list in my head based on the number of upvotes and feasibility. If it's implemented, I'll edit the post with a link to the commit and strike it through.
      3. A feature request that is not feasible or not popular enough (number of upvotes less than ~5) will be removed after a grace period of a few days, so anything that survives this process can be considered to be implemented at some point. If you find your post to be deleted, please do not repost it.

      Normally I don't to any redacting / moderating, but in this thread I try to keep it clean, so don't take it personally if I delete any post in here that violates the rules above.

      posted in Feature Requests
      Christoph HartC
      Christoph Hart
    • RE: What is the dynamic container

      @HISEnberg yes it is. I didn't want to spoil anything but you guys are sharp like a hawk!

      It's basically a system to dynamically create UI components. It's particularly tailored towards building a UI for dynamic FX chains which is super tedious with the current feature set.

      I'll post more when it's ready.

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • RE: Happy Holidays..

      Yes Merry Christmas everybody.

      I left a little present under the tree if you're getting bored over the holidays:

      Link Preview Image
      - added support for RNBO patches (export MAX patches as C++ into scri… · christophhart/HISE@b9c5096

      The open source framework for sample based instruments - - added support for RNBO patches (export MAX patches as C++ into scri… · christophhart/HISE@b9c5096

      favicon

      GitHub (github.com)

      Link Preview Image
      RNBO

      RNBO is a new toolchain for the rapid, interactive creation of musical applications that combines textual and visual programming with code generation targeting C++ and JavaScript.

      favicon

      (rnbo.cycling74.com)

      How to use RNBO with HISE:

      Create an export an RNBO patch

      Export your patch with these settings:

      • Output directory: {PROJECT_FOLDER}/DspNetwork/ThirdParty/src
      • ExportName: same as patch_name (must be unique within your HISE project and a valid C++ identifier - no whitespace, no -).
      • ClassName: same as patch_name
      • Polyphony settings: "Disabled" (this must be disabled, but you can enable the HISE polyphony in the next step if you want to play it polyphonically)

      Create the HISE template in the ThirdParty Files

      • Tools -> Create Template for RNBO Patch
      • Select the cpp file from the drop down
      • Adjust the configuration (channel count, polyphony)
      • Press OK, it will create a file in the ThirdParty folder
      • Export the DLL and restart HISE
      • Use the RNBO patch like any other third party C++ node (hardcoded FX / scriptnode using project.)

      This is a rather basic implementation, but polyphony, MIDI input and multiple channel count is supported. The following features might be added over time:

      • automatic tempo_syncing
      • modulation output, ringbuffer for displaying stuff
      • external data handling for Tables / SliderPacks / AudioFiles
      posted in General Questions
      Christoph HartC
      Christoph Hart
    • RE: Scriptnode is fun!

      Alright, I'm currently trying to improve the user friendliness of the export process to make it even more fun. Let's be honest, HISE will never win the "Most easiest app to use"-award, but this is ridiculous even for my low standards :)

      So this is what I've done so far:

      1. You don't need the snex_workbench anymore to compile the networks - there's a item in the Export menu in HISE that opens the same dialogue. It requires you to have at least one DSP network in your signal chain when exporting, but there's an error message that will tell you this.
      2. There's a command-line option to do that process, so you can call HISE.exe compile_networks -c:Debug and it should do everything for you.
      3. It will show which nodes are about to be compiled in the export dialog. After the compilation, you can query the state of the loaded DLL with Tools -> Show DSP Network DLL Info.
      4. You should not rely on the workbench like @dustbro suggested anymore - if you choose "Create a network file" in the scriptnode welcome screen, it should create a file-based network that you can export as DLL (just remember to save the network using the save button before hitting the DLL export).
      5. I am currently writing unit tests for scriptnode in this repository. This includes also a few test nodes that are compiled and tested against the interpreted node. All the nodes here are supposed to be compileable on macOS and Windows (at least with my setup). If you encounter a DspNetwork that throws a compilation error (or crashes on loading), please post it as issue in this repo, then I will create a test file from it and make sure that it works.
      posted in General Questions
      Christoph HartC
      Christoph Hart
    • RE: I'll just leave this here...

      Are you on Windows or mac?

      This shader stuff is beyond awesome. Check out this 3D keyboard prototype:

      3dkeyboard.gif

      posted in General Questions
      Christoph HartC
      Christoph Hart
    • RE: Merry Christmas

      Yes Merry Christmas everybody. It's nice to see the community grow and the increasing amount of christmas wishes each year is a good indicator - a few years ago it was just David and me :)

      I'll be on standby mode for another few weeks (my yearly theatre production), but then we'll be full force heading towards HISE 3.0..

      posted in General Questions
      Christoph HartC
      Christoph Hart