Forum
    • Categories
    • Register
    • Login
    1. Home
    2. Morphoice
    • Profile
    • Following 5
    • Followers 2
    • Topics 158
    • Posts 890
    • 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."

    195
    Reputation
    182
    Profile views
    890
    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
    • 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
    • My take on super clean analog oscillators

      Here's my attempt at super clean "analog style" oscillators using polybleps in FAUST
      based on the Yamaha CS-80 with SAW and PWM. These have no visible artifacts in the spectrograph and sound absolutely fire with a good filter.

      Please mind, the filter in my snippet is still incomplete, improvement ideas are welcome, I am still struggling with scriptnode and finding the right nodes to modify my control values, still no clue how to implement an initial value for the filter and an intensity/filter depth slider

      The SNIPPET:

      HiseSnippet 4371.3oc67rraajbsMkTIZww1SFLdlrLDFH.xdjo6GraxNFCrr0iwBikkFSONIHHPnE6hlcbyt4zcSKoIH.Yw8C3tM.AAYUVdWeypLqyp7ILYUVlr3t8BmSUU+n5G7M0iYhofjXW0op5TmScdVUW3SCvNlXyi7cr52GGHHTZ4C8bai88c8DJU4Em0GKT55nVm4DzcqtFVNB6ssPo2G8kN9AFGaieoqUarviOquguO1TnTok+LBPkVaEA5m+0CergsgC.SbQBBzF8TqdVAIkd3letks8tFl3WX0iC55atWaWmsbscG.HzxHQg9FseswqvOyf.1RHgmX32UnzcQFJJlczzZpa1ttpjdGiFlsOVQWEaJWWAqiMManXdbmNBkVcGSq.WuVAFAXegRq7XWyyZ008DG1.7RKeKXpQdPRnELxrh2001jLEIkJrUWKayXJkOP2PbzskYzsag12xzJt7D52OfVQ0jVvS.KsTZza4TnmDO5IxgdEfRk3PoUXnzGfZ01ypePRMD748P64Df85XjgWxfUnzeAskK.fSPsdFuFuqG7PbCVWSTbCEQw67fNCbZGX45T004YtA3CbV+NU90UVqxuoR0rU0oSg0QFEOWaarWgUSVY3MpFttyfdGi81n5aLrGfiADl8oIongSR443sYSZN.cc1ywJ3f9XmgsNPHjRAj+UCwJ.z.Jw+lgD+V1VlXOAKfFWF84NtGKIPQXdwFgItwxySiUR03u8K9e+CSQiqmcj+1onwpyCZqkpw+wO6u+WenvWt21FAFjk8gr.fszG6EXQ33k1F+FPoCSHXMz1X+WG31mxi5020gvvJc8wxkNMFa+F6MOKA0+4aFfOE5ADpkwIBmXYFzMtxeqwlcwVupKmtt81rezJl8fdeUzK25.IPulGnRCjpHkw5odtl.B8wnm450yv15qwlGh8ZCHKn+SvePmNVmRVG9iE5YYZZiOz02hHPjggDOAWarqjRlfBOqnI30Ps9pAFd3ExbLtylFbTgGGOqHbrLPtr7WLnXTeMMXX8gREMCwvafNbfsOt5OkhgKB775rdj0gSCxpNz0zlwqoO7mt+BZMMomlFrSanLayXlcq9XvX0hgYy5Kg7lMAC1tlCrMBRaEm3qSXEDwNdSmD6iNf33Y7J3VXl1mTT7CPGZEztaw33REfif5yyCbLzgnaf1oSGb6fDDbEzt+rK.uePrwuB5QNF1m4iib6I5QoT3viAMqXuVf91DBy2r4gdfID7IglPBK9ZaVZ4IFgkFM854tCBrbd09FAdD85nmMnWKvq21Xfb43fsINtTZIhKFrmEIOSPhVfO7zGdK7IrRIxykBqTJpRddx6mx49OyycPeJU45TQiprBV.d12eh8reGGRHE6tOeOtkgmmEHeBQovoK3e8WhWrmqluzwx20wkhJOpm6.m.djNr1swACbRg5gUzpuG1vjuEDruEFPUSZW5mRfd4QEJgzLFJQ4qbgR7c.UhkVJ+Z6xnG8jsa87vXVoKq2w4MXavuvTX19.iueWWGq17qHdNFDDe0q.kEb3agShGED.Akt0.u2jZI0131FmkqTFv4K4oX.y3K9IvpjbcWbAxeylsF.AgyKSRvYargex386+SatSa28o9QNSD8QqyJUTuiZgwMPrIYUpNfqdFJuYD9w3BW8Pvqinr+qpzu2GEtX7JKA7lnPYiKSRX4H+PdInDpMYDIn1GE+X0XDWZ7X3W5iegAEERj+2CTu4Efyp2v5XrcZk.SkidRm+Nit72qcFcZjxINlPVGLNW0uTTBwbO5RD8VKh4EFxHw2UJtEFQ2vcX8us3cXMJ+naflljQt54gOiq9NeFujBid4+iKL5ahNz09L1heXbIH.Bj91MEF.Qutqkc.1yONRzPokeTgRKbBHnEkgo3bwK7LbvItdulNgB+NXMNAyejss6IjYUTX.zABPdZ5TKiDqA+vfhj+JqvkAv7j8XTL5QAbxBT+IF9uvvxlngDbOpODI9ANs.foJg.lTomQsIWdWi1v78rCMH4v5CPj8c.3rXuZsi4vYIvjYLaKvX0PnOGFkMKeF9S58H0UrLE.HaOZl2VBAfPpmPQVlgFqRFmxH+91f1vghRrpKBQhZ5jNrKkZXYS0wPIJdXY0MayVitl9doG1e.BGFjXMVsEMp2D8jC2MIZxwL3Ht8hfIRQdBTXrDy4YPXgi48R1davVCIz5DhtmWX38Jb.krwWP31c3fohS9oeLjDyx2Y+dFRBGlNemrARXjcHMes13Si1bkss.trwYrbj4mqDxThkQlUP2SRXGvDnIX2h1ZBoPfadB5KieBPm8sbhl4D4Mg8MNM740PRhvGnrVA39rDycK.FZovGo55hRRZf1fWiOgwKCAPugVCIslRZ0kUUjUnhRWKLVOvw3NFCrCBGjUgAgHiOHvsmQProVNLDkFCk3vPDRBZKejtr3fRODLnFwHbgQCVEQytPpwJK4PlT3kB1UlEraFLpLRQb53PhExgVKJV0bbGwZpWI3NqEEqZw7j4k.DsDkkZpvpIHSSQwFJZ555pRRMjZ1nPBzTMbITijg+8PIYVKUim6ddUvUx.blNMwqsXcnBbl.tFyDfzLYC3oeWxFvMPsIoK3H5A24clBdmof2YJ3clBJxT.q5+CP2OD5.Pay39+0Q.AsaMVMCIfCZciQe+RoTuUha9sxjvYhTImgJwYCIk9SgQZc45n87eIo11F1Q8HXYIkYPZTTRyRDXwscJi7qLafoQMJMKQblzVtjiMKgeVA0y0rfHPuEGZDCAOlHEhIbcvrPDtIuo4LjhOhhCdt103MeWD438Qc624Hq3zQMETkUJPRYJBkrBZePUgUe6yx4j.cKJ7i+1HcJ3GijqWK8m2b.7mNehySdw1MN6y+UuP7fL9MLyBV4TcxKZws1Hb9lhmbiXdBTWg7hvVMtECSNYGVq+lNGg+pzD92CsqG9qFfcZeVF5xxSkBUNSQKijGFcBTYTbu9CQp0TgfFjTkjUjjUazTAeOoFER+4VqLktDsxzMfh0TBSc1iLMGM6dwpIMjQkIfhNrrgVKr1hSk2SNb2wtlIi.VTVVi+J7EdQrzKKVkidtZB8LzcBduXji7hIiaJxx55h0U0jkUp2rQS0P65IqCSyUuF0cnQyX4PjOjv1BcTRRWVTWVmCq9Pjdsl5jOZRMUUDkanjG+zp2PpQSoFJhZpRM0n32xnuXNVsUFniMSQdfHDZx43An1endyr5zH7cK5zWRjPBz0aVWugnTHAtUOW2ftVNuJZn9HRuIIpIKon0TrtrjplT8LyxOl.inN6SiFZ0aJq1Tdxwu5C0aK51IOFGFW.t0sFhcpvLSOVSn3aAd3HOGd3HOVYyoV2AcmKJxkj2K1iB4YzmD9dXVbJIc9BlQeRxzImKdjrFpmkSOiSGV9sOW7Hg7UcK0i25mcd3QBwR6PVGmLayXfIhkvptPtQRaWjNlXaXRN21SniIqtvbXqPUKivRFi5AfZ0aPOgzvONkWk4GAkgZqLVC1pTkyozsS5z5QHgwo7HQROTjQpgLSKLoBoLQUn46l5hDy.0UaJIUWSNTcNALggNpSDeB5DX5ufCquBYulM7HgybgEIb354g3+VXsE6+1Suz7eS8c9u8cL+2JJUqSf+ZSnrXZ+ytr7EadkKmHO6VKLhKoYHjqj1t3Dao9zcQG0Ur3pVQFRhkhu3Ea4rVoo.yBY8l5JZhxManOMV6lBY3JH0ZhpxJMTW.wjLiB2WTAdoboF3UABgxygPn72SDBKijkupJCVWVSRtgZScY05PmHcNIC9gvJScIslp0qqKK0rQcc8u+KLJekIKHkpvOjrrfRxs33F7Q3ZBCfrG0fkKLlvnyUWpPBS1rUgIdiEX4tsX3yroIEG6OOKlQIAxvQOemVByifWbUZ0Z.5Cza.K.gfoDkKVbZrxoS1A3n3s.fHeKjma+zImaSEkpqppqzrgrXCQRB0mHl+vPyvSTyv3944IOcQxSx2vyUdRQY+nPdxJn8d5TwRz.bWjXyPugFXzYRXIoBTfMnOJ6fJMbo9hXxKM4R3oOvKBSwpiLsjOwKLaXORXRNwEwqAj0zpQWCnnqozPrYyhWCLmGPi4fTEexilFpTRixSf1d5HP5JxTBjjRSvSllCSw0kGAJ5f+LMzm31jm777og77AfGf5JT0HJDkHZW0HNImJHgoREbbqxplfcCPwN1.SrOBEp+YFBxeVt4dlzWcmqg14z.OCoqfuUQgnl7EIpcQbGSLou0MGLyu0MDvlm26lklt26lCF56cyAy06cC+lssJpmkoU5XmuI2V5.0U7wLg0ro37OMRIzzQzbcD41Z6Yz2iwBOLcCwonaR7j+nAN9fbNfViwy7b6SK8PcIOGGHL4uybHvJwM9YnZovgOl+.Gk.SwmJ8Tfr31nuxHvFneP1.zdMdtN5QiXG9RYzc36228jR0skQRxMxeVixT6Tj0ibiPBhyBOcjAMegbrMOeOTCEsXcNdg8XJNmsAksBLy40ssqGtFqlhOutr5lJEiKkgUrFZKanm2KlaeCzfn6.0sNHlONlWmi7Ikr7jkCpnksEkbHlHX1iGth1L+9Ej081gj9LleiNjKHu76fVQhAC8jDtnvk9jKAOdbg32stJC1lp0kUjGxlNLonlJGpQ6bclW+5pJZMpqHmCSqyvzlPHV0kj0kBuGE5mbc8w2arbZzTWrNLyzTG2akv4AUDg5eRuTaZCaJ.juFRvjr4kAqcMjuwI4XrYgbpXrWKAwnGjtb8VJguLmtigfpYOsGpBQuR03jT2BwdqWajXdggSldhj4EB6bbiVm+cpc3aBCa8F4lNctWk7xzWlrByQ9KKzOmjUf4ReY78X5BcR7+8129Oe3BdRvqgL2zH5tNcQMKl78PXplAI1axkkmT2BpISijKCWtT9PJ62dq+m+4CSlNzx17u+0AOjGn++291+wCGWBj4BUe1maorJjaxwt8TmvbyL5UP4mx+WObgOaX1QxMMhtjUyvd9u+c+t+bV1C8N8MGPyyD5ammITjZ7YR63iccecOCZpPlszccQj3lKhwnmQaO2iBClkP.uFsDv+TmviBv9jmql6JQWfbIWacT61o6pbMTdVanxr1v5yZCUm0FpMqMrwr1vliugj6TpPmTHRSBB6e3NrCQconMutTokEvgmuZ1sADQdHtDG7o6ZEdzr6XQOY1j+wvjeHSl79bQcUyzuezkzuvR2eEz8uuItsMXJtpaepDd0a+KHn4Ow04Wd6GTwpWeWuf0usefIsupYac7suyCp.gOU8Sq10md8Su9sgGu8FJZaHtADy0FR..UBs8yCUXQ2dCIBfaPNsu.jw1W4AMtvh.lptOGzzRuM.nZ3u55jVIpBMK1BHeqhKDZD+X3aDLvixQRi7QklEbhJtTPRJffHRzeA2Riw9S5kBsOoWl9hP463g+J.piMnovDnrxc+50g+AU2I5Ty.0GC5cqJwH2Pgq65Wquq8Y.yt+QPQqG2h6T8dUgJc8a6a4vW7cqJVSVk7+P1CzYwcAkvRgdiplCB.v+zpNFVuAeDL3cXcYDvq+EaT0uqUGve66T8SxVS+tF936TA7Aua0eckpvGZIP+Q.D9pq25RaTkLTvDkTeXeQlpF053YzdcVK9DFlv.hCY9zpxvjX8nlcuvgjA2W.USoV2mzasd9Cp7af4IoifJ3VTcOJIDnRqS4hgjm5vfR9G4QfoQnPzaidffWYs0jHiUdJFk9FR1tqD.Wbe2mu95prAQ4NwfD2YfQECmWYiyxupSf8NUg+b2pIhO.ZQWRS3Qt0Xe8tUSV5SZYC.nJ.Jr1ZeJgeC8vmv5A52nvBe6AvuUBu72obn1aP9yCDD92futY7n
      

      IMG_4327.JPG

      IMG_4328.JPG

      The FAUST:

      //declare options "[midi:on]";
      import("stdfaust.lib");
      key = hslider("key",36,0,127,1);
      
      sawGain = hslider("sawGain",1,0,1,0.01);
      pulseGain = hslider("pulseGain",1,0,1,0.01);
      pulseWidth = hslider("pulseWidth",0.5,0.5,0.99,0.005);
      noiseGain = hslider("noiseGain",0,0,1,0.01);
      saturation = hslider("saturation",0,0,1,0.01);
      speed = hslider("speed",0.1,0.1,100,0.01);
      pwm = hslider("pwm",0,0,1,0.01);
      midifreq = ba.midikey2hz(key);
      frequency = midifreq * 1;
      
      saw = (os.polyblep_saw(frequency) - os.oscsin(frequency) * 0.25) * sawGain;
      
      polyblep_pulse(freq, duty) = naive_diff - os.polyblep(Q, shifted) + os.polyblep(Q, phase)
      with {
          phase = os.phasor(1, freq);
          shifted = ma.frac(phase + duty);
          naive_diff = 2 * (shifted - phase);
          Q = freq / ma.SR;
      };
      
      duty = pulseWidth - (os.osc(speed) * 0.24 + 0.24) * pwm;
      
      pulse = (
      		1 - polyblep_pulse(frequency, duty)*1
      		- (os.oscp(frequency, 45) * 0.3)
      		- (os.polyblep_triangle(frequency) * 0.4)
      		) 
      		* pulseGain ;
      
      noise = no.noise * noiseGain * 0.7;
      
      
      osc		= saw
      		+ pulse
      		+ noise
      		;
      		
      process = osc, osc;
      
      posted in Faust Development
      MorphoiceM
      Morphoice

    Latest posts made by Morphoice

    • Dolby Atmos?

      Does HISE support the creation of spacial plugins in e.g. a 7.1.4 configuration that enables me to write faust DSP that deals with all the discrete channels accordingly?

      posted in General Questions
      MorphoiceM
      Morphoice
    • RE: suck notes with keyassigner script in silent synth

      @David-Healey no they need to ring out. i will probably limit it around 16 voice cards or something like a real synth would have

      posted in Scripting
      MorphoiceM
      Morphoice
    • RE: suck notes with keyassigner script in silent synth

      @David-Healey in the mean time i found a workaround to override the faust bug by handling the sustain logic in the keyassigner. this however breaks if more than 128 notes are played until the last pedal release. but i guess i could just reserve more slots

      const globalRouting = Engine.getGlobalRoutingManager();
      reg midiList = Engine.createMidiList();
      reg pedalDown = false;
      reg pendingReleases = [];
      pendingReleases.reserve(128);
      
      inline function setPolyAfterTouch(eventId, slotIndex, value)
      {
      	globalRouting.setEventData(eventId, slotIndex, value);
      }
      
      function onNoteOn()
      {
      	// Make the event artificial so Synth.noteOffByEventId can release it later.
      	// The HISE API only accepts artificial event ids (see ScriptingApi.cpp:5499-5510).
      	midiList.setValue(Message.getNoteNumber(), Message.makeArtificial());
      }
      
      function onNoteOff()
      {
      	local n = Message.getNoteNumber();
      	local id = midiList.getValue(n);
      
      	if (pedalDown)
      	{
      		// Defer: keep the voice alive until pedal release.
      		pendingReleases.push(id);
      		Message.ignoreEvent(true);
      	}
      	else
      	{
      		// Release the artificial voice. Let the real noteOff propagate too so
      		// the synth can match older retriggered voices by note number.
      		Synth.noteOffByEventId(id);
      	}
      }
      
      function onController()
      {
      
      	if (Message.getControllerNumber() == 64)
      	{
      		if (Message.getControllerValue() >= 64)
      		{
      			pedalDown = true;
      		}
      		else
      		{
      			pedalDown = false;
      			for (id in pendingReleases)
      				Synth.noteOffByEventId(id);
      			pendingReleases.clear();
      		}
      		Message.ignoreEvent(true);
      	}
      
      }
       function onTimer()
      {
      	
      }
       function onControl(number, value)
      {
      	
      }
       
      
      posted in Scripting
      MorphoiceM
      Morphoice
    • RE: suck notes with keyassigner script in silent synth

      @David-Healey i think i isolated the problem and filed an issue, it's in fact three problems
      https://github.com/christophhart/HISE/issues/954

      posted in Scripting
      MorphoiceM
      Morphoice
    • RE: suck notes with keyassigner script in silent synth

      @David-Healey there is no waveform generator in a silent synth

      posted in Scripting
      MorphoiceM
      Morphoice
    • RE: suck notes with keyassigner script in silent synth

      @David-Healey there's also another bug in the hise/faust midi implementation.... if a key is held and the pedal released, the note stops. although the key is still held.... weird.

      posted in Scripting
      MorphoiceM
      Morphoice
    • RE: suck notes with keyassigner script in silent synth

      @David-Healey i believe it was this thread
      https://forum.hise.audio/topic/11793/polyphonic-aftertouch/34?_=1778856642370

      posted in Scripting
      MorphoiceM
      Morphoice
    • RE: suck notes with keyassigner script in silent synth

      @David-Healey nope, we had this discussion here a long time ago and this was the only working way

      posted in Scripting
      MorphoiceM
      Morphoice
    • RE: suck notes with keyassigner script in silent synth

      @David-Healey handle polyphonic aftertouch and pitchbend by sending their values to a knob in the faust (not present in the snippet example)

      posted in Scripting
      MorphoiceM
      Morphoice
    • RE: suck notes with keyassigner script in silent synth

      @David-Healey oh yes, the pleasures of building with faust and ending up without faust .... ;)))

      im very strongly convinced the issues is within how hise implements faust as explained in the post before, not the faust dsp itself. then again that would only explains the issue that notes are not sustained even though the pedal is pressed...

      the other problems are the orphan notes that might still be a problem of the keyassigner... some never get released when the pedal is released.... could be some sort of orphans from a tretrigger of the same note...

      my forte is coding dsp, all that stuff around that makes the world tick -- no clue

      posted in Scripting
      MorphoiceM
      Morphoice