Skip to content

irllabs/ml-lib

Repository files navigation

ml-lib

⚠️ This project is no longer maintained. We will not be providing fixes or updates, but pull requests for fixes are welcome.

Build Status

ml-lib is a library of machine learning externals for Max and Pure Data. ml-lib is primarily based on the Gesture Recognition Toolkit by Nick Gillian ml-lib is designed to work on a variety of platforms including OS X, Windows, Linux, on Intel and ARM architectures.

The goal of ml-lib is to provide a simple, consistent interface to a wide range of machine learning techniques in Max and Pure Data. The canonical NIME 2015 paper on ml-lib can be found here.

Full class documentation can be found here.

Bug Reports and Discussion

Please use the GitHub Issue Tracker for all bug reports and feature requests.

Development Status

The library has currently been tested on Mac OS X with Max 7 and 8 and on Mac OS X and Linux on i386 and armv6 architectures using Pure Data.

Bugs should be reported via the issues page.

Installation

  • For Max, install by searching for ml.lib in the Max Package Manager that can be found under File -> Show Package Manager.
  • For Pd, the latest build can be found here. Download, unzip, and move the ml.lib folder in "/Users/yourHomeFolder/Documents/Pd/externals". Once installed, add to your Pd search path the exact path to the ml.lib folder inside Pd/externals. If you encounter issues with macOS quarantine, make sure you right-click -> open (with any app, TextEdit will do just fine) all the .pd_darwin files that can be found inside the ml.lib folder. You will be asked if you "Are you sure you want to open it?", and once opened, Pd should be able to load the externals without issues.

Compiling from source

Instructions for compiling ml-lib from source can be found here

Library structure

ml-lib objects follow the naming convention ml.* where “*” is an abbreviated form of the algorithm implemented by the object.

A full list of all objects and their parameters can be found here.

For more detailed descriptions of the underlying algorithms, see links below.

Objects fall into one of five categories:

  • Pre-processing: pre-process data prior to used as input to a classification or regression object
  • Post-processing: post-process data after being output from a classification or regression object
  • Feature extraction: extract “features” from control data. Feature vectors can be used as input to classification or regression objects
  • Classification: take feature vectors as input, and output a value representing the class of the input. For example an object detecting hand position might output 0 for left, 1 for right, 2 for top and 3 for bottom.
  • Regression: perform an M x N mapping between an input vector and an output vector with one or more dimensions. For example an object may map x and y dimensions of hand position to a single dimension representing the distance from origin (0, 0).

Object list

Pre-processing

No objects currently implemented

Post-processing

No objects currently implemented

Feature extraction

  • ml.minmax: output a vector of minima and maxima locations (peaks) from an input vector

Classification

Regression

See the help file for each component for further details about operation and usage.

Credits

This software has been designed and developed by Ali Momeni and Jamie Bullock. The [Gesture Recognition Toolkit](http://nickgillian.com/grt/index.html is developed by Nick Gillian

ml-lib is supported by Art Fab, the College of Fine Arts and The Frank-Ratchye STUDIO for Creative Inquiry at Carnegie Mellon University

Special thanks to Niccolò Granieri for testing and assistance.

License

ml-lib is copyright (c) 2014 Carnegie Mellon University.

ml-lib is distributed under the GNU General Public License version 2. A copy of this is available in the accompanying LICENSE file. See also http://www.gnu.org/licenses/.