• Mono plugin with side-chain

    Feature Requests
    11
    0 Votes
    11 Posts
    70 Views
    ustkU

    Claude said:

    Main bus Sidechain Host buffer SC lands at Internal scratch mono mono 2 ch buf 1 [m0][m0][sc0][sc0] mono stereo 3 ch buf 1–2 [m0][m0][scL][scR] stereo mono 3 ch buf 2 [L][R][sc0][sc0] stereo stereo 4 ch buf 2–3 [L][R][scL][scR] either none — — ch2/3 silent

    So a mono-track instance sidechained from a stereo source works fine: the mono main is duplicated across ch0/1 (HISE renders internally in stereo regardless) and only channel 0 is copied back out, while the stereo sidechain keeps its L/R on ch2/3. A mono sidechain gets duplicated. The network always sees one fixed layout — no mode-dependent logic anywhere.

    Stereo sidechain detection is genuine, not left-channel-only. envelope_follower::processFrame takes max(abs(s)) across all channels of the frame, so it detects the louder of L/R.

    I say:
    All good 👍

  • How to move the position of the console tab?

    Newbie League
    4
    0 Votes
    4 Posts
    21 Views
    David HealeyD

    @observantsound Aha ok, I didn't realise how old that video was. The basic layout controls are the same though.

    @observantsound said in How to move the position of the console tab?:

    When I do Show Custom Workspace, then it appears instead of the UI editor. But Code Editor and Module Tree tabs are still there.

    The custom workspace always shows at the right side of the screen. You need to readd the interface designer and anything else you want.

    Here's mine which you can load up using the Load from JSON option

    { "Type": "HorizontalTile", "Title": "Custom Workspace", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "CustomWorkspace", "Size": -0.5, "Folded": -1, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "Content": [ { "Type": "HorizontalTile", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": -1, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "Content": [ { "Type": "Tabs", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.7089258744251568, "Folded": -1, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "Content": [ { "Type": "VerticalTile", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "Content": [ { "Type": "ScriptComponentList", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.21505048318491, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "ProcessorId": "Interface", "Index": 0, "FollowWorkspace": false, "Openess": true }, { "Type": "ScriptContent", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.9208939579940479, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "ProcessorId": "Interface", "Index": 0, "FollowWorkspace": false, "EditMode": true }, { "Type": "InterfacePropertyEditor", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.2599186681484935, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "ProcessorId": "Interface", "Index": 0, "FollowWorkspace": false } ] }, { "Type": "ScriptEditor", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "ProcessorId": "Interface", "Index": 15, "FollowWorkspace": false, "ScriptFile": "Expansions.js" }, { "Type": "ScriptEditor", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "ProcessorId": "Interface", "Index": 28, "FollowWorkspace": false, "ScriptFile": "RhapsodyFramework/Core/includes/UserSettings.js" }, { "Type": "ScriptEditor", "Title": "onInit", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "Interface", "Index": 0, "FollowWorkspace": false, "ScriptFile": "RhapsodyFramework/Core/includes/Fonts.js" }, { "Type": "VerticalTile", "Title": "Dual Sampler", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "Content": [ { "Type": "HorizontalTile", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": -1, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "Content": [ { "Type": "GlobalConnectorStreamingSampler", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": 18.0, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false }, { "Type": "SampleEditor", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.54359197907585, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false }, { "Type": "SampleMapEditor", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.45640802092415, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false } ] }, { "Type": "HorizontalTile", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": -1, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "Content": [ { "Type": "GlobalConnectorStreamingSampler", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": 18.0, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false }, { "Type": "SampleEditor", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5435471100554236, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false }, { "Type": "SampleMapEditor", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.4564528899445764, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false } ] } ] }, { "Type": "HorizontalTile", "Title": "Sampler", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "Content": [ { "Type": "GlobalConnectorStreamingSampler", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": 18.0, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false }, { "Type": "SampleEditor", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.7952971198946208, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false }, { "Type": "VerticalTile", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.204702880105379, "Folded": -1, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "Content": [ { "Type": "SampleMapEditor", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.7360655737704918, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false }, { "Type": "SamplerTable", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.2639344262295082, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "", "Index": -1, "FollowWorkspace": false } ] } ] }, { "Type": "Console", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { } } ], "CurrentTab": 0, "CycleKeyPress": "" }, { "Type": "Tabs", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.2920741255748428, "Folded": -1, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "Content": [ { "Type": "ScriptEditor", "Title": "onInit", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "ProcessorId": "Interface", "Index": 0, "FollowWorkspace": false, "ScriptFile": "" }, { "Type": "ServerController", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1 }, "ColourData": { }, "ProcessorId": "Interface", "Index": 0, "FollowWorkspace": false }, { "Type": "DspNetworkGraph", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "Interface", "Index": 0, "FollowWorkspace": false }, { "Type": "ScriptBroadcasterMap", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "Interface", "Index": 0, "FollowWorkspace": false, "Active": false }, { "Type": "ScriptContent", "StyleData": { }, "Font": "", "FontSize": 16.0, "LayoutData": { "ID": "anonymous", "Size": -0.5, "Folded": 0, "Visible": true, "ForceFoldButton": 0, "ForceShowTitle": 0, "MinSize": -1, "FocusKeyPress": "", "FoldKeyPress": "" }, "ColourData": { }, "ProcessorId": "Interface", "Index": 0, "FollowWorkspace": false, "EditMode": true } ], "CurrentTab": 1, "CycleKeyPress": "" } ] } ] }

    The vertical console is in a tab.

  • 6 Votes
    24 Posts
    4k Views
    lalalandsynthL

    Latest UI Experiment.

    VERY inspired by Neural DSP ;)

    This is a blend of Figma and Blender.
    Kind of a cross between steampunk and the 60´s , refined steampunk I guess you could say.

    Sundial UI

    SundialFINAL 3.png

    Sundial Standalone

    Sundial DAW.png

    Sundial 16:9 AD

    Sundial wide.png

    Sundial 4:5 AD

    Sundial Hi.png

  • 0 Votes
    1 Posts
    13 Views
    No one has replied
  • Confused about Matrix Modulator Value Ranges

    General Questions
    2
    0 Votes
    2 Posts
    87 Views
    observantsoundO

    I figured it out.
    In order for the matrix modulator to properly work I need to set my filter cutoff to 100%.
    Then use the "Value" knob in the Matrix Modulator module as the main Filter Cutoff knob.
    I was using a 2nd UI knob that I wired to the Cutoff, but the Matrix Mod module expects you to use "Value" as the main knob/slider and "Intensity" as the modulation depth.
    Setting the filter to 100% ensure that both "Value" and "Intensity" have control over the full range of the filter.

  • 11 Votes
    3 Posts
    68 Views
    MorphoiceM

    @griffinboy sick isn't it? I wonder myself how I got there, but then again given Idid nothing else for the past months than spend every free hour on this... it's a bit pathetic ;))) I need to start having a life again lol

  • 4 Votes
    15 Posts
    4k Views
    soundsyncS

    UPDATE: Native-Authoritative C++ Licensing Bridge

    SoundSync HISE package is rebuilt so the UI stays in WebView/HiseScript, but the licensing authority is now native C++. The WebView only collects user actions and renders safe public state. C++ handles activation, validation, restore, protected storage, device identity, offline grace, deactivation, and the final mayOpenProduct access result. HISE copy protection then reads that native result.

    It’s not a pure C++ UI replacement. It’s a hybrid: WebView for branded UX, C++ for licensing authority. That seems to fit HISE better because WebView is still the easiest way to keep product branding, storefront, My Products, and login flows flexible, while C++ owns the trusted licensing path.

    @Lindon thanks for the suggestion.

  • 0 Votes
    3 Posts
    68 Views
    R

    @David-Healey That was my next step using the MIDI Monitor in Cubase to read incoming MIDI data from Dorico. I had started out working directly in HISE and researching the documentation. I will respond with what I see...

  • 4 Votes
    18 Posts
    781 Views
  • Moonbase

    General Questions
    39
    0 Votes
    39 Posts
    6k Views
    Christoph HartC

    @David-Healey nope, I'll need to work on the details with Tobias when I'm back from vacation.

  • 0 Votes
    2 Posts
    57 Views
    LindonL

    @lijas90 your installer needs to create/write to the Link file in the %APPDATA% folder with the path to your samples. so on Windows this is LinkWindows, on MacOS its LinkOSX.

    As an aside putting samples in the %APPDATA% folder system, as you are doing, is generally a bad idea, esp. for Windows users who often have small C; drives (where the %APPDATA folder resides) as thus there is not enough room for the sample set. Better to ask the end user where they want to keep their samples during the install.

  • Matching fonts in Figma ?

    General Questions
    6
    0 Votes
    6 Posts
    105 Views
    ChazroxC

    @lalalandsynth its all brand new to me. Just passing along the info. Im sure there's a fix.

  • [BLOG] How does DSP work? [Part 2]

    C++ Development
    2
    8 Votes
    2 Posts
    101 Views
    David HealeyD

    @griffinboy Thanks for this. Put a link to part 1 at the top.

  • 1 Votes
    10 Posts
    421 Views
    ospfeigrpO

    @Chazrox yea similar to cosmos but cross platform at least win and linux it have a nice pixeldrain feature for sharing uploading user generated samples etc

  • letter spacing / kerning on ScriptLabel

    Feature Requests
    12
    0 Votes
    12 Posts
    382 Views
    David HealeyD

    @lalalandsynth I use a font unless I need to manipulate in some way that is easier outside of HISE. For example my company logo I use a vector.

  • BLUR.

    Bug Reports
    22
    0 Votes
    22 Posts
    249 Views
    lalalandsynthL

    @ustk Sweet , thanks !

  • 0 Votes
    10 Posts
    158 Views
    Christoph HartC

    @musicayciencia globals are used when you need to share data between script processors - although David correctly suggests that this should be the last tool you pick for that as there are way better ways for cross-module communication by now. The callback of a single script processor share all the variables declared in the onInit callback.

    Now about the non-deterministic issue: if you compile that script it won't cause an error, as the JS compiler cannot know whether the variable setGlobalVariable is a function that can be called - it might get assigned to something callable at some point so it stays put and doesn't complain. However when you play a note, then it's time to call this variable and that's where HISE realises that you can't execute the (empty) variable.

    var callableAtSecondTime = undefined; function onNoteOn() { callableAtSecondTime(); } function onNoteOff() { callableAtSecondTime = function() { Console.print("Now I work"); }; }

    This script will throw an error when you press the first note, but the first note off will then assign a function to the variable so subsequent notes will not raise the error but call the function. That example looks weird, but it's one of the more powerful features of JS (and HiseScript) to be able to reassign function slots to different functions like this so you can implement dynamic logic more easily.

  • How do I complete the jucer part in export setup wizard?

    Newbie League
    16
    0 Votes
    16 Posts
    194 Views
    LindonL

    @39oririn

    go to :

    https://github.com/christophhart/hise-cli

    and follow the instructions there...

  • Automatization!

    General Questions
    3
    0 Votes
    3 Posts
    76 Views
    gonzaloG

    @dannytaurus thank you so much my friend! 😁🙏🏻

  • [BLOG] How does DSP work? [Part 1]

    C++ Development
    7
    8 Votes
    7 Posts
    281 Views
    gonzaloG

    so cool my friend!