Hi Klaus, I suppose the fixed magnitude line is magnitude(l,r) = (l^2 + r^2)^(1/2);
and you can use `atan` in phase(). import("stdfaust.lib"); //phase(l,r) = (l/r) : aa.arctan; phase(l,r) = (l/r) : atan; magnitude(l,r) = (l^2 + r^2)^(1/2); correlate(l,r) = phase(l,r) * magnitude(l,r); correlate_meter(x,y) = x,y <: x , attach(y, (correlate : hbargraph("corr",-1,1))) : _,_; process = os.osc(10),os.osc(10.1) <: _,_,phase, magnitude, correlate;//, correlate_meter; > On 4 Aug 2021, at 16:50, Klaus Scheuermann <kla...@posteo.de> wrote: > > Thanks Giuseppe, > > I checked it out, but somehow it still does not give me the desired result... > I did some more research and found this, which indicates that it can be done > with arctan more easily. > >> The way this is done on phase (correlation) meters in audio equipment is >> rather simple: >> >> Phase = arctan(L/R) >> >> With phase of 45 or 225 = 1, and phase of 135 and 315 (-45) is -1. >> >> Essentially, the Y Axis is the L, and the X axis is the R. The phase is >> simply the polar angle of the vector between the two. >> >> This type of meters will show 1 if the signal is mono, and -1 if the left >> and right are perfectly phase inverted. >> >> Notice however, that phase meters of this type also account for the >> magnitude in the polar coordinates. So: >> >> Magnitude = (L^2 + R^2)^1/2 >> >> Thus the actual meter display is a normalised version of: >> >> Correlation = Phase * Magnitude >> >> I'm not sure that satisfies your requirements, but this answers the question >> in the subject. >> > So I transfered this to faust, but it still behaves weired... > > import("stdfaust.lib"); > > phase(l,r) = (l/r) : aa.arctan; > magnitude(l,r) = (l^2 + r^2)^1/2; > correlate(l,r) = phase(l,r) * magnitude(l,r); > > correlate_meter(x,y) = x,y <: x , attach(y, (correlate : > hbargraph("corr",-1,1))) : _,_; > > process = _,_ : correlate_meter: _,_; > > Any ideas? > > Klaus > > On 03.08.21 14:48, Giuseppe Silvi wrote: >> Hi Klaus, >> The filters are necessary to obtain a -1 +1 range, I think. >> >> import("stdfaust.lib"); >> >> correlate(l,r) = l*l ,r*r , l*r : par(i,3, si.smooth(0.9)) : sqrt, sqrt, _ : >> *,_ : /; >> correlate_meter(x,y) = x,y <: x , attach(y, (correlate : >> hbargraph("corr”,-1,1))); >> >> process = correlate_meter; >> >> Try playing with the si.smooth coefficient. >> >> best, >> giuseppe >> >> >>> On 3 Aug 2021, at 14:09, Klaus Scheuermann <kla...@posteo.de> >>> wrote: >>> >>> Could it be something like this? >>> >>> (according to the 'correct' algorithm in >>> https://www.beis.de/Elektronik/Correlation/CorrelationCorrectAndWrong.html >>> ) >>> import("stdfaust.lib"); >>> >>> correlate(l,r) = l*l ,r*r , l*r : sqrt, sqrt, _ : *,_ : / :_; >>> correlate_meter(x,y) = x,y <: x , attach(y, (correlate : >>> hbargraph("corr",-1,1))) : _,_; >>> >>> process = _,_ : correlate_meter: _,_; >>> >>> I am not sure about the lowpass filters though. Maybe not needed in the >>> digital domain? >>> >>> Also, my code only returns -1 or 1 while it should be returning a range of >>> -1 and 1, right? >>> >>>> The correlation is either expressed in % from -100% to +100% or as the >>>> correlation factor, which ranges from -1 to +1. Note that due to the >>>> correlation algorithm the level of both signals does not matter, i.e., it >>>> does not influence the measured result. >>>> >>>> When a mono source is used for a stereo signal both stereo channels will >>>> be +100% correlated. When e.g. in a stereo signal both channels contain >>>> completely different signals, e.g. left (and only left) is the trumpet and >>>> right (and only right) is the guitar these stereo channels will be 0% >>>> correlated. With a third instrument appearing in both channels, the >>>> correlation will be somewhere between 0 and +100%. >>>> >>>> >>> Ideas? >>> Danke :) >>> Klaus >>> >>> >>> >>> >>> On 03.08.21 12:48, Klaus Scheuermann wrote: >>> >>>> Hello List, >>>> >>>> I just wondered, if anyone has implemented a stereo audio correlation >>>> meter/analyser in faust? >>>> >>>> If yes - great! >>>> If no - I have another project :) >>>> >>>> Here is what I found about the algorithm(s): >>>> >>>> >>>> https://www.beis.de/Elektronik/Correlation/CorrelationCorrectAndWrong.html >>>> >>>> >>>> >>>> I never learned analog electronic schematics, but it seems it should not >>>> be extremely hard to transfer to faust. >>>> >>>> Cheers, Klaus >>>> >>>> >>>> >>>> _______________________________________________ >>>> Faudiostream-users mailing list >>>> >>>> >>>> Faudiostream-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users >>> _______________________________________________ >>> Faudiostream-users mailing list >>> >>> Faudiostream-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users _______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users