Forum
    • Categories
    • Register
    • Login

    Phase Correlation Meter

    Scheduled Pinned Locked Moved Scripting
    10 Posts 4 Posters 207 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

      Yes there is a good GonioMeter.

      But how can we create a Phase Correlation Meter similar to the one below?

      alt text

      ustkU U 2 Replies Last reply Reply Quote 0
      • ustkU
        ustk @resonant
        last edited by ustk

        @resonant you'll need to run your own algorithm. It's not too hard to make, go search google for something like phase meter algorithm or left-right correlation algorithm you should definitely find something. There are several ways for doing this depending on the complexity and the response needed.

        Hise made me an F5 dude, browser just suffers...

        1 Reply Last reply Reply Quote 2
        • U
          udalilprofile @resonant
          last edited by

          @resonant Hello. Somewhere on the forum there is an algorithm you are interested in.)

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

            @udalilprofile I think this is what you are referring to: https://forum.hise.audio/topic/10913/correlation/5?_=1765392189920

            U dannytaurusD 2 Replies Last reply Reply Quote 0
            • U
              udalilprofile @resonant
              last edited by

              @resonantNo) Someone from the user created a meter from the panel

              1 Reply Last reply Reply Quote 1
              • dannytaurusD
                dannytaurus @resonant
                last edited by

                @resonant There's a phase correlation meter in the HISE master output panel.

                The HISE source might give you some clues.

                CleanShot 2025-12-29 at 10.44.03@2x.png

                Meat Beats: https://meatbeats.com
                Klippr Video: https://klippr.video

                1 Reply Last reply Reply Quote 2
                • resonantR
                  resonant
                  last edited by

                  I'm trying to create a Correlation Meter using the method below. However, the meter gets stuck at +1 even if the signal is mono.

                  I'm getting the gain levels using getCurrentLevel Where do you think the mistake is?

                  L*R / sqrt(L² * R²)
                  
                  HiseSnippet 1764.3oc6Y8zaaTDEe2DugD2+nVTQkCHzpJN3TUkl0IosnJjciSRSDNMV1gT3TY7tiiG55cbmc1TRPEwQ9JzaHwM9D.mnW4FRbfKbnHNgDH0KbFdyLq8NqyFW2PZgT08Pj22adu4898dy68lM0XTWbXHkYXleyc6hMLOoUicC3sqzFQBLVaICySasNJjiY1JRKtaWTXH1yvzb7aJHXNUNC4ySJsHxGE3hSHYXrEk3hqR5P3ITqU98I99qf7vaR5ns54KulKMnB0mFA1y3VyZzE4dWz13agDKaLKiUQgsMLunkq27ty6dkly6fPstpSyqfadMmq5ful6BduqqKxcgltNyMGxvbhk8HbJqAGwwgFl4Vj5sai1z6Gn1fsHgjl9XwKNFMfcVQdEpumvEE+1nRahuWsd.UnggoUsDXabErcNq0Idj9zSfuyHYXmHgN.ZNVZya7TlmyAYdYXRlZlTNkIcVqFtLRWdBGg8bBq0BfnYKDDmzME0ZMF6axYUgBqHfOSGzcwqvfW5KQghyN6krKVb1oudd34xW1tBkwv9HNgFXuNFVVdHDFxs2AAILLlujl86Y2Smai4Unc5RCfWJbg9q3BfBSDbiHd2HtH6BjTlNJja4VsvtfPIbERM39wE61xAaSBvy3xv.tJRxXaz7SDBKDHdYyDh4RVUP99MgDsBshBbENRgoy+YSkeJgJqBJKY+jVeD3vA7p3cv9E3rHLnR4RqO7k1B4GJWqZ0tfQrkOHR0KV29x1EVGANY38X79+pP0osunc+2pO8zJoAjLj5imoKi.PnROwb5glBWaKjeDNgc9GH9CDvfTMF2l2FayENu88I711e9bKr5dyjfLh0HwlBysfJT26IAsaP5z0GK7UmrhRZrSGba.FHldfoDJ1BQHA9PPztWTwlFn3IjiQ8K31SnKA5EbVHpkeJssUfB2fyYjlQbbAcF2l3waeIamYE4wO354GtkHzS7d1OUY.aQhQIt35zfC1AELy18DbNxbtg5ZJaHaGSyJTgdMK7VTNdC44CHe6A4sGjUqVYxKVc9P9TVrUYZCQvBAQcZhY5PgXgPktzkOmXzJe5pvDsERCVKfv2nKN98j5+NYTr0HFTgxtiGagvu3xhtmNtnaCehGlYP7DUb6evzP5.5sLMNHErXDmSCjJXBKQLomrVlRQGA4lzRkjlwt9AqsDhiD8Mh8Ev+5hYbh.FMWBuCz0V0EYJqkvg2kS6Jc13LHvlFI28SS1zaTdW8N8cRM4v22g344iqQCIhHu9.DFZap0SChR1uunh198nVkYHOB8lLZT2dQ0QQs8QvCRwn8q382HFFAf5EAMISOWf33ZLCgOq2LVzvM.vhc0CZCNrPtCNae1LmkIyb4QzbOqUMB2sc116XYXuPt0ya6MdzqSYo54jXr4rV4COryYM6nOm0j8mXte4W41eRqj4.Fx7xFFKASNkBxj0tSH7QkyXh50B1ANnVi5iXCB3ieTMMYtQNqPNj1wlr3W2RB4GmLXYJwwGC9LV0P+eHgnNMhSB1FFelQfh2V2JpSC3ZktXvTCBv9ghFoiIZunde1dMVafC7ju72vSLSGw6lwLc5wTGRNuBRNg0sQ6fkyBKQi2P9dKJqi8MwAXl.qbFRIgebTuBc2Q9Jza3xASXSFJHrKMD6nq4F3NjMglfgonNfDE038n9RTLccLdTPZUqHkZUBnXE.JzV2jk6QrnNQHEJkxf2Soo0IZCV73RKGffDjFXvy81HzE.FANqmiUKBt7k7jjitfIjKpSdUDyChgtCq1ZtQq1Z5d7ZqOihtS775qJLh15QUAf+sy0bzzbdpd1np47xPWSeXD29sAZgh748nl9LoXTxtsoAjTY.0wPojs2FmJwJSGBtWFbUpDJmqbcrOFEpcN8cJWEt7GhA3D9PhEO6ePnLiWuokxbsEERre4XdzwOtMO5y7IzLC4iu+z+SGm9WGCCM1L9.phjshV5T+5TZmFj85kS9we6a+mkVB0oKzJMlT44l62Jcar5qZES6qd3C+gRKw1c.Z+dI84YK+q68GkVggw6g0x5gk8ckNxFb8Eca+SnP4WSMVoDdmT86zvpjj3.VUbKst3uU49LpS1tMWujwJXrm3KxnKwO+0OtTO55B7n+pvuTpJ890fMDP360WOe4OUdUx9nZrT4A5ftIFtLb5VdO43aT4ftW1ozH37pKl8pKl8pKl8R+EyFNj.kAO9DAOuEb4lh1x4dr+uevmWDAxWD6QGjKidGW0mSWTicRIEvuCj+ammxZcw61NC9YzML5.2A6NttoU09Dr3gUv4NrBN+gUvENrBdkCqfW8vJ30d5BJth7Mh3zNpyIFFqWaY4+1CSS0mLPdjw3efQSF.Z
                  
                  dannytaurusD 2 Replies Last reply Reply Quote 0
                  • dannytaurusD
                    dannytaurus @resonant
                    last edited by dannytaurus

                    @resonant Looks like the correct formula for correlation is:

                    1.0 - (abs(left - right) / max(abs(left), abs(right)))
                    

                    From the HISE source StereoInfo::calculate function:

                    void MainTopBar::ClickablePeakMeter::PopupComponent::StereoInfo::calculate(float left, float right)
                    {
                    	auto normGain = hmath::max(hmath::abs(left), hmath::abs(right));
                    
                    	if(normGain > smoothedGain)
                    		smoothedGain = normGain;
                    	else
                    		smoothedGain *= coeff;
                    
                    	if(normGain > 0.0f)
                    	{
                    		auto thisPan = hmath::abs(left) * -1.0f + hmath::abs(right);
                    		thisPan /= normGain;
                    		auto thisCorellation = 1.0 - (hmath::abs(left - right) / normGain);
                    
                    		auto idx = jlimit(0, 100, roundToInt(101.0f * (thisPan * 0.5f + 0.5f)));
                    
                    		panPos[0][idx] += normGain;
                    
                    		smoothedPan = coeff * smoothedPan + (1.0f - coeff) * thisPan;
                    
                    		smoothedCorrellation += thisCorellation;
                    
                    		min_c = jmin<float>(min_c, smoothedCorrellation);
                    		max_c = jmax<float>(max_c, smoothedCorrellation);
                    	}
                    }
                    

                    You would also need to implement some smoothing too.

                    Meat Beats: https://meatbeats.com
                    Klippr Video: https://klippr.video

                    1 Reply Last reply Reply Quote 0
                    • dannytaurusD
                      dannytaurus @resonant
                      last edited by

                      @resonant FYI +1 is the correct value for a mono signal.

                      It means there is 100% correlation between the left and right signals, which is the same as saying mono.

                      Meat Beats: https://meatbeats.com
                      Klippr Video: https://klippr.video

                      resonantR 1 Reply Last reply Reply Quote 2
                      • resonantR
                        resonant @dannytaurus
                        last edited by

                        @dannytaurus Thank you for the idea.

                        Even if I don't use the Smoothed function for now and only use the formula, there's still an issue.

                        While HISE's own master analyzer correlation meter occasionally shows values ​​less than 0, this correlation meter never shows values ​​less than 0.

                        Also even when the signal ends, it remains stuck at positive values ​​again.

                        HiseSnippet 1752.3oc6Y8zaaTDEe23rkD2+nVTQkCbXUEGbPkTuNIsEUgrabRZiHowxNjBmZGu633gt6LlcmMsInh3BRbiy8FeMfKTgDG3FH9B.BIjPvg9Mn7lYV6cVGaWSnjlhpOT048l2adueu27duYSsPlKNJhEZXleyc6fMLOgUico71UaiHTiUWxv7TVqih33PaEoE2sCJJB6YXZl65BBlSOog72iKuHxGQcwojLL1hQbwqQBH7Tp0p7dDe+UPd3MIAZ6d9Jq5xnUY9rXvdxYUznCx8tnsw2DI11DVF2.E01v7srb8l2cd2K0bdGDp0kcZdIbyq3bYG7UbWv6cbcQtKzz0Yt4PFlGaYOBmE1fi33HCyIWj4sai1r6QUGvVjHRSerXgiQC3jUjWg46IbQAUipsI9d05BTQFFlV0RgsbJX6rVqS7H8nmBemVxvNUBc.zbhrlWtLlmit4UTy7FfIYpYRSpLoyX0vMjzgmxQXOG2ZUJDMagf3jton1qwDeyjVUYvNn7YCP2EuRHrnmDEJUr3ErKUp3LWMO76hWztJKLD6i3DF0dcLrs7PHLhauCBRXBC8kzreW6t5baLuJKnCiBKJb9d637fBSEbiXdmXtH6BjTlNJja4VsvtfPobER0+4wEm1xzsIT7rtgX.WEIYgaz7iDBKDHYayFg4RVUQ99MgDsBshotBGovL4+joyOsPkqAJK87jVeL3vT9Z3cv9E3gwXPkxsVezasExORtW0tcAiXKePDmYKZ+11EVGANIpYTg0fU0mw9h1RJAn6qwZlKX2aQ8YlQoM.YiX93Y6DR.HUo2DNcQWgqtExOFmxN+CD+CD.gTuPtMuM1lK.C66Q3ss+z4V3F6MaJRI1iDqJL2BpPe2eoneCRPGerv2cFTTSic1fcCv.wrglhnXKDgP8gfpc2njMip3IjKj4WvsqPW.zK3rPTL+zZGq.EtFmGRZFywEzYbKhGuMjWWTjW+fqlezVhPOImYuTm9rEIFk5hqynC2AELGr6I37Ly4FoqorgA6XZVgJzqYg2jwwaHuu.4aOHuc+rZ0Zf7RTmOjOMH1pLsQHXAZbPSbnNTH1HT4Ka4TqgWNUuZuqBSz1HitJkv2nClNrd.FI.IT5MWhUA+Otrv6oRJ71vm3gCMHdhpt8tLZHMZs1lOwXXJXwXNmQkJ3XVh3PWYsLkhNFxMkkJwbemZYi2e0kPbjn2Qhu.9WGbHmHfNykv6.ctUcRl1ZIbzc4rNRmMIqArowxcue5gdsJ6ltXgJAYld3aCHdd93ZrHhHZqODgg1gZ8zfnzy6yppcdOpUkPjGgc8PVbmL3vXo7d33vTOZXpe+MlgQBXdwPSyryIHttlvP3+5MmEMfo.trqtlelM7v3ZhmwpFg61dv13DCvFgbq+KrwjQtNokp2RpANo0Jevgv7US0aR4dkYkG+IrR6+Oh4jMLVBlXJCLIqQmR3CqLfIoWktCb4rFyGE1OHmar8RmQ6kSN1YBxgyNRms9pVRX9ntQJC8GsMxSaUC87JXWmEyIzsgwdCIPoWqaFGz.ddnKFLOJE6K5xaNgnEgZcwtMGafodxEOA9kvzQr1LgoSWl5vv4TvvwstEZGrbFVIB7Zx0sXgA1WGSwgB7wYDWw+ww8ovcF6mBugKGLgMCQznNrHritlafCHaBsvhxPsOIJow6Q8jnT15R7XZVUqHkYWBnXE.Jz12TU5RrjNQHsIixf0Yzz5DsgC9kxKSQPRQCL34daD4B.i.m0yqpECOhRdiwQWvTxkzIeCTnGDCcGUsxIGuZkOkOHvwNx8AAdAXriL8TmtqMp5otLzryGlFsWk7VnXedWpYu5Il5qSaFkjIPWGCUL1dabl7mA5PvylfW5jR4rUpi8wnHsqiuYk0f2lgBAbBe.wBm+we+lAFudcKk4ZKpWX+h63h49+83h41ep8oRRsqig43Zlb4SQxVQKaZccFKnAYut4a2oUqeu7RnfNP2vDRUlateq7svpOvTBsu5gO7GJuT3t8Q6OJqOhYkecu+p7JgX7dXsLZXaec4mYyRdX2493JT9UTS8Ig2oT++rvpjj3xyZ3VZMheiJ8XTmrcatd4fUvXOwGCQSB6O+O+oxcoqKvc9xu66KuF6d0fCDP3Otmd9hetxMH6ipwRU5qI3lX30nY6Z83WbiJC6oRmTify+p2JQd4akd4akd4akdNb2dzv.TV6ncj5bVvaLJYKmQw94yPJGFArCiyH.4Fxtsq5qQKpMNkjB32T4e41osVWr11o+uBsgQ.7Vna65lUU6SvRGTAm6fJ37GTAW3fJ3kNnBd4CpfW4oKn3opWKlyBT2MfmrWaY4e0.SS0q0kWSL9afCFdsF
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        8

                        Online

                        2.1k

                        Users

                        13.1k

                        Topics

                        113.9k

                        Posts