I created a | troubleshooting oriented FAQ page to list the common problems and errors that you may find trying to use jmax.
In order for jMax Phoenix to be widely adopted and used, a way to preserve the users investments and experience must be provided.
So, here is the big project i worked in the last month or so: PD compatibility; the project progressed enough to make me confident in talking about it.
The first phase is external object source compatibility: the objective is being able to compile “as such” all the sources that respect the PD external objects HOWTO and having them magically converted to jMax objects. Objects using other functionalities may works or not, depending on the functionality in question. Surely objects that have a graphic implementation will have to be partially rewritten, because the graphic architecture of jMax is radically different from the PD one. The objective is to integrate the whole pd basic and extended object set in the jMax 1.0 release.
The second phase is being able to read pd patches and abstractions; once the object set is there, this should not be very complex, because jMax can already read the MAX/ISPW and MAX/FTS format pd is based on. Some extension will be needed at the graphical level, in order to be 100% compatible: some graphical objects are missing and jMax do not currently provide the controller-in-parent functionality.
If you are interested in this evolution, and you are patient, i am looking for beta tester. The first implementation should be ready in one month or two.
I am currently working on the core jMax object system, adding some extension to allow an object programming model similar to the Max/ISPW or PureData, like adding inlets and outlets in the object initialisation phase as an alternative to using the more complex meta class model.
An other interesting point is the ability to have “overloaded” classes: essentially the idea is that the same object name may correspond to different “external objects”, depending on the arguments; for example, ”+ 10” and ”+ 10.” may correspond to different implementations, one for integers and one for floats. The interesting point is that the day someone wants to add a set of objects dealing with complex numbers, for example represented by a 'complex' message with two arguments, it would be easy to add a ”+ 10 i 20” object adding complex number; this complements well the type flexibility jMax have (remember, jMax code do not make assumptions and do not depends on available types). This overloading extensions provide also an extension of the meta class API, that make things simpler for developers.
It is purely a matter of extensions, keeping total backward compatibility with the existing code.
Of course, one of the goal of these changes is to make easier for a PureData programmer to write objects for jMax. The mail goal, however, will be clear in a few weeks.
The changes will be documented in this wiki, little by little. The object API documentation will be reviewed, and the new functionalities added. Sections regarding features that are not yet availables with be marked with the version they apply to.
jMax Phoenix change license: the original license was a modified GPL. After the agreement of all the copyright holders, we decided to change the license to LGPL, to easy the adoption of jMax, making it compatible with commercial products and environments.
Note: since the alpha 0.5 snapshots never worked, i merge the announce of the 0.5 beta 1 with the previous text on the alpha. If you read already the announce on the alpha, read again for more details. 0.5 beta 1 solve the linking problem that prevented jMax to works on a file system location different from the build location.
I am pleased the announce the release of jMax Phoenix version 0.5 beta 1, that include a couple of nice step forward for the jMax Phoenix project.
First of all, to simplify versions and tracking on multiple platform, we added a release naming to the revision numbering we used up to now. A release will go thru multiple revision (build) number, and progress, like for other projects, thru a number of alpha, beta, rc, and GA versions.
The first jMax release is called 0.5, like in one half, to say it is still half baked :→. It is a beta now, because feature development is almost frozen (some plumbing work related to bug fixing is still going on). You'll find the download files in the usual sourceforge project site, under the 0.5 Beta 1 folder.
First step, support for LADSPA plugins: LADSPA plugins present on your platform are by default automatically loaded and transparently imported as jMax Phoenix objects. Check this sections for details on how LADSPA plugins are handled.
In order to work with the huge number of objects availables thanks to LADSPA integration (more than 600 with a vanilla Ubuntu Studio 9.04 installation), we added an object browser; the new user interface component is not yet documented, but is very intuitive to use: present the available objects in a list, where you drag a row to an open patch editor to instantiate the object. A search box allows to select objects by content, and a couple of popdown menus allows to select on the object category, package or author. By the way, the patch editor accept now also dragging of text from other application. Such a text will interpreted as a single object description, and the corresponding object will be created.
Please note that an other new functionality is becoming to surface: a
View menu that allows to select which part
of the user interface are shown. Unfortunately, you'll got the menu only before opening a patch editor, and than it will disappear; the problem need some changing in the way menus are handled, so it require a few days of work in order to be fixed.
Second step: platforms: the 0.5 beta 1 run on Mac OS X Leopard, Linux 32 and Linux 64 bit and Windows, based on the use of cygwin. Snapshots for Linux 64 bits and Mac OS X have been uploaded. The 32 bit Linux and the Windows snapshot will be upload next week. Please notes that snapshot for different platforms may have different revision number; that is normal.
The Mac OS X version is still kind of rough: it is lightely integrated with the Max OS X environment, and it have to be runned from the command line (follows the Linux instructions). More integration will slowly added in the next weeks. jMax should run on Leopard and Snow Leopard, and require Java 6 configured as default virtual machine. This also means that it will never run on Tiger, sorry about that, but no Java 6 is available for Tiger.
LADSPA plugins can be used also on Mac OS X.
Please note: this version is configured to use the default portaudio input output, that should be a reasonable default in each platform. This release use portmidi for midi, but the midi device is not yet configured in the configuration file. You can configure it following the documentation, or wait for the next snapshot.
A final warning: this is a very very first release of both LADSPA integration and Mac OS X porting: it is a snapshot, it is probably unstable, and probably have problems that we have not yet found. We are looking for testers !!!!! Please, contact us if you try to use jMax Phoenix and if does not works as expected, and also if it does works as expected.
The documentation is this wiki is now almost completed.
Packaging of abstraction or external object libraries and applications in jMax Phoenix packages is fully documented. The configuration system is also fully documented, including the way to define personal user interface layouts.
We are working on Windows and Mac OS X snapshots. A quick status report: the first windows version will be an experimental snapshots based on the use of the cygwin Unix emulation layer on Windows. It is currently working, with audio, but without midi. Midi will come later, once i am able to build the portmidi library on cygwin (there works going on in the portmidi community to address this point). Some cleanup is still needed, as a couple of windows specific scripts that are being developped.
The Mac OS X version is almost working: some blocking bugs needs to ironed out in audio i/o, but it should not take a long time.
The two versions will be released together with the next snapshot.
This snapshot introduce a number of simplifications in the configuration file syntax; when you start do document something, you end up cleaning up what you are documenting, because weaknesses and inconsistencies become apparent. There is no change in the documented features, but what was not yet documented will be simpler to describe, and to put in place.
On an other side, it introduce a number of changes in the build structure, to make it more portable, in preparation for Mac Os and Windows port. The old veclib has been radically simplified, suppressing the old complex macro system, and making it simpler to port and to maintains.
Last but not least, i am finally equipped with a 32 bit Linux installation, so this snapshot has been uploaded in 32 and 64 bit versions. Let me know if they works.
Just uploaded revision 160, that finally drop the tcl configuration system and adopt XML for all the aspects of the configuration. The wiki documentation it has been updated, even if it is not complete, especially about writing packages. Be patient, full documentation will be up in a week or two.
This snapshot is the baseline for the first planned public release of jMax Phoenix and for the Mac OS X (and hopefully Windows) port.
WARNING: there is a bug in revision 160 that prevent jMax to start unless there is an xml file in your home directory called .jmax.xml. This is not the intended behaviour, the personal configuration file is optional. Snapshot 173 fix the problem.
jMax is migrating its configuration system from tcl to XML. The reason is the power a declarative configuration system provide, and the simplicity of the implementation, once the basic bricks are in place.
Next snapshot will migrate to xml the I/O configuration, and a part of the bootstrap process. On the occasion, it will simplify the configuration model, that was initially designed for networked configurations, where a single installation could be used by multiple heterogeneous machines; since this is not any more the reality (today disk space abound, and each machine will have its own installation, even on a big installation), it was a good occasion to radically simplify the model, leaving the room to add other functionalities when and if needed.
The configuration documentation has been updated in the wiki. The documentation for the old tcl configuration is not online anymore: everybody interested should switch to a newer snapshot as soon as possible (starting from rev 160).
The new configuration syntax is designed to be forward compatible with future extensions.
fix a few bugs, and provide a executable compiled with the optimization options. Check the release notes page for more info.
We declare the user mailing list officially open. Until now, even the list existed from the beginning, i suggested users to subscribe the developer mailing list.
Considering the number of download we are getting, from now on, the user mailing list is officially open; i'll try to assists users asking questions on the list.
Be kind with us: remember that you downloaded a snapshot (release often, release early), things are not supposed to work at 100% yet.
The list can be found here: https://sourceforge.net/projects/jmax-phoenix/support.
It include portaudio and portmidi support, and arbitrary vector size for DSP computation. Check the release notes page for more info.
The porting of jMax Phoenix to Mac OS X (Leopard) is in progress. We will keep this section up to date.
Latest snapshots (after revision 154) supports portaudio and portmidi. This means being able to use at least ALSA, and jack if you install the latest portaudio and portmidi.
Take note that jMax Phoenix do not include the portaudio and portmidi libraries (at least, for now). You have to install the .so version of the libraries in your system.
We presented jMax Phoenix at the LAC2009 in Parma, talking about the project work in progress and future plans. You check the slides, paper and video recording at the conference proceedings page (http://lad.linuxaudio.org/events/2009_cdm/) together with the other conference presentations.
We started to release snapshot builds. The system is still incomplete, but progressing, expecially in terms of integration with the Linux environment, but it should be already usable (roughly equivalent to the Max/ISPW object set). You can find the snapshots in the project download page in the jMax Phoenix sourceforge site (see below for links). Snapshots are identified with the svn revision number user to build them; first released is revision 107. I can only generate 64 bits snapshots, if anybody can contribute 32 bit builds i'll put them in the sourceforge release system.