Ableton M4L and Jitter: a modular system for real time video synthesis and music

Fabrizio Poce's icon

Hi Everybody,

I am building a modular environment using Jitter on top of the Ableton's host (M4L) for real time video integration (synthesis but also interaction with audio and video) to be used within Live.
To have an idea of what I do (I mean, an example of results) have a look to: http://vimeo.com/june74 or http://www.myspace.com/june74space.
For instance http://vimeo.com/19392757 is an example of a real-time capture of laptop camera and of audio from live (original music I compose) used to modulate video in OpenGL and audio back in live.

With modular system I mean a framework of M4L instruments/effects which offer all kind of macro/micro functionalities (many directly derived from Jitter's methods, many I created myself combining Jitter modules) and can be FREELY CONNECTED/COMBINED (on the fly, without opening the patch) in any form of chain or more complex derivation, exactly as you would do in Ableton itself for native audio/MIDI devices (so that you can build racks, automate them, etc.).

It all started as an experimentation, but in the last few months it expanded quite far and powerfully.
As now I am quite happy with the results and I think it is worth sharing.
May you may interested in the M4L devices, drop me an email (possibly in the future I will post them here and/or maxforlive.com / maxobjects.com).

More importantly (for me, at least), if you are interested in collaborationg on it (both on the creative and development sides) let me know. My main contact is: f.poce@tiscali.nl

PS: I live in the Netherlands (Amsterdam), so if you like to meet, you know the coordinates.

Ciao,
Fabrizio

dtr's icon

Maybe you could post some screenshots to get an idea of how it all works in Live? And maybe some info on the modules?

Fabrizio Poce's icon

Hi,

I am working on posting the devices (beta) on maxforlive.com and maxobjects.com but for now, please, send me an email and I will send you the package.

Gr.
Fabrizio

Fabrizio Poce's icon

Everybody interested: here attached a preview of the framework.
They are not all devices I made, but enough to make a test of it.

Gr.
Fabrizio

1951.VModulePreviewBeta.zip
zip
Fabrizio Poce's icon

A work in progress of a describing document coming soon

Fabrizio Poce's icon

Describing document (in progress) here:

1952.VModuloREADME.doc
doc
pid's icon

hi fabrizio.

first of all, congratulations on this project. without question the most comprehensive and exciting jitter project for max-for-live that has yet been made public. it is not just amazing because of its sheer size (it will take me days if not weeks to get through it all) but for its stability and design. that is not just enthusiasm (as you self-deprecatingly suggest in your notes) but high quality coding putting creative issues into programming practice, a real coder-to-end-user environment. when i think of all the utter crap that certain people have been trying to sell for M4L in the last year or so, your project reminds me of how topsy turvy that whole issue is.

just a couple of initial thoughts:
- i am on mac os x 10.6.6 on a really crappy old broken computer and i am pleased to say everything is working perfectly (so maybe you can get rid of the windows-only disclaimer in your text doc?).
- for the jb.utilities library you may just want to direct users to his website. the abstractions came to me (on mac) in unrecognisable state (nested .zip seems to screw these things up sometimes), but i just downloaded them again from his website (linked from maxobjects.com) and now everything works perfectly.
- for some things you seem to have (accidentally?) left in hard coded search paths of your machine in the devices. for example, this one in cycle device: "read "C:/Users/Fabbri/Documents/Ableton/Library/Presets/MIDI Effects/Max MIDI Effect/My JitterVideo Devices/Presets/V-Cycle-Stuf-default.maxpresets"". i notice these presets files are in a presets folder in that live-devices folder - why not just stick them in the folder you require to be put in the max search path? or use the 'path' message to thispatcher to sort that out dynamically? there are a few path issues like that here and there, some to do with folders of your local video files etc...
- also, if you get the time (it is time-consuming) you may want to make use of the 'annotation' / Live's 'Info View' feature, as some devices are pretty complex to ascertain what is going on at first encounter. however, it is a yucky job i admit. that takes me ages when i make devices.
- maybe turn word.doc documentation in to pdf? '.doc' sucks.
- i'm a bit scared of your automation writing stories from your text (that i have not tried yet) - live.object is evil, live.remote~ is good, but not sure what way you are doing this yet...

anyway, i'll keep playing, and let you know if i can help in any way. it is a fantastic project. thanks again.

Fabrizio Poce's icon

Well, thanks pid. I won't probably get so much positive feedback in the entire rest of my life, so, well, I enjoyed that.... ;)

Then: let me say I will definitely use your feedback, as it very useful and clear.

My feedback on yours:
- Things like a fixed path left in the patch or externals issues are in fact somehow accidental - I just did not know and/or forgot about them! As V-Module devices, well, existed only on my two laptops, if they worked there I stopped opening the patch (which by the way is one of the point I wanted to reach...). I should be able to easily work around these issues.
- Absolutely great it works on MAC! I kind of suspected that, as I am working using pretty standard stuff, but I did not have the chance to try it. You have been the first!
- The .doc is just a beta-beta thing. I make a pdf (but first I need to finish it first).
- The "automation" (mix of Live native's one and the LFO-like things I built in the patches) are probably the funniest thing. Let me know if you want a tip or example.
- "'annotation' / Live's 'Info View' feature": I will have a look, for sure.
- "live.object is evil, live.remote~ is good": I am not sure I get the point. could you please a bit more specific?

Thanks again for you valuable feedback and keep in touch (maybe directly mailing, if you feel).
Ciao
Fabrizio

ecompositor's icon

Fabrizio.
Great job.

I am taking a stab at making
V-Cam.amxd work on both windows and Mac. I have live on both but have been using Mac more and more.

If I am successful i will send you the update. I have started working with something similar and well be using jamoma for some of the OSC pieces. As it progress I will try to share it here. I am unlikely to achieve the level of documentation that you have shared.

It is of great use to the communtiy.

Ciao

Michael

Fabrizio Poce's icon

Thanks Michael,

V-Cam is now dx only. I was thinking to make a separate device for windows and Mac just to keep the patcher simple, nut if you can find an elegant way to do that "automatically" in one device, I very curious to see it!

It would be nice to see the work you are doing as well.

Keep in touch.

Gr.
Fabrizio

Fabrizio Poce's icon

Hi

For who is interested in V-Module I included a download link (still a beta version, but already with a few fixes) and a manual in PDF on my own web site: http://www.fabriziopoce.com.

Soon I will post the devices at maxforlive.com.

Gr.
Fabrizio

ecompositor's icon

I was able to create a patch but the

jit.dx.grab was not active on mac patcher.

I pasted the code below to identity what system it is running on, we may be able to use code to include bpatcher for this V-CAM

{
    "boxes" : [         {
            "box" :             {
                "maxclass" : "message",
                "text" : "set $1",
                "numoutlets" : 1,
                "outlettype" : [ "" ],
                "fontsize" : 12.0,
                "numinlets" : 2,
                "patching_rect" : [ 185.0, 152.0, 43.0, 18.0 ],
                "id" : "obj-12",
                "fontname" : "Arial"
            }

        }
,         {
            "box" :             {
                "maxclass" : "button",
                "numoutlets" : 1,
                "outlettype" : [ "bang" ],
                "numinlets" : 1,
                "patching_rect" : [ 201.0, 228.0, 20.0, 20.0 ],
                "id" : "obj-11"
            }

        }
,         {
            "box" :             {
                "maxclass" : "message",
                "text" : ";rmax getsystem os",
                "linecount" : 2,
                "numoutlets" : 1,
                "outlettype" : [ "" ],
                "fontsize" : 12.0,
                "numinlets" : 2,
                "patching_rect" : [ 208.0, 283.0, 107.0, 32.0 ],
                "id" : "obj-6",
                "fontname" : "Arial"
            }

        }
,         {
            "box" :             {
                "maxclass" : "comment",
                "text" : "macintosh",
                "numoutlets" : 0,
                "fontsize" : 12.0,
                "frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
                "numinlets" : 1,
                "patching_rect" : [ 187.0, 191.0, 150.0, 20.0 ],
                "id" : "obj-5",
                "fontname" : "Arial"
            }

        }
,         {
            "box" :             {
                "maxclass" : "newobj",
                "text" : "r os",
                "numoutlets" : 1,
                "outlettype" : [ "" ],
                "fontsize" : 12.0,
                "numinlets" : 0,
                "patching_rect" : [ 193.0, 93.0, 31.0, 20.0 ],
                "id" : "obj-4",
                "fontname" : "Arial"
            }

        }
],
    "lines" : [         {
            "patchline" :             {
                "source" : [ "obj-12", 0 ],
                "destination" : [ "obj-5", 0 ],
                "hidden" : 0,
                "midpoints" : [ ]
            }

        }
,         {
            "patchline" :             {
                "source" : [ "obj-4", 0 ],
                "destination" : [ "obj-12", 0 ],
                "hidden" : 0,
                "midpoints" : [ ]
            }

        }
,         {
            "patchline" :             {
                "source" : [ "obj-11", 0 ],
                "destination" : [ "obj-6", 0 ],
                "hidden" : 0,
                "midpoints" : [ ]
            }

        }
]
}

alloy's icon

I managed to use my Mac laptop built-in cam to feed video into V-module with the aid of the VIZZABLE grabber from http://www.maxforlive.com/library/device.php?id=536 by simply typing in 'voutput1' in the 'out' box on that device (as suggested in the .pdf manual). So there is no need to reinvent a Mac V-CAM!
And thank you thank you thank you Fabrizio for this fantastic tool - it is a knockout! I never imagined this could be possible. You're a star!
Alloy

Fabrizio Poce's icon

Hi,

I just posted the very first release (v0.2) of V-Module which I (hopefully) can label as stable. It is on my web site www.fabriziopoce.com AND maxforlive.com (http://www.maxforlive.com/library/device.php?id=594).

Relevant notes:
- Installation is now very easy:
1 - Copy Max scripts (JavaScript, Shaders, etc.) in your Max path.
(all stuff a live pack won't copy)
2 - Install the V-Module "live pack"
This includes all devices and seven extensive examples (as livesets).
- Documentation is also quite complete.
- I fixed all bugs I got aware of (thanks to you guys)
- Dependencies from externals should have been reduced to zero.

I think I will sit down for a while, as I actually worked quite a lot on it........ Anyway if you like have a go on the example files and let me know if something breaks (and of course what you think about it).

Kind Regards,
Fabrizio
www.fabriziopoce.com

Fabrizio Poce's icon

Hi,

Has anybody tried the example livesets in the live pack of version 0.2?
In particular, any Mac user? Users on Live 8.2.2 / Max 5.1.8?

At this stage I am trying to see if things work properly after installation or if there is some issue I should be aware of.
Thanks if you try.

Gr
Fabrizio

Fabrizio Poce's icon

All,

Robert Jarvis (zealousy.com, the author of VIZZable) and I (V-Module's maker) are trying to start up a community on developing modular Jitter-foucused tools within Max4live.

If you are interested have a look to this post and let us know:
https://cycling74.com/forums/v-module-and-vizzable-community-development#post-158308

Ciao
Fabrizio

Fabrizio Poce's icon

All,

In the meantime (besides working with all the guys at the Google group http://groups.google.com/group/jitterinmax4live-) V-Module has had a couple of relevant updates based on user feedback and tests. Here the details of the latest 0.4 version and of the other recent updates.

Ver 0.4
- Major review of all devices for compatibility against Ableton Max for Live Production Guidelines v0.6:
- All GUI parameters are labeled in a meaningful way (see info view). Yes, you read it right: ALL GUI parameters.
- The most significant GUI parameters (all type float and/or int, according to M4L constraints) can be mapped and automated for clip envelopes.
- Many devices have useful info view text (thanks M._TriangelKlang for the help)
- All devices behave politely and do not spill into Undo history (no loadbang on live.objects, Max umenu managed through pattr instances)
- All devices are frozen and directly compatibile with OSX and Windows OS
- Enhancements and fixes on many devices, in particular for V-Input devices:
- All V-Input devices have rate which can also go into negative values (thanks ChrisG for the tip)
- All V-Input devices are now efficient with memory and use both drag'n'drop and click-to-read ways to open clips (thanks to ChrisG for the "invisible button").
- V-VideoRack supports Thumbnails creation also iffolder is selected while device is ON.
- V-VideoRack, V-SliceBeat, V-Mixer and most V-Effects have full Info View help
- Some OpenGL devices will see improvement in the use of backread technique
- Documentation PDF updated and corrected to reflect changes

Ver 0.3.1
- V-VideoRack and V-SliceBeat support *** absolute *** paths.

Ver 0.3
- V-VideoRack rewritten. Now performance and memory usage are definitively efficient.
- V-VideoRack supports now 16 pads per device
- V-VideoRack supports chaining of multiple V-VideoRack, by using pad MIDI "offset" (see example08 liveset)
- V-VideoRack tested loading 64 clips in 4x V-VideoRacks
- V-VideoRack supports retrigger/continue options for multiple hits on same pad
- V-VideoRack does not abuse undo list

Ver 0.2.1
- V-VideoRack added
- V-Cam made cross platform
- V-Mixer and V-Out devices with window screen support ESC for existing fullscreen
- V-SliceBeat enhanced
- V-FX-GL-Rota-xxx removed theta issue on Live's undo
- V-FX-Feedback2 added