Forum
    • Categories
    • Register
    • Login

    suck notes with keyassigner script in silent synth

    Scheduled Pinned Locked Moved Scripting
    22 Posts 2 Posters 66 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • David HealeyD
      David Healey @Morphoice
      last edited by

      @Morphoice Without having something in front of me to play with it's all just guessing. The problem could be in the script you've shown, some other script, in the networks, or in HISE. Very difficult to say.

      Bypass all your scriptnode sound generates and use a waveform generator instead. If the problem still occurs then you've ruled out the issue being in scriptnode.

      Free HISE Bootcamp Full Course for beginners.
      YouTube Channel - Public HISE tutorials
      My Patreon - HISE tutorials

      MorphoiceM 3 Replies Last reply Reply Quote 0
      • MorphoiceM
        Morphoice @David Healey
        last edited by

        @David-Healey i thinned the project down and stripped all the effects, gui etc... which changed nothing but the waveform generator inside the synth container words fine and doesnt show the error. ... so it must be in the way either a silentsynth behaves or the faust implementation. faust just passes the midi to the parameters gate, gain, velocity, frequency etc... im not doing anything weird with it...

        https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

        1 Reply Last reply Reply Quote 0
        • MorphoiceM
          Morphoice @David Healey
          last edited by

          @David-Healey if the snippet correctly carries the faust code this should be a minimal example displaying the problem

          HiseSnippet 3297.3oc6azzaabbcojVGSZYG6jf1dqCzIJYJJ9gjhcbcs9z1pwxR0TQH.FBtK2cH4TsblM6LTVLAFnWJPQ+ATfbp4uQtz1qEn2xe.idnmygdO88lY4xc4GxzpxIMoYAr3tuYdeNu4Mu2aWSOUQ4dTumI4rf.pxxJyz6GJboRoHzJStC5FPsxLqcstbUqMa4v3V6rE.29i3RkScep0FcCbjRpmUlLS+.b7LYmwRe802aCGeGtKsOHKqCELW5iXsYp9P2esOj46eeGO5Ar1Il8xqsiqfuovWzAjkosKYE33drSS5icvoMks0Ccjsrxrfc8k8JSotqVttW8FUpVYkRzpMVdYZUu5qznZ4aeKG5p0KUshUlKssGSIBqobTToUlY1P30sVKwy4FFbHSxPsBdnrUMfyFv2W36gpHB0ZyVLeuXijDLY1ILYSaLYum8tLOVL79ltqqGfzGijFvLSkV7lNk3UNo3UJg3MBQJSBQZFiHcC6Ztgr.U+QP44J16vUzvFNtoWKMy0Zp+8z141T.SgqJ114X58CgGhQI+pkJUfrboRyembZejhdzFzvMc78qCqUx7pvNz4uCIWtl9h5N9jsOAHDIa1r2k7Yu3N4xoetHWnn63IMve5Qv7SAuXHURCOglubkaALBuZHBI4Yj6RJcGB6W.vget4MmO2mkKaJTeJ6HhljCCOlpUq.D8E4htZzg6pXBNQveLL28340TEl.YvgZzXjiglqPguOMbjCiN4QirdGUKQHS5fCUzsE083snsEaeZ.KradTUytzRDegKX47omP8Ac4ILdys4v8h.ZwlT0lcBCAE6Q3vHJ8wPFPodQXTCuGm9gN9cn4mmrfgfl4iyXWgWGeGv4qnjpVWoBY06nn4gk2xy+JmU4BFtEIxfEPJ7oECBYbUdMivQdwvFo77NsqSCKPNAkKznPfqkVfPNnESRbibjH+1NRk9IIQ0hRBfn.jVNbOePl5abeNS0RONrzFPAXmXlZQMUAhBTkRDvLBIt.EEsi4fj3DRIr1A9z1f4DLbLtlTB9NblhH06GhHzR4xJAd41JR7mWC1H63kqijRhzP49f.rQGkRv+.iHSOvotLexggcH0CoNGemzTX6FM.kXbDHwniA+8QOb0XPu+fow9Ef6JDyHcfH6wGHJYbRWSfhDSzX81KfxGWzSqnnKvcezNa4nbvnWQvf4EPCULTDxrE8D3rCSrrr1aQkGqDA541NPvQJjIqRO5Uihz8Hm5TeKFDO6crqQCYN9Z8w.9z3CZt7eZstwO7x+3ZOm4oZEC328qWqEk0rUhCr9kqonmpzm.UuYuyml0d4J251qb6pkqth0IICTaMbrX3TfdajRdz.d.Zz.f6bp3wXHWtjo5l7.1KryKlTQ7F16it8iVFmZDxHrX9lPFiNk8p1lMA8EvYru+G+l4H0jr+xiIunqZ.PkrOkFNtTi9aeY1WNooFELwoFkY5+OIyloFkav5gAzlMYnyZzBQRHI8QGzNM8jEY6rhak4cihkCS0D.5ZQAfLgc0QftlsQJh.oOtK4pu0DPiqZ+DLl8qMIp4y7.+QjDus8i6ztlhFDAa.hTZsIgHWwFofVVNeRw00Dn1wrwHFe88lDyAPEQn5Cock+2XQ.kAyb4C4h5CRfWNrXb8HB.G5TWrg3z3SW9jNTX+bL3WMkFgnbU68bUNmPehCuI87oMYsq0pSiF9zWCIHgI8J1aywx5NfQOq0jYLD3cRw+8grnzD48.yQa1AvYxIFXPp8W8vi5y7T6UWtHb03l3eu8lvept2EyyVSt7dHjMsKbt02Oj22w9QTdSUqIVZab7FqWr3g+psJV7iE6ew7r0js03F1vADbN0uF0GNnVLIa0GIg9o160QEzQcAQtaXu69aCmAD1ifCscasIiPuMRns4digLmQ.0Da6tj8CgygGwN9IsJ9qYCgAIqKkrl7Ax7HtPdaaHkAnJJSk3OQzQg0NcWx17lLttTxGjbjcc3PsAgXIkgzlj1vY6OhAnGifKTyfhtaDbc0p4fpDe.UQNby8V5vMqQnlRTfZnboDGETRESAYgy9Tcti4zHjENEgPwZyQeVhRnq5xTtEW3QIMNMGiC04Q6WmGV3hvu65MTzvCDcf5vzDXGOnLTegZGtG8zDkTlMkJiUtp6E.VrwYfH1SfQ2LfbYMEXyAiwtvh.VgIX9vY7Xc8f55v6YwP9Yp5lWHd5XqTVGproAyELH4mGQPW5buI.KjhPpVNiZhBNZ5dXvO5okv1aX57RfuSWTDRxFrf+nXaZdj6rZiwjnTFVwMnsQ2sMVu7w5ZbGF3wpzB4xdVJUTmbfpsSqbiQFNZ9bYAYcbBBCI4KxkEJQeTsaHtmLrFj7wRkL1YRocllOhGQFjArHo87Fv9Dgi1C5rPCq9V1IjF0NFDygcpGgUkOeARoHOTxBj7kWpbk2WapyltoKyYrHaQl6lijL2btBD8CvD54uCFtzVFr8RwFtdZI4t2kfMhKoMJ.qJ7vgU59X2SQIPHhRKVd0p2pZAhK1okPLxvsJe6JwTCAKABkOAYWTOk4IKo+sXIP4qTpTwRZBBr4DXwaXiftZUPC0TT2bJrQVqGD320Hy0obOLliiuOQHcghsvJFjv7fXXkGnIWqXjXo1bCiW4rGu1.3e6AFtx3G9EiumgitYiC2GM8D+dTib9wtj7CztjbU6ZLezYBiXqY+r13lKywV+uTWRJeN6RxLeO98+7tQP6KQkGU5iY9GlVaggr.ApiuGZxeBEBd0DxRj5oy7ngiuDamr45ay2jxOFUb7QEm5GiJ9cbTwQsc7Z1X1dlsW.eQA3mnAEzRvYtjnskCHR81N9ysGk6dBOb6K71bZ8Xp54hvi05Sz8PPdTvuj8AToxZceewywWGCKZAVScMz9JVD+ogR8LdKaHIthkrLnQiJid81hN3KzwNyT.i66xrAjf3w0XeJEGB8Pdni7.GlO5AUqiD1G5sGWebCdpAtB9XnDRP.uuC1sft66fuYmafUBqfkcZXQ23k+Hknu0FMHlO0fngPZ06zDC6Aots9MOMkMLebbi0wvTjpukcCmN.toDfYAAHjVzLxnXXOrdUbLQDDSmwwmfsPSgrNq8l9.k2wy5PSiEhTCqAlmtmv66DBbFxFW1a11YzLLw.VYxE+Db+tL9gC1whccN8vA6HitWu50LMrWta88uWsioO2XRRNynV2qTNvpL9BtsNfdp5.gljQI4ir9J1eDTodCXAzyBeClZqQsN0ePnnSf9gjBwuoQi+081hBVTe0Pvsd80ne1ZudZzrQZjN4jKBE5K97O+uOJERC25M+RzrvwStNcu3VgVqZ0uZTJjF92BqPWwnPWXKPWz5yq6BzkseDsIb56EhxnuFgxD0gx23Jy0reB0m5Ho+vwe6p8ToKJOtu32+W9y+y6M5Eou9deqrHAG+hGop+Njtn76d4XToWdgnRFXiUktjMrEh9c9VnkWaHU4O7UC5uAQ9+xyTUZDR+jKJUgs1nUE1ZV0zeUTG3D1jpzYBkDPTkObpNsU4.4VXkJWlLCjixr16HODG00wum7.4FtgPbbaGcNomuxqheYGPgrmB47fucbHaK2dIhJ6kCZzyk5kGVMHUS8CeCbEMX4dIMgCVt2f+fgGscbCEOyM56VCLzWVCARCkqSZMq8t3yjxC+hrvVP+LW2zjZHDqbdQr54EwkOuHtx4EwUOuH99mWDu0qFQrkTq2QIZaJaChdt+15MSYxX9d.z0dZQaWm54Q8LEgh64hgvomdenrK8V2FLrvxoveLRx0MUyrDV8QQOYPuFoXM0WMi8RKQtONJw3uRPx7ADbp3aSbS8KYzy7kc9vcpsMTsKoRoJqtXoUVr7J4XsCDgp7yIUdZdTzmUeNrQ+XraxcI00uj07y8zJkNBAAik0bADGe6QH8DMZjCCPByukT+R0QDJeDBatB36Y.+i9F71REKCToG93j5P4cANx3ooPkiPXygXTJ5OkitKIENI5MzkKmitNAymAcLc5W7vSkptfw4Xtn9QyUnTwJEJUXU32RH4hPVmjDYX70vGj.uOPfxwDvCyAd.lGmW7fnVMEu8hqGfLL5ij0USwZoI4AMxmzC4jYTLH5qjB8PS1ToQOQJVowtbJQOLQxkjQf+DH8f7sEM.bPSw+dPGl48wzWmltwlGinI28AXYJzxAGaFPHF7n7hNdxP7K0tmcXAzGcE8aJD84HKRPeebcJFw93Y7aJPLK+ZTAb.90CoPIZBz7JkwZQhlZHFUVAnc+okvcXQhW+YUBD8dd6ZYn7B4KuXOC0B4gGvcLyOu9+x.znux8jR6ypybjoE4BjHumX8u.IwdAXVRyugQ+ZL5QpGIGFL3CHspC4nD5DzJ+badHZu014bBoKrmVHKB2jG2pie478DLXBAlVkomiaA3e2Imk0+A.ejyFa
          

          https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

          1 Reply Last reply Reply Quote 0
          • MorphoiceM
            Morphoice @David Healey
            last edited by

            @David-Healey my guess is on something along the path from hise to faust or faust itself
            so i pointed claude to it which revealed the following, which might be the cause and is beyond my reach

            FaustUI.h:201 — each Faust voice has its own MidiZones struct containing a sustain flag:

            
            struct MidiZones {
                float* zones[(int)HardcodedMidiZones::numHardcodedMidiZones];
                bool sustain = false;     // <-- per-voice, defaults to false
            };
            

            PolyData<MidiZones, NumVoices> midiZones;
            FaustUI.h:357-365 — the reset() method only zeros the pointer array, never resets sustain:

            void reset() {
                // ... clears modoutputs, parameters
                for (auto& mz : midiZones)
                    mz.reset();   // ← only memsets zones[] to 0
                anyMidiZonesActive = false;
            }
            

            The struct's mz.reset() is:

            
            void reset() {
                memset(zones, 0, sizeof(float*) * ...);   // does not touch sustain
            }
            

            FaustUI.h:330-338 — note-off behavior:

            
            else if(e.isNoteOff()) {
                auto& mz = midiZones.get();
                if(!mz.sustain)              // ← only releases if THIS voice's sustain flag is false
                    if (auto gatePtr = mz.zones[(int)HardcodedMidiZones::Gate])
                        *gatePtr = 0.0f;
            }
            

            The mechanism: mz.sustain is set ONLY by the CC 64 handler (FaustUI.h:339-356) — never on voice start, never on reset. So a voice that was allocated AFTER the pedal CC came in, OR whose voice slot has never received a CC 64 during its lifetime, has mz.sustain == false — its gate gets dropped to 0 on note-off regardless of what the JUCE voice manager thinks about the pedal.

            This is independent of JUCE's voice-level sustain handling. The HISE voice manager keeps the voice ALIVE (because JUCE's sustainPedalDown is true), but the Faust envelope's gate has already gone to 0 — so the voice produces silence (release tail) and gets killed by silent_killer.

            https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

            David HealeyD 1 Reply Last reply Reply Quote 0
            • David HealeyD
              David Healey @Morphoice
              last edited by

              @Morphoice If it's on the faust side I won't be much help.

              I'm not hearing any audio with your snippet.

              On the script side this looks weird. What's the intention?

              global Event 			= {};
              
              Event.noteIds 			= []; 
              Event.noteIds.reserve(128);
              
              for (i = 0; i<128; i++)
              {
              	Event.noteIds[i] = [];
              	Event.noteIds[i].reserve(32);
              }
              

              Free HISE Bootcamp Full Course for beginners.
              YouTube Channel - Public HISE tutorials
              My Patreon - HISE tutorials

              MorphoiceM 1 Reply Last reply Reply Quote 0
              • MorphoiceM
                Morphoice @David Healey
                last edited by

                @David-Healey dead code

                is there a faust node in the polyphonic scriptfx?

                toes it have a dsp code?

                if not put this

                // Faust Source File: Test
                // Created with HISE on 2026-05-15
                import("stdfaust.lib");
                
                gate = button("[20]gate");							// note on off
                freq = hslider("[21]freq", 200, 20, 20000, 0.1);	// note frequeny
                gain = hslider("[22]gain", 0.0, 0.0, 1.0, 0.01);	// note velocity
                
                attack 			= hslider("AttackTime[style:knob]",0.2,0,6,0.001);
                attackSlope 	= hslider("AttackSlope[style:knob]",0.7,0,1,0.001);
                decay 			= hslider("DecayTime[style:knob]",0.3,0,6,0.001);
                decaySlope 		= hslider("DecaySlope[style:knob]",0.3,0,1,0.001);
                sustain 		= vslider("SustainLevel[style:knob]",0.5,0,1,0.001);
                release 		= vslider("ReleaseTime[style:knob]",1,0,6,0.001);
                releaseSlope 	= vslider("ReleaseSlope[style:knob]",0.3,0,1,0.001);
                velDepth 		= vslider("velDepth[style:knob]",1,0,1,0.001);
                legato 			= vslider("Legato[style:knob]",0,0,1,0.001);
                
                ramp   			= en.adsr(0, release * 0.15, 0, 0, 1 - gate);
                dramp   		= en.adsr(attack, decay * 0.1, 1,0, gate);
                rslope			= releaseSlope - ramp * 0.25;
                dslope			= decaySlope - dramp * 0.20;
                
                velocity 		= 1*(1-velDepth*((1-gain))); 
                
                envelope 		= en.adsr_bias(attack, decay, sustain, release, attackSlope, dslope, rslope, legato, gate) 
                				: hbargraph("CV",0,1);
                
                
                osc = os.polyblep_triangle(freq) * envelope;
                
                process = osc,osc;
                
                

                https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                David HealeyD 1 Reply Last reply Reply Quote 0
                • David HealeyD
                  David Healey @Morphoice
                  last edited by

                  @Morphoice Oh hang on, my current build doesn't include FAUST 🤦 I can't rebuild at the moment because I'm in the middle of something, but I think you've nailed down that it's a faust side issue.

                  Free HISE Bootcamp Full Course for beginners.
                  YouTube Channel - Public HISE tutorials
                  My Patreon - HISE tutorials

                  MorphoiceM 1 Reply Last reply Reply Quote 0
                  • MorphoiceM
                    Morphoice @David Healey
                    last edited by

                    @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

                    https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                    David HealeyD 1 Reply Last reply Reply Quote 0
                    • David HealeyD
                      David Healey @Morphoice
                      last edited by

                      @Morphoice Tell me what the key assigners role is.

                      Free HISE Bootcamp Full Course for beginners.
                      YouTube Channel - Public HISE tutorials
                      My Patreon - HISE tutorials

                      MorphoiceM 1 Reply Last reply Reply Quote 0
                      • MorphoiceM
                        Morphoice @David Healey
                        last edited by

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

                        https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                        David HealeyD 1 Reply Last reply Reply Quote 0
                        • David HealeyD
                          David Healey @Morphoice
                          last edited by

                          @Morphoice Does that need to be scripted? Isn't there a way directly in scriptnode to get those values and forward them to the faust node?

                          Free HISE Bootcamp Full Course for beginners.
                          YouTube Channel - Public HISE tutorials
                          My Patreon - HISE tutorials

                          MorphoiceM 3 Replies Last reply Reply Quote 0
                          • MorphoiceM
                            Morphoice @David Healey
                            last edited by

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

                            https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                            1 Reply Last reply Reply Quote 0
                            • MorphoiceM
                              Morphoice @David Healey
                              last edited by

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

                              https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                              1 Reply Last reply Reply Quote 1
                              • MorphoiceM
                                Morphoice @David Healey
                                last edited by

                                @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.

                                https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                                David HealeyD 1 Reply Last reply Reply Quote 0
                                • David HealeyD
                                  David Healey @Morphoice
                                  last edited by

                                  @Morphoice Does this happen if you swap your faust synth for a waveform gen, keeping everything else the same?

                                  Free HISE Bootcamp Full Course for beginners.
                                  YouTube Channel - Public HISE tutorials
                                  My Patreon - HISE tutorials

                                  MorphoiceM 2 Replies Last reply Reply Quote 0
                                  • MorphoiceM
                                    Morphoice @David Healey
                                    last edited by

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

                                    https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                                    1 Reply Last reply Reply Quote 0
                                    • MorphoiceM
                                      Morphoice @David Healey
                                      last edited by

                                      @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

                                      https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

                                      1 Reply Last reply Reply Quote 1
                                      • First post
                                        Last post

                                      9

                                      Online

                                      2.3k

                                      Users

                                      13.7k

                                      Topics

                                      119.0k

                                      Posts