Skip to content

delucis/cs.2click

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b3b131b · Dec 24, 2015
Dec 23, 2015
Dec 24, 2015
Dec 15, 2015
Dec 24, 2015
Dec 15, 2015
Dec 15, 2015
Dec 24, 2015
May 21, 2015
Dec 24, 2015
Dec 23, 2015
May 21, 2015
May 25, 2015
Dec 16, 2015
Dec 24, 2015

Repository files navigation

cs.2click

A Better Audio Router for a Modular System.

What/why?

Audio routing in a context that involves even a moderate number of potential nodes can get messy very quickly. Matrices that map inputs and outputs become unreadable with just a handful of rows and columns, while input/output selection embedded within modules degenerates into a stream of potentially tens of clicks to get your basic routing set up. The aim here is to build a better way of routing, designed for speed, ease, and clarity, hopefully making on-the-fly routing a less tedious experience. The inspiration is the two-click pattern used in Ableton Live, where the first click indicates one end of a signal flow and the second the other (HT Sam Wolk).

Functionality

cs.2click animated demo

A simple interface of in- and output slots are provided by [bpatcher] modules cs.2click-inputs and cs.2click-outputs. These modules require a unique string as their first argument, naming the module. An optional second argument sets the number of slots that are available (between 1 and 8). If no second argument is provided, the modules default to a single slot.

Routing pairs are stored in a global dictionary named cs.2click-routing-pairs. This permits easy routing not only within a single Max patch, but also between patches.

The README.maxpat demonstrates basic functionality and also includes some information on getting up and running.

Preset storage & recall

An additional abstraction [cs.2click-presets] permits you to store numbered presets and recall them by sending a preset’s index number. An argument provided to [cs.2click-presets] sets a filename to which you can save your preset (as a JSON file) and it will automatically try to load that file when the patch is opened. A “save” message will write your current presets to disk (in the same directory as the patch containing the abstraction).

This mechanism is built on a central [dict] object, which contains the stored presets. Messages whose meaning is not defined by the abstraction (store, save, storagewindow, storage_close, integers/floats) are passed on to this [dict], permitting direct communication if desired. For example, using Max’s standard import/export messages one can load and save preset files that are not in the same directory as your patch.

Point 6 in the README.maxpat demonstrates the basic preset capabilities, and the readme-presets.json file contains some example presets.

Routing with messages

For cases where you need to control a system of cs.2click modules with messages, see the [cs.2click-remote] abstraction.

Installation

Download the latest release, to your Max packages folder. You can find this under ~/Documents/Max/Packages for Max 6 or ~/Documents/Max 7/Packages for Max 7.

I’d highly recommend using Nathanaël Lécaudé’s Max Package Downloader to help stay up-to-date with new version releases.

Compatibility

These modules have been tested with Max 6 and 7. They will not work with Max/MSP 5 or lower. Please report bugs under the issues tab above.

License

This software is free to use, modify, and redistribute under a GNU General Public License.