The TesserAkt library is a collection of MaxForLive devices designed for real-time midi manipulation. These devices were developed in the context of the Fraktale Lab, within the artistic research project Atlas of Smooth Spaces (FWF 640) at the University of Music and Performing Arts Vienna.

Credits and access

This environement is developed and mantained by Adrian Artacho. The online repository can be found here:

Name Description
Tesser_cmd Launches a function based on midi input
tesser_automidi Similar to 'autotune', reshapes a midi input
tesser_block Blocks CC/Midinotes dynamically
tesser_buffer This device allows to save and recall bits of audio
tesser_cc2note Converts a midi inout onto midinotes
tesser_cc2params Maps CC input onto ranges and parameters
tesser_cc2signal Create a signal-structured stream of midi
tesser_chains Renames midinotes based on lists
tesser_clip2cc Translates midinotes to CC values
tesser_clips Launches clips via midinotes or CC
tesser_cue Aural warnings to the performer
tesser_delay Takes a midi input and delays it by an amount of time
tesser_dynamic Manipulate note velocity in different ways
tesser_fade Fades in/out (increases/reduces midi velocities)
tesser_fractal Fractal Video manipulation
tesser_function Manipulates midi input based on a function
tesser_funnel Maps differently sized lists of midi IN/OUT values
tesser_gate Open/Close the midi stream dynamically
tesser_gesture Extract a gesture from a stream of midi values
tesser_inscore Interfaces with INScore (midi input)
tesser_livescore Score display of midi
tesser_mirror Mirrors midi values dynamically based on a 'center'
tesser_mutate Introduces mutation in a given midi sequence
tesser_note2cc Converts midinotes onto CC
tesser_pedal Specific midi keyboard pedal interface
tesser_pgch Generate program change messages based on midi
tesser_ramp Generates ramp of values for a given time
tesser_ranges Allows/Blocks specific midi ranges dynamically
tesser_recall Saves and recalls midi sequences dynamically
tesser_route Routes midi input dynamically
tesser_scale Scales midi input dynamically
tesser_signal2midi Takes in a signal (audio) and converts it to midi
tesser_threshold Allows/Blocks midi input based on threshold values
tesser_videoloop Live capture looping
tesser_visuals Produce visuals (Max/jitter) based on midi

About me

Welcome to my website. At the moment this is still a work in progress…



SoDA node

SoDA application kit

This code repository also hosts the documentation and help files of the set of applications included in the Social Distancing Applications kit (SoDA), developed by Adrián Artacho. The standalone programs has been written in MaxMSP, while the message broker (AMEX) is C# programm written by Oscar Medina Duarte. The build standalone for the SoDA node can be downloaded here.

Required externals:

From the CNMAT package:

  • OSC-route.mxo

Computer Vision for Jitter (Jean-Marc Pelletier)

  • cv.jit.resize.mxo
  • cv.jit.track.mxo

Probabilistic Models by Jules Francoise:

  • mubu.mxo
  • mubu.gmm.mxo
  • mubu.hhmm.mxo

From the Ejies library:

  • zsa.descriptors.mxo

SoDA ecosystem

The SoDA ecosystem is composed by a network of SoDA node applications in addition to standalone components that add some features to the system. The local standalone components communicate by means of OSC messages with the SoDA node, and the individual nodes exchange messages via TCP protocol with the message broker application usually running in a remote server.

  • OSC messages (Description of the SoDA message ecosystem)
  • (Message broker program running in the remote server)

Standalone applications

  • SoDA node is the main application you will need to participate in a networked performance session.

  • SoDA pov (This application monitors and corrects latency problems)
  • SoDATA

Max for Live devices

  • SoDA for Live (SoD4L) is a M4L object that acts as a bridge between Ableton Live and the SoDA-node standalone.

SoDA node

This are the instructions for the installation and use of the SoDA-node application. The installation process will be different between Mac and Windows operating systems.

Download SoDA node

The toolkit heavily relies on the MuBu lib developed by the ISMM team at IRCAM. This a Max/MSP library that is free (only to register to the IRCAM forum:

SoDA-node v.1.5 Standalones (2021.03.26)

For Mac OS:

: SoDA-node-standalone-v1.5_Max8-MacOS-10-13-6

For Windows:

: SoDA-node-standalone-v1.5_Max8-Windows7

Note for Windows' users: you need to install Visual Studio 2015 Redistributable Package to have MuBu working! Once downloaded, add the Mubu library into the ext-libs folder within the GST.

Last step: in MaxMSP add all the toolkit to your file preferences:

Options > File Preferences

Installation in Mac operation systems

  1. First you will need to download the appropriate version from the Downloads page to your Desktop.
  2. Uncompress the .zip file by double clicking on it.
  3. Move the uncompressed file ( to your Applications folder (optional)
  4. Lauch it as you would with any other application and enjoy!

→ (error) If your computer protests that the application is broken / corrupted / or from an unknown developer, you may solve with a little line in your computer Terminal:

  1. Open your Terminal application (⌘CMD + SPACEBAR to open Spotlight, then type terminal)
  2. Write the following:

xattr -cr /Applications/

Installation in Windows operation systems

  1. First you will need to download the appropriate version to your Desktop.
  2. Uncompress the .zip file by double clicking on it.
  3. Lauch it as you would with any other application and enjoy!

Using the SoDA-node application (both operating systems)

Using the program is pretty straightforward. Once the remote server is on (which can also be done from the SoDA pov application),
hit connect button:


Then, the application should show the status "connected" and the toggle "tcp on".


Now, select your participant ID:


If we are going to use audio for the session, make sure to drop the audiofile (.wav, .mp3 etc.) in the rectangle on the right.


You will know that a connection is established with the POV application when your internal SID number appears near your Participant ID. You will also see a red blink at the top corner right whenever 'pinged' by the POV Application.


Set your volume level as you like with the horizontal slider, but make sure to leave the audio ON (the speaker symbol on the left) if we are going to be working with audio.

OSC messages


Quick message reference (pdf):





Here is the links to the live.device (OS-agnostic):

TransForms M4L device

[comment]: # ( TransForms standalone (MacOS) )

(*) In order to have polyphonic Pitch Bend, the Max For Live device needs to be used together with additional routing devices.

work in progress... - - -

OSC messages to & from TransForms App

OSC messages from the PolytempoNetwork App to the TransForms App use the port 22574 and these are the ones implemented so far:

TransForms app (OSC port IN 22574)



This Patch is part of the TESSER environment.



This device allows to block selectively different kinds of midi data.



The settings can be stored with the device/set. They can also be automated.


This device is a derivative patch largely taken from AbletonDrummer's object.


  • document device
  • Add feature to print in maxwindow specific kinds of cc input
  • Extended feature: block specific notes which are set using the gesture CC. This is practical, for example, if you are playing the keyboard and whant to block the area where the hands are from playing new notes, etc.


This Patch is part of the TESSER environment.



This device is analogous to an autotune effect, only with midi. It takes midinotes and allows to substitute the entered midinote number and/or velocity with alternative CC values entered via CC86 and CC87.


View of the device. Click here) to edit.


Here is a full description of the functions associated to CC messages within the TESSER environment.

override pitch The entered pitch will be substituted by the last entered CC86 value.

override velocity The entered velocity will be substituted by the ;ast entered CC87 value.

auto AllNotesOff When this toggle is on, a note off (vel = 0) will cause a 0 123 message to be sent to all 16 midi channels.


  • document
  • how does a gesture gets stored, and then recalled one by one in a loop? The device should accept (and store) a gesture string, possibly via CC90