< Back to IRCAM Forum

Modalys 3.6.0.b14 (getting close...)

Hi!

Ok, we are moving faster and faster towards the public release of Modalys 3.6.0…

Highlights of 3.6.0 beta 14:

  • Improved overall stability
  • Windows:
    • up-to-date Modalys for Max externals
    • medit.exe (new!)
    • finite elements (new!)
  • Max: New ‘extra’ menu item: “Modalys Tutorials” leading to Olav Lervik’s video tutorials. Takk H. Lervik!
  • mlys.lua: getting very close to feature completion.

Thank you again for you testing, and do no hesitate if you have any comment or question!
Robert

cumulative notes for Modalys 3.6 beta

3.6.0.b8…b14:

  • mac installer: automatic installation of modalys Max package (by scanning default locations)
  • compatibility with macOS 10.15 Catalina and macOS 11 (Big Sur), including when running under “rosetta2” emulation on a new ARM mac machine.
  • fully notarized installer
  • recompiled, correctly codesigned Modalisp and Medit
  • updated Matlab objects (64bit)
  • fixed violin bridge object (long-standing issue…)
  • Modalys for Max:
    • Windows:
      • a looong overdue: finite elements on Windows :wink:
      • another looong overdue: medit.exe for 3D visualisation!
      • externals have been entirely recompiled to reflect latest features and fixes
    • new Max ‘extra’: Modalys tutorials (thanks to Olav Lervik!)
    • an old bug has been fixed that could explain some strange past behaviors…
  • mlys.lua :
    • new examples
    • new Parametric2dCurve class for easy 3d object construction (see the lua_3d_parametric_object example)
    • return value from (update() function) did nothing!
    • the dimension parameter of a mlys.lua object is now automatic if “-1” is set (which is by default for new objects).
    • mlys.get_info can now return strings (and, of course, numbers)
    • bow and felt connections implemented
    • moved from luajit to moonjit lib
    • new function modalys.view_mesh(–mesh ref–): to invoke Medit
    • new object modalys.inlet_observer to monitor inlet updates. With “modalys.inlet_observer.callback = my_callback” you shall assign a callback of your own receiving 2 parameters: inlet# and current float value.

3.6.0.b7:
Modalys for Max

  • mlys.lua:
    • “mlys” alias namespace created. So instead of “modalys.freq_to_midi”, you may write the more compliant “mlys.freq_to_midi”
    • aliases added to functions, to match legacy namings: modalys <-> mlys, make_object <-> create_object,
      make_connection <-> create_connection, make_mesh <-> create_mesh, make_point_output <-> create_point_output, extend_mesh <-> create_mesh

3.6.0.b6:
Modalys for Max

  • a long-standing request: modifying an attribute in mlys.expression (and now mlys.lua) doesn’t erase the script content anymore!
  • mlys.lua:
    • improved stability.
    • modalys.release now accepts any series of item references. For instance modalys.release(mystring,mymesh,ctrl1)
    • new function modalys.compute_modes(–object reference–)
    • new function get_pitched_finite_element_object(–parameters–). Parameters are: “mesh”, “name”, “block” (a mesh that describes the fixed nodes), “midinote” or “frequency”, “modes” (amount), “thickness” (for 2D mesh), “density”, “young”, “poisson”, “constloss”, “freqloss”.
    • new function modalys.freeze_object(–object reference–) For now, it is only for actual objects (strings, tubes etc.) but the plan is to extend it to access and controllers.
    • new function modalys.get_mesh(–object reference–) to get the mesh reference of a given 3D-based object.
    • new objects implemented in create_object (more to come…)
    • new connections implemented in create_connection (more to come…)

3.6.0.b4:
Modalys for Max

  • mlys.lua
    • new function modalys.midi_to_freq(–midi note–)
    • new function modalys.freq_to_midi(–freq–)
    • new function normalised_random()
    • new function modalys.create_access(–parameters–). Parameters are: “kind” (normal, trans0 etc.), “where” (object ref), “name”, “location”/“position” (can 1- or 2-dimensional, or a node etc.)
    • new function modalys.create_point_output(–parameters–)
    • new function modalys.create_object(–parameters–)
    • new function modalys.create_connection(–parameters–)
    • new function modalys.create_mesh(–parameters–)
    • new function modalys.extend_mesh(–parameters–)
    • new function modalys.transform_mesh(–parameters–)
    • new function modalys.save_mesh(–parameters–). Parameters are: “mesh”, and “path” (can be relative).
    • new function modalys.create_connection(–parameters–)

1 Like

@piechaud I’m having an error message when I try to view meshes that go something like:

*** ERROR: Could not create temporary file /Users/Shared/.modalys/modalysiyUjqS


This happens in the lua_view3d.maxpat, lua_3d_parametric_doughnut.maxpat and lua_3d_parametric_object.maxpat. They can synthesize sounds, but I cannot see the meshes.

I’m using Max 8.1.5 on a Mac Os 10.15.7. Any idea why this happens and what should I do?

I’d like to ask a second question: Is it any more efficient to create a modalys instrument in lua that (unlike the 3d meshes) could be done with mlys max objects?

Thanks,
Raphael

Hi Raphael,

Hmm… it looks there is a codesigning problem with medit (the mesh viewer) and macOS 10.15 is not very permissive… Sorry about that, and I’ll fix it tomorrow and will upload a new build.
(Update: I believe this is now fixed… Please download the files once again!)

A few hints to answer your question: creating a modalys instrument using mlys.lua is not more efficient CPU-wise than with the classic ‘mlys’ paradigm… However:

  • You can potentially create very fine behaviors like in Lisp since all basic objects (accesses, connections, controllers) can be dealt with directly. The difference is real-time.
  • You could fancy some additional lua libraries compacting the creation of objects & instruments via single function calls: in fact you can create any external .lua files beside your patch, and integrate them with require("...").
  • Also objects can be created and released on-the-fly while the dsp is running, which is new.
  • Another very interesting feature is to have a sample-by-sample control on things, for instance to create non-linear behaviors (whereas modalys per se is linear).
  • A mixed approach is also possible: some objects/interactions built with mlys and some others with mlys.lua, with interesting interactions in between…

Things are rather undocumented at the moment, but don’t get it wrong, it really is a world of new options opening up… :wink:
Robert

Hello Robert,

I’m very interested to see these new possibilities in modalys with lua, especially for fine real-time behaviour control you mentioned.

Thanks for trying to solve the problem this fast! As you suggested, I tried to download the files again after you updated your answer but, unfortunately, I do not think the problem was solved. The same error message still appears when trying to open meshes in Catalina.

R.

Hi Raphael,

I think I know what the problem is. You did not launch the general installer (the .pkg on the .dmg), did you? Please do it if that was not the case.

Alternatively, you may try this in a Terminal window:
mkdir /Users/Shared/.modalys

Let me know how it goes.
Robert

1 Like

You were completely right, I didn’t have the modalys .pkg installed in my computer, only the Max package! Now it works fine.

Thanks for tour help!