Forum
    • Categories
    • Register
    • Login

    SNEX Correlation Meter

    Scheduled Pinned Locked Moved General Questions
    3 Posts 2 Posters 46 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.
    • resonantR
      resonant
      last edited by resonant

      How can I make a node using SNEX or a C++ node with modulation target (value range between -1 and +1), just using the useful Correlation Meter code below?

      (By the way, Thanks to @dannytaurus for providing this https://forum.hise.audio/topic/14007/phase-correlation-meter/10
      )?

      function processBlock(channels)
      {
      	var left = channels[0];
          var right = channels[1];
          var numSamples = left.length;    
          
          correlationSum = 0.0;
          sampleCount = 0;
          
          // Process each sample pair
          for (var i = 0; i < numSamples; i++)
          {
              var leftSample = left[i];
              var rightSample = right[i];
              
              var normGain = Math.max(Math.abs(leftSample), Math.abs(rightSample));
              
              if (normGain > 0.0)
              {
                  var thisCorrelation = 1.0 - (Math.abs(leftSample - rightSample) / normGain);
                  correlationSum += thisCorrelation;
                  sampleCount++;
              }
          }
          
          // Average correlation for this block
          if (sampleCount > 0)
          {
              var avgCorrelation = correlationSum / sampleCount;
              
              // Apply smoothing (same as backend: 0.8 * previous + 0.2 * current)
              smoothedCorrelation = 0.6 * prevSmoothedCorrelation + 0.4 * avgCorrelation;
              prevSmoothedCorrelation = smoothedCorrelation;
      
              corrCable.setValue(smoothedCorrelation);  
          }
          
          
              
      }
       
      
      ustkU 1 Reply Last reply Reply Quote 0
      • ustkU
        ustk @resonant
        last edited by

        @resonant Well, I am not sure it can be done by enabling isModNode and use handleModulation because it might just not process the audio block anymore. But to be honest I don't really know what I am talking about here so if someone wants to say more...

        You can still test with isModNode but if the above is true, you can use a global cable (Tools -> Create C++ code for global cable)

        Hise made me an F5 dude, any other app just suffers...

        resonantR 1 Reply Last reply Reply Quote 0
        • resonantR
          resonant @ustk
          last edited by

          @ustk

          I think the calculation can be done using the float getSamples function and then passed to the mod dragger. I managed to do it up to the code below, but the rest is beyond me for now.

          HiseSnippet 2980.3oc6ZzzaabbcojFaSp3D+U93PNLPs0ktUgTTVwwA1xj5yXUKJQnUVV4jvvcGJtPK2YytyRKl.Czi4VN6Con.4WQOk7GH.EHGxoBTfdo8l+Gz9lY1k6rTTVzJ1pwAYkfzNuYl22u2LuYV5gbpmM0duPOGeeJ2vH23MBXVzvPVfQtBa2ymZj6MPl873sWpMwwyXskMxcEzRrf.pKg6v7pS4z.iE64SBCo1F4xM9mHFWt7SXHedV0EItDOKZJHCicXNVz0c53vSg1n1CbbcWkXS21oi1nmq1ZVLukXtrHfmFGMigOw5.x9zMHhgMFx39jv1F49CHK64rly5VMmqBgz5ipz7Vzl2txGUgdaqOz9isrHVeXSqJ27lDibmaEaGNKvjS3zPibSrHytmYa1i8TDXGmPmltTQiJFl.kUfWk4ZKDQATikZ63Z2WYEBptyoo5FWo5tFptisSe3opvKI6.mNCcEXtwxxdimg8pnydynwdCgkxowRSnXoKiLsBb74o8H3mIQq4A1wVDvNoyJpwZj66.SNL.OdoNjCnqF.M5Ogh2ZlYlFC+4F2oUjmkvo.y71fwoa5U7FE9hB4K7jB3A6pUqg1mfLALWWZvP6V3ZD77lXQunNMoASi6Rbin8GHH9Y0oniWmpaxsTRs1.Ydq44v2zm5cbNBFwpJ3sGt1xDNQXHhgAiymFvcDrPtkocgv.kYIOZYZ3AblODHbDaF3svrif3srtPh.s3N.cPF6lv33E5v6oGH9RyuZTYwKiZ3vsZObdbrgvifl5UAOFGMdQzJsZQs3oL3DnU28rKzqPbnGPSAwuHxbCQhz57fc2cnQceIJ0C2Of5SBnayZ3R5ULjzw2ktEvjSia5xrNvz4yoGMrvWwCKJFQQq1DOOpa3oI54birZoxy2prEKh63secBOv4PHLbinNlPhcK5RwbG.K2XhfHU6YDsENFlvJUxF+W3ItyJh14h6rRRmZweaP4OlEbfzdD+tQtKHT9EPIpdiEbcYOdIVGemXmTkHQCBkMNOZlRvOpg0f41yuMyywRXmTSJg0WnCKBnZL+m5zuXh8IQTf0q1l33JhALiBgLI1a5YB3QtHovGbClM714VkXA57dMH71hXIQtHvwkFTxpuCrlXj5.IT8pEG05VfyjEQUrAv8cDpIwRn4FWzuPOMdLwEX+pHpWWpKjxZuVLg3CqzmgodejcOORGGqvRGcj5dzJ1YX36D3qIzxXpqT2lDrOkGFmZ0iZorbRU2Z1hEzB8nGtmmPXZPB.xCqVI537HGO+HtjLPHzgIInW1IzGhrVLBRQnBfy.wPjuxldXhS1JPbhMra.4zSb75SHohreKvNT2waGQHkdpt5jCyBq1WUyjS8UtJRX+0m9z+VUyCnOVo0igh+9u96qJrOW.s.mCaFxXa5g7sYRrAZitf9RP0ygj6jpArWIoxzLp4mDvh7kMzHcsCZ052TaYZKRjKe.1btZFu5ki7nsntTRH8mnf3+Wd5mZ9RTPf0LGPPTvFTPjPEBxaghS1Y5ruGw8XDmIQODbkZAgx1mrLodFtLIxvkFsp6xmIJ8RPpi.ZozdGVpB8Y+hDSJWnSzpmHDQZLWxEvNDqEys8SBE7hD.+lH+Nj8h7BsHtR8TlXXEpGHFFsMAVDRjmvz0wlFz.BMDsVHx1gspipK3+p.TiAi3yF9lSya47odKHwpAZdJHTEnsPtSRrrPDm0AVlTtGmT2G0D0ccTSMikMi8b.MPFS56HWM.VwtTlwbzTtCfjSZUfSJa6wmh6MNZD0y91QKhxv33inRL0uxijVSgTopKiI7DRa7xPHKfpCrjiuauWVx4ypNb47YUOCDGDZAa6yfbe59hFO2bRuAZsvcD8BQAID.rrKxXGzgH2e3O4R0tZRMFxrMqyDSVlW3ZJHXAHrXy6zfJYpC5TddI9i74kX1yyptLuRJQjElsc.jgD1MtNoDr4JdhDo15ieKFiKpaW+7ZLkEg.0DDvAzqijsnf8NjlAlHArJmzWiJuCyMpCMrrPmWdYPS2jcX4MV3Qkq+Py0Vpr4B0ar9J30WawsVXqOsbiEV5AlkMi775gWmbXYStTitBnA83ND2PrBe3YKCFuPdPjptlG3vwe.dlJyT1bcyUvyhGdu3Ue35qiqu1tkdLoqQGg0.k6o+ieuQGhb+de0aujgKnVjRZRetR8jcR+4F+4cjRUNkGozD+r6HkdM3zIxT5c9DdzzQ3rtRb8GwmiYbpkDnYhKGuNyikTqmtqMT4596Syl0aXBT7dy6C4Z0R1kaBnu7GpsNjIjDLXz4KftnxK7wPLT606EWJAVjLA+56oJM9unOUoyjiOQSDeWkHNI5QjtT4s.HEv2V1tEKnC9Sndz.g8oxwcG.+4dW8u+xeMsMs3.K.Kf4E5yBgH2TL+clzNNay7ng5PGbFypumm9yX1ra7fG4kA0wfxLJgpXUPUnMtKTKA3r5.aP7xfLncFLUWXRSZ9OqpVE1jBRt8lgVfhgLvlsZD4FRejiMucE8IlBdVcv2mDXK1JPl.iWIKa8y7aBoef6BA9z822QpVUUboAIqC8fJpS+If1+zIyc03ScEFJWxQuY7ADuXDmCo0bjkAq3hXPcOxlfGAbbQzVzPJ+EFEppnkn3sjYZDUAnfM.RduZiBRlDIvfjWNcbwkjHv7.migMfpaFA0AfEV.+Azdg+TzHfv3So1Ovi0bPDb8ipMtTLBfpsaxVjcnDEWAYR+rHww91G7nKPZrxEQpbaaQ7fBpNURSdjY6nVsbomNOrIQpjUa6PedhvDJDbkLzWbJMRjbMTRZXsNF.aWqls7.W+cnYmqz.OM5+1G+.3O2uqwnS4cf8+YAaZ33o7y91LTt0ebwEDDZ4RktYTiAaOxT9Jn0od6yaOxRbqCDzQ9rKquDuyeBnaI6FFili2kQw6.vD1PprB9S1uanH5cQaFw8i3ujP2kQ0arhrJqXDdDuwQLx5sDHBpN6XPyL0FEm5ygtOrL2PBH9kbIPydFWBjwu8WKA5WKA5Ew0dLM5Ooh9mG7hcI8LT2Il78r6dSBRXVWm1Rqbi2uV+N1xY+1bcG0UgE2aBdCZyn1Mu4OTMAt9DjcrN6wM.BtZ.8yzKv+9NGApwx0R2pesB+3OTcaZGeV18lCdUi+5zktezDNuYbBG4gA1LNknBDVAKqQZKFqS16L7+TcYRG+zCnDzy+qpOhxWGlsaLr+423+8UWNnmNLie7a92UkE.oiKvFP+bpVdF4sR9ZqV94uzC3f8y6TXvVGBslEKyig++ShryBC1YAM5PrBX6EegfhTjWPBAjaO44smGUWzFW4n6koCT68dVVYQ0Ql3rm1IdyS6Dm6zNwO7zNwacZm3GcZm3sO4IJNZj3KiTDaXX.aqU8Emjq+czjabCZ7GihZKrBW69P7nGFey24FqkiHrP9OEm7No24e4j6nuT6jO5QiwlYLDGVYBhLo3653wwary8vpKPAmLdw2Hl4Fqr6dar4xqTLA5MtSg7EJj2lEALId28wyiqTZFAP3mlLlKF7nscooA9EUi853t2nPd.m4U+1ElID7ztTfn31hcwkArMM9C.rMs.kRBkOe.kGE3gAViB.dhj3YY8F2C2k4XiCo792aXLM6SRmVEafmed7L2.WtLdMw04CPkbe26HXGAhyKQih8uuSHcktftpX+2tNldiu3IwiBH1JGBDxi3JLaEsD2+DVGz0w1SiE7mi3qKJclweteEan9uoO0JD6GlNf.wwnTT1NUPE0xHLsIGmlfBhbvwxd7mCXwA5E3A3sAPkfmVJ67VUn1JF5S7taKWFgOMLf9yMegmbmBFFGwG68FlO1gcbS8xlLG5tUAH3tpO4t4mBrqSgodVLaH047S8vsW8Ct8TUuWgB2M8JeuWALNsIN4lrmepYDSN4RriwUx8WG2a5UWq5GPk1yZKO+TxOkiovC6NrA9I4FrmBKtB64mBvX7MXCumEY5Lk9EYq.U9dEtaYcYxv3+A+Zd6PB
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          21

          Online

          2.1k

          Users

          13.2k

          Topics

          114.5k

          Posts