|Serveur © IRCAM - CENTRE POMPIDOU 1996-2005.
Tous droits réservés pour tous pays. All rights reserved.
Proceedings of the International Computer Music Conference, Hong Kong (1996)
Copyright © Ircam - Centre Georges-Pompidou 1996
The object system provides a specific programming interface for DSP objects. The execution of DSP operations is supported by the FTL vector computation engine [Dechelle and De Cecco,1995].
Current platforms running FTS are :
The following table gives some benchmarks comparing the performances of the different supported platforms. The performance is measured as the maximum sampling rate that can be achieved for a typical patch. All the benchmarks are for one processor. For the ISPW platform, the DSP functions are coded in assembly. For the other platforms, the whole code is C.
|Platform & Hardware||kHz|
|SGI Indy (R4400, 200 MHz)||310|
|ISPW (i860, 40 MHz)||180|
|Mac 9500 (Power-PC, 132 MHz)||3301|
In order to better organize the objects set, the objects are now partitioned as FTS modules. The FTS module abstraction is a data structure that is part of the FTS kernel [Dechelle and De Cecco,1995] and provides mainly a simple way to install the objects classes.
The object code can be linked to the FTS executable statically (i.e. before execution) or dynamically (i.e. during execution) using a dynamic linker such as dl on a Silicon Graphics platform. The fact that an object is statically or dynamically loaded requires no changes in the code, thus allowing the user to choose at initialization time which sets of objects will be used and to configure FTS according to its needs.
The module organization is the support of both static and dynamic loading of objects. Through a simple provide/require mechanism, the fact that an object class is already installed can be easily tested, and if not installed, this can also trig the dynamic loading of a class on a platform that supports it.
Several clients can be connected to the FTS server simultaneously, using the ftsd network daemon [Dechelle et al.,1995]. This can provides a flexible development environment to the FTS object programmer : together with the FTS editor and control interface [Maggi,1996], DSP-specific graphical tools can be use to view and edit signals in various representations.
To achieve complete portability of FTS DSP objects, a library for vector arithmetic and signal processing has been developed for FTS. This library provides basic vector/vector and vector/scalar arithmetic and logical functions and basic signal processing operations , mainly FFT.
The API of the FTS vector library is platform independent. The implementation of each function is platform dependent and can use a platform specific optimized library. A portable C version is provided for each function.
To achieve better performance on pipelined processors, the library provides 2 versions of each function, with and without loop unrolling. The ``unrolled'' version can be used only if vector size is a multiple of the unrolling factor. For each function, a FTL-callable [Dechelle and De Cecco,1995] version is also provided.
An extension of the DSP scheduling model of FTS is under development, to ease implementation of advanced DSP algorithms, for instance involving FFT. A unified framework will be introduced soon, handling both multi-rate processing, conditional execution and post-optimization. A more flexible and extendible typing system will be added to the DSP computation engine.
The latest synthesis and analysis algorithms developed at Ircam, like the FFT-1 additive synthesis [Rodet et al.,1993], have been implemented as a set of FTS objects.
Robust pitch tracking and score following, including Miller Puckette's work [Puckette,1995] on voice score following for Philippe Manoury's En Echo, are now available.
Work is in progress to implement under FTS Modalys [Eckel et al.,1995], a physical modeling synthesis software. For such synthesis algorithms, a sample by sample computation mode will be introduced.
We describe in this paper the current state and the evolutions of FTS, making it a flexible, modular and evolutive environment for DSP programming and real-time control. We also introduced the latest developed DSP applications.
Server © IRCAM-CGP, 1996-2008 - file updated on .
Serveur © IRCAM-CGP, 1996-2008 - document mis à jour le .