====== The Content of the configuration files ====== This section give an overview of the main configuration file, that you can find in ''jmax/config/jmax.xml''. In most of the case, you will not need to modify it, you'll extend the configuration declared in the personal ''~/.jmax.xml'' file. The file is roughly divided in sections. ==== Include section ==== Include the platform default file and the personal configuration file. ==== Preference section ==== It include a number of preferences allowing an easy configuration of jMax. Typically in this section we select between configuration objects defined elsewhere, and give simple parameters. Preferences can be defined/redefined in your personal configuration file or in the main configuration file if appropriate; for example, in a machine used by multiple users, setting the proxy (see below) in the main configuration file make sense, because it is configuration always needed by all the users. The following are the elements supported. The require tag in the preferences section allows to specify resources to be loaded at init time. Resources can be a package, identified by name, or specified with a full jmax URL, or a LADSPA library. Please notes that packages specified in this section in your personal configuration file are loaded before the user interface is created; this allows to specify here packages that define their own user interface. The other way to load a package before the user interface start is to specify it in the jmax command line. Please not also that this is not the recommended way to load a ladspa plugin, even if it is the fastest and simples for testing purpose. For a full discussion of the subject check [[ HandlingLADSPAPlugins | this section ]]. Tell jmax to use a proxy for accessing network package repositories (see the chapter about using packages for details about loading packages from the web). The ''host'' and ''port'' attribute give the host name and port number for the connection to use, and the ''nonProxyHost'' attribute give a list of patterns, separated by vertical bars; host names matching the patterns are looked up locally on the network and not thru the proxy. This xml tag just give access to the standard Java proxy parameters, that can also be passed to the command line if needed. Check the Java virtual machine documentation for futher details. Declare a directory where to load abstractions. Multiple declarations are supported. Please notes that this declaration is intended to support a rapid prototyping environment, but it is **not** encouraged on packaged abstraction libraries. In packaged libraries, each abstraction should be individually declared, with its documentation and tooltip. This also significatively improve the loading time of a patch. See the package configuration page for further details. This declaration is typically included in the personal include file. If you think of including this declaration in the main configuration file in order to share a common abstraction library, then you should **really** instead think of packaging the common abstraction library as a jMax package, and putting it in a http local repository (see below). A jMax package is a packaged librariy of jMax resources, like abstractions, objects, editors and so on. The jMax Package system allows to look for packages in multiple directories **and** in network repositories. The ''packages'' tag in the ''preferences'' section allows to specify package related preferences. Currently only one tag is supported ''path'' that allows to add a place where to look for packages by specifing the ''url'' attribute; this attribute may be a standard ''http'' URL or a jMax URL. The above example specify three path: jmax://core/packages * It is the place where the builtin packages are stored. http://www.jmax-phoenix.org/repository * A global package repository hosted by the ''jmax-phoenix.org'' site (the jMax Phoenix project site). http://jmax.mycompany.com/repository * A company local repository, where locally developed packages can be shared. This tag is specified on the main configuration file to include the core packages (first tag of the example) only; the declaration for the jMax Phoenix is included by commented out (waiting for actually having a real repository, for now only the infrastructure is in place). You may add new path in the main configuration file in case of a multi user installation, or for preparing a master installation for multiple machines, or you can add paths in the personal configuration file, tipically to configure your personal development environment. Please note that by changing the core path declaration, you may force jMax Phoenix to do not use the builtin package set. If you know what you are doing, this is fine, for example to substitute the builtin objects with alternative implementations. This set the default font for the user interface. Each editor may then set its own font or use the default font. The font name must be a font understood by the Java virtual machine. In order to have portable font names, the Java virtual machine use logical font names, that are remapped to actual fonts existing in the running environment. While Java can use also actual font names, jMax Phoenix for the moment limits himself to the logical font names. For a complete list, check the ''Font'' menu under the patch editors. The font is set in the main configuration file as a default, and can be redefined in the personal configuration file if needed. These are parameters for the DSP execution. Check [[XXXXX|this section]] for full documentation. They are set in the main configuration file to normal defaults, and can be redefined in the personal configuration file if needed. The ''ui'' tag in the ''preferences'' section select which user interface, between those defined, is to be used by jMax Phoenix. The global configuration file set a default value that can be modified by the personal configuration file. This default value can be changed for a multi user machine or for a master installation image. Please note that this preference is currently taken in account only at startup time, so if it is changed by a configuration file loaded after start up (for example, a package configuration file) the change will have no effect on the running user interface. ==== User Interface Section ==== The user interface section define a set of user interface configuration to be used. Check the [[XXXX | user interface ]] section for details and documentation of the syntax. Here we just give an example of an user interface definition. This XML fragment define a user interface configuration called ''ide'' (that is the default configuration). More user interface definition can be added either in the main configuration file, or in the personal configuration file, for example for an application specific user interface. ==== The core Package section ==== This section define the ''core'' package, that is the package loaded at startup time. The syntax of this section is the same as for all the other package declarations, check the [[XXXX|relative documentation]]. The core package define the basic builtin objects, and load a set of packages at startup. In principle, the core package object declarations should not be modified, but the ''require'' list can be modified if you want a different set of packages loaded by default. Please notes that package definitions cannot be modified after the package has been loaded: as a result, the core package can be customized by the user configuration file, but not by other packages. ==== Editors Sections ==== This section allows the configuration fo the various jMax editors. The main configuration file include only the configuration of the patch editor, that it is than extended by the packages loading objects. It include a first part that define graphic customisations (that are not yet functional, neither stable, so are not documented), and a second part defining the content of the patch editor toolbar. This XML fragment add two tools at the toolbar, inserting a red frobber and a blue frobber object (supposing to know what a frobber is. Each ''tool'' tag add a tool to the end of the toolbar. Its ''object'' attribute describe the object to add; it can be the string you would type within an object box. For example, ''int 10'' or ''trigger i i i'' are perfectly admissible descriptions. The ''icon'' attribute specify the icon to use in the toolbar; since the same object can be added multiple times to the toolbar with different arguments or properties, the toolbar do not reuse the default icon object, but require to explictly specify the icon to be used. The ''message'' attribute is a string that will be shown in the status bar while adding the object. The ''toolTipText'' attribute is the text that will be shown in a tooltip when mousing over the tool in the toolbar. The ''property'' subtag allows to specify an arbitrary number of properties for newly created object; in this case, we suppose the frobber object understand the property ''color'', and we set its value to the string "red" or "blue". The semantic of this property is completely object dependent, but there are a number of standard properties, like font names and font size, that can be also used. Check the object documentation for details. Properties are usually persistent. Please note that the syntax for declaring tools is subject to changes, in case of evolutions of the toolbar. Usually this configuration tag is only used in new packages defining new objects. It may be used in the personal configuration file for debugging purpose, for example. If you really want to configure your environemnt deeply, may be the best would be to define a configuration package and load it at start-up time. Modifying the main configuration file patch editor configuration may make impossible to define basic objects. So, do it only if you know what you are doing. ==== System Section ==== The system section configure a number of system mechanisms. It is not documented, and you are not supposed to modify it. It can actually be useful to add tags in the system section only if you are developing Java extensions. In this case, ask for help in the development mailing list.