Fork me on GitHub

Blog archive by category
All posts in the packages category

SpatDIF article in CMJ

Jamoma developers are currently lining up in Albi for a workshop (more on that later). Currently everyone are busy bringing their systems up to date for the workshop. One question that keeps popping up is how to be able to fast and efficiently swap back and forth between using Jamoma 0.5.7 and Jamoma 0.6-alpha. Here’s my solution to this, using Max 6.1 on OSX:

  • I have Jamoma 0.5.7 installed, using the installer. This step is important in order to ensure that I have necsessary files installed in the invisible /usr/local folder, required for Jamoma 0.5.7.
  • I have Jamoma 0.6 checked out and compiled from the GitHub repositories.
  • I have made sure that I have created the following folder: ~/Documents/Max/Packages ("~" is the location of your home folder on Mac). In the past I have experienced that if this folder is missing, the next step won’t work.
  • In the Max folder (/Applications/Max 6.1) I have added a file named packages.txt. This file adds additional locations where packages might resides.

When I want to use Jamoma 0.5.7 I make sure the content of this files looks like this:


/Users/lossius/dev/Jamoma/Implementations/MaxDependencies/Max;
/Users/lossius/dev/Jamoma/Implementations/MaxTest;
/Users/lossius/dev/Jamoma/Implementations/Max;
#/Users/lossius/Documents/Max/Trond-Externals/Packages;

When I instead want to use Jamoma 0.6, I change this to:


/Users/lossius/dev/Jamoma/Implementations/MaxDependencies/Max;
/Users/lossius/dev/Jamoma/Implementations/MaxTest;
/Users/lossius/Documents/Max/Trond-Externals/Packages;
#/Users/lossius/dev/Jamoma/Implementations/Max;

Please note that the # doesn’t really work to comment out lines in this file. Instead it apparently makes Max stop, ignoring whetever follows from here on. For this reason it is important that the line(s) that you want Max to disregard are positioned at the end of the file.



Jamoma 0.5.7 package

Update 2013-04-10: I’ve corrected the name of the “patchers” folders as pointed out by Nicolas Marechal. Additionally I have added a Jamoma-dependencies folder to the archive as well. This folder contains a number of packages of 3rd party externals (ICST ambisonics externals, VBAP, etc.) required by some of the modules, e.g. spatialisation modules.

In follow up to the previous post we have now added a hand-crafted package for Jamoma 0.5.7 to the download section. If you want to use Jamoma 0.5.7 (the current stable release) with Max 6.1 or newer, please follow these steps to get going:

  1. Download the regular version of Jamoma 0.5.7, and run the installer.
  2. Download the package, unzip and copy to the Max 6.1/packages folder.
  3. If you did not have Max 6.0.8 (or an earlier version of Max 6) installed from beforehand, you’ll notice that the first astep here has added a new Max6 folder to your Applications folder, in addition to the Max 6.1 folder that is created when installing Max 6.1 or higher. Having completed the first two steps, you can go ahead and delete this Max6 folder.

The reason that you need to run the regular installer first, is that Jamoma 0.5.7 do not only install files in your Max 6 folder, but also installs a number of frameworks and extensions in the hidden /usr/local Unix folder. These additional files are required for Jamoma 0.5.7 to run.

For this reason, if you use Jamoma 0.5.7 for a project, and want to keep all files relating to that project for future use, it will not be sufficient to just keep a copy of the package. Make sure that you also keep a copy of the Jamoma installer, so that you are also able to install these additional “hidden” files.



Jamoma for Max organised as a package

Over the past weeks, Tim and Theo have made some changes to Jamoma, its build scripts, etc., affecting developers and users that are checking out and building Jamoma from the GitHub repositories rather than using installers. These changes further improve the separation between generic C++ libraries and Max-specific implementations, simplifies future distribution of Jamoma, and makes it easier to switch between different versions of Jamoma.

Reorganising the Modular repository

Most notabely files that previously belonged to Jamoma Modular have now been split: The C++ library and extensions have become part of Jamoma Core, while all Max-related files now are located in the Implementations/Max folder. If you have not updated your repository recently, we recomend that you do a fresh checkout with the following commands in Terminal:


git clone git@github.com:jamoma/Jamoma.git Jamoma
cd Jamoma
git submodule init
git submodule update
git submodule foreach git checkout master
git submodule foreach git pull

cd Tools
ruby build.rb clean

The git submodule update command will take a while since it is downloading the repositories.

Packages

Max 6.1 introduced a new feature called Packages. The files for Jamoma in Implementations/Max/Jamoma are organized as a package. When you run the Ruby script for Jamoma it builds the missing items into the correct locations of this folder. Namely:

  • externals – Max externals are built into this folder.
  • extensions – jcom.loader gets built to this folder.
  • support – Libraries and Extensions are copied into this folder.

In addition, you’ll see that all other Jamoma files for Max have been organised in the following standard folders:

  • clippings
  • default-definitions
  • default-settings
  • docs
  • examples
  • extras
  • help
  • interfaces
  • javascript
  • jsui
  • media
  • misc
  • patchers – modules and components go here.
  • templates

To give your build to some one just hand them the ‘Jamoma’ folder, and they can put it in one of two locations:

  • /Applications/Max 6.1/packages
  • ~/Documents/Max/Packages

For the official download, we can eventually include both Windows and Mac externals in the package and distribute a single cross-platform download. This will greatly simplify the distribution of Jamoma in the future as we no longer need to bother with installers.

For those of us actually building Jamoma from source with the whole folder structure as it comes from Github, there is a third way to get Max to recognize the Jamoma package. Do this:

  1. In the Max folder, make a new text file with TextMate called “packages.txt”
  2. Type in the path to the folder a level above your Jamoma package folder, followed by return.
  3. Save it.

For example, Tim’s “packages.txt” file looks like this (because he also wants the TapTools package):


/Users/tim/code/Jamoma/Implementations/Max;
~/code/JamomaUserLibraries/TapTools;

Now Max will also search these locations for packages. That means you can just run the Ruby build scripts and everything is up-to-date automatically.

The /usr/local/lib/jamoma folder is no longer needed

The dynamically-linked Jamoma libraries and extensions are in a ‘support’ folder in the package. And, they are all in the same folder as each other. And, they aren’t built there — they are copied there by the Ruby script. If these are missing, then they should still be found in /usr/local/lib — but they all would actually need to be in /usr/local/lib, which wasn’t actually true before (at least with regard to the extensions). Building into /usr/local/lib has always been problematic due to permissions issues, and being a hidden folder — so we no longer copy them here!

Max 6.1.1 compatibility

Max 6.1.1 solved some compatibility issues introduced in Max 6.1.0. The current master branch should be compatible with Max 6.1.1, although it has not yet been fully tested with the 64-bit version of Max. In order to simplify our own work on maintenance of Jamoma, it might well be that future versions of Jamoma will require Max 6.1.1 or newer.

Jamoma 0.5.7 and 0.6 co-existence

A final convinient side effect of the recent changes is that if you want to be able to use both Jamoma 0.5.7 and 0.6 interchangeably, the Jamoma 0.5.7 installer will work with Max 6.0.8, and there will be no interference between Max 6.0.8/Jamoma 0.5.7 and Max 6.1.1/Jamoma 0.6.



Copyright © 2003-2016 by the contributing authors. Terms and privacy
This site is generously hosted by BEK.