< Back to IRCAM Forum

Public release of Modalys 3.6

Hi Modalys friends!

I am very happy to announce the release Modalys 3.6.0, a loooong overdue! :innocent:

Modalys 3.6 is major release and its main bullet points are these:

  • New features:
    • mlys.lua object allowing scriptural approach to real-time lutherie, sample-by-sample control (nonlinear effects), 3D construction and ultra-fine instrument design. The worlds of textual ModaLisp and realtime Modalys for Max finally meet!
    • growing number of examples and documentation goodies: new tutorials and updated help files, thanks to a great community effort during the beta cycle :slightly_smiling_face:
    • entirely redesigned Medit application (3D mesh viewer): visualisation of accesses and holding points (boundary conditions), new cool overlays for file & picked item info, keyboard shortcuts, new axis view etc. Also now available on Windows and can be invoked from within Max.
    • .obj 3D mesh files can now be imported (from Blender, Gmesh or Rhino for instance)
  • Other improvements & changes:
    • compatible with latest Mac OS (Catalina & Big Sur, also on ARM computers)
    • Windows Modalys for Max project entirely recompiled and updated (including finite element and lua)
    • Matlab objects updated
    • Improved overall stability

Best regards,

Detailed cumulative development build notes for v3.6.0


  • finetuned max help files (thanks to b_hagerty!)
  • new example: lua_3d_cymbal_from_obj_file
  • medit: new UI items (build & file info at opening)


  • general engine : change of temporary folder (safer…)
  • updated documentation
  • medit:
    • new smooth overlays added: help, item info.
    • new display of accesses as blinking yellow blobs
    • new display of holding points (boundary conditions) as small red blobs
    • redesigned axis display
    • redesigned grid display
    • lots of fixes on Windows :wink:
  • 3D finite elements:
    • “restrict-line” fixed
  • Modalys for Max:
    • getting an object’s reference by name could fail.
    • new lua examples added
    • mlys.lua : avoidance of modalys object name duplicates (with warning)
    • mlys help files reviewed and cleaned up


  • 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…)
  • Medit (mesh visualization):
    • code up-to-date
    • medit.exe on Windows (long overdue…)
    • new help overlays
  • Modalys for Max:
    • Windows:
      • another looong overdue: finite elements on Windows :wink:
      • 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.

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

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…)

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–)



I couldn’t get any sound from the mlys.lua examples under Windows/Max 8.1.10. I have very low frequencies or a big DC offset.

Hi @rbaudoux!

At first sight examples with finite elements do not generate errors but produce ultra low mode frequencies… hmm. Note that 3.6 is the first appearance of Modalys finite elements on Windows, so there might be some finetuning to be done!
Thanks for your report and I’ll take a close look.

Update: please give 3.6.1 beta 1 a go… :wink:


1 Like

Everything you say look great. I’m in production in theater now with some modalys synthesis going on. I will update to 3.6 as soon as I finish and give you some feedback.

Hi, I’m getting a message on max console that says “modalys could not load due to incorrect architecture”. I have already moved the components to max8 packages folder. What am I doing wrong? Thanks in advance.

Same here

Please specify your operating system and machine!

Ho yes Sorry
Mac Os 12.2 on a MacBookPro M1


Yes Modalys M1 native support is on its way (we already have a beta version that works well, and I will let you know when it is available…)
Meanwhile, you may launch Max 8 in rosetta 2 mode.

1 Like