This release contains a first port to Mac OS X:
On Linux, FTS has a watchdog that prevents FTS from locking the CPU.
The DSP calculation can be switched on an of by the keyboard short cut Control/SpaceBar.
In the case of a jMax server fault an error message is written to a log file. A short messsage indicating the log file is printed to the console window. The error window has been removed.
The classes clock and at of the ISPW packages where removed. It is no more possible to give a clock as first argument of the timing objects such as metro or delay as it was before.
The object at dsp_msec 0, or at dsp_tick 0, which is used in some patches in order to obtain a trigger at the instant of the DSP calculation being switched on must be replaced by an object dsp connected to an object select 1 or sel 1.
In the signal package the classes play~ and rec~ where added (see the help patches).
Two new objects have been introduced to the toolbar: an oscilloscope and an object to display numerical values or vectors of values in a scrolling display.
The object writesf~ has been fixed.
The API of the DSP subsystem has changed. Deprecated functions as dsp_sig_inlet() (now fts_dsp_declare_inlet()) are emulated by a set of macros.
The function fts_get_time() (sched.h) was introduced to obtain the FTS system time (in msecs).
The hashtables have been reimplemented (see hashtable.h). The hashtable API has changed.
Three modules have been added to the doxygen generated API documentation (see doc/api/html/index.html):
The scheduler API has changed (see sched.h).
The classes ==, !=, etc. can be instantiated without double-quotes. The problems with decimal points and commas for some non-english Linux/Java installations are fixed.
jMax is now fully Java 2 compliant: to run or compile it, you must use a Java 2 virtual machine (recommended are IBM, Sun or Blackdown JDK 1.3 or higher).
The Makefiles have changed in order to be simpler for developing objects.
A typical Makefile for a package is:
JMAXDISTDIR= ../../.. PACKAGEROOT = .. MORESOLIBS=-lasound PACKAGELIB=$(LIBDIR)/libalsa.so include $(JMAXDISTDIR)/Makefiles/Makefile.package |
The include files tree has been changed, in order to be able to compile a package inside or outside the jMax source tree. Now, an object must do:
#include <fts/fts.h>
Audio and MIDI I/O are now handled by "port" objects. These classes are documented by their help patches that you can find in the summary of their respective packages (oss, alsa, sgi, midi).
Corresponding Tcl commands have been added to set the default audio and MIDI port. These commands are defaultAudio and defaultMidi and are documented in Configuration documentation.
setGraphicScaling <x factor> <y factor>
The size of all patchers (position and size of the objects and the patcher windows) will be multiplied by the given factors. The scaling is applied to the graphical appearance only and doesn't affect the actual parameters stored in the file.
The reference Java platform is the IBM 1.3. All system and help patches are created with this environment. Please adjust the scaling factors for your platform until the help patches appear correct on your system.
In order to adjust the appearance of older patches, jMax provides a rescaling functionality which is accessible via the dialog "Rescale Window" in the "Edit" menu. The given factors are applied to the current window. In this case the graphical parameters of all objects are actually changed (and will be saved with the file).
(Note that the "Rescaling Window" function is applied in addition to the global scaling factors given in the system setup.)
Active signal connections (DSP on) are appearing as a zigzag line.
(Note that it was always possible to connect multiple signal outlets to an inlet. In former versions of jMax only one of multiple signal output to the same inlet was taken into account.)
The inlet and outlet class has been merged with the functionalities of the former send and receive objects. Inlet and Receive as well as outlet and send share the same graphical appearance.
The objects (see in the tool-bar) represent a new system feature called "labels". Numbered labels refer to the inlets and outlets of the current patcher. Named labels can be either undefined - in which case they have a global scope - or defined. Labels are defined as variables using the "label" class. The usual rules for variable scopes (variables of a name starting with a capital letter are global) apply as well to label.
(Note that the former send and receive are deprecated but for now work exactly as the label classes.)
See the help summary of the system package.
In order to provide the possibility to express at least a single message or constant (or list) using all syntactical possibilities of jMax' constant expressions as the other objects (functions, variables, symbol concatenation) a class was added to the palette (3rd position). Please refer to its help patch.
Messages and control data are displayed with a limited rate corresponding to a given display period (not yet variable). Signals are displayed as their maximal absolute value over this period.
Please refer to the help patches of the objects bus (with throw and
catch) and bus~ (with throw~ and catch~).
(Note that signal busses systematically introduce a delay of one jMax
scheduler tick =
Please refer to the summary and help patches of the signal package.
The rich set of platform dependent Java fonts and sizes stays
accessible via separate menus.
We hope this way to provide a better compatibility between different Java platforms
and releases.
Thanks to Fabrice Medio and Norbert Schnell, a jMax tutorial is under development.
It is currently available via cvs:
new MidiShare connection, via a
Hammerfall ALSA 0.6.x device:
new udpsend and udpreceive objects (see Help->I/O summary)
On SGI platform, the default behavior is that FTS automatically runs on an isolated processor
if there is one
processor that is isolated, thus taking advantage of multi-processors machines
for better audio latency.
In order to be able to select by hand the processor on which FTS will run,
the option
The jMax property
To find what is an isolated processor and how to isolate a processor, check the
mpadmin man page. The better latency will be obtained when the processor
is both isolated and non-preemptive. Isolating a processor requires a
multi-processor system (Origin or Octane with 2 processors at least).
Because of problems on SGI platform related to bad interaction between threads
and isolated processor, the readsf~ has been re-implemented using a separate
server process for reading the sound files.
The
The readsf~ has a slightly different behavior as before: the
The following platforms are supported:
The following bug was partially fixed:
For a complete list of fixed and remaining bugs, please refer to the
IRCAM's bug tracking system.
For better MAX/MSP compatibility, jMax can now save in .pat format.
To use it, select "Save as" menu item, and in the file open box,
change "Format" to ".pat".
Attention!!! This is first release of .pat save format.
It has not been fully debugged.
A MIDI file reading library has been added, based on the code of Tim Thompson.
The protocol is now binary in both directions, with a symbol cache on
each side of the connection.
jMax now uses the 0.5.x version of ALSA.
A ALSA raw MIDI device has been added. It is named alsaMidi and requires
the package alsadev ("package require alsadev").
Thanks to Winfried Ritsch, the "serial" object is back (in the io package). It has been changed
to take advantage of the scheduler single select() call.
There is a new graphical object in the tool-bar (called "fork"), which changes it's number of outlets
when ones drags it on the right border. It repeats it's input from all outlets in right to left order
(replaces "trigger t t t t t ..." and "bangbang").
Building rpms and SGI packages is now moved to scripts in ./utils/rpm/buildrpm
and ./utils/sgi/buildpkg. These scripts are quite self explanatory.
A "for" object is new in the control package.
An object "vec" - a vector of generic values (atoms) - completes the first set in the data package.
In a new package called sequence lives an undocumented early beta version of a sequence object...
Directory
The following platforms are supported:
The following bugs were fixed:
For a complete list of fixed and remaining bugs, please refer to the
IRCAM's bug tracking system.
The various Tcl
The parameters that are passed as the last argument (a list inside "")
are passed to the device
Example of use:
The Linux OSS MIDI device now accept a "mode" argument that is
passed to the
Example of use:
Among others the following bugs were fixed:
Please note that a number of problems with classes handling soundfiles
(readsf~, writesf~,
table~,
... crashing the server) were caused by bogus (or incompatible?) versions
of the libaudiofile library required by jMax. Make sure that
you are using a recent version of the library.
For a complete list of fixed and remaining bugs, please refer to the
IRCAM's bug tracking system.
This release is supported on Linux-PPC and have been tested with native
audio under OSS. Please note that sound files access using the
audiofile library has not been fully tested, in particular
in the direct-to-disk objects.
The following features have been added to the patcher editor:
Some older bugs have been replaced by newer ones, others have been kept.
A package named "sources" with objects source code is given as an example
and a starting point.
NOTE: On the Linux platform, the direct-to-disk objects use the
Audio
File Library, by Michael Pruett. This library is available under the
GNU Library General Public License. This library must be installed before
using readsf~ and
writesf~ objects. Please refer to
http://www.68k.org./~michael/audiofile/
for information and download.
Signal Package
The new signal package replaces successively the old ISPW signal
classes by a new set of classes. These classes use the variable
mechanism and reference data types (fvec) of jMax. The package is not
complete yet.
Fonts
jMax' font sizes have from now on symbolic names (normal, small, large, ...).
It provides from now on two system fonts of variable and fixed size.
Documentation updates
Documentation has been updated to reflect changes.
See Documentation index for further information and in
particular the doc of the Console and Patcher Window.
jMax tutorials
cvs -d :pserver:anonymous@cvs.ircam.fr:/jmax login
<type "cvs" as password>
cvs checkout jmax-tutorial
Release notes for jMax 2.4.16
Features
In this release, the MIDI objects are temporarily non-available on the Linux
platform, because of a re-implementation in progress.
midishareport
object
Note: it must be compiled by hand (in packages/alsa0.6dev) and added to the
.jmaxrc (package require alsa0.6dev)
key
object
Release notes for jMax 2.4.15
In this release, the MIDI objects are temporarily non-available on the Linux
platform, because of a re-implementation in progress.
Features
Release notes for jMax 2.4.14
In this release, the MIDI objects are temporarily non-available on the Linux
platform, because of a re-implementation in progress.
Features
Automatic selection of isolated processor (SGI platform)
--cpu=N
has been added to FTS, where N is the selected
processor numbered starting at 0. This option is only meaningful on SGI platform.
jmaxServerOptions
is used to pass options to
FTS; this property can be set:
jmax -jmaxServerOptions --cpu=0
.jmaxrc
file:
set jmaxServerOptions "--cpu=0"
Re-implementation of the direct-to-disk objects (readsf~)
readsf~
object now has an extra outlet that bangs when the
sound file is finished, allowing to play a file in loop or build a play list.
open
message and the play
message can be send in the same tick without
causing clicks and error messages. The readsf~
object will start
playing the file as soon as the server process has opened the file and preloaded
the first blocks. This gives usually a delay that is below 20 milliseconds.
To get really a precise start time, a delay can be inserted between sending
the open
message and the play
message.
Release notes for jMax 2.4.12
Platforms
Bugs
Features
Save in .pat format
MIDI file reading
Changes in kernel
ALSA devices
Objects
Notes
Building rpms or SGI packages
New objects
syspackages
syspackages/
has disappeared. All packages (including
devices) are now in packages/
Release notes for jMax 2.4.11
Platforms
Bugs
Features
open
commands now accept arguments that
can be used to specify device parameters values. The affected commands are:
openAudioIn
openDefaultAudioIn
openNamedDefaultAudioIn
openAudioOut
openDefaultAudioOut
openNamedDefaultAudioOut
openMidi
openDefaultMidi
open
function. The arguments that
are accepted are device-dependent.
openDefaultAudioIn stereoIn "device /dev/dsp8"
openDefaultAudioOut stereoOut "channels 8"
openDefaultMidi midi "device /dev/midi01"
openDefaultAudioOut prof_dac "profile_interval 1000"
open()
system call in order to be able to
specify the file read/write mode of the device for device that
can be opened in only one direction. This argument can be passed
when opening the device with the opendMidi
or
openDefaultMidi
Tcl commands. This argument
can have the following value:
r
for read-only
w
for write-only
rw
for read and write
openDefaultMidi midi "mode w"
Release notes for jMax 2.4.10
Platforms
The following platforms are supported:
Bugs
Features
Linux-PPC
Patcher editor
Release notes for jMax 2.4.5
This release introduces significant changes in the FTS kernel, in the user
interface, in the development API and in the license...
Status
This release is considered stable.
Supported platforms
The following platforms are supported:
Fixed bugs
For a complete list of fixed and remaining bugs, please refer to the Ircam
bug tracking system, at the following URL:
http://www.ircam.fr/bugs/
New features
Patcher editor
The patch editor of version 2.4.x is a new implementation of the existing
patch editor. It introduces bug fixes, improvements in the user interface
(text handling, feedback, updates, ...) and new functionalities (icons
for objects or comments, ...).
Multi-threaded kernel
The FTS server kernel is now multi-threaded. The kernel threads are for
now used only by the new implementation of the direct-to-disk objects.
Others uses are in development.
Scheduler
The FTS server kernel incorporates a new scheduler that enables to add
and remove dynamically file descriptors in the scheduler's select()
system call. This is illustrated in the udp and udpmessage
objects that read bytes on a UDP port. See the sources of the object for
further explanations.
Object development API
This release includes the object development API and documentation. Please
refer to the Control Objects Developer's Guide for documentation.
Direct-to-disk objects
The first use of the multi-threaded kernel is a new implementation of the
direct-to-disk objects (readsf~ and writesf~). These objects
are now implemented as wrappers of an FTS device that does the file access,
all the file I/O being done in separate threads. This implementation guarantees
that file accesses are non-blocking and that file reading/writing and samples
conversion is done on a separate processor when running on a multi-processor
machine.
Release notes for jMax 2.3.15
Status
This release is considered:
Supported platforms
This release have been compiled on:
Fixed bugs
The following bugs have been fixed:
This release implements a workaround for the following bug:
By starting jMax either with the option "-jmaxNoConsole true" or by
adding the command "set jmaxNoConsole true" in your .jmaxrc file, console
printout will not show in the console window, but in the standard output
of the java process, usually a shell, and will not freeze java. A new console
graphic component will be implemented in a next release.
Floating-point exceptions tracking
Support has been added to track floating-point exceptions. When floating-point
exceptions occur, you can open the "Fpe Panel" in "Tools" menu. This panel
will show the objects that triggered these exceptions (either in control
or in DSP computation). A supplementary option allows to track floating
point NaN (Not a Number) in DSP computation.
Warning: This option is very time-consuming and can dramatically
decrease performance.
Release notes for jMax 2.3.14
Supported platforms
This release have been compiled on:
Fixed bugs
The following bugs have been fixed:
New features
The following features have been added:
Known bugs
Printing a patch (via the "Print" menu) is broken (it generates a bitmap
Postscript file that is not printable).
Release notes for jMax 2.3.13
Supported platform
This release have been compiled on:
Fixed bugs
The following bugs have been fixed:
New features
The following features have been added:
Release notes for jMax 2.3.12
Status
This release is qualified as beta; the system is quite stable,
enough to be used in concert situation; the user interface still has some
glitches and instability anyway.
Supported platform
This release have been compiled on:
IRIX 6.2 will probably not be supported, as the AudioFile library on IRIX
6.2 lacks some features used by jMax. We suggest that you upgrade to IRIX
6.5.
Changes in I/O configuration
The I/O configuration commands have been simplified a little; old .jmaxrc
files need to be changed; refer to the user configuration.
Changes in CLASSPATH setting
Swing classes are now distributed with jMax. It is no longer required
to download Swing. Setting CLASSPATH is also no longer needed.
Known Problems and bugs
Main problems regards the patch editor; in particular, overlapped objects
are not handled properly, and this produce bizarre situations when copy/pasting
in a crowded patch.
Release notes for jMax 2.3.11
Status
This release is qualified as beta; the system is quite stable,
enough to be used in concert situation; the user interface still has some
glitches and instability anyway.
Supported platform
This release have been compiled on IRIX 6.5 for r10000 and r5000 processors.
Known Problems and bugs
Main problems regards the patch editor; in particular, overlapped objects
are not handled properly, and this produce bizarre situations when copy/pasting
in a crowded patch.