From ftm
Jump to: navigation, search
 
(45 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Introducing FTM =
+
* [[A brief introduction to FTM]]
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.
+
* [[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:
 
 
 
mat ... matrix of arbitrary values
 
dict ... dictionary of arbitrary key/value pairs
 
track ... sequence of time-tagged values
 
fmat ... matrix of floats
 
bpf ... break point function
 
tuple ... immutable array of arbitrary values
 
scoob ... score object (note, trill, rest, etc.)
 
midi ... 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]
 

Latest revision as of 08:36, 6 June 2007

Publications

... concerning FTM packages