Forum
    • Categories
    • Register
    • Login
    1. Home
    2. Morphoice
    • Profile
    • Following 5
    • Followers 2
    • Topics 162
    • Posts 923
    • Groups 0

    Morphoice

    @Morphoice

    "Sounds from the future and the past, warm summer nights at the arcade, computerized horizons. Pink neon light, unstuck in time, between the memories of yesteryear and retrofuturistic fantasies."

    206
    Reputation
    186
    Profile views
    923
    Posts
    2
    Followers
    5
    Following
    Joined
    Last Online
    Age 49
    Website www.morphoice.com
    Location Germany

    Morphoice Unfollow Follow

    Best posts made by Morphoice

    • Isn't she a beauty! Thank you guys!

      Screenshot 2024-10-20 at 11.15.45.png

      This is to say thank you to everyone who helped and engaged so awesomely in this forum, especially @Christoph-Hart, @d-healey, @dannytaurus, @HISEnberg and many more! To get this level of help and devotion in an internet forum is not common, especially not in 2024 where people usually are "go away noob!" or "use the damn search" ;-))) Therefor I thank you, the things I have learned over the past days are incredible, given I started from zero.

      Today I finally managed to have a first usable prototype of the synth I have envisioned with beautiful waveforms and sounding exactly the way I wanted, and I ended up not using wavetables at all. Take a listen here if you want to:
      https://www.dropbox.com/scl/fi/h211eql2t99ntdbltrbuo/IMG_8250.MOV?rlkey=a0n81idbt7oaldbkqpz16x9nr&dl=0

      Here are the raw OSC waveforms, I shaped them using polyshaperfx

      IMG_8246.jpeg

      IMG_8247.jpeg

      We solved the pops and clicks, the filters behave and sing like a diva, the analog vibe is all there and I'm thoroughly amazed. There is lots to tweak and add, but I got the basics and I'm confident I'm on the right track to continue with HISE as the best choice I could have made.

      Thank you again, I can't state this often enough and sorry for the million more questions I will all bother you with in the future ;-) Love you guys!!! You made my week and enabled me to finally concoct a thing that has been brewing in my head for so many years. That's beyond awesome!

      posted in General Questions
      MorphoiceM
      Morphoice
    • Sounds like Vangelis?

      This isn't an ad or a post to brag but I wanted to show you what I achieved using HISE and FAUST in a few weeks with the help of this awesome community!

      So this is to say thanks to all who supported me in learning HISE in a ridiculously short time. This would never have been possible without HISE and all of you. I started with simple FX plugins like reverbs and delays, which are now included in this synthesizer. So all the sound you hear is 100% HISE/FAUST.

      The Audio:
      https://www.instagram.com/p/DFDtqa2s5Sp/

      Unstable GUI.jpg

      From the bottom of my heart, you guys are my heroes!!
      @Christoph-Hart @d-healey @aaronventure @HISEnberg @griffinboy @Mighty23 @sletz
      and many many more <3

      posted in General Questions
      MorphoiceM
      Morphoice
    • Retro 80s Tape Wow & Flutter with faust

      I made a quite good sounding wow and flutter plugin using faust
      and thought I'd share it, as probably some could use it

      import ("stdfaust.lib");
      
      wow = os.lf_trianglepos(hslider("wow",0.5,0,2,0.01)) : si.smooth(0.9999) * 1000.;
      wow_intensity = hslider("wow_intensity",0.3,0,1,0.01):si.smooth(0.9999);
      flutter = os.lf_trianglepos(hslider("flutter",8,2,20,0.01)) : si.smooth(0.9999) * 1000.;
      flutter_intensity = hslider("flutter_intensity",0.1,0,1,0.01):si.smooth(0.9999);
      hiss = hslider("hiss",0.1,0,1,0.01);
      
      drive = hslider("drive",0,0,1,0.001) ;
      
      tanh(x) = x * (27 + x * x) / (27 + 9 * x * x);
      saturator = ef.dryWetMixerConstantPower(drive,tanh * drive * 20 : co.limiter_1176_R4_mono: tanh );
      
      tapenoise = no.pink_noise*0.6 + no.sparse_noise(10)*0.2 : fi.bandpass(1,600,20600)/5 + os.triangle(60)*0.05 + os.oscsin(528)*0.003 + os.oscsin(110)*0.002;
      
      wowflutter = de.fdelay1(ma.SR, 100. + wow*(wow_intensity)  + flutter*(flutter_intensity/5)) <: saturator : fi.lowpass(2,8000) + tapenoise * hiss;
      
      
      
      process =  wowflutter, wowflutter;
      

      this sounds quite awesome on synths if you are looking for the retro 80s synthwave vibe, the saturation circuit is a bit fishy but it sounds good. if anyone has some improvements let me know.

      I'm aiming to simulate real magnetic saturation with hysteresis once I can wrap my head around it

      posted in Presets / Scripts / Ideas
      MorphoiceM
      Morphoice
    • Waveform Icons

      I made these little waveform icons, if anyone has use for them please feel free!
      Couldn't find ones that aesthetically pleased me anywhere online so I drew them myself in Illustrator.

      Screenshot 2025-01-13 at 01.37.40.jpg

      Here's the source code to save you the conversion hassle.
      you'll need to put a correspondingly named panel for each icon onto your UI

      const var labelSine = Content.getComponent("labelSine");
      const var labelSaw1 = Content.getComponent("labelSaw1");
      const var labelSaw2 = Content.getComponent("labelSaw2");
      const var labelSquare = Content.getComponent("labelSquare");
      const var labelNoise = Content.getComponent("labelNoise");
      
      
      const var svg_sine = Content.createSVG("418.nT6K8CVaATLC.XwmXQBHMZa.yhzBWkPkzQoPI.XRHHfRltcFhHhxLSR+8ffD.fD.frPX.7D.CAvSTCNZz7jbrqXcge2s1E0hJ4HgjBp3.BkkzCJQLJkZYdDgjyUdkJUXXD.hISbH4DEA5AIVRKCQ3XhEHjbZ.Y4AknlGBRt7fDTH47HBjFRXDwwRRcM4DQBjnHbPYA5AIHnIJcem0Y+dagO9rM6uKt12R9Mzsu0bwWwE+Uy8cMWuuRFs12Fcpqq8gjSikTxIJZADiEGlr.hlmzlJSCSSECzP.B.AAoAJzLBhweb.Mwjnl39iS8a5VWS705aEYq2Pl+pXacEcuuv0cMYv5UM70m2yXz0tRYFUXycFCU3xN6g5dEis2apZfacWmr85Jer2a532bF..OOnDwz77fo4gIs.+Vt38cEa14Vttig5Yrjo5ycq8GCa5cKT0qMxtaWrc+0XumWXyes399hQEpp6TG6cis58JY1UFeQABP.BhsK2YKDfvQaW6pYBGsn686WbjTEfTvBH0gKeBlyD..lyqiJhJFXZcpv.EDISfT.");
      
      const var svg_saw1 = Content.createSVG("375.nT6K8CVEAz1B.X31PQBLswI.CsFJ3O.5GCwxB3EEF4vydsdXQ1atkojr+KbRCJnfT9PU.jD.6.Pqe2rhpnpFIfTvDHGRTTQRlVTU4knHfb1jOYxjkEAfHRDGTMSOjdPBEE2PDPSr.AUCCGJQRlXbHPAWGjfBplnGNX.44AjhR+pZd.wwTDPRTjdPBBXBoaOmw3ea5hmy8wMY8YXx6U1Z.7cL62M9AUCCEkpYZZgzihCQV.AiihW6ByBSECzH.AjjbzfhcMI8bGHoIhLw3L0.hAiipc3tJs5lQ2UNi70Vx5tSX+9xR9vjgm2G2Y1Bq0TTe6R8geuiRZruapoS+K0LtmkO14r4uIbuKeeoa1ru39sM.3DIYZgwIZgwYQwfqOuqW7wUCWt2Yqkuasu2zq6p4uaxr2Vw9568i5.T+x9lP8O3a8r1425jwucaFg20xm6AO.v.3CTYNiL1ylW6BDBPsGnkSga24PuIMLJhKSfgubpQCnlbjKfT");
      
      const var svg_saw2 = Content.createSVG("378.nT6K8CVGAT3B.XCGRQBHMhZ.yhzhqRAcwYTVLf3CSHkhpX+vcuyMkYaOOJtX.BBv3QvU.nD.7.fpJs9cuJLE15ABHELQpgDk0jjpEFisKSO.47jOYxjkEAbHRjFVOUOnb.gxZY3AoHTbv5YQCkIIUNPDrdoAHjv5Y5QiEPhdHorXWWOOfzn5AIIJTNff.m.e1C0uplMWeW0zcMa7eY2bM224Lp2qnieSacrdVnrVOUUJnhTZHhBGbfVapKNKNSL.i.DfhpACIzrhJ5PRTQDoxAphgzBGnk19Kn8YNaMusJp7YRWe1gO1SkuhL6Iy6HC412qJ1XmoX+FYl2nycW+UQll2jMeG9bmooxbcuKatyMn1mY2zE..zjjpEGnoEGnk0B5YZ9z6xV+KY3u4aeKYQsBYV03qJ1vdi8dGxhXZuwHg6qb1Mx74Me52F1M64E08sN48sSwfC..BAbOfZYfVwSwEfTlV37hetr1pypn.ErAO9xoFMfZxRt.RA");
      
      const var svg_square = Content.createSVG("411.nT6K8CFaAzHC.XG2SQBLKZU.CGtRigPYNnpFCf0Hyo3vp4saQtBoHIYp8GrsbFQDAn1U.vD..A.b0KM2ct0BuvJmJQJfRjioEUioICy7hogjHmQ4TnPggQ.GlLoAkyDhziJKpECRhdPABJmENVZLMadHPE2CRPAkSCHNVDABRzhheqbfDwwTRzzhziJDzDvgch25PEJuStRs7LbRx2oM16dY0s9agjq2Zc8Va8P4rXQoblSERPKMLQgCMOp01LMLMQL.i.DPRxACH5cJA8mHoGlLadlLhVz7nfrGr2pqOSYnH+XbJ9dSat2RI35rUhcmt0eJCsf2IipSkq2FzmoQ1iaTdW+255uR9rEp42RDVO34dWLC9113+VFJ1AvSioISySCllGF0BKCwd2sRzc6tM1N2Zq8MFuCBJebcuG6Vhweew27Wn6J2vCUFel1huoN4as+Ra1iJ6clF6+zUZfBXhRxQ2AhhqpDiCjDvKwqYkShE.l.HgPohgR.+f3zisKPwXZu.E7AT0C3ONmS+oAnymBxXvi0MwfhHgVjB");
      
      const var svg_noise = Content.createSVG("900.nT6K8CVaET8F.Xfr+IBPuIM.e9TDsLtc69FBdU.6hdLcoZYKqHhT11W9KhGGEUWLWBPZ.fF.nZOa8Sa2q1JOZ75m0f7WnU8bwGVXXd77vfSyxDJXPB6Z3ngiLFvg.DvwghCXb1iSygDw4BJdb.4wgHM3.BCpWwagSWs3RZIw7vhHJnRDJUrvzHkRXCISDwyJuRkJMZHfDTPwDlGOPrvfKLQjKX3.lGMPYQREONfP.yxL.gDXdHABJMDQCDQVXR+Xd.QDTdlHREKNOXAANprb02QzVo2WaNHDeuWaK0urd8TsFEZ78DhNGDlYtdaKttkhSqIY0MkehH0c0bVHV6CSH7199cssV5sl0tq+hx9m4nbanUeFyq18059oyVEqtxTplFw6n05WEsNHDRyinkw549qoxaWREnz2lBWXlt0K8MoILx7pY7WZMZY+khndGk5cu850b84Ty5QmC4C0L+6P8dDuBwoqHzhWUdDoa+8PMdu6CVbyJhaBwEmX05bdomLBUM2IDe0Z561DVW9qg596tzTUwCopNu27o2WpyF2O..QREOMb.QRCFETYdzXMeyRcE2N8w8USOSUWeEOD25YjhMn5Jz5VWmSIlVqmo26wzyy4J8caV9ah18thF1bpstYwOgS85Kzk3o5mYZNY9koHlcd8KZUbeuMHkuRsNVd18Uy6WqhV2xHdzQYpE.HznFHNujUC.RBA.EAA.Y.yX00AP5c.IPbF7x5.YmS4bta1qNmyKQbTfDYpQ2NCQNjaMsAbtozqaGP7fbVrrAiQXFKAiOj0wIxXlWH4VtDpxcZfvpLfd63EJeTuejUlp5C+8vQxdIEJG.AqM.LwgQDCaD7txZ7SXLqtJLe0TG1I.7ZQmLvdOJBsxceFm8ujzMtB56bQJB.p8WC5wxGYBWfM9QupFrg0UBNklYHWEIZ2sqRiIBeWz8AyipcpkV0SL3XJWSM.HO1QmBBny79HHCDIbx8o.NfuyMUMwGavh+e5RiB5ZGLFTsln490Dh.crvp3dI96hiENh6hXKYpGgwUKJv7tEStIll4RIgac0qg1Z.ABDjPeHWE.GgZ9sZVNMF2QthzVrEbU5PoRug0ElbGze218nYtForGfxR4FSg3b95HLP9bu4DSURVp8DMkGoel25vVXL+lltYVeicArLaiD.S.HMhWHGEXF.5Ay2wuC1CkK6kMbLGd1A");
      
      
      labelSine.setPaintRoutine(function(g)
      {	
      	g.drawSVG(svg_sine, this.getLocalBounds(0), 1);
      });
      labelSaw1.setPaintRoutine(function(g)
      {	
      	g.drawSVG(svg_saw1, this.getLocalBounds(0), 1);
      });
      labelSaw2.setPaintRoutine(function(g)
      {	
      	g.drawSVG(svg_saw2, this.getLocalBounds(0), 1);
      });
      labelSquare.setPaintRoutine(function(g)
      {	
      	g.drawSVG(svg_square, this.getLocalBounds(0), 1);
      });
      labelNoise.setPaintRoutine(function(g)
      {	
      	g.drawSVG(svg_noise, this.getLocalBounds(0), 1);
      });
      
      posted in Presets / Scripts / Ideas
      MorphoiceM
      Morphoice
    • LinnDrum clone: great success, thanks guys!

      In roughly two days, thanks to you all, I managed to make a working software clone from my LinnDrum. You can see it in action here! While you watch repeat after me: HISE IS AWESOME! And its community even more so! :-)

      Screenshot 2024-11-30 at 22.32.48.png

      posted in General Questions
      MorphoiceM
      Morphoice
    • RE: Simmons SDS-V Drum Module Emulation

      some progress on the sound and GUI
      Screenshot 2026-04-20 at 20.23.07.png

      https://www.youtube.com/watch?v=ZhPg8Y6G78s

      it went from do-able to almost done :)

      posted in General Questions
      MorphoiceM
      Morphoice
    • Simmons SDS-V Drum Module Emulation

      HISE and faust for the win again.
      After a longer hiatus I spent two days modeling a Simmons SDS-V module from its original schematics which can now be used to make TomTom, Snare and Kick sounds. Very happy, this will be a cool new plugin idea.
      Thanks Hise & faust!

      Screenshot 2026-04-15 at 22.02.07.jpg
      first test:
      https://www.morphoice.com/downloads/sdsv.m4v
      The screen recording is from a macbook speaker with a microphone only, let me assure you the source audio has hell of an oomph ;)

      I'm not really looking forward to making all the parameter knobs and mixer panels for this one but hey... what has to be done has to be done. Can't wait to use this in my third album.

      cheers
      and thanks @David-Healey, your YouTube tutorials on LAF and paint routines were once again indispensable <3

      posted in General Questions
      MorphoiceM
      Morphoice
    • Saturation Models (Neve, Tweaker, Oxford Inflator) in FAUST

      Here's my attempt at different saturation models in faust. Have fun!

      I'm hoping WAVES, KUSH and UAD won't have me whacked for sharing these.
      Feel free to add gain correction

      import("stdfaust.lib");
      
      drive_twk = hslider("TWK",0,0,1,0.001);
      drive_neve = hslider("Neve",0,0,1,0.001);
      inflate = hslider("Inflate",0,0,1,0.001);
      gain = hslider("Gain",1,0,2,0.001);
      
      // Neve
      neve(x) =x + 0.04 * ma.tanh(x*40); 
      
      // Tweaker
      twk(x) = x*2/(1+abs(x*2));             
      
      // Oxford Inflator
      oxford(x) = sin(ma.PI/2*sin(ma.PI * 2 * x)) * inflate + sin(ma.PI * 2 * x) * (1 - inflate);
      
      
      saturator = ef.dryWetMixerConstantPower(drive_twk,twk) :
                  ef.dryWetMixerConstantPower(drive_neve,neve) : 
                  ef.dryWetMixerConstantPower(inflate,oxford) * gain;
      
      process = saturator,saturator;
      
      posted in ScriptNode
      MorphoiceM
      Morphoice
    • RE: I made a really good sounding JUNO-6 emulation for free, shared it in the KVR forum - this is what happened

      I feel the need to point out once again, what a welcoming, helpful, generous and lovely community the HISE forum is. Kudos to you all. Y'all taught me how to make those plugins. Not AI.

      posted in General Questions
      MorphoiceM
      Morphoice
    • Optimize your faust

      Just a reminder for everyone just getting started with faust to read this

      https://faustdoc.grame.fr/manual/optimizing/

      and avoid unnecessary cpu calculations. Really makes a huge difference!.

      posted in Faust Development
      MorphoiceM
      Morphoice

    Latest posts made by Morphoice

    • RE: Linux Issues...

      @David-Healey I now managed to install reaper and the compiled plugin now works. so it was those listed bugs

      posted in AI discussion
      MorphoiceM
      Morphoice
    • RE: Linux Issues...

      @David-Healey I wouldnt know how to show you how to recreate the issue. I already posted all the info I have including detailed reports on the found bugs.

      posted in AI discussion
      MorphoiceM
      Morphoice
    • RE: Linux Issues...

      @David-Healey I don't see how that would help, the problem isn't specific to my setup there are fundamental bugs in HISE/JUCE. the more dig into this with CC the more walls I hit. I've been running it for hours now, installing virtual machines blah. I'm at the point where I just pull the plug and go to the pool with all my other friends instead of wasting hour after hour. I write beautiful sounding DSP and I can compose and do graphics. the rest around it really isn't my forte.

      it does finally make a sound in hise on linux after a long struggle, but whether a compiled vst3 works in linux - sstill no change to test.

      here's more findings so far

      HISE on ARM64 Linux: three bugs blocking DSP-network / project-DLL compilation

      Environment: Debian 13 (trixie), aarch64 (Apple Silicon), HISE develop (4.9.x, JUCE 6.1.3),
      g++-12, Faust 2.79.3. Building the standalone and exporting plugins/DLLs natively for arm64.

      Three separate bugs had to be fixed to compile DSP networks / project DLLs on arm64. Two are
      architecture-independent UB (only bite on arm64); one is an arm64 MIR codegen loop.


      1. CustomKeyboardState writes one element past its array (segfaults on arm64)

      Any project load / export / compile_networks crashes immediately:

      #0 hise::CustomKeyboardState::CustomKeyboardState()
      #1 hise::MainController::MainController()
      #2 hise::BackendProcessor::BackendProcessor(...)
      

      hi_core/hi_core/UtilityClasses.h:

      Colour noteColours[127];   // 127 entries, valid 0..126
      

      The constructor (UtilityClasses.cpp) writes all 128 MIDI notes:

      for (int i = 0; i < 128; i++)
          setColourForSingleKey(i, Colours::transparentBlack);   // writes noteColours[127] -> OOB
      

      setColourForSingleKey also guards noteNumber <= 127, so 128 entries are intended. Index 127
      is out of bounds. Harmless on x86_64 (overwrites the adjacent lowestKey), segfaults under -O3
      on arm64.

      Fix:

      Colour noteColours[128];
      

      2. SNEX MIR JIT infinite loop on arm64 (expression node)

      "Compile DSP networks as DLL" and the compile_networks CLI hang at 100% CPU forever on arm64
      (IDE looks frozen). It happens while the exporter instantiates each node in
      DspNetwork::createAllNodesOnce(). Backtrace of the spinning thread:

      #0 generate_func_code ()                                <- MIR generator
      #1 MIR_link ()
      #2 snex::mir::MirCompiler::compileMirCode(juce::String)
      #3 snex::mir::MirCompiler::compileMirCode(juce::ValueTree)
      #4 snex::jit::Compiler::compileJitObject(juce::String)
      #5 snex::JitExpression::JitExpression(...)
      #6 scriptnode::dynamic_expression::updateCode(...)
      ...
      #15 scriptnode::DspNetwork::createAllNodesOnce()
      #16 hise::DspNetworkCompileExporter::DspNetworkCompileExporter(...)
      

      Creating a math.expr / dynamic_expression node JIT-compiles its expression through the MIR
      backend. MIR's aarch64 generator (generate_func_code, from MIR_link) loops indefinitely.
      Lowering MIR_gen_set_optimize_level from 3 to 1 in snex_MirObject.cpp does not help (it loops
      at lower levels too), so this is a MIR aarch64 codegen bug (bundled MIR in hi_snex/snex_mir/src).

      During createAllNodesOnce() the JIT result is never used (the node's C++ is generated from the
      expression source), so the JIT is skippable there. Flag on DspNetwork set during
      createAllNodesOnce, checked in dynamic_expression::updateCode before new JitExpression:

      if (node->getRootNetwork()->isCreatingAllNodesOnce())
      {
          r = Result::ok();
          return;
      }
      

      This unblocks DSP-network / DLL export on arm64. Live JIT of expression nodes in the IDE still
      hits the MIR loop; the real fix belongs in the MIR aarch64 backend.


      3. Headless/CLI export crash: JUCE display query derefs null

      With #2 worked around, compile_networks on a headless display (no monitor / Xvfb) segfaults
      while the export dialog is constructed:

      #0 juce::Component::getParentMonitorArea()             (then later centreWithSize)
      #1 juce::AlertWindow::updateLayout(bool)
      #2 juce::AlertWindow::setMessage(...)
      #3 juce::AlertWindow::AlertWindow(...)
      #4 hise::DialogWindowWithBackgroundThread::DialogWindowWithBackgroundThread(...)
      #5 hise::DspNetworkCompileExporter::DspNetworkCompileExporter(...)
      #6 CommandLineActions::compileNetworks(...)
      

      DspNetworkCompileExporter is a DialogWindowWithBackgroundThread, so it builds an AlertWindow
      even from the CLI. On a headless Linux session JUCE detects zero displays and these deref null:

      juce_gui_basics/components/juce_Component.cpp:

      // getParentMonitorArea():
      return Desktop::getInstance().getDisplays().getDisplayForRect(getScreenBounds())->userArea;
      // ComponentHelpers::getParentOrMainMonitorBounds():
      return Desktop::getInstance().getDisplays().getPrimaryDisplay()->userArea;
      

      getDisplayForRect() returns nullptr when no display intersects (or the list is empty);
      getPrimaryDisplay() returns nullptr when the list is empty.

      Fix - guard both:

      Rectangle<int> Component::getParentMonitorArea() const
      {
          auto& d = Desktop::getInstance().getDisplays();
          if (auto* x = d.getDisplayForRect(getScreenBounds())) return x->userArea;
          if (auto* p = d.getPrimaryDisplay())                  return p->userArea;
          return { 0, 0, 1920, 1080 };
      }
      // getParentOrMainMonitorBounds(): same guard around getPrimaryDisplay()
      

      After these three changes, compile_networks -c:Release runs to completion on a headless
      display and produces a working DspNetworks/Binaries/dll/.so for arm64 Linux.
      getParentMonitorArea / getParentOrMainMonitorBounds derefing null also affects the CLI on any
      Linux box with no usable display, so it is worth guarding regardless of architecture.

      posted in AI discussion
      MorphoiceM
      Morphoice
    • RE: Linux Issues...

      @David-Healey yes

      posted in AI discussion
      MorphoiceM
      Morphoice
    • RE: Linux Issues...

      @Christoph-Hart

      There are two bugs in the "uncompiled effect" code path in restoreHardcodedData():

      Bug 1 (Primary — line 982): v[up.getLast()] should be v[up[i]]

      This reads the LAST property name for EVERY parameter index, causing all parameters to get the last parameter's value
      Bug 2 (Secondary — lines 967, 563): lastParameters.setSize(numParameters) should be lastParameters.setSize(numParameters * sizeof(float))

      The compiled path correctly uses numParameters * sizeof(float), but the uncompiled path allocates only numParameters bytes instead of numParameters * 4 bytes — a buffer underallocation
      Why Linux-only: hasLoadedButUncompiledEffect() returns true when factory == nullptr || factory->getNumNodes() == 0. On Linux, during export_ci, the scriptnode factory has no compiled nodes, so this buggy code path is taken. On macOS/Windows, the factory can instantiate the nodes, so the correct opaqueNode path is used instead.

      posted in AI discussion
      MorphoiceM
      Morphoice
    • RE: Linux Issues...

      When running HISE export_ci on Linux (GCC 12, Debian), the generated PresetData.cpp contains corrupted parameter values for all HardcodedMasterFX and HardcodedPolyphonicFX nodes. Every parameter in each node is overwritten with the last parameter's value.

      Reproduction: Export any project containing HardcodedMasterFX nodes on Linux. Compare the binary preset values against XmlPresetBackups/*.xml — they will differ.

      Example (Chorus effect with 12 params):

      XML has: Delay=5.23, ModAmount=1.0, ..., Volume=0.5, Noise=0.0
      Binary preset has: Delay=0.0, ModAmount=0.0, ..., Volume=0.0, Noise=0.0 (all = last param value)
      Impact: Plugins produce complete silence when a volume-like parameter gets zeroed.

      Location: The bug appears to be in HardcodedSwappableEffect::writeHardcodedData() in HardcodedModuleBase.cpp, reading from the lastParameters MemoryBlock.

      Workaround: Post-export script that decompresses the binary, patches values from the XML backup, and recompresses.

      Platform: Linux only. macOS and Windows exports are correct.

      posted in AI discussion
      MorphoiceM
      Morphoice
    • RE: Linux Issues...

      @David-Healey

      The HISE export_ci process corrupted parameter values in the binary preset data (PresetData.cpp). All parameters within each HardcodedMasterFX/HardcodedPolyphonicFX node were overwritten with the last parameter's value. For one plugin, the Chorus effect's Volume was set to 0.0, which made pow(20, 2*0) - 1 = 0, multiplying all audio output by zero.

      Fix: Wrote a Python script that decompresses the zstd-compressed binary preset (using HISE's custom dictionary), parses the JUCE ValueTree binary format, replaces corrupted values with correct ones from the XML backup, and writes back.

      posted in AI discussion
      MorphoiceM
      Morphoice
    • RE: Linux Issues...

      @David-Healey I've had a chance to look at it briefly at a friends PC who has Trixie installed and bitwig, the plugins load just fine and the ones with graphical drum pads do produce sound, but none receive midi... so i reckon the DSP and tone generation isnt the problem at all but the underlying JUCE framework isnt passing midi data along

      one thing to note is that the midi indicator led i put in my guy does light up, but no sound. so actually the midi is not passed along to the faust automatically

      posted in AI discussion
      MorphoiceM
      Morphoice
    • RE: Linux Issues...

      @David-Healey right.

      posted in AI discussion
      MorphoiceM
      Morphoice
    • RE: Linux Issues...

      @David-Healey said in Linux Issues...:

      @Morphoice said in Linux Issues...:

      Synth.deferCallbacks(true)

      The UI script should always use this, and all my plugins use it, so this is not the cause of the issue.

      Unless you can test and debug it I'd suggest pulling your Linux version.

      the probably suspendState mechanism - suspends timers/deferredExecutioner when no editor is open
      KillStateHandler stuck in Suspended state
      which comes with the Silentsynth/Voicekiller construct I use to make faust-only synths

      posted in AI discussion
      MorphoiceM
      Morphoice