Browsing articles tagged with " max msp"
Feb 15, 2012 - 23:03
julien

Ability to cleanly destroy LiveAPI’s callbacks ?



I initiated a post on the Cycling 74 forum.
It was about the fact that if you instantiate LiveAPI objects, setting up callbacks, through javascript, I had doubts about how those callbacks could be cleanly, I mean: with a REAL memory liberation, destroyed and garbage collected.

Indeed, javascript’s Max implementations provide all stuff from classic javascript.
It means the garbage collector is also totally working.

So, if I want to make a LiveAPI call (instantiation) from javascript, I can do that:

trackObject= new LiveAPI(this.patcher, “live_set tracks 5″);

This row call the object in the LOM and “put it” in trackObject variable, basically for further access.

I can also do that:

trackObject= new LiveAPI(this.patcher,track_callback,”live_set tracks 5″);
trackObject.name = trackObject.get(“name”) ;
trackObject.property = “name”;
function track_callback()
{
post(“The track 5 is named:” + this.name;
}

This piece of code instantiate an object and observe if something changes and react by doing something.
Here, if the name of the track 5 changes, the callback is executed and pops out the new name.

If trackObject is out of scope (I mean, NOONE calls/runs the part of the code where it has been declared), the javascript’s (precious) garbage collector destroy and free the part of the memory where there was this variable.
It works.
BUT the problem is on the LiveAPI (and Live) side.
How could I be sure the callback is totally collected ?

Especially, I have been surprised by using the same piece of code by creating a HUGE table of LiveAPI objects, using callbacks and other stuff.
The Memory was a bit … busy and even the CPU (callbacks were working)

So I decided to … basically as I used to do in javascript: to try:
- myArray.length = 0; (this totally weird tip works fine usually)
-  myArray = null; (no comment)

Nothing worked fine BECAUSE there were those callbacks still working or even sleepy zombified or ?!

So the question became: How to really free memory from this callbacks ?

Tom answered and give an important information in the thread I began there.

cb_private seems to be a property for all LiveAPI objects (I guess it is trivial for those which don’t have a callback)

So, inside the callback, Tom suggests to add

delete liveAPIObject.cb_private

Where liveAPIObject is the related object for which you need to free the memory addressed for the callback.

Let’s test that in case we need it.

I suppose C74′s dudes will answer soon, but it is a nice news/clue/tip to test.
 

Jan 27, 2012 - 09:09
julien

My video generator begins to live



Designing & testing my video generator with Max & Max for Live as written in some previous posts (especially this one where you can see the global architecture), here is a very light & short video.

Thanks to Synthtopia for the review.

The video generated (in the little black window on the left) has been made with a javascript + MGraphics code designed by Darwin Grosse and provided the 02 / 11 / 12 here)
I altered it a bit in order to follow the requirements of the video generator (framework, I could add)

I’d like to make the core available for you.
We’ll see this point later but not very late :)

As I wrote previously, the only important point shown here in that video is the concept, not the video generated or else.
Also, I can say I’ll use it as soon as it will be fully functional.
My couple of algorithms will generated strange minimalistic videos and, all along my music performance, these videos will be altered, changed by :
- me tweaked parameters not directly related to visuals (I push a button to mute, I accelerate the tempo, I tweak a panning on this track)
- audio part of music itself (volume, frequency too)

Jan 25, 2012 - 13:42
julien

My video generator architecture



As described in a previous post about the fact I love to design minimalistic elements, I’m currently designing my video generator.
I need it since .. around 3 years and I already discussed about that here and there.

The more I play, the more I need it
For me, making music equals designing music.
The process includes algorithms & coding, sometimes.
Generative sequence (made for instance with my 2 own sequencers, including The MatriX sequencer) & generative video can coexist very well. Especially, I feel well with them.

It wouldn’t replace a VJ.
By writing that, I didn’t write it will be worse than a VJ, and no more it will be better than a VJ.
It just will be a special entity by itself, built to react and to inspire me while I’ll perform live.
It will also be a nice way to produce visuals for you if you are in front of me, not watching my screen, drinking something, wanting to see more visuals stuff.


OSC can be use internal or external on a network.
OSC is Open Sound Control.

I’ll deliver more later of course because I want to provide the Video Generator part.
Following some (very light, voluntarily) requirements, you’ll be able to build your own modules by programming (coding) and to use them with the video generator.

Stay tuned…

Jan 23, 2012 - 20:04
julien

Designing minimal elements



Dear followers & friends,
I cannot tease too much, but a bit.
The word bit is important.
It defines “the smallest element in the digital world” named Binary digIT.

I love elementary structures, because Continue reading »

Jan 17, 2012 - 10:09
julien

My M4_U feelings & report



I wrote “my” because I wanted to relate my feelings, my perception of this very great & unique event made in Leicester and at which I have been invite by Sean Carroll.
My M4_U started a bit late, because I was travelling.

 

Indeed, I caught my flight around 10h50, landing on Gatwick Airport, then took a train to St Pancras Intl, and then another one to Leicester.

Continue reading »

Jan 5, 2012 - 22:00
julien

The MatriX sequencer as a composition tool



The new MatriX sequencer for Ableton Live I almost finished is a huge tool to design MIDI Clips too.
I’m already using it like that

Check this video:

Do you like it ?
Do you imagine how you would be able to use it ?

Oct 3, 2011 - 21:43
julien

Booked for a max convention in UK (january 2012)



Thanks to have invited me.
There will be more official informations asap.

Sean from Phoenix Square Digital Media Center invited me to this great and major event in UK.

Check this : http://maxuk.wordpress.com/

Jun 19, 2011 - 10:52
julien

A big max5 permanent installation supporting Meditteranean Cinema



Design the Media & I have been targeted & approached about a big Max5 installation project for a permanent exhibition.

I made it!

Now, I can name the place/museum.

The Museum is: Musée de la Buzine – Maison des cinématographies de la Méditerranée


It involves:

  • 24 systems with OS Windows 7 64bits + 1 server with Windows 2008 server.
  • 1 Gigabit Ethernet Network
  • 7 touchscreen
  • 10 video-projectors
  • 20 rfid readers
  • 7 arduino boards with 8 buttons + 8 ultrasonic sensors
  • 2 multichannel (>4) sound system

I designed the whole system, integrating Continue reading »

May 25, 2011 - 18:53
julien

HOWTO: Find the folder path of something



A big number of people ask me about advices around Ableton Live, Max for Live & Max5.
So, I decided to publish HOW TOs about technology on this blog.
It will probably make it more alive and attractive too.

I hope you’ll like that.
I begin with a particular basic feature but an important one: how to find the absolute path of something and work with folder path a bit.
This feature is available in Max5 so, it is available in Max for Live too.
This can be VERY useful to dynamically use & process path ; for instance, you want to automatically load samples or video, or any type of files without taking care of an hardcoded path.

The path folder
Here is a basic patch/device to find the absolute path of the Max for Live device (the .amxd file). It can be used directly in Max too.

You can grab it by copy-pasting this compressed version of the patch:

----------begin_max5_patcher----------
502.3ocsUEriaBCD8LQJ+CVdulhvl.Ko8T6GPk54pUUN3YCdEXGgcxl1U8eu3g.IYSZxF1rWFadOy327Xr4kwiBnyMa.Kk7YxOIAAuzfDfXdjfNf.ZkXSdovhKjpgmMyehNYKmC13PbGYovUPrfqm6Qi1oEU.x+0Zknj7MSormWIQllz8ozdP8pJktDb3tw1OUV0evTwhBi5va1y7BkdwupgbWagbeCKgm5iYXjkEFQdXu7aV451.dGbKl62Kg1r3ybAcBg5KHxC3p963Q9wlgIua6pzHjyE5ECwrRtwlE5RoWzqX+WuBKj2gIkapp.s6XWZ8Zhq.Z6rdt.pA7QIrVkCjGUk.QYIklbgCjCwIY2NmLluqiiylcIyLZvlUEXshEvPJ23SWt7SVt7vYSix3wmolSvpLJMLINMYFaBINNBglMjtnOhiYtBkEENTeFC6TdE+ZZM3W9PVByGuGi7ngbij+1H5tWyJV2wb228bGTqD5W7g69gOBZYKxQNba5nkJ8Q+G.Skm3U9t0rpNuam25TD1NcIAqSoENkQu2hhObQEJoDP9diqRIWZTZ2VcjlElz3W3opXdR2CmqG4Mq3z2phitFEmE6EYF9ElMsa9MQvIGpkSK3zqUvrTuH4SQA2O+l4vWTv7gI3oI6Dre9IZpGOpY3e.gth9QB
-----------end_max5_patcher-----------

We can take benefits of it and learn about the loadbang object and some others.
It is a very nice & important object which has a particular property: it fires a “bang” message outside its only one output as soon as the patch is loaded.
It can be used:
- to initialize variables,
- to trigger things immediatly when the patch is launched (loaded, I mean)
Here, this precious object send a bang to another object we are discovering: the trigger object
I can describe this one quickly here as:
you send something in the only one input, it fires a particular number of data from its outputs.
It can involve more than one output.
Here, I send a bang (the loadbang takes care of it for me) in the input, and the trigger sends the messageset at first (the first message is ALWAYS sent at the most right placed output) and after this message, it sends the message path .

Each wire/cable are VERY useful in a graphical programming environement because we can track where a message is sent very easily!
Here, the message set is sent to a grey area and pretty object named message
This message object is useful to quickly display the result of a message flow ; I know it can be a bit confused because we talk about message object & message type of data flow.
Let’s resume: here, I send the data set to the left input of the message object.
The result of this action is: the data string in the message object is erased.
The message path is sent to the object thispatcher, a particular object representing some configuration setting of the current patch 
When the message path is sent to this object, this last one renders the current absolute path of the place where the patch is located, from the right output.

This works very fine in two case:
- inside a Max5 patch
- inside a Max for Live device

This DOESN’T work in standalone patch mode.
Two words about that:
- if you own your own license of Max5, you can edit patch & create standalone executable program (including a free runtime.
- if you don’t own Max5, you can only execute the standalone executable version and cannot edit it.

In the second case, this method doesn’t work , and you cannot find the absolute path where the standalone patch (understand the executable one)

How to find the absolute path even in the standalone executable Max5 case ?
You can use this other system that works fine.
It is directly inspired by a patch open-source I found from ??? I forget that, I’m sorry, btw it isn’t all from my brain.
This system can be copy-paste from this compressed code:

----------begin_max5_patcher---------
2638.3oc6c07jiZiE+bOUM+OP4bb6sKj.jfjJGxgspMG1TYS18zjTtv1pcyt XvEf6YljZ+eeQefMxfDBaL1ztmoJ6FP.589o2WRO87e9wO7vrEoegjOy5as9 j0CO7mkm4A14nm4gpS7vrMgeYYbXNqgyRHeNcw+Y1ihqUP9RA67as1FV7xuV r64m2ewnUrKU19+pWv9yltqHlTT70sD9ad1rGKu8xadl0uW0lmSSJxi9CVK. 1OYWc9xls7knj0yyHKK32NDTdYKjK8y.e5mfxOO7nR1sIJo7Ex59f5ufjvMr WvreHKJLdVsaf2EY2AT5USxD7lJlS4SJJl7JIKOJMo9a3gYG5hNdPV+x1g9k iGh9kqsastYIeecb5x+Kgwxr2e1Ujm64yIcKI4vsP4cxebTSiR1lQxIIEgEB JP5kGtKtXtBzPtAOGtjn91amW+vr0YQqRSncD46kd9pW4mr.dL51Sp2yZRR3 11t8hzz3EgYuFkGsHlHiKkCvCSh1DVPJh3cJn8g6LZy1rnjB4GGIIr7w7R9x rz3X4mF+Ru11kVQdMZI4yQqnCs+Vq5LNIAu5CmjD.kufVAQYgwWsB2tc9lPp rBQpI0DIgARWooX4AdcCQR3AZgdskowoYRC3PkvECypCYJjfA9raB5yFOCfr A4P6iuyVEj6PXtEAZv9q7+93Gp96x+7wKHRDtHOMdWAYNSMmB7vw9FAO7jgC vaH3XqUTtU1tDljuJbvUONHappSrnEFLFyXof.5WXmKK+sQe4fMriXipskcj 8LeDyNqGajgqCd+vEIJPgIsll0L8wYtkMSrto1BmL.1gUNSszoyZmgV75xpW WV9515mRKfcXErCKgcXMrcKhGO3rgBflMnSEAGqa9G94ed9O9qy+k+8O8u9w +weqQKqoT.z3hcnetK8BpzMf3JEB35daW2fd8CFniPqd3izEej93KOrTXcrU xiACWutQilZoOUDgaNDfYtk3BtCQj+hEPGbfs6FNXJTFPz.xh2yAZHZ.eCgF qK0caAsr0BIlnu5wgRmk.Sb4lwcGMLAdyfIYLSIB6HyyzAMNnwxTBGVb3yIB vTSI1SHQkMj77v0D03x28aY+VR4sXU5C3pxHwnVEZFQVK.VbYfyKS2wcCBpC NcGK3zm6RX.2+XdXYTEfugT8w50Zs7afvyhvj0svwUyQALIDnW0m8U.Qc.Wh fw2rgvGHMa1nwJ48Hc7x.7LiUh.cP8hGAzyirOGdzQADQkT6JvAFcQaXGbv7 zcYKqFGUor1pEhcEIuHJYePkeZePBs03WhVspkP0XPVzpsok9FIH.qe+zGeb xzH0aZyoQ5nloHQ1Kfj59jEXxQjp51sSjTKWSPjDC5CRpZv8sNQZ26gqSOhr eJWUwRFPhrdCnzbsYNMO7Uxp4k8iRCiyCKJxhVT58Xt5YR0n4Jr8VncxHWGm tHLVLQt6cia1IMcjFM6ms7Pj3RC9722hS8s3P+ZRgXd7Y9yK9aYO4U6EujG7 dC15tzh+SAbeLcDNuCa0qc0dreKuXJEVK3+W4Jof0yYYdp+nhuOKttXFIrYe 4cYWgE2qmDP9WyKHapuXumh..DcIE.v74efOi1P6fIl.PiPRkVU.eCFfa35s 5ZqIBK0Qfpa49ZOppghyzLBSIVib1End5o.PioafZ519Vgtgftna.WF.5gtJ DdsLnoQny0XFs4UWcVRSu4Z5elpvjCZ1x18hSiGbchl8m.vlR.sQplQ.dAO4 Q0Bxf9ZGb4ILGiHLuSkvBbnzBvQjfZt6O5xSYPSnLH5ToLe3S.T4+boFwXS5 pOlQcXvXPc.ivM2Sk5v1O46T9OZ9AgXphPLukjN.xW7.eDa7J8fKJcSspZnf H91TShqoD.DbxCK4fgHiPA96ORIkUcgCQ11UTsGxw0NyuylWUYRi1QDrFk1n clYpJiZshmH9Vf3mWtOGmFthG6RyDe9vrr2k6gxbL+mvNN.WmNy7YGvSA91X rKS.kk5TCX5OCFblEOQwsBSVYsMNrf7bZ1l1Xbn8KvspHNZ04ppH+7Uk7hmK Gwd.RHbjGlCcbkrBW+k.NiRHbidNW5DBG9dBgeymP3Ycsn2RKxZvEcBwpO0L .GaClaF6IS1EuKI5KVTMZgJCPDYeI4tHLWumG0ef.vjK0hwhbilO7vkq+1yC bp4VrwOu2St32St3gM+JfFkeEtrwmtArHrb8p97JleEiYl9ZasvJVGSDALK2 Rqs5ACS1VA4JR8CDyTyPj0u+cR7qkRFKC6HgqbtgPnb4k2owfbyxyTE4j0of K.9bvvy0T3nhKvaHbQaFY6LhIjsvSN9FvEhGU.4VZSK.0l2hiHfvwf6b7Hqr WQr9bTxpzOmasIbYI6MMW6tJwyvTlefMwv2ua.j6cpIlLQ7Ro4csseFsDmWX 62q1ls+rSb9aOQHySd9CYZfVnx3blGOZ.oqasM+fPF6ryY9om1PwVFRqOC9i 4NFRHgUsoTbFjsLzTzMtNbuNXzculCLhMMzHaT5FBXRy+5lEoZCMEXOVpwDy Q.hEsCBcm5RWZBgNNWuVLfqgaPnAUpA.44xDOydvf6T0YLyL.86LUf2XI0TA JXlRLz3BJfoxTE.Pi4bEHfDwp9buFbZNItCPAatVrAEYf7sDIembeW5PVjUj Vjw234idvjZ3qoGj6SF9dcJO+9uuzOHsPSv3qICx8IyEemZbIpHMT6xCLlkF Dgax7sZimsgPhyaLH4OhsVmktaqVXYTKOHBbgmRVH66TSKQEDs0EDufQqDSg qkTuNv6TmvBKR0ZoGZvhnEGkOnKZCfCMuY0c0Y88.dZUSE0qSLe3Mu5U3ftp 01iwrtU.509GGNMqoCzbC4nc+gFhzKX5RjFWSGffoKQZdYV4rqoCNrMOgCRT gaC1ezUg5oVZLm5QSSHF1mgw3IKIZLL5OIqvLP2dYWYRBiA8YjJc8Flf3XKa wttT3dVDIVnvkua0vf8Gccndz3Zt45Pj8RTUEK4VmHw8hHmlU7JPPuHxoowS feuT6NMcl2qW0msoII1uAq9SSO85U30.6oIQ1qfxfSShDzqhe44GdcUvlA7J .BZ+AWMWcMm3mlJj5kmtSSyJN8MvyyaHrMaHLvtZRUqN35TXWGUZ+p40f4E7 zo4D.1GRzaxpGBLdyHODZSELc4UbRw1KU5.wVajI+xN385i5jn9npsBDP2b0 l+SN2QEqtSqHa5KpjCAWzhMf8nxGyzTSMUtEuG5Z4.fKnB73IiuC3MToxXr+ EpTC6UL988e1IuDLYQ8HwyeZ9aIo1p+pW+3bJ4NHzUoxudoJDnH6Kecz7hV9 9bCLk.P2lD.z3JYJ71rTr5YeEQfqYcRDNF0IQ30pNIV7RTdUchpkJ9GDq+2H dUkJwNpHf75SAu1HhBF75AHr9fDQu8a9IZ+Uhbsl8czO9l+I8SRxJ9YDi0Nv j4cKYExBl9wRQUr91mB9CgZZVHlsH0nXhe74tMc3fFDwimPmFhMoSej3tIcZ OwrUIbD4vQCR29neNjLK2yLna2x.iO9gxu9+.0Tchq.
-----------end_max5_patcher-----------


Who am I ?

I'm a digital artist & a technology developer.
You can read more about me here.
You are on my official & unique blog.
Feel free to subscribe.

My twitter feed