XMM is a portable, cross-platform C++ library that implements Gaussian Mixture Models and Hidden Markov Models for recognition and regression. The XMM library was developed for movement interaction in creative applications and implements an interactive machine learning workflow with fast training and continuous, real-time inference.
Jules Françoise: jules.francoise@ircam.fr
This code has been initially authored by Jules Françoise during his PhD thesis, supervised by Frederic Bevilacqua, in the Sound Music Movement Interaction team of the STMS Lab - IRCAM - CNRS - UPMC (2011-2015).
Copyright (C) 2015 UPMC, Ircam-Centre Pompidou.
This project is released under the GPLv3 license. For commercial applications, a proprietary license is available upon request to Frederick Rousseau frederick.rousseau@ircam.fr.
XMM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
XMM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with XMM. If not, see http://www.gnu.org/licenses/.
If you use this code for research purposes, please cite one of the following publications:
- J. Françoise, N. Schnell, R. Borghesi, and F. Bevilacqua, Probabilistic Models for Designing Motion and Sound Relationships. In Proceedings of the 2014 International Conference on New Interfaces for Musical Expression, NIME’14, London, UK, 2014.
- J. Françoise, N. Schnell, and F. Bevilacqua, A Multimodal Probabilistic Model for Gesture-based Control of Sound Synthesis. In Proceedings of the 21st ACM international conference on Multimedia (MM’13), Barcelona, Spain, 2013.
This software uses the open-source library libJSON for JSON file I/O.
The source code is available on Github: https://github.com/Ircam-RnD/xmm
For the Cycling'74 Max externals, see the MuBu collection of Max objects on the ISMM team website: http://ismm.ircam.fr/mubu
The full documentation is available on Github Pages: http://ircam-rnd.github.io/xmm/
The library depends on the libjson c++ library for JSON file I/O. A modified version of the library is distributed with this source code. The library depends on the Catch unit-test framework. The library uses PTHREADS for parallel training of models with multiple classes.
See the xcode project in "ide/xcode/"
The library can be built using CMake. In the root directory, type the following command to generate the Makefiles:
cmake . -G"Unix Makefiles"
The following commands can be used to build the static library, run the unit tests, and generate the developer documentation or api documentation:
make
make test
make doc
make docapi
The header file "xmm.h" includes all useful headers of the library. To enable parallel training, define the preprocessor macro "USE_PTHREAD" and link with the pthread library.
- doxygen
- swig
- Numpy
- Matplotlib (for plotting utilities)
The python module can be built using CMake. In the python directory, type the following command to generate the Makefiles and build the python module:
cmake . -G"Unix Makefiles"
make
The module should be installed in "${xmm_root}/python/bin/"