• synth.playnote

    Scripting
    2
    0 Votes
    2 Posts
    6 Views
    David HealeyD

    @DOC-T

    Sounds like you have the right approach. Try this:

    HiseSnippet 1342.3oc2XssaaaDDcorYJHSaPSgKPejMnHPtvvghR1wFFA9hjbpPiu.KGm9VvJxQRKL0trjqbqPQ9M5y8SoeB86nOk+f1YIojnhUMj25jfV+fs14xtmclyLyZcZrvGRRDwDC6yGEADiO0r8Htre89TFmzpAw39lbgDNmM.hIGLJhlj.ADCikdtx.CqkIo+71cOfFR49vTQDxEBlO7B1.lbpzn89dVX3gzfzsbp7Z60xWvqKBECQvrjoKIh5eIsGbLUYVISx2QS5SL9VyJ0pD3twFc.us65tI3V0k10slGc6NaGTaCXavMXKOv2kXbulALoHtsjJgDbSOPDLpcewOwyNfKXIrNgfZQERa7jyDSp2mEFb53HSBgXXd5z3zRYwoULOhEvlHeZ75ySU3L0ihAMiR2DjpbKfjQAHsbFjdnYa+XVjbplr7WKtDh6RwbSQnjYKw32MqKPC3x0GPuDNLFWLwgxa55tlC9qU2o6PtujI3NB9wHe3Dd4Us+EaK62X67tp51ct5TGSrHLDhmq5TF1M4XY9vAcf30bthFNDlXHd8mMlduEKl5mcqKXnf2hyjmDA4qOTDFnhUpOe8L.IOrge5ksZPkTURIWFZWDDKYJ3Xz.tBKCxRQVlMfjKkhHB454Oj4HBFFRkyRmTEZ4Jv3wL4PUhhmvjiJVHdK3Xt2HGaQg3CMOkI86OeLVZNXDiTuOvXdk4mY1raWvWNEfKad3OnaY3he7OH63uuYaFGRahld3eY5ZmWQuBbdNvgXUv6F5j9G28cROwWhm94wTdRjHYlMtMLfctfqBBSE9xDrO.7imoRlEkWWPimqp2t6g3cbt9zlJGFmxJ1efXHWNCKXoYSCKuXUtyVPTv94zlb4OBctcui5b+E4R+GPTdC7R+ZIyXnmCbE13oUvN11O4IesSGI+79LdOajJjHmrz4YNi612Cj0EChvbOWV9QiM3Qqti83Oudhxjzdu0oggcv4wkE7wZy0f1ay3gJJdgV1uiQk8GeRE6dy55TNekEtzJslY8DIMVlMLvc8Mvs25MVV1VPXBLqYhn7QFnIVM48PHrNBS0HnjzYPothiH9PN5RcmXIMftHZBJmmSV04wO1IC1rj8w4BcY9LZXSk18wM4JXhkqN4BxyvyAiZloZhIX.2JT3SCcTlfYzinn4Xwc.1psbMbf8Vtp6dlMWA3ewtuuqcdoC1S2r7MFsH6jiBoiTQixp8esI6.Z6+p4xl2UykuoYwYifQTglJSqsdPdUzACkRbzDCqcrMGyOIoXtXOIsFlqrMmfiW6E4b+YLdXnNtQi+v+AdPfQoBXzZLFayFDEBM4JdBJI6EAXE.cXnbhzhf7HAWD0WvY9EC7mAxXVudPbQnO26y9RI1JZpjU16LHDnEGr8M68Br.jFigIPyPws+82yMc8UlYv0Q0jv4i9639jLnZadQdUcJHWYxRmIWgaDf+Vzy9ycwmIbNMEASyhsvDdrT4zTYM.eVGHb1bws5MfUd++N0k9+86TOSLTh8cvQ.wLUumiGNnM99Pe.OcNGGtpZCUR0IMas631RsAdP5h+B+IWYE0ZibkUFq7CxYLf5GKdseVOdUcnSpD7dyS+dBrLORs1ox06rO.eb2q88mcqtlid55XUccrltNtgtNtotN9TccbKccb6aqi1iI.tZ6YEs8zSaOqpsm0z1yMz1yM01ympsmaosmZyg7zlC4oMGxSaNjm1bHOs4PdZyg7zlC4oMGxSaNjm1bnpZygppMGp5BvgTeUG6OTJFj8RHB4nSal9O9XXzjqdUW5CPH+M8z7lJ.
  • [Blog] My Favourite C++ Open Source DSP References

    Blog Entries
    8
    9 Votes
    8 Posts
    96 Views
    griffinboyG

    @Orvillain

    Yes, I'm mostly using hardcoded slots myself nowadays rather than scriptnode : )
    There seem to be a few bugs still left with modulation and C++ nodes, but once those are ironed out, this is the way!

    37cf8fbd-fa43-4600-9442-e03516f8e768-image.png

    But I still make scriptnode nodes for other users who are into that workflow.
    And I do think Scriptnode can be good for a fair few things, like when you need a multiband chain:

    40813827-1737-451f-a668-475d67a743f1-image.png

  • Latest develop won't build in VS2022

    Bug Reports
    14
    0 Votes
    14 Posts
    513 Views
    OrvillainO

    @Christoph-Hart

    MSBuild version 18.5.4+cb4e32d21 for .NET Framework CopyProtection.cpp Plugin.cpp PresetData.cpp factory.cpp RNBO.cpp BinaryData.cpp include_hi_core.cpp include_hi_core_02.cpp include_hi_core_03.cpp include_hi_core_04.cpp include_hi_core_05.cpp include_hi_dsp_library_01.cpp include_hi_dsp_library_02.cpp include_hi_frontend.cpp include_hi_lac.cpp include_hi_lac_02.cpp include_hi_rlottie.cpp include_hi_rlottie_1.cpp include_hi_rlottie_2.cpp include_hi_rlottie_4.cpp include_hi_rlottie_5.cpp include_hi_rlottie_6.cpp include_hi_rlottie_7.cpp include_hi_rlottie_8.cpp include_hi_rlottie_9.cpp include_hi_rlottie_10.cpp include_hi_rlottie_11.cpp include_hi_rlottie_12.cpp include_hi_rlottie_13.cpp include_hi_rlottie_14.cpp include_hi_rlottie_15.cpp include_hi_rlottie_16.cpp include_hi_rlottie_17.cpp include_hi_rlottie_18.cpp include_hi_rlottie_19.cpp include_hi_rlottie_20.cpp include_hi_rlottie_21.cpp include_hi_rlottie_22.cpp include_hi_rlottie_23.cpp include_hi_rlottie_24.cpp include_hi_rlottie_25.cpp include_hi_rlottie_26.cpp include_hi_rlottie_27.cpp include_hi_rlottie_28.cpp include_hi_rlottie_29.cpp include_hi_rlottie_30.cpp include_hi_rlottie_31.cpp include_hi_rlottie_32.cpp include_hi_rlottie_33.cpp include_hi_rlottie_34.cpp include_hi_rlottie_35.cpp include_hi_scripting_01.cpp include_hi_scripting_02.cpp include_hi_scripting_03.cpp include_hi_scripting_04.cpp include_hi_snex.cpp include_hi_snex_62.cpp include_hi_streaming.cpp include_hi_tools_01.cpp include_hi_tools_02.cpp include_hi_tools_03.cpp include_hi_zstd_1.cpp include_hi_zstd_2.cpp include_hi_zstd_3.cpp include_juce_audio_basics.cpp include_juce_audio_devices.cpp include_juce_audio_formats.cpp include_juce_audio_plugin_client_utils.cpp include_juce_audio_processors.cpp include_juce_audio_processors_headless.cpp include_juce_audio_utils.cpp include_juce_core.cpp include_juce_cryptography.cpp include_juce_data_structures.cpp include_juce_dsp.cpp include_juce_events.cpp include_juce_graphics.cpp include_juce_gui_extra.cpp include_juce_opengl.cpp include_juce_osc.cpp include_juce_product_unlocking.cpp include_melatonin_blur.cpp !H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(333,4): error C2872: 'Rectangle': ambiguous symbol [E:\The Audio Programmer\Repositories\cubeatz-hybrid-synth\cubeatz-hybrid-synth-hise-project\Binaries\Builds\VisualStudio2026\cubeatz-hybrid-synth-hise-project_SharedCode.vcxproj] (compiling source file '../../../AdditionalSourceCode/nodes/factory.cpp') C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\wingdi.h(4639,24): could be 'BOOL Rectangle(HDC,int,int,int,int)' H:\development\HISE\HISE\JUCE\modules\juce_graphics\geometry\juce_Rectangle.h(66,7): or 'juce::Rectangle' H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(333,4): the template instantiation context (the oldest one first) is H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(365,95): see reference to function template instantiation 'juce::Rectangle<float> hise::simple_css::Positioner::slice<hise::simple_css::Positioner::Direction::Top>(const juce::Array<hise::simple_css::Selector,juce::DummyCriticalSection,0> &,float)' being compiled !H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(333,14): error C2062: type 'float' unexpected [E:\The Audio Programmer\Repositories\cubeatz-hybrid-synth\cubeatz-hybrid-synth-hise-project\Binaries\Builds\VisualStudio2026\cubeatz-hybrid-synth-hise-project_SharedCode.vcxproj] (compiling source file '../../../AdditionalSourceCode/nodes/factory.cpp') !H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(336,33): error C2065: 'copy': undeclared identifier [E:\The Audio Programmer\Repositories\cubeatz-hybrid-synth\cubeatz-hybrid-synth-hise-project\Binaries\Builds\VisualStudio2026\cubeatz-hybrid-synth-hise-project_SharedCode.vcxproj] (compiling source file '../../../AdditionalSourceCode/nodes/factory.cpp') !H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(336,16): error C2530: 'toUse': references must be initialized [E:\The Audio Programmer\Repositories\cubeatz-hybrid-synth\cubeatz-hybrid-synth-hise-project\Binaries\Builds\VisualStudio2026\cubeatz-hybrid-synth-hise-project_SharedCode.vcxproj] (compiling source file '../../../AdditionalSourceCode/nodes/factory.cpp') !H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(337,37): error C3536: 'toUse': cannot be used before it is initialized [E:\The Audio Programmer\Repositories\cubeatz-hybrid-synth\cubeatz-hybrid-synth-hise-project\Binaries\Builds\VisualStudio2026\cubeatz-hybrid-synth-hise-project_SharedCode.vcxproj] (compiling source file '../../../AdditionalSourceCode/nodes/factory.cpp') !H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(346,25): error C2672: 'hise::simple_css::Positioner::RemoveHelpers::slice': no matching overloaded function found [E:\The Audio Programmer\Repositories\cubeatz-hybrid-synth\cubeatz-hybrid-synth-hise-project\Binaries\Builds\VisualStudio2026\cubeatz-hybrid-synth-hise-project_SharedCode.vcxproj] (compiling source file '../../../AdditionalSourceCode/nodes/factory.cpp') H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(306,50): could be 'juce::Rectangle<float> hise::simple_css::Positioner::RemoveHelpers::slice(juce::Rectangle<float> &,float)' H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(346,25): Failed to specialize function template 'juce::Rectangle<float> hise::simple_css::Positioner::RemoveHelpers::slice(juce::Rectangle<float> &,float)' H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(346,25): With the following template arguments: H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(346,25): 'D=hise::simple_css::Positioner::Direction::Top' H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(306,33): 'Rectangle': ambiguous symbol H:\development\HISE\HISE\hi_tools\simple_css\Renderer.h(306,42): ! syntax error: missing ';' before '<' !Compilation error. Check the compiler output.

    This, or something similar to it... has come back in the latest develop, sha: 6446c4ab64ba27c189f5d1ad31ecace25d02a292

    I've cleaned my build directory, but still get it.

  • 0 Votes
    3 Posts
    62 Views
    ustkU

    @Morphoice said in ALT+S requires TWO confirmations. Can this be switched off?:

    I'm pretty sure you all know hitting ALT+S...

    Not really and I've found nothing general about this, more app specific stuff... Please enlighten me 😺

  • "Error at node: chain" while 'compiling network to dll'

    Unsolved Scripting
    16
    0 Votes
    16 Posts
    69 Views
    HISEnbergH

    I'm looking for documents and examples to guide you and I am seeing this is rather poorly documented.

    Basically DspNetworks folder works like this:

    DspNetworks/Binaries: The compiled DLL. When you compile networks to .dll, HISE is launching and creating a mini-project of just your FX networks, so it contains a .jucer, XCode or VisualStudio file, etc. DLL (Dynamic Link Library) is, to put it crudely, a pre-written and formatted library that contains the DSP code which HISE can load at runtime (for example, load into the HardcodedMasterFx). You can simply delete the entire Binaries folder before compile to DLL for a fresh start (in fact it is a good idea). More info here: https://docs.hise.dev/scriptnode/manual/third_party.html

    DspNetworks/CodeLibrary: I don't look here much, but it's usually where a lot of the faust and snex networks are saved to.

    DspNetworks/Networks: Where scriptnode networks are saved as .xml. So you can actually look at these in a code editor and see the same structure flow and module settings (it is fairly human readable). This is what is saved and recalled when you are launching networks (it's very similar to how a User Preset works).

    DspNetworks/ThirdParty: Mainly for C++ files if you are working that way. I think Snex headers are stashed here as well (I can't remember). You'll also notice HISE will autogenerate headers depending on what you are using, example for Faust.

    AdditionalSourceCode/nodes: This is also important. When you go to compile networks you see the menu below. Basically it is autogenerating some headers that are stashed here for when you are ready to compile the entire project. They help link the compiler to the necessary DSP files. You don't really ever need to bother with this folder, but for a completely fresh build, you can just delete the "nodes" folder before compiling the networks to DLL.

    Screenshot 2026-06-04 at 6.58.44 AM.png

  • Custom filter graph output within a custom node?

    C++ Development
    6
    0 Votes
    6 Posts
    85 Views
    griffinboyG

    @Lindon

    Yeah thats another way to do it!
    Basically the same idea.

    Except like you noted, the Hise filters (which I think are ports of the stock Juce ones?) are primitive, they cramp in the high end of the spectrum (the filter shape get warped near nyquist). And so that's not very nice to see on the graphs.

    Plus, the trouble with analog style filters (if they are actually simulating the hardware topology) is that the cutoff frequency on the knob won't actually line up with the frequency in the real filter, the cutoff frequency on the graph won't really match the real frequency the filter is at internally.

  • Volume Doesn’t Change

    General Questions
    4
    0 Votes
    4 Posts
    90 Views
    J

    Thanks guys much appreciated

  • 0 Votes
    4 Posts
    62 Views
  • 0 Votes
    14 Posts
    146 Views
    David HealeyD

    @observantsound It's probably something to do with how the stretching algorithm works. I also noticed your sample is 44.1kHz, 48 might produce better results.

  • Installing Hise on Mac Tahoe

    General Questions
    5
    0 Votes
    5 Posts
    53 Views
    S

    @David-Healey Of course! Silly me.....

  • [feature request] Network connectivity checker

    Feature Requests
    7
    5 Votes
    7 Posts
    555 Views
    ustkU

    @David-Healey so there's no way my server could be faster, especially since it is actually very slow...

  • Directory.hasWriteAccess()

    General Questions
    12
    0 Votes
    12 Posts
    120 Views
    LindonL

    @David-Healey yeah that seems more comprehensive, its more or less doing under the hood what Im doing in HISEScript... so both approaches have the advantage of getting a result back for the plugin itself (no matter how the user has set up to run it..)

    Thanks for looking and confirming what I'd found.

  • 0 Votes
    29 Posts
    455 Views
    Y

    @dannytaurus It working soo fine, I had to put engine.loadaudiofilesintopool earlier

  • Matrix modulation connection is broken in exported plugin

    Bug Reports
    47
    0 Votes
    47 Posts
    3k Views
    griffinboyG

    @ustk Thanks for your hard work!

  • 0 Votes
    29 Posts
    578 Views
    MorphoiceM

    @Orvillain ill give that a try thanks. I don't have claude code though. I cant afford paid services at the moment

  • Second fix for MIDI device reselect bug 🐞

    General Questions
    1
    1 Votes
    1 Posts
    44 Views
    No one has replied
  • 7 Votes
    4 Posts
    147 Views
    OrvillainO

    Very cool man!

  • Building Hise github

    General Questions
    14
    0 Votes
    14 Posts
    278 Views
    Y

    @David-Healey It was already default to 500 mb in 4.1

  • Control ScriptNode from UI knob AND envelope?

    ScriptNode
    6
    0 Votes
    6 Posts
    161 Views
    Christoph HartC

    It depends whether you want it to be a static connection or a dynamic modulation routing.

    If static, then a control.pma node would be the best candidate - connect the UI knob to the value and the envelope output (either from an extra_mod or an inbuilt scriptnode AHDSR) to the add output, this will combine the two with unipolar modulation mode.

    Scales and offsets a normalised modulation signal using a multiply-add formula with clamped output.
    The PMA node (Parameter Multiply Add) scales and offsets a normalised modulation signal. It takes a 0-1 input value, multiplies it by a configurable factor, adds a constant offset, and clamps the result to the 0-1 range. This is one of the most commonly used control nodes for adjusting modulation depth, inverting signals, or combining parameters.

    Each parameter change triggers an independent output update. If Value, Multiply, and Add all change in sequence, three separate output values are sent to connected targets.

  • sync faust delay times to host

    General Questions
    4
    0 Votes
    4 Posts
    128 Views
    Christoph HartC

    I'm not sure whether MIDI tempo information messages makes it through to the Faust node, but the tempo sync node is definitely the way to go. just build your Faust node with a absolute delay time parameter and then connect it to the tempo sync node - it automatically sends the correct time value matching the tempo and reacts to tempo changes etc.

    upcoming docs:

    Tempo Sync (control.tempo_sync)

    Converts a musical tempo value to a duration in milliseconds and sends it as a modulation signal.
    Tempo Sync converts a musical time value (such as 1/4 note or 1/8 triplet) to a duration in milliseconds based on the current DAW tempo. The output updates whenever the host tempo changes or any parameter is adjusted, making it suitable for driving time-based effects that need to lock to the beat.

    The output is an unnormalised modulation signal carrying the raw millisecond value. If the target parameter expects a different unit (such as frequency in Hz), place a control.converter between this node and the target. When Enabled is set to Off, the node outputs the manual UnsyncedTime value instead, allowing a smooth fallback for standalone operation or manual control.

    CPU: negligible, polyphonic.

    Signal Path

    Pseudo-code - hover highlighted terms for details // control.tempo_sync - musical time to milliseconds // BPM + parameters -> ms out (unnormalised) onParameterChange() { if Enabled: output = tempoToMs(bpm, Tempo) * Multiplier else: output = UnsyncedTime } onTempoChange(newBpm) { bpm = newBpm if Enabled: output = tempoToMs(bpm, Tempo) * Multiplier }