Forum
    • Categories
    • Register
    • Login
    1. Home
    2. ustk
    3. Posts
    • Profile
    • Following 0
    • Followers 15
    • Topics 468
    • Posts 6,009
    • Groups 1

    Posts

    Recent Best Controversial
    • Pluginval as submodule, worth it?

      @Christoph-Hart I noticed you are updating the JUCE submodule today. At the same time, I am struggling with a plugin that builds fine but straight crashes any host except Pluginval because it uses another thread.
      When running Pluginval from the terminal to get a back trace, it seems I don't have enough info or symbols to find the origin of the issue.

      So I am trying at this very moment to build Pluginval as debug (don't if it'd help) and I've also seen that it can be directly embedded in Juce projects.
      So I wonder if it could be a good addition to have it in order to help us debug an uncooperative plugin?

      I went back to the commit where the Juce submodule has been integrated with no luck (I'm not saying it's the cause, but it painful to go back this because of git willing to overwrite and messing with files...)

      Here's where it crashes and the backtrace:

      * thread #1, name = 'JUCE v8.0.3: Message Thread', queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
          frame #0: 0x000000018c8610b0 libsystem_platform.dylib`__bzero + 32
      libsystem_platform.dylib`__bzero:
      ->  0x18c8610b0 <+32>: stnp   q0, q0, [x0]
          0x18c8610b4 <+36>: stnp   q0, q0, [x0, #0x20]
          0x18c8610b8 <+40>: add    x3, x0, #0x40
          0x18c8610bc <+44>: and    x3, x3, #0xffffffffffffffc0
      Target 0: (pluginval) stopped.
      

      (lldb) bt all

      * thread #1, name = 'JUCE v8.0.3: Message Thread', queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
        * frame #0: 0x000000018c8610b0 libsystem_platform.dylib`__bzero + 32
          frame #1: 0x0000000115f56fa0 RustEQ - le bleu`___lldb_unnamed_symbol_17ae98 + 264
          frame #2: 0x0000000115f7a490 RustEQ - le bleu`___lldb_unnamed_symbol_19e2fc + 404
          frame #3: 0x000000011662c128 RustEQ - le bleu`___lldb_unnamed_symbol_8500f8 + 48
          frame #4: 0x00000001164eddbc RustEQ - le bleu`___lldb_unnamed_symbol_710880 + 5436
          frame #5: 0x0000000116513f88 RustEQ - le bleu`___lldb_unnamed_symbol_737f1c + 108
          frame #6: 0x0000000115eb2bc4 RustEQ - le bleu`___lldb_unnamed_symbol_d6b4c + 120
          frame #7: 0x0000000116513bdc RustEQ - le bleu`___lldb_unnamed_symbol_737894 + 840
          frame #8: 0x0000000115f80358 RustEQ - le bleu`___lldb_unnamed_symbol_1a38e4 + 2676
          frame #9: 0x0000000115f41ac0 RustEQ - le bleu`___lldb_unnamed_symbol_1651d4 + 2284
          frame #10: 0x0000000115f41ecc RustEQ - le bleu`___lldb_unnamed_symbol_1651d4 + 3320
          frame #11: 0x0000000115f8262c RustEQ - le bleu`___lldb_unnamed_symbol_1a5cd8 + 2388
          frame #12: 0x0000000115fb9b78 RustEQ - le bleu`___lldb_unnamed_symbol_1dd97c + 508
          frame #13: 0x0000000116257830 RustEQ - le bleu`___lldb_unnamed_symbol_47b794 + 156
          frame #14: 0x00000001162561ac RustEQ - le bleu`___lldb_unnamed_symbol_476f58 + 12884
          frame #15: 0x0000000116252650 RustEQ - le bleu`___lldb_unnamed_symbol_4751dc + 5236
          frame #16: 0x0000000115ddeda4 RustEQ - le bleu`___lldb_unnamed_symbol_2ca8 + 252
          frame #17: 0x0000000115df5374 RustEQ - le bleu`___lldb_unnamed_symbol_19314 + 96
          frame #18: 0x000000018f4b5a9c AudioToolboxCore`APComponent::newInstance(unsigned int, bool, void (OpaqueAudioComponentInstance*, int) block_pointer) + 2376
          frame #19: 0x000000018f60a6a4 AudioToolboxCore`instantiate(OpaqueAudioComponent*, unsigned int, AudioComponentOpeningMode, void (OpaqueAudioComponentInstance*, int) block_pointer) + 372
          frame #20: 0x000000018f60b120 AudioToolboxCore`__AudioComponentInstanceNew_block_invoke + 120
          frame #21: 0x000000018f41f528 AudioToolboxCore`Synchronously + 132
          frame #22: 0x000000018f60af28 AudioToolboxCore`AudioComponentInstanceNew + 240
          frame #23: 0x000000010026b6dc pluginval`juce::createAudioUnit(juce::VersionedAudioComponent, std::__1::function<void (ComponentInstanceRecord*, int)>) + 60
          frame #24: 0x000000010026b348 pluginval`juce::AudioUnitPluginFormat::createPluginInstance(juce::PluginDescription const&, double, int, std::__1::function<void (std::__1::unique_ptr<juce::AudioPluginInstance, std::__1::default_delete<juce::AudioPluginInstance>>, juce::String const&)>) + 348
          frame #25: 0x000000010022f4d4 pluginval`juce::AudioPluginFormat::createInstanceFromDescription(juce::PluginDescription const&, double, int, juce::String&) + 248
          frame #26: 0x000000010026b04c pluginval`juce::AudioUnitPluginFormat::findAllTypesForFile(juce::OwnedArray<juce::PluginDescription, juce::DummyCriticalSection>&, juce::String const&) + 260
          frame #27: 0x000000010026dccc pluginval`juce::KnownPluginList::scanAndAddFile(juce::String const&, bool, juce::OwnedArray<juce::PluginDescription, juce::DummyCriticalSection>&, juce::AudioPluginFormat&) + 656
          frame #28: 0x000000010026e124 pluginval`juce::KnownPluginList::scanAndAddDragAndDroppedFiles(juce::AudioPluginFormatManager&, juce::StringArray const&, juce::OwnedArray<juce::PluginDescription, juce::DummyCriticalSection>&) + 428
          frame #29: 0x000000010001a8dc pluginval`std::__1::__function::__func<PluginTests::runTest()::$_0, std::__1::allocator<PluginTests::runTest()::$_0>, void ()>::operator()() + 68
          frame #30: 0x000000010020052c pluginval`juce::MessageQueue::runLoopCallback() + 64
          frame #31: 0x000000018c914bc0 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
          frame #32: 0x000000018c914b54 CoreFoundation`__CFRunLoopDoSource0 + 172
          frame #33: 0x000000018c9148c0 CoreFoundation`__CFRunLoopDoSources0 + 232
          frame #34: 0x000000018c9134e4 CoreFoundation`__CFRunLoopRun + 820
          frame #35: 0x000000018c9e5be0 CoreFoundation`_CFRunLoopRunSpecificWithOptions + 532
          frame #36: 0x00000001996e8560 HIToolbox`RunCurrentEventLoopInMode + 320
          frame #37: 0x00000001996eb8bc HIToolbox`ReceiveNextEventCommon + 488
          frame #38: 0x000000019987513c HIToolbox`_BlockUntilNextEventMatchingListInMode + 48
          frame #39: 0x00000001913eb1a4 AppKit`_DPSBlockUntilNextEventMatchingListInMode + 228
          frame #40: 0x0000000190d3f084 AppKit`_DPSNextEvent + 576
          frame #41: 0x00000001918d469c AppKit`-[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688
          frame #42: 0x00000001918d43a8 AppKit`-[NSApplication(NSEventRouting) nextEventMatchingMask:untilDate:inMode:dequeue:] + 72
          frame #43: 0x0000000190d3213c AppKit`-[NSApplication run] + 368
          frame #44: 0x00000001001f1a48 pluginval`juce::JUCEApplicationBase::main() + 192
          frame #45: 0x00000001001f1938 pluginval`juce::JUCEApplicationBase::main(int, char const**) + 88
          frame #46: 0x000000018c49bda4 dyld`start + 6992
        thread #2
          frame #0: 0x000000018c8159f0 libsystem_kernel.dylib`__workq_kernreturn + 8
        thread #3
          frame #0: 0x000000018c8159f0 libsystem_kernel.dylib`__workq_kernreturn + 8
        thread #4
          frame #0: 0x000000018c8159f0 libsystem_kernel.dylib`__workq_kernreturn + 8
        thread #5, name = 'com.apple.NSEventThread'
          frame #0: 0x000000018c813c34 libsystem_kernel.dylib`mach_msg2_trap + 8
          frame #1: 0x000000018c826574 libsystem_kernel.dylib`mach_msg2_internal + 76
          frame #2: 0x000000018c81c9c0 libsystem_kernel.dylib`mach_msg_overwrite + 480
          frame #3: 0x000000018c813fc0 libsystem_kernel.dylib`mach_msg + 24
          frame #4: 0x000000018c914d68 CoreFoundation`__CFRunLoopServiceMachPort + 160
          frame #5: 0x000000018c913654 CoreFoundation`__CFRunLoopRun + 1188
          frame #6: 0x000000018c9e5be0 CoreFoundation`_CFRunLoopRunSpecificWithOptions + 532
          frame #7: 0x0000000190e60c64 AppKit`_NSEventThread + 184
          frame #8: 0x000000018c857c58 libsystem_pthread.dylib`_pthread_start + 136
        thread #6
          frame #0: 0x000000018c81750c libsystem_kernel.dylib`__psynch_cvwait + 8
          frame #1: 0x000000018c858128 libsystem_pthread.dylib`_pthread_cond_wait + 980
          frame #2: 0x000000018c76d858 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 32
          frame #3: 0x00000001000ca768 pluginval`juce::WaitableEvent::wait(double) const + 108
          frame #4: 0x000000010001942c pluginval`PluginTests::runTest() + 448
          frame #5: 0x00000001000d5cfc pluginval`juce::UnitTestRunner::runTests(juce::Array<juce::UnitTest*, juce::DummyCriticalSection, 0> const&, long long) + 448
          frame #6: 0x000000010002a030 pluginval`runTests(PluginTests&, std::__1::function<void (juce::String const&)>) + 640
          frame #7: 0x00000001000299c8 pluginval`validate(juce::String const&, PluginTests::Options, std::__1::function<void (juce::String const&)>) + 172
          frame #8: 0x00000001000295a8 pluginval`AsyncValidator::run() + 344
          frame #9: 0x00000001000293c4 pluginval`void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, AsyncValidator::AsyncValidator(juce::String const&, PluginTests::Options, std::__1::function<void (juce::String)>, std::__1::function<void (juce::String, unsigned int)>, std::__1::function<void (juce::String const&)>)::'lambda'()>>(void*) + 52
          frame #10: 0x000000018c857c58 libsystem_pthread.dylib`_pthread_start + 136
        thread #7, name = 'TimoutThread'
          frame #0: 0x000000018c817308 libsystem_kernel.dylib`__semwait_signal + 8
          frame #1: 0x000000018c6f3cc0 libsystem_c.dylib`nanosleep + 220
          frame #2: 0x00000001000919b8 pluginval`juce::Thread::sleep(int) + 80
          frame #3: 0x000000010002adec pluginval`PluginsUnitTestRunner::run() + 100
          frame #4: 0x00000001000cb53c pluginval`juce::Thread::threadEntryPoint() + 292
          frame #5: 0x0000000100197504 pluginval`juce::Thread::createNativeThread(juce::Thread::Priority)::$_455::__invoke(void*) + 152
          frame #6: 0x000000018c857c58 libsystem_pthread.dylib`_pthread_start + 136
        thread #8, name = 'Sample Loading Thread'
          frame #0: 0x000000018c81750c libsystem_kernel.dylib`__psynch_cvwait + 8
          frame #1: 0x000000018c858128 libsystem_pthread.dylib`_pthread_cond_wait + 980
          frame #2: 0x000000018c76d8f0 libc++.1.dylib`std::__1::condition_variable::__do_timed_wait(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) + 104
          frame #3: 0x0000000116c9785c RustEQ - le bleu`___lldb_unnamed_symbol_ebb7b4 + 168
          frame #4: 0x0000000116954cac RustEQ - le bleu`___lldb_unnamed_symbol_b78c78 + 52
          frame #5: 0x0000000116caa6c0 RustEQ - le bleu`___lldb_unnamed_symbol_ece5a4 + 284
          frame #6: 0x000000018c857c58 libsystem_pthread.dylib`_pthread_start + 136
        thread #9, name = 'Javascript Thread'
          frame #0: 0x000000018c81750c libsystem_kernel.dylib`__psynch_cvwait + 8
          frame #1: 0x000000018c858128 libsystem_pthread.dylib`_pthread_cond_wait + 980
          frame #2: 0x000000018c76d8f0 libc++.1.dylib`std::__1::condition_variable::__do_timed_wait(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) + 104
          frame #3: 0x0000000116c9785c RustEQ - le bleu`___lldb_unnamed_symbol_ebb7b4 + 168
          frame #4: 0x0000000116508c3c RustEQ - le bleu`___lldb_unnamed_symbol_72cc00 + 60
          frame #5: 0x0000000116caa6c0 RustEQ - le bleu`___lldb_unnamed_symbol_ece5a4 + 284
          frame #6: 0x000000018c857c58 libsystem_pthread.dylib`_pthread_start + 136
      
      posted in General Questions
      ustkU
      ustk
    • RE: Recent commit to Processor.cpp breaking old project

      @David-Healey No idea, it's an absolute coincidence that I'm working on this today...

      posted in Bug Reports
      ustkU
      ustk
    • RE: Table "Not assigned" warning

      @David-Healey This makes sense! It would need a safety then at least not to confuse the user. That's for the module itself, but do you think the Y value in the popup is related to the same issue? I would just expect to get a normalised value...

      posted in General Questions
      ustkU
      ustk
    • RE: Recent commit to Processor.cpp breaking old project

      @David-Healey @Christoph-Hart Could the fact that not having the MIDI Learn button available as parameter be related?

      Screenshot 2026-04-16 at 12.37.41.png

      posted in Bug Reports
      ustkU
      ustk
    • RE: Table "Not assigned" warning

      @David-Healey Oh yes that's what I meant, it gets rid of the popup and I'm good with it, but what's behind the scene? What's the reason for "not assigned" in the first place?

      posted in General Questions
      ustkU
      ustk
    • RE: Table "Not assigned" warning

      @David-Healey This does not resolve the "not assigned" notification but at least it makes me feel better to just remove the popup entirely as it's not really needed here... so 👍

      posted in General Questions
      ustkU
      ustk
    • RE: Table "Not assigned" warning

      @Lindon And it's not even an instrument 😁

      posted in General Questions
      ustkU
      ustk
    • RE: Outside the interface

      @ulrik I’m afraid panels and contextual menus are complete different beasts. Since child panels are still panels, this would mean any component could draw outside the main window which would be weird…

      I think you need to somehow constrain your design within the window’s boundaries.

      posted in Scripting
      ustkU
      ustk
    • MidiLearnPanel, not CSSable yet?

      As in title?

      posted in Feature Requests
      ustkU
      ustk
    • RE: Table "Not assigned" warning

      Oups.. forgot the screenshot...

      posted in General Questions
      ustkU
      ustk
    • Table "Not assigned" warning

      I have a Not assigned warning with my tables.
      As you can see, it is in the modulators as well (all my modulators, not only MPE)

      • Why and how to get rid of this?
      • Are the two related?

      Those modulators are meant to be used with the Matrix Modulation system, so that might be the reason but who knows...

      gclfo.gif

      posted in General Questions
      ustkU
      ustk
    • RE: Plotter Text

      @David-Healey @DanH In fact it's not something that problematic because it can be LAFed easily.
      It's just the annoying message "Not Assigned" that I can't get rid of, so I just make it transparent, but I feel like it's a hack and it should be cleaner...

      posted in General Questions
      ustkU
      ustk
    • RE: Plotter Text

      So 3 years later... Is there anyone using a plotter successfully? (I mean, as stock component without code modifications...)
      Or should I stick an AI agent onto the problem?

      As for the paint issue, the solution is to drawAnalyserBackground and drawAnalyserPath

      posted in General Questions
      ustkU
      ustk
    • RE: 7-Band EQ - FilterDisplay not updating visually from script (SVF EQ + scriptnode)

      @the-red_1 You actually need to use the ScriptFX as filter display source

      • Add new external filter display by clicking the bottom right icon
      • Set all the filters in your graph to the same external filter in order to get an additive curve
      • Connect the floating tile to it and set the Index to the first external filter (#1 => 0)

      Screenshot 2026-04-03 at 16.59.27.png

      Screenshot 2026-04-03 at 17.00.03.png

      posted in AI discussion
      ustkU
      ustk
    • RE: What version of Xcode to use to compile HISE

      @Naledi-Leotlela You can use v26.x

      posted in Newbie League
      ustkU
      ustk
    • Promising app Midilize

      I generally don't advertise for applications but this midi tool is promising to be very flexible yet powerful in order to generate, monitor, and route MIDI data, create virtual ports...
      Another reason I am sharing this app is that we can have a free license after the beta period is ended if you referred two users. So here's my code BdAxQfD7, and you can share yours here as well in order to get a free license, and that's always good for the community ☺ (I'll remove my code once I have 2 referees so I don't block anyone else)

      https://midilize.com/

      posted in General Questions
      ustkU
      ustk
    • RE: Module Tree Master Dry/Wet Mix

      @HISEnberg For what I can see, that's the spirit of dry/wet in the module tree. However the gain difference you see is probably due to the last rmOut matrix being redundant with the "master" routing matrix. Since both dry & wet are already joined to the stereo out in there, you don't need to merge the wet to the dry prior to that.

      The way Hise handles the signal (at least visually for the operator) can be very weird and confusing (ie. direct connections can act as send instead of true re-routing)

      posted in General Questions
      ustkU
      ustk
    • RE: How Do I get this to freely oscillate?

      @pcs800 Oh ok that's what you want... So the answer is no, you don't need to connect it to the parameter in order to get the value to the UI. As @griffinboy said, the global cable is meant to be grabbed anywhere in Hise using the Global Routing Manager.

      On the top of this, you don't even need to "read" the value since you can directly tie it to a callback that is called anytime the value changed.

      Check this snippet:

      HiseSnippet 1696.3ocuX0saaaCElJIzo1MqXcqnWazqbGxLrbTbRPwvZ9eFsI0HNqn2EPKQaSXZRMJ5j3Mz62E68X2umf8.rGl8Fzcnjrkjib9wncJ.I5vy4H9c9kGlVJoKMHPpPVkNerOEYsFt8Xgt+98ILAp4AHqmfOgDnopxQKs2XeRP.0CYYs7wlErJtBJ74e+w8HbhvklrDB8dIyk9V1PlNY0Vu9MLN+HhG8b1vTR675ltRw9RtbDfmkw0P9D2AjdzSIFwVBi9IRPej02gItaXWqlSCuM5PHc7puiSW5FMZ3XuQ2cp4P1gzn1NMp4XirJbnGSKUs0DMM.9n6I8F2tu7JQzF7dV.qCmZHrQsgcNZYz98YbuVSbNAHj0JsRbUKG4pdF9DlGa55ItruNjQ4DMR6zrV51fj8C.RVofzJQP5o31tJluNgiAOOF2T.QvtDH1jFJQxhV5erv6KAID5pCICnGo.hoZToQsZqWF90KeUoRP7IPW9Rhp7wmcR4en7ghdLAsZOp9XtrCgelbjlI5cBQ.gMUEPkDMB7YBAUsOArNPU3CXzKjrxK54dQL+WjceZGs5aDc.clfRidxg9RAPT4EIhDpaozaTUEsGyj9tOgy6.oSU5NR3pYRQkKI7QzWV52JUL4CTMfpeuY8XtupTwReb8x6FLV3dpTy5xbIFke4ql7YJKE.C56DUB+Tk9Xoxyxpa2b4YLFkjyM9obXapMT2lhUDiF1gpVubhgXDDxExlfU39kf4F4aSInTzTvzuymFSejj6YRbLueyzQTbvAd6mad.QSLYnwqAx4SUZlANVGPuD5IDkuVDe.MXfV5GJabDEYspNj6ShylayYdTEh4E1dZZvBc8zdG+M+0iSSDPtj1TzRQg3oIS+JlmF5bfs9CfeeJqWe8DJzMqhf5Wo2HNQmsn1ztKlADHxTIYpVDAL83zsCe.U50t0J86KDeJtES61OeLtTNXDBQeIvXb+wuBeX2tTWcB.WAezGVzlg0dvMCKEm9.6oYyWKlr7QevNu1fV+NNoJyWQ8IJ54xVbx3JAjg9b5Y.FWubGtzcPa1uRuYooeDD1yHQE29DHOkGrHUvE9BdDQtYNOBe30ZEw9tRX9blTO8rBshAUx3SGMrMbxuKc+XOmoBcISikH5ZFZCHZSEdgDeBdhYZanshYZOgYpdRmR0WIUCBcJwuClcTdQPXBvEcuFfOUEXJbrVEWqJ7CZWNWdko0DKtjBRXBWqkjO1uuTvbMKEIwDnu6P4HgdB9SpG2aRtyDSAFn4bBia71sGE.cZ8dmnM7cBmhxTdbpzCda0iHtfOebKhoK1Swld0Pnipp5NMDlwLRBiFmez7SYDvDwZQT.C3rwfXwf8ZxzWQvCrpggMjgYurV1vOx+EBpBlcsDdnzKBDYv3yRgwoRjGpR8Atu6+Jo1+0vx.WXZRS5L5FdIEsZJ146TRIvcA.SPlSudxgaGvB7gtC6MB5xEUskYEftovidsos22CmXlxcCfeJE79ILQ3PGvtZx5PmPtdJsCP2VS8iyZv1.swvKXJionL5c.sKYDWmYMTpM5QIazy.lvHzgO1N6Ty1tgcp88aw1fxY4lfhbUt8.5UQAfHApWeGXV7MaTu9FNau01aFOI5QJ5uLBxuGiNmds9bY3FBkoWByGXvXZIR.S0Y2srlZdvEMOOrcFObArci43hWKDJkOyT5hxn9rNZ6Ybz2ZD0dtQzigVpel2HyGdUbq9j.5bb3OGepTMjvAz30hBsegx1dOvDK78AFEBGfBkJAr911vE01XKmchdli4lL7HBkpzuHNf0qNz8Hac+SvCg+VcBu7J5Sz7Np3WJSMq0C0hWEGsz8vWNGar.1mRFj0.ebTisPF4Ycw5bGl1JImJcNQAWnJHddcA0M5btvydZ5Y7n8Bub2EtlaTkD2M7lXhnOe8FmqyXFbjwo7brJZbhpYjIO+yLelz9ohE9y+53OcyF+oQT3LUFJXrnkhZSjxqEGVWCmbg1Y57uvYQ4Ubr6HsDR2mdqrbBpy22likzL38FttD9DKAlfYtvuXD7dK8RJGkXJEv0yZKEgEfGSeu65PBv.R+O.BlJkpDDdpqz.SL.oRlPm2Ltj388detx2fc1bK6pau0VNN1N0ZTeyLU.Kp6ZOobvPR3nlKzMg+eYv3gDWk7B2n6gXLtGEtB30EwsHOwPW1FcYbLb5UFGx7XW35l8ScCEqunJtwhpnyhp3lKphMVTE2ZQUb66VQy+5w31BlxEnmPqCCSBsrNTDU1.2r.8e.amNDjB
      
      posted in ScriptNode
      ustkU
      ustk
    • RE: How Do I get this to freely oscillate?

      @pcs800 First, drag the connector of this parameter to any node parameter you want to control (Frequency in your case?) then, if the range doesn't match, a little warning icon will show aside the parameter, click on it and accept the popup, this will automatically set its range to match the node parameter.

      Then to access it from the UI, it works exactly like for any other module (be it from a slider property connection or from your UI script)

      posted in ScriptNode
      ustkU
      ustk