Skip to content

Repository files navigation

Note: If you're looking to use a model scripter for mi-gen~ or Faust, we recommend using the a newer one directly integrated into mi-gen~ using NodeJS: head over to the mi-gen repo for more information: https://github.com/mi-creative/mi-gen.

MIMS

PyQt application for creating mass interaction models and compiling them into FAUST dsp code or ~gen objects (for Max/MSP)

1. Getting Started

Prerequisites

You will need a recent version of Python 3, with the PyQt5 and numpy packages (the easiest way to install these is probably through pip).

Installing

Clone or download the github repository. If you have all the necessary Python packages, you should just be able to run MIMS_main.py.

If you are considering development, any Python IDE (such as Pycharm) should do the trick.

Creation of one-file executable apps for Windows/Mac/Linux is ongoing (for windows, run pyinstaller MIMS.spec --clean from the base of the repo)

2. Features

MIMS allows to describe one-dimensional mass-interaction models, and generade DSP code for the FAUST and Max/MSP environments. Model files are made of physical elements, parameters, and input/outputs.

For more on mass-interaction models generated with MIMS in Max/MSP, see the mi_gen~ github repo.

For more on mass-interaction models generated with MIMS in Faust, see the mi_faust github repo.

3. Building Models

Structure

Below is a basic model description in MIMS

# Defineglobalparameterattributes@m_Kparam0.1@m_Zparam0.001@nlKparam0.05@nlScaleparam0.01
# Creatematerialpoints@m_s0ground0.@m_m0mass1.0.0.@m_m1mass1.0.0.@m_m2mass1.0.0.
# Createandconnectinteractionmodules@m_r0spring@m_s0@m_m00.050.01@m_r1spring@m_m0@m_m1m_Km_Z@m_r2spring@m_m1@m_m2m_Km_Z@m_r2spring@m_m2@m_m0m_Km_Z
# Inputsandoutputs@in1posInput0.@out1posOutput@m_m2
# Addpluckinginteraction@picknlPluck@in1@m_m1nlKnlScale

Elements

ModuledescriptionArguments
paramlabelled parameterinitial value
audioParamaudio-rate labelled parameterinitial value
masspunctual massinertia(M), initialPos, delayedPos
massGpunctual mass (with gravity)inertia(M), gravity(G), initialPos, delayedPos
oscharmonic oscillatorinertia(M), stiffness(K), damping(Z), initialPos, delayedPos
springlinear springstiffness(K), optional:damping(Z)
springDamperlinear dampened springstiffness(K), damping(Z)
damperlinear damperdamping(Z)
nlspring (or nlSpring2)non-linear dampened spring (parabolic term)stiffness(K), NL stiffness(Q), damping(Z)
nlspring3non-linear dampened spring (cubic term)stiffness(K), NL stiffness(Q), damping(Z)
nlPluckpiecewise linear pluck interactionstiffness-coef(K), scale
nlBowpiecewise linear bowing interactiondamping-coef(Z), scale
posInputposition inputinitialPos
frcInputforce inputmass-element to apply force to
posOutputposition outputmass-element to observe
frcOutputforce outputmass-element to observe

Built With

Library built with PyCharm and PyQt5.

Contributing

We'd be happy to include more people to the development repository, so drop us a line if you would like to contribute to the development of the library.

Authors

This project was developped by James Leonard and Jérôme Villeneuve.

For more info, see: www.mi-creative.eu

License

This project is licensed under the GNU GENERAL PUBLIC LICENSE - see the LICENSE file for details

Acknowledgments

This work implements mass-interaction physical modelling, a concept originally developped at ACROE - and now widely used in sound synthesis, haptic interaction and visual creation.

About

PyQt application for creating mass interaction models and compiling them into Faust dsp code, or ~gen objects (for Max/MSP)

Topics

Resources

Stars

32 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages