HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. Morphoice
    • Profile
    • Following 5
    • Followers 1
    • Topics 146
    • Posts 834
    • 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."

    162
    Reputation
    135
    Profile views
    834
    Posts
    1
    Followers
    5
    Following
    Joined
    Last Online
    Age 48
    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
    • 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
    • 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
    • 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
    • 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
    • Optimize your faust

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

      Link Preview Image
      Optimizing the Code - Faust Documentation

      favicon

      (faustdoc.grame.fr)

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

      posted in Faust Development
      MorphoiceM
      Morphoice
    • RE: Saturation Models (Neve, Tweaker, Oxford Inflator) in FAUST

      @clevername27 they're not measured, someone on reddit reverse enginered them so they are somewhat common knowledge among the DSP community, I'm not claiming any of those is a copy of something, it's just knowledge I gathered off the web. This is an old post though, I'm making my own functions for saturation now, and I'm using desmos to create them, closely matching stuff I can indeed measure from real hardware and then bring them over in faust. Unfortunately it's all done by hand, I have no Idea on how to "automatically" transfer measurements into transfer functions. It's a lot of guesswork until the curve looks somewhat similar

      Those are the two waveshaper curves I find most pleasing, sonically, anything in between those is great and much faster calculated than the popular tanh for saturation

      Screenshot 2025-01-30 at 14.08.55.png

      posted in ScriptNode
      MorphoiceM
      Morphoice
    • Emulating vintage DACs with bitcrusher & μ-law compression

      following up on yesterday's thread I wanted to post the results here, so anyone can find them should they need them. Those are great to emulate a vintage DAC of old drum machines and 8 bit samplers, just the way Tal DAC or Decimort would do it.

      Why prefer this over regular bitcrusher? μ-law has a higher dynamic range and much better SNR (signal to noise ratio) which means more values are spread among quieter levels, and less values among peak values. This massively improves artifacting while still giving the nice retro 8-bit crunch and sizzle we love.

      This is the c++ code:

      void process(float* samples, int numSamples)
         {
             for (int i = 0; i < numSamples; ++i)
             {
                 float val = samples[i];
                 int max = 255;
      
                 // μ-law compression
                 float valmu  = sgn(val) * log( 1.0f + max * abs(val) ) / log( 1.0f + max);
                 // bit reduction
                 float valmu8 = valmu - fmodf(valmu, 1.0f / max);
                 // μ-law expansion
                 float valex = sgn(valmu8) * (1.0f / max) * ( pow(max + 1.0f, abs(valmu8)) - 1.0f );       
             }
          }
      

      there is also a faust version Stephane Letz over at faust Discord made

      import("stdfaust.lib");
      
      mulaw_bitcrusher(mu,nbits,x) =  x : muLawCompress(mu) : ba.bitcrusher(nbits) : muLawExpand(mu)
      with {
          // μ-law compression
          muLawCompress(mu, x) = ma.signum(x) * log(1 + mu * abs(x)) / log(1 + mu);
      
          // μ-law expansion (decompression)
          muLawExpand(mu, x) = ma.signum(x) * (pow(1 + mu, abs(x)) - 1) / mu;
      };
      
      process = mulaw_bitcrusher(255,8),mulaw_bitcrusher(255,8);
      

      this has also been added to basics.lib so in the future you will simply be able to use ba.mulaw_bitcrusher

      The same expansion formula/technique can be used to read μ-law compressed wav files or eprom binaries made using μ-law, which are probably most of them if not all.

      posted in ScriptNode
      MorphoiceM
      Morphoice
    • RE: template or tutorial for custom c++ scriptnode?

      @HISEnberg I did it, based on @griffinboy's template, yeeha!

      This has a simple 8-bit bitcrusher and the right left gain from the demo like so:

      void process(float* samples, int numSamples)
                  {
                      for (int i = 0; i < numSamples; ++i)
                      {
                          // Reduce bit depth
                          float max = 255;
                          float val = samples[i];
                          float rem = fmodf(val,1/max);
                          
                          // Quantize
                          samples[i] = val - rem;
                          
                          // Apply Demo Gain
                          samples[i] *= smoothGain.advance();
                      }
                  }
      

      Screenshot 2024-12-09 at 16.06.06.png

      now I have to figure out how to make it μ-law instead of linear 8 bit.
      I'm afraid the code won't be that simple. If anyone has tried this before I'd appreciate any input.

      posted in ScriptNode
      MorphoiceM
      Morphoice

    Latest posts made by Morphoice

    • RE: Bypassed by the DAW

      @d-healey brilliant! thanks

      posted in General Questions
      MorphoiceM
      Morphoice
    • Bypassed by the DAW

      when a plugin is bypassed by the DAW, does or can it still do something? Is it just not receiving audio or completely dead? I was thinking of graying out some things in the GUI when it is bypassed, would that be possible?

      posted in General Questions
      MorphoiceM
      Morphoice
    • R/L seperated sample loop points...

      This is just a stupid thought I'm having but has anyone ever considered seperate loop points on stereo samples? I came across this when sampling some chorused stuff on the Juno 60, where you could never find a perfect loop, but it should be possible if the left and right sample are treated seperately and have a nice effect not making the sound appear looped at all... worth giving a shot? how would it be done in HISE? two samplers panned right and left? seperate mic positions?

      posted in General Questions
      MorphoiceM
      Morphoice
    • RE: Newly compiled HISE > New C++ Node Warning > CRASH

      @Christoph-Hart see video. right on the node

      posted in General Questions
      MorphoiceM
      Morphoice
    • RE: Newly compiled HISE > New C++ Node Warning > CRASH

      @Morphoice I just found out about the tab, it worked either way, but the nodes still crash when I right click them, so that might be a completely different problemo

      posted in General Questions
      MorphoiceM
      Morphoice
    • Newly compiled HISE > New C++ Node Warning > CRASH

      Ahoi,

      I've just installed a new windows 11 and compiled the latest HISE
      if I now pull and open my project (e.g. UNSTABLE) and try to compile the DSP network
      there is this new message @Christoph-Hart added
      Screenshot 2025-04-30 at 12.05.10.png

      I assume I have to add a ScriptFX node and go through all the networks and tick/untick all the nodes, but however if I do that and just rightclick a node to access its properties
      HISE just does a little crashie on me.

      I've recorded a short video here:
      https://www.dropbox.com/scl/fi/ymwnk517pfhfk0iurcmie/IMG_9324.MOV?rlkey=od8drpdds7uc5ugahuwi93606&dl=0

      basically all I wanted to do is recompile my project for PC because it still said MyCompany in the plugin info. Please tell me I'm not in for another 3 day adventure to get everything working again. I'm attempting to manually create the node_properties.json maybe that solves it already ;))

      posted in General Questions
      MorphoiceM
      Morphoice
    • RE: Summing plugins, snake oil or useful?

      @griffinboy

      Awesome thanks! I've already consumed some of those, ChowDSP was my read when designing the tape wow thing. Essential! Also did some experiments with WDF in faust so I seem to be on the right track there.

      I'll take a deep dive and see what I can come up with!

      posted in General Questions
      MorphoiceM
      Morphoice
    • RE: Summing plugins, snake oil or useful?

      @griffinboy hit me!

      posted in General Questions
      MorphoiceM
      Morphoice
    • RE: HISE 4.1 release vs compiling from dev branch

      @jenö said in HISE 4.1 release vs compiling from dev branch:

      I don't really understand how to keep the self-compiled version up to date and it just seems tideous to check for updates.

      He has a point though ;)))
      I've gone through that and still am agitated regularly if I have to over and over again, but that's just because I'm an old senile lazy bastard ;) In fact it's quite rewarding once you get a hang of it, gives you a great sense of achievement and I guess it's just what you have to deal with if you want to develop software. No pain no gain. And If I could do it, you can too @jenö - this forum has a superb community helping you on your way to becoming a pro plugin developer! No better place to start than here with HISE! I have spoken. ;o)

      posted in General Questions
      MorphoiceM
      Morphoice
    • Summing plugins, snake oil or useful?

      I'm looking into summing plugins, you know those claiming to emulate consoles, adding harmonic content.. I've been using Waves NLS in the past and liked it, though I can't really tell what it does and getting away from Waves altogether I'm trying to make my own...
      Has anyone had a look into those magical things before and would like to share their insight?

      I've checked out airwindows console and I can't really make heads or tales of it, some other companies model channel strips that don't even do anything nonlinear to the signal apart form being normal eq's... AP Mastering's rants come to mind ;) I don't want to create something that can be done in Pro Q3, otherwise where would be the point.

      I do have access to some consoles, but from what I can test-record and measure the differences in sound (unless you crank them to extremes) are so subtle, they are not even worth the CPU to algorithmically rebuild them, or am I on the wrong track here?

      If, say, channels interact because components are close to each other and there is some "bleed" that somehow is sonically pleasing, then that wouldn't be possible in a plugin anyways as DAW channels can't influence others or "bleed" apart from send and just adding some tanh saturation for "warmth" seems morally wrong ;))

      posted in General Questions
      MorphoiceM
      Morphoice