User Tools

Site Tools


jMax for Puredata Users

This section want to give some information to Puredata users on the differences, good and bad suprises they will find with jMax.

User interface

The user interface is very different, as you can easily see; consult the user interfaces pages of this wiki to get some information and screen shots; they user interface will still evolve, and new components and features will be added in the future.

The important point to note: the user interface is written in Java, and Java provide a very powerful environment for building user interfaces, and the strategic view of the jMax development team is to leverage this environment to provide a powerful, nice to use user interface.

On the other side, the architecture have some implications, both good and bad: the user interface run in a separate process: this reduce the risk of DSP delayes caused by too much user interface activity, and allows to use two different cores to run an application; but it also imply that the user interface may have some latency and being less snappy than those provided by other systems.

The nice part about the architecture is that you can also run the user interface on a machine and the dsp engine on other, thru a local network.


jMax is written with large scale development in mind; it provides powerful mechanisms to package libraries and applications, while still supporting a fast hacking style of work. This means that people providing libraries of some kind will need to spend a little more time in properly packaging their work, but library users should have a largely simplified life.


As of today, do not expect substantial differences in performance: DSP execution in jMax use exactly the same mechanisms of Puredata, with just some more care in data locality; DSP performance will be anyway dominated by the object code. In a control computation, the mechanisms are a little bit different, but not enough to account for large differences in performance; at the end, sending a message to an object correspond to the same C operation (calling a function thru a pointer), and the glue code around is quite optimised in both systems.

In some specific areas you may find larger differences, like patch loading, because the implementations are vastly different, but this have to be verified. I'll post here more information once i'll have it.

user/jmaxvspuredata.txt · Last modified: 2018/02/03 09:19 (external edit)