flucoma / flucoma-max

Fluid Corpus Manipulation objects for Cycling 74's Max
BSD 3-Clause "New" or "Revised" License
90 stars 17 forks source link

No output from realtime analysis objects on macOS CI build on older Mac #315

Open leoauri opened 2 years ago

leoauri commented 2 years ago

Realtime components (fluid.mfcc~, fluid.spectralshape~, ...) give no output in the CI compiled versions from tag/1.0.0, but built on a mac, they do.

This is on

{
    "version" : "Version 8.1.11 (17de540) (64-bit mac)",
    "platform" : "mac",
    "arch" : "x64",
    "osversion" : "Mac OS X Version 10.15.7 (Build 19H1922) x86_64",
    "samplerate" : 44100,
    "iovs" : 64,
    "sigvs" : 64,
    "scheduler_in_audio_interrupt" : "off",
    "audio_drivername" : "Live",
    "audio_driver_subname" : "",
    "license" : "mfl",
    "eventinterval" : 2,
    "schedinterval" : 1.0,
    "overdrive" : "on",
    "pollthrottle" : 40,
    "queuethrottle" : 100,
    "sysqelemthrottle" : 1000,
    "refreshrate" : 33.333332061767578,
    "schedslop" : 25.0,
    "eventprobing" : 0,
    "mixerparallel" : "off",
    "mixercrossfade" : 0,
    "mixerlatency" : 30.0,
    "mixerramptime" : 10.0,
    "videoengine" : "avf",
    "glengine" : "gl2",
    "packages" :    {
        "BEAP" : "1.0.3",
        "FluidCorpusManipulation" : "1.0.0+sha.d0e42a3.core.sha.f86443a",
        "hap" : "1.0.6",
        "jit.mo" : "1.1.2",
        "max-mxj" : "7.2.5",
        "maxforlive-elements" : "0.3.7",
        "Mira" : "1.2.1",
        "Node For Max" : "1.3.3",
        "Video & Graphics" : "7.2.0",
        "Vizzie" : "2.1.4"
    }

}

Here is a patch which reproduces ``` { "patcher" : { "fileversion" : 1, "appversion" : { "major" : 8, "minor" : 1, "revision" : 11, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "box", "rect" : [ 58.0, 103.0, 640.0, 480.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, "default_fontface" : 0, "default_fontname" : "Arial", "gridonopen" : 1, "gridsize" : [ 15.0, 15.0 ], "gridsnaponopen" : 1, "objectsnaponopen" : 1, "statusbarvisible" : 2, "toolbarvisible" : 1, "lefttoolbarpinned" : 0, "toptoolbarpinned" : 0, "righttoolbarpinned" : 0, "bottomtoolbarpinned" : 0, "toolbars_unpinned_last_save" : 0, "tallnewobj" : 0, "boxanimatetime" : 200, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "description" : "", "digest" : "", "tags" : "", "style" : "", "subpatcher_template" : "", "assistshowspatchername" : 0, "boxes" : [ { "box" : { "id" : "obj-2", "maxclass" : "ezdac~", "numinlets" : 2, "numoutlets" : 0, "patching_rect" : [ 229.0, 234.5, 45.0, 45.0 ] } } , { "box" : { "id" : "obj-53", "linecount" : 2, "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 376.0, 206.0, 158.0, 35.0 ], "text" : "0. 0. -0. 0. -0. 0. -0. 0. -0. 0. -0. 0. -0." } } , { "box" : { "id" : "obj-49", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 286.0, 168.000000834465027, 158.0, 22.0 ], "text" : "fluid.mfcc~ 13 @startcoeff 1" } } , { "box" : { "basictuning" : 440, "data" : { "clips" : [ { "absolutepath" : "jongly.aif", "filename" : "jongly.aif", "filekind" : "audiofile", "id" : "u093010268", "loop" : 1, "content_state" : { "loop" : 1 } } ] } , "followglobaltempo" : 0, "formantcorrection" : 0, "id" : "obj-47", "maxclass" : "playlist~", "mode" : "basic", "numinlets" : 1, "numoutlets" : 5, "originallength" : [ 0.0, "ticks" ], "originaltempo" : 120.0, "outlettype" : [ "signal", "signal", "signal", "", "dictionary" ], "parameter_enable" : 0, "patching_rect" : [ 286.0, 123.0, 150.0, 30.0 ], "pitchcorrection" : 0, "quality" : "basic", "timestretch" : [ 0 ] } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-2", 1 ], "order" : 1, "source" : [ "obj-47", 0 ] } } , { "patchline" : { "destination" : [ "obj-2", 0 ], "order" : 2, "source" : [ "obj-47", 0 ] } } , { "patchline" : { "destination" : [ "obj-49", 0 ], "order" : 0, "source" : [ "obj-47", 0 ] } } , { "patchline" : { "destination" : [ "obj-53", 1 ], "midpoints" : [ 295.5, 197.500000417232513, 524.5, 197.500000417232513 ], "source" : [ "obj-49", 0 ] } } ], "dependency_cache" : [ { "name" : "jongly.aif", "bootpath" : "C74:/media/msp", "type" : "AIFF", "implicit" : 1 } , { "name" : "fluid.mfcc~.mxo", "type" : "iLaX" } ], "autosave" : 0, "styles" : [ { "name" : "max6box", "default" : { "bgcolor" : [ 1.0, 1.0, 1.0, 0.5 ], "accentcolor" : [ 0.8, 0.839216, 0.709804, 1.0 ], "textcolor_inverse" : [ 0.0, 0.0, 0.0, 1.0 ] } , "parentstyle" : "", "multi" : 0 } , { "name" : "max6inlet", "default" : { "color" : [ 0.423529, 0.372549, 0.27451, 1.0 ] } , "parentstyle" : "", "multi" : 0 } , { "name" : "max6message", "default" : { "bgfillcolor" : { "angle" : 270.0, "autogradient" : 0, "color" : [ 0.290196, 0.309804, 0.301961, 1.0 ], "color1" : [ 0.866667, 0.866667, 0.866667, 1.0 ], "color2" : [ 0.788235, 0.788235, 0.788235, 1.0 ], "proportion" : 0.39, "type" : "gradient" } , "textcolor_inverse" : [ 0.0, 0.0, 0.0, 1.0 ] } , "parentstyle" : "max6box", "multi" : 0 } , { "name" : "max6outlet", "default" : { "color" : [ 0.0, 0.454902, 0.498039, 1.0 ] } , "parentstyle" : "", "multi" : 0 } ] } } ```
jamesb93 commented 2 years ago

Thanks for this, I will try and test this on an i5 at home (I think my partner's air is one) and have a poke.

Appreciate the detailed report :)

tremblap commented 2 years ago

Dear @leoauri can you try the new release and tell us if it is still the case? Thanks

leoauri commented 2 years ago

Hi Pierre,

I did get output from fluid.mfcc~ now, but only one set of values exactly every 11.366 seconds.

Here is the patcher I tested with:


----------begin_max5_patcher----------
885.3ocwV00bhBCE8Y4WACOacf.nReZ+ezoSm.DbSaHgMboUam1e6a9.P5JR
0pcVmQTxW264jy8j7lyLuTwVRsm6st24Na1aNylYZR2vr12m4Uh2lwv0lg4k
1.ff6M21knAXD.1UQrqgWJluwy891to4l4HRe7ljtoTggreS4adPRx.6rhCV
svetKJXo4mntm8qCuojxUAxjBA8KjDWR.h7ABGmxLYf+9IXSM6LzM9tii9w7
SDmpUHkHOJN8lOAVW80XMzOQ+SRfAqnqGVQeGrRdQk1cIMP1ZxUOfVNACTvD
XPSCiRAwmv1cbngIhmlBPWMXV1v.ZMiluGU0zMbR9Pldzc5QgXT+hnxIXmcS
I33vFkrb.rChMBf0ICvcFlmuS8vtR9SIHTwT0pBd109lk95US+re0NCMSOa7
pMzgeC1k7ZNN6CuC4IzDRADxvBnvnEwyciLRA8yyQJ3e8T7ErFZ9hxhrrOTj
f6upArDxDjhB2.uyWfLkmGZsQMDrb8Beym0gQQKi8QqzZi0mlsvkWSTwv6Xz
ZneiSHoanbLCHkUBSrPZoksyTbMMCZ3Tsw2stQQccTJxI1iGzi3nTktbCyzD
1X+S+MWs9TAGK2smRqnJ1KSH0jmpug53grcuqagfwDurgIRG.C+udq.0VX5a
MnGP9ZmvZPRTS0Nk8c8mFLiB6ND7EBYIlCim2ita1Q8LBeCzEHctnhe1S0de
iJ631Vyw.tUEzJCTtMLZU+Q+C5P0ENsVvZ.hhrL4g2iB9F1tEXZQK7LHjpxT
UhL8HdhxsaR3lbpP2xfAzt+03mD5G3iVtdPeLgnZ.8XRYAGHb3AUcIP5vyvL
evr5ZxTPX+i68N6a4LKTv.HanG2DXLCf.+IL.hr5r.j4vvfUGVxqCo0Vp.T9
8fZ90dW+aDYhmGix+2KBZRZc6elVpEMxrNb2U4MnhHWUpnjwcR965OEvMneL
Bo9P3id0rqdj8OLxne9HqO.XrP6eYgN4TB83Q9xn63SHvs7xEEmSAfw+D.7T
Cbv+k8zeD0j1i5bExkz7JAkC0cNYI5auYt0h4STvJTHJNHTYnkDej99jFw5A
gqpdlHqaisIkUlvOJLvb8byqTt80PyqRxyztwabA8vRkQKnbYaj1Cl1tzdQc
ycTjbkGtUlnHKG8gfJCd8gX0U3r1qvnNGv4cm+Bvh2Gn
-----------end_max5_patcher-----------
jamesb93 commented 2 years ago

Hi Pierre,

I did get output from fluid.mfcc~ now, but only one set of values exactly every 11.366 seconds.

Here is the patcher I tested with:


----------begin_max5_patcher----------
885.3ocwV00bhBCE8Y4WACOacf.nReZ+ezoSm.DbSaHgMboUam1e6a9.P5JR
0pcVmQTxW264jy8j7lyLuTwVRsm6st24Na1aNylYZR2vr12m4Uh2lwv0lg4k
1.ff6M21knAXD.1UQrqgWJluwy891to4l4HRe7ljtoTggreS4adPRx.6rhCV
svetKJXo4mntm8qCuojxUAxjBA8KjDWR.h7ABGmxLYf+9IXSM6LzM9tii9w7
SDmpUHkHOJN8lOAVW80XMzOQ+SRfAqnqGVQeGrRdQk1cIMP1ZxUOfVNACTvD
XPSCiRAwmv1cbngIhmlBPWMXV1v.ZMiluGU0zMbR9Pldzc5QgXT+hnxIXmcS
I33vFkrb.rChMBf0ICvcFlmuS8vtR9SIHTwT0pBd109lk95US+re0NCMSOa7
pMzgeC1k7ZNN6CuC4IzDRADxvBnvnEwyciLRA8yyQJ3e8T7ErFZ9hxhrrOTj
f6upArDxDjhB2.uyWfLkmGZsQMDrb8Beym0gQQKi8QqzZi0mlsvkWSTwv6Xz
ZneiSHoanbLCHkUBSrPZoksyTbMMCZ3Tsw2stQQccTJxI1iGzi3nTktbCyzD
1X+S+MWs9TAGK2smRqnJ1KSH0jmpug53grcuqagfwDurgIRG.C+udq.0VX5a
MnGP9ZmvZPRTS0Nk8c8mFLiB6ND7EBYIlCim2ita1Q8LBeCzEHctnhe1S0de
iJ631Vyw.tUEzJCTtMLZU+Q+C5P0ENsVvZ.hhrL4g2iB9F1tEXZQK7LHjpxT
UhL8HdhxsaR3lbpP2xfAzt+03mD5G3iVtdPeLgnZ.8XRYAGHb3AUcIP5vyvL
evr5ZxTPX+i68N6a4LKTv.HanG2DXLCf.+IL.hr5r.j4vvfUGVxqCo0Vp.T9
8fZ90dW+aDYhmGix+2KBZRZc6elVpEMxrNb2U4MnhHWUpnjwcR965OEvMneL
Bo9P3id0rqdj8OLxne9HqO.XrP6eYgN4TB83Q9xn63SHvs7xEEmSAfw+D.7T
Cbv+k8zeD0j1i5bExkz7JAkC0cNYI5auYt0h4STvJTHJNHTYnkDej99jFw5A
gqpdlHqaisIkUlvOJLvb8byqTt80PyqRxyztwabA8vRkQKnbYaj1Cl1tzdQc
ycTjbkGtUlnHKG8gfJCd8gX0U3r1qvnNGv4cm+Bvh2Gn
-----------end_max5_patcher-----------

With a hop size of 512 samples at 44.1khz sampling rate that is exactly what you would expect. I think that means the issue is solved :)

tremblap commented 2 years ago

@leoauri do you mean always the same set of values every (signal vector size) or a new value every hop size (hence me using zl change after the descriptors) ?

leoauri commented 2 years ago

Somebody is confused here, maybe me. 44.1k sampling / 512 FFT window, we would expect many analyses per second, not one every eleven seconds?

leoauri commented 2 years ago

I get one list of values at regular ~11 second intervals

tremblap commented 2 years ago

@leoauri here is a slightly more precise measuring patch. with overdrive on, and your signal vector size to something below 512, then I get 11.6ms


----------begin_max5_patcher----------
980.3ocuWs0bapCD9Y6eEb3YGOf3hw4oy+iNcxHCBGkHj3HDswoS6u8ypUfM
oASwwN0yXtr5x29sWzt7ikK72odg036cu2W7Vr3GKWr.EYErn68E9UzWxEzF
bZ9R12U6dxekaHC6ECJ9etyKXcuTYaEWJXFbEjSBUsldogcRchLGpYNkvuTn
nvV90tw4E31CPd219sulZxejK2+flkabKKgrYcvJuHRf8FY65D3JYcf2WsK4
mKWZur55n3qBuFilQq7HW.QImin9qf+iwyr+LOIYoVFl5d4ixSvTC55nbo28
TpzUTD6zIYWMUSqXFl9AljtSfbLXJluiJ2OJ62LCubRn8VRvUw9y3kMd6lzh
Lyv3yxunY3cII8L6yHJdc9ifxw9TigCmfkQYNGWHxuzOEuXdcatPk+7svUd9
SjRlguLYiMSMI4pXYUqvvaD7BldRF0.uaN3R+BmzU1v2KYECm2EmBexjjSkE
GfKNbCNBwqNAQu2xEOgkirM0Y4hr2BS1Zuks0Z5NQSf7fExsf6bwP1qeHqK6
0BZ9utf7gf2SHxTDhfTfDEaCEhwPA60aY.eonkWrtpLO+WfA26eaLTsIWwJK
8BufjfKOSOdpxx15TVeXZ15.7WVTbbZR.Yi0wlcU4D0B5AAuwbzwg0pj.o0V
EfqjCcUixcklumKoBASt27nSkwPIeCO+4lS78sFoj4jwzs0FVUsBwDaM4LVW
a1HUXswi8j8eAGoDUe3jVsi1.Rakbaol68hi62++qkJ3lCnYBmzQWDGbQiaf
JUBg566EpcCT59AqTEr2uaCiBNV11vqX11j.f5LnG02IBPHc45n0OJXPtdA0
P6hB5BCfyaD75iMsNX.XH5tFkn0v.rP78eRI2KNrlxK6zPjrbvkC9tomwybo
igz1BtxJYvD5Heav1nfv.RZ1fwDJU8f3LTkURCSZd.xKMrd9LTyGrpdQXBg6
AWFRmjKLQgZL5V9GnRncgtCWJMvQtFv003+gpVLZKBASbvQrKRHzUDMby3GU
faqufK+8OgA2Qq72ZVZTs57dkp6SJFDeV.AtPNaelwWN1Pp24NgZt3jMCb1d
CvIYF3jcCvIZF3jbCvIbF37VcQos8HYCF+zANdbfCuJfimSHY3svzFLGJ9Vs
ohWTq3RSSeRJ9c1Xgb7Wb3FRDIAZ3CZhK4Lick5c7lKWuuQAEyBZx3HS96fb
3zwitCLo00eioa5VMBJTw3IEN8rU3qbo6Ur2ceM6a794iUG7oZ3HaCbdcq1U
E8kTWO8XuBZITvwgMP2k1J1P0HaE2lZZdWqDPQqk+b4+CLMcAQL
-----------end_max5_patcher-----------
jamesb93 commented 2 years ago

Somebody is confused here, maybe me. 44.1k sampling / 512 FFT window, we would expect many analyses per second, not one every eleven seconds?

That somebody is me. I assumed ms without reading carefully ;)

I'll leave you two to it.

leoauri commented 2 years ago

@tremblap A sequence of timings from your patch:

print: 6124.242178
print: 6124.272652
print: 6124.261187
print: 6124.293434
print: 6124.315906
leoauri commented 2 years ago

signal vector size

What's that?

leoauri commented 2 years ago

The fftsettings do not influence the timings. Those above were the default 1024 window, these 512:

print: 6124.320393
print: 6124.266039
print: 6124.186927
print: 6124.33343
...
leoauri commented 2 years ago

what do the -1s refer to in fftsettings 1024 -1 -1 btw?

tremblap commented 2 years ago

svs is your max settings - what are your i/o vector size and your signal vector size in the Audio Status window?

tremblap commented 2 years ago

-1 = default. for 1024 -1 -1 it means 1024 512 1024. -1 for hop means half the window, and -1 for fft means the nearest exponent of 2 on or above the window

leoauri commented 2 years ago

i/o vector size 4096 signal vector size 64 scheduler in overdrive 👍

leoauri commented 2 years ago

-1 = default. for 1024 -1 -1 it means 1024 512 1024. -1 for hop means half the window, and -1 for fft means the nearest exponent of 2 on or above the window

👌

tremblap commented 2 years ago

ok just for the test here, can you try 512 for i/o and keep 64 for s/v and od on. Try this patch instead - much cheaper processing of melbands:


----------begin_max5_patcher----------
969.3ocuW01bahCD9y1+J33ytdPBDFt+JcxjQFjcThPhSRzFmNs+1uURPB8L
wlzfOOiwVqdY2mce1cE+X8p38pmYl3n+N5qQqV8i0qV4E4Drpe7p3F5yUBpw
urXI66p8OFuILkk8r0K9u9RTx1Ao7ZuLXceobPlrqgKELq+TvuIT0YGjh5k1
RsUOvkGuWyprAaif2sMYSTJNw8CtbKAdh2lDcW+dBGi8TKKrg3CBEE17cto+
450tGa9bP7EQjwpYzlH7D.s3C.T7UAJtH2Aw7vfKBz3Mv2+HbBtHvtFr6CJc
C0aE4mitcwuZxZZCyxz2yjz8BuQjLExQ+gHOkfb+PRlGx2SkGWznrMZ+DQ2z
34iwqSiwXx.5tFFWb78hXa0Cvgxl.knkgCmVDBdHO9xStkb32AkUscUBU0SS
.RxxFJI6bIpDx0A4mnhTSmvxMBdMSOX8FlELeXUgS26jQiTug+hWwYIm6Bxl
S1Ln.i8TPF5RtLC+njUe8b9Jpr9D7HbhIuuqEWlGbsodPQJc+TTdaHPrWpoU
+ZBdB9CjLbIvf8lONMywSx77D2ykjsePzwq21vDP0hZyufX9D3IqLdQpS6ZM
4BK4EaS7eJRyxxII3cfPzMMYuUPOI3F6qgKklejKoBASdz9vnLgXKu5IXS2M
geXV8xFNYKqoU48S9qdzaTpZ+hgpyFd0vw4GX6jbWEaHwK6h8Ea4fmsRocNV
tRNV2GTBg56GEp8izexjwIx0iS39rHueIMYTjwxaXtaz.as2085T9KCHsSae
+SGUvsmN2CbVn1UZfJbA7o9m6aM2e7T8o2BV0TKsmEzSCfhGBd6q2SczDvTz
8Fknyx.efGGwOpjGEm1R4G5MLOh3.IAB2WdEOwkAlBsqlqbRFsfdRTWRYZBJ
AmWLZNgR0NJ75MYkzxj16MVpkMfmwV9ncMHxmPD9SHCoWxGLQgZs5N9Tc3Sl
C42s8PgkCVnMfEHVlkoqYVfFhBMOQ6JlQ4heqTgecwBt7+9VKdk4j+6tEipS
WMbTCo+iH50PF.jmOPw+5a0JGsHk10304flLVLWU6b9eTU2vqaUbo0L3+7u5
ChLT7MCsCmhInT2aEQdm4dmhsy1kUNC6FEVymSQyI1.8kiPmGZP++n4IHE3O
GoXNbhoUL5lq3zaQZP5LTLYAXSjYnmhEPOEyPOkKfdlSV3tyzSnfIss8aLso
ewdU.cLdT4CmEa7C4xvvT+PM6a7g06KnGS0P0bKTJuSG5h9bd3EI72GRKgFN
ARI.t0tN1P2HWGWSKsp+5RPSq0+b8+BYB2y5
-----------end_max5_patcher-----------
leoauri commented 2 years ago

Ah. 512 for i/o gives expected ~11ms results. Thing is, apparently I cannot change this setting when Max is using Ableton as the audio host.

tremblap commented 2 years ago

Now that is interesting. Let me do some tests here.

leoauri commented 2 years ago

Also, in max4live, I am now again getting "no output" in both the last patches 😆

tremblap commented 2 years ago

I don't have Ableton here, but you run it at 4096? Here the results in Max at 2048 are almost as expected - @weefuzzy is on holidays this week and I will have to ask him a few questions about expected values in such context.

More soon

leoauri commented 2 years ago

When started with Ableton as the Audio host, i/o is set to 4096 and there are no other values to choose from in the dropdown Outside of Ableton, the maximum i/o setting available is 2048, and then I get timings under 0.1 ms ...