|
|
(44 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
− | FTM is a shared library for Max/MSP providing a small and simple real-time object system and optimized services to be used within Max/MSP externals. | + | * [[A brief introduction to FTM]] |
| + | * [[Credits]] |
| | | |
− | The main purpose of FTM is the representation and processing of sound, music and motion capture data in Max/MSP extending the data types processed and exchanged by the Max/MSP objects.
| + | == Publications == |
| | | |
− | FTM is based on the FTS server of the jMax project and distributed under the Lesser GNU Public License (LGPL). | + | {{:FTM Publications}} |
| | | |
− | The sources of FTM are available at sourceforge cvs:
| + | == ... concerning FTM packages == |
− | http://sourceforge.net/projects/ftm/
| + | {{:Gabor Publications}} |
− | | + | {{:MnM Publications}} |
− | == data structures == | |
− | | |
− | FTM allows for static and dynamic creation of complex data structures. The following classes are currently implemented and documented:
| |
− | | |
− | {
| |
− | | width="80%" align="center"
| |
− | | align="right" | '''''mat''''' | width="24" align="center" | ... | matrix of arbitrary values |-
| |
− | | align="right" | '''''dict''''' | width="24" align="center" | ... | dictionary of arbitrary key/value pairs |-
| |
− | | align="right" | '''''track''''' | width="24" align="center" | ... | sequence of time-tagged values |-
| |
− | | align="right" | '''''fmat''''' | width="24" align="center" | ... | matrix of floats |-
| |
− | | align="right" | '''''bpf''''' | width="24" align="center" | ... | break point function |-
| |
− | |-
| |
− | | align="right" | '''''tuple''''' | width="24" align="center" | ... | immutable array of arbitrary values |-
| |
− | | align="right" | '''''scoob''''' | width="24" align="center" | ... | score object (note, trill, rest, etc.) |-
| |
− | | align="right" | '''''midi''''' | width="24" align="center" | ... | midi event|
| |
− | } | |
− | | |
− | FTM objects can contain references to other FTM objects. A simple garbage collector handles transparently the destruction of dynamically created FTM objects referenced by multiple elements of a patch.
| |
− | | |
− | Static FTM objects are created in a patcher using a dedicated Max/MSP external called ftm.object. They can be named within a local or global scope and marked persistent to be saved within the patcher. FTM provides a serialization mechanism to recursively save the content of objects and the contained objects.
| |
− | | |
− | <example of a static FTM object in a Max/MSP patcher>
| |
− | | |
− | FTM externals can refer to FTM objects and dynamically create objects. FTM objects can be sent in lists or as single values using a dedicated FTM object message.
| |
− | | |
− | While basic operations of FTM objects are implemented as methods of the FTM classes, more complex interactions with FTM objects use operators in form of Max/MSP externals.
| |
− | | |
− | == operators ==
| |
− | | |
− | FTM comes with an extended message box - the ftm.mess external - which integrates classical Max message syntax with FTM names, infix expression evaluation, function calls and method invocation including return values.
| |
− | | |
− | <examples of the FTM message box>
| |
− | | |
− | Apart from ftm.object and ftm.mess, FTM includes a set of externals implementing basic functionalities such as iteration, playing, interpolation, etc. and the conversion between FTM objects and Max values or lists.
| |
− | | |
− | example of FTM externals
| |
− | | |
− | operating on FTM objects
| |
− | (the MIDI parsing objects
| |
− | convert a MIDI byte stream
| |
− | into a stream of FTM MIDI
| |
− | events)
| |
− | | |
− | Operators specific to a certain field of applications are assembled to separate object sets such as Gabor for sound analysis/resynthesis and MnM for mapping and recognition techniques.
| |
− | | |
− | editors and file formats
| |
− | | |
− | The editors for FTM objects are implemented in Java and integrated into Max/MSP using mxj. Simple double-clicking on an FTM object in a patcher opens its editor.
| |
− | | |
− | | |
− | screen shot of the track editor for score objects
| |
− | The communication between FTM objects in a Max/MSP patcher and their Java editors is hidden by the FTM library. By using a transfer protocol such as OSC the GUI could be easily detached from Max/MSP to allow for the distribution of patches and editors among multiple machines.
| |
− | | |
− | FTM currently supports simple text files and standard MIDI files. Import and export of SDIF files is currently being finalized and a score interchange format such as MusicXML will be supported in the near future.
| |
− | | |
− | Most of these import and export methods are implemented for the FTM track class as it provides a generic container for temporal sequences.
| |
− | | |
− | FTM and Jitter
| |
− | | |
− | From a certain point of view one can look at FTM as something like Jitter. Like Jitter, it is a shared library installed next to the Max/MSP application. Like Jitter, it extends the set of things one can send through the connections and process by Max/MSP objects.
| |
− | | |
− | A bridge between FTM and Jitter converts FTM matrices into Jitter matrices and vice versa (under development).
| |
− | | |
− | [top of this page]
| |
− | [FTM home]
| |