FHT Core Project
MISSION:
-
Build an open source based phase vocoder core
-
Use the Hartley Transform and OpenGL interactive visualization
-
Try to stay away from commercial software libraries and desktops
-
Running on: IRIX
(prototype) and Linux (port)
OBJECTIVES:
-
Make a program good for both research & education as well as
music making
-
Most of today's phase vocoders are either not free or sound
dirty or have clumsy visualisation
-
Much of phase vocoder functionality is somehow being mistyfied
-
There is not that much good tutorial code in writing phase
vocoders, and once there is, too many tend to repeat and copy it
-
Hartley Transform seems to be clean and fast
-
Hartley Transform does not have an inverse (it is
self symetrical)
-
Fourier Transform can be simulated by means of
the Hartley Transform
-
There are good HT algorithms available
-
OpenGL appears to be a proper visualisation toolkit for this
purpose (spectral data visualization)
-
OpenGL connects well to X, which is a standard for windowing on
all UNIX-based systems
-
What looks either impossible or unfairly complicated to do with
bit-map based toolkits, is in OpenGL fairly simple
-
OpenGL makes possible to interpret megabytes of spectral data,
which would else take weeks, thus allowing to easily improve
visualisation algorithms being developed
-
Complex interaction between the user and the information can be
made flexible, precise and easy in OpenGL
-
For these reasons OpenGL cuts the development time in fractions,
thus allowing to make free something that would else be such a task,
that hardly someone could afford publishing it for free upon completing
the task.
-
Today's workstations, which support OpenGL are costwise within
reach of almost any musician or music school, therefore developing such
a program also makes sense
-
Making a program portable to an Open Source UNIX-like OS is also
ethically correct and educationally stimulating
-
Too much relying on too many free libraries can sometines also
be counter-productive. Believing in "Desktop Philosophy"
finally ends up in forcing the user to load and install all kind of
GUI-based high-level scripting languages, personal information
managers, internet chat libraries, 3-D Korean printer fonts and who
knows what else, just to play a sound. Such a practice is not
fair and brings a very bad reputation to the Open Source
issue
PROGRAM STRUCTURE:
The program is built in such a way that it can be started from the
shell (or a double-clickable GUI shell script). It is built in such a
way that it may also be made run completely without GUI.
The GUI, based on OSF/Motif can be automatically initialized from
the core program, upon a completed analysis, by passing a number of
generated fake widgetargc-**widgetargv argument pairs, to make the
widget tree behave as if it was the main program. It is built around a
double-visual OpenGL interactive screen. A loop of custom written event
handlers partially bypasses the main loop to ensure clean and prompt
interactivity with user's actions. Parameters which control the display
and visualization can be entered from a set of menus and dialog-boxes.
Resynthesis and export parameters are also entered into appropriate
dialog-boxes.
FUNCTIONALITY:
-
Floating point 32 or 64-bit analysis/resynthesis
-
Double-visual sonogram and parameters display
-
Level 0 visual: 24-bit double-buffered BGB linear/logarithmic
sonogram display with virtually unlimited resizing and roaming
-
Level 1 overlay visual: 8-bit index-color linear/logarithmic
projection of analysis and processing parameters, such as floating
coordinate grids, breakpoint functions, analysis bins and active areas.
-
run-time triangulation with checking against "illegal
triangles"
-
Arbitrary analysis/resynthesis window size.
-
Possibility of applying GUI-based processing algorithms
(breakpoint filter, cross synthesis, etc...)
-
Time varying resynthesis time stretch
-
FFT text file export
-
IRCAM Partials export
-
Open Inventor export
GUI OVERVIEW
1. Starting the program:
2. The Main Window:
3. Two dialog boxes:
4. Freq. ramp test tone to be tracked and exported to IRCAM
Partials:
5. Exported IRCAM Partials from FHTCore read and displayed in
SculptView (logartihmic-perspective):