I haven't left my basement all day...

Learn about building and using Max for Live devices.
technog0d
Posts: 265
Joined: Mon May 26, 2008 1:14 pm
Location: Philly
Contact:

I haven't left my basement all day...

Post by technog0d » Fri Sep 18, 2009 7:35 pm

I haven't left my basement all day. I am not sure if it is day or night. This is the integration that I have been waiting for. My mind is going crazy with all of these ideas... I am not sure if i will see light for a few days. But, when i come up, i think i will have some real useful creative tools in my studio. Right now I am working on Lemur patches that will allow integration with Live. I am using a combination of OSC and Live I/O to create some interesting tools. I am not really sure where I am going yet with it, because again I am way to excited. Luckily I have been a MAX and Live user for a long time, so I have a little bit of a head start. I just need to convert some things to fit in M4L... Anyhow, enough of the chit chat. I Just wanted to share my excitement.
Websites:
Max For Live Community site:
http://www.max4live.info
http://www.noisemakers.info

Controllers: Lemur, Ohm 64, Monome, APC40, Launchpad
Daw: Live 8 Suite
Audio Interfaces: Apogee Ensemble & Duet
Monitors: JBL LSR 4300

gato.rui
Posts: 25
Joined: Thu Sep 17, 2009 3:26 pm

Re: I haven't left my basement all day...

Post by gato.rui » Sat Sep 19, 2009 4:15 pm

please keep us posted!

technog0d
Posts: 265
Joined: Mon May 26, 2008 1:14 pm
Location: Philly
Contact:

Re: I haven't left my basement all day...

Post by technog0d » Sat Sep 19, 2009 6:37 pm

I have created a new M4L/Lemur project that is a 16 step sequencer. It uses the Live.Step object and is controlled by Live and OSC.

So far here is what is working:

- Lemur 16 step multislider for Notes that corresponds to the steps of the Live.Step object
- Lemur 16 step multislider that selects octave of each individual step
- Lemur range object that you can select the step range with and a button to toggle sliding if the range
- Lemur Fold button to toggle Fold on and off
- Note Multislider get current step highlighted that corresponds to live.step current step.

Working on:

- turn off note for step when note multislider has 0 value (No visible step)
- Zoom and pan functions
- Send current state (Both directions)

Probably have some other ideas as i go...
Websites:
Max For Live Community site:
http://www.max4live.info
http://www.noisemakers.info

Controllers: Lemur, Ohm 64, Monome, APC40, Launchpad
Daw: Live 8 Suite
Audio Interfaces: Apogee Ensemble & Duet
Monitors: JBL LSR 4300

vanceg
Posts: 130
Joined: Wed Aug 02, 2006 6:46 pm

Re: I haven't left my basement all day...

Post by vanceg » Sat Sep 19, 2009 8:53 pm

Go Cat, Go! (words of encouragement)

So, are you using Live or the Lemur to drive the timing of the step sequencer? That is, is Lemur simply a controller, or is it the sequence clock for the system? I assume Lemur is 'just' acting as a controller.

Vance
Latptop:
MacBook Pro 2.33, RME Fireface 400, iPad running TouchOSC, VG-99 processor, SoftStep foot pedal (2)


Desktop:
MacPro 3.15Ghz, 8GB RAM, Maudio Profire, Eventide H8000, Eventide Eclipse.

technog0d
Posts: 265
Joined: Mon May 26, 2008 1:14 pm
Location: Philly
Contact:

Re: I haven't left my basement all day...

Post by technog0d » Sat Sep 19, 2009 10:12 pm

Live is doing all of the timing. It is very nicely integrated. All the transport works through Live's normal interface and the Lemur follows. So yeah, I am using the Lemur as a controller for the sequencer. All control signals are routed To/From the Lemur through OSC. It is SOOOO nice not having to create a intermediary MAX patch and then connect it to Live. You just turn on the Lemur, pix your patch and through the device on the track that you want in Live. I will probably create a screencast when I get a little further. Now i am just trying to figure out how to dump the step sequencer values from the Live.Step to my Lemur on insert of the patch. I think i might have to use a Coll to save it. hmmm
Websites:
Max For Live Community site:
http://www.max4live.info
http://www.noisemakers.info

Controllers: Lemur, Ohm 64, Monome, APC40, Launchpad
Daw: Live 8 Suite
Audio Interfaces: Apogee Ensemble & Duet
Monitors: JBL LSR 4300

gato.rui
Posts: 25
Joined: Thu Sep 17, 2009 3:26 pm

Re: I haven't left my basement all day...

Post by gato.rui » Mon Sep 21, 2009 7:40 pm

hey technog0d

i'm trying to replicate some of the stuff you've done with live.step and the lemur, but not with much sucess..

can you explain how do you access the notes with a multislider?

i'm familiar with the udpsend / udpreceive stuff, as also the pack / unpack and the route for osc messages, just don't know here to point in the live.step object

cheers!

technog0d
Posts: 265
Joined: Mon May 26, 2008 1:14 pm
Location: Philly
Contact:

Re: I haven't left my basement all day...

Post by technog0d » Mon Sep 21, 2009 9:07 pm

What i did.. And, It's not necessarily the right, is the following

I used a, "udp receive 8000" --> attached to a,"route /Note/val1 /osc/val2".... The, "/Note/Val" was then connected to a "unpack i i i i i i i i i i i i i i i i". EACH of the 16 outputs was connected to a "sprintf step 1 %ld %ld %ld". And then each one of those went to the left in of the live.step. Of course that sprintf statement changes step value for each unpack out. So the first one is "sprintf step 1" and the second "sprintf step 2" etc... because the live.step is looking for the following input.

Step [number] [midi note o-127] [note velocity 0-127] [duration]

In my implementation, I used 4 16 part multisliders (Notes, Octave, Length. and Velocity). The Octave slider uses a formula with the note sliders to send the Note value. So octave 0 with the note (1-12) will send 1-12 from the Lemur. Octave 1 with notes 1-12 will send 13-24 from the Lemur. Each step can have a different Octave value. Length and Velocity are sent directly to the Max patch. I hope this makes sense.

Here is the patch I created for the Lemur-in communications. There are probably better ways to do it. You can copy and paste it into a patcher.

Patch:

[edit] uncompressed format replaced by compressed version below[/edit]
Websites:
Max For Live Community site:
http://www.max4live.info
http://www.noisemakers.info

Controllers: Lemur, Ohm 64, Monome, APC40, Launchpad
Daw: Live 8 Suite
Audio Interfaces: Apogee Ensemble & Duet
Monitors: JBL LSR 4300

Machinate
Posts: 11648
Joined: Thu Jun 24, 2004 2:15 pm
Location: Denmark

Re: I haven't left my basement all day...

Post by Machinate » Mon Sep 21, 2009 9:59 pm

hey, okay first things: please at least upload code in "copy compressed" format - this thread is now a gazillion pages long ;)

Secondly, don't you need some extra bangs in there? The way I read that patch you only get updated stage info when you manipulate the "note/value" multislider on your lemur - is that not correct?
mbp 2.66, osx 10.6.8, 8GB ram.

gato.rui
Posts: 25
Joined: Thu Sep 17, 2009 3:26 pm

Re: I haven't left my basement all day...

Post by gato.rui » Mon Sep 21, 2009 10:29 pm

here it is compressed, and cosmeticaly arranged :wink:

going to test it tomorrow, my lemur stayed in the studio, the basterd!

<pre><code>
----------begin_max5_patcher----------
1175.3oc6YFziiZCEG+bxmBKT6szI7LXio2ZOzSU8PUUuTsphI3YFZI.J3rM
SWse2KXRZyLaB9kgsOYjVMJSTLj3+76Y+7e+7GVtH395C51.12x9M1hEeX4h
E1l5aXwwOuHXa1gMkYs1aKnR+W02+GAqFtjQevXatYWQkg8K5VyoKUseaQUo
1X+ZvwFaxLadpn5weemdiYnakh6BWw3Qx92jf8Cg2Exd2wuRQtsC55zuI5zu
8C0UlprsZ6U9tcEYkm0q06Mm51vyt+1h+1d+.+tv9V+3xk8+a0zdt2W0js4O
YEi+2sxjzXUOGh5AQGN3vchULPcYpHtNUXeecY9kQCHO17PalmazC8cPWfLX
EUu8uOPuHDE5+gnjgXCtPj5KgHGYOzM5pbVYccysFH3x3g.gM0gZzDHbwslA
AtVH3JX4yZxkVaV0GXsFcS2nA1WWle50EoTzHCWis4WOlXADxQwT7LFShIgo
P6z4THFClhlwXJdJXRJhrS1TQXvDeFionIgoPq2Fk.0nIXFiI9TvjPXSJoFV
J0ElBmwXBlDl.6ZaIJIBLAoyXLENELEKsIkRDXxMAp4KlRmDk.KWRfTKkhSG
kRIyWJolBkhjVtHUBLTRNeoTxjnzf0ao.vPoYrE7I4.mmDOTgCTy3lwNvmjA
bN2lWRnRvPoYrA7I4+FRrbQHPQoYr+6IY+Fh3VJwUXnzL1W4jbeqrokhSQkV
ZNuGkIsDmchVbRDBHw8Te.a0ssYOp+DJ8PcGS9J3hHgOhCxT9Y0cKdHSzUp+
I2SMPN7qeqUbbXvPpz9FWb5+W7AWM9ASrod6Vc0PbH3y2.+ccckls9mpM50u
Oqjs9mypdTu9Y156MU+PW7d8A15eTW8n4o9quu6daKy+UcY8lByyqObyDYXS
VpgMvChzQGLj9lpF9UKFdecp+jWy1yU3XllvgsmwSG6XEhB+x4JLdHJuoir5
h2qYpvvv23v5viE6brA0QvaKTbio4dIcr2SPYQ0qOBW6yRe6uDYs062s4TOb
ZpXmSzScUtt0TTkYJpqN6l51vF6+dlepHOWWcdNrsE4M0cAziZf8tKF+tIIE
4PRJRkTer8rt6xRxpahwjKM0mefZMwcwoD50D3RSB+a7TDsXJAyPbZm18pnh
WnoWMi5JZRRKmj9GmTXwDmLIIvJIf1QStRNA.oQN.7uQSPnmlIv0hc.sK.2W
oOuK1E4owNW1dAZWAtuh+dImDt3TL8ZR5RSzZnC7PmJfzSGOk3J1Qq6IHwS4
jxEmnciTfxS4TpKNQ77tTOkSfKQADWACe0TG3rbADWVEvWAkyZ8P6VW3beET
tpm4qT9+6fxW8Z5hS.m7pXfZ64bRkDpccRqjPE3nURn1eGsRB01V3Dmax096
3wjOmC0VNoMzgZWKzJITaPfVIgxKNsRBmsWh0DJGlDqITl4HVSn7MQrlPkuj
1i0.kGEfTIgxiBsRBkGEZkDJOJzJITq8RqjPYahVIgxN.sRBkc.ZkDJ6.zJI
b1AHVSnrCPrlPYGfXMgxN.cZh6qGsI3ZcEdD80QAklH12DJMQ7fbT9KeqZp6
Ceb4+.rbHAxJ
-----------end_max5_patcher-----------
</code></pre>

technog0d
Posts: 265
Joined: Mon May 26, 2008 1:14 pm
Location: Philly
Contact:

Re: I haven't left my basement all day...

Post by technog0d » Mon Sep 21, 2009 11:17 pm

ahhh... That's the secret... The question to me is always whether to do it on the Lemur or in Max. My philosophy is anything that is not timing related and can be done without sending it across the network, should be done on the Lemur. So... I created a script that resends that triggers Note.x on the Lemur which sends /Note/x values whenever Velocity, Length, and/or Duration is updated. This makes it so you do not need the extra bangs.

Here is the Lemur script that i call on Note.x, Velocity.x, Octave.x, and Length.x

oscNoteOut() script:


decl i, Oct,NNote;

for (i=0;i<16;i++)
{
Oct = range (Octave.x,0,8);
NNote = abs((Oct * 12) + range(Note.x,1,12));
}
oscout(0,'/Note/val',NNote);
Websites:
Max For Live Community site:
http://www.max4live.info
http://www.noisemakers.info

Controllers: Lemur, Ohm 64, Monome, APC40, Launchpad
Daw: Live 8 Suite
Audio Interfaces: Apogee Ensemble & Duet
Monitors: JBL LSR 4300

longjohns
Posts: 9088
Joined: Mon Dec 22, 2003 3:42 pm
Location: seattle

Re: I haven't left my basement all day...

Post by longjohns » Tue Sep 22, 2009 1:05 am

noob question:

i am looking at javascript in those examples? ^^ (aside from the compressed one)

technog0d
Posts: 265
Joined: Mon May 26, 2008 1:14 pm
Location: Philly
Contact:

Re: I haven't left my basement all day...

Post by technog0d » Tue Sep 22, 2009 2:03 am

longjohns wrote:noob question:

i am looking at javascript in those examples? ^^ (aside from the compressed one)
The only one that is based on java script is this piece:

The Lemur scripting is based off of Javascript. This has nothing to do with MAX or Live. Albeit, you can use javascript with MAX. None of the examples in this thread are related to MAX... If that makes sense.

oscNoteOut() script:


decl i, Oct,NNote;

for (i=0;i<16;i++)
{
Oct = range (Octave.x,0,8);
NNote = abs((Oct * 12) + range(Note.x,1,12));
}
oscout(0,'/Note/val',NNote);
Websites:
Max For Live Community site:
http://www.max4live.info
http://www.noisemakers.info

Controllers: Lemur, Ohm 64, Monome, APC40, Launchpad
Daw: Live 8 Suite
Audio Interfaces: Apogee Ensemble & Duet
Monitors: JBL LSR 4300

Machinate
Posts: 11648
Joined: Thu Jun 24, 2004 2:15 pm
Location: Denmark

Re: I haven't left my basement all day...

Post by Machinate » Tue Sep 22, 2009 5:53 am

technog0d wrote:My philosophy is anything that is not timing related and can be done without sending it across the network, should be done on the Lemur. So... I created a script that resends that triggers Note.x on the Lemur which sends /Note/x values whenever Velocity, Length, and/or Duration is updated.
uhm.... aren't you contradicting yourself a bit there, hehe? You're saying that you don't want to send unneccesary data across the network, yet you've done a script that sends extra data across the network?

[t b l] is your friend. Two of those ought to get you the same result as scripting on the lemur. My philosophy is that scripting on the lemur should only be done when you can't do it in max ;)

I think I got a bit meticulous about this patch - I'm afraid I enjoyed this a bit too much. And it pains me that I can't remember how to pair up [zl interleave] objects properly... I have a patch that does that round here. Generally I try to avoid large pack/unpack operations, since staying in list-land usually keeps things simple ;)

Code: Select all

<pre><code>
----------begin_max5_patcher----------
2498.3oc6c0zaqaiEccJP+OHHzYW5KheSM6ltXVMXVTTLadnHP1lIQSUjLrk
SyqEy+8QVR1VxQx4xPqPZ5hGdVwTe3y8btT7xKIk9yu+6tIbVwqp0gA+8fuF
byM+YUI2TW11RtYWA2D9bxqyyRVWefg4peuX1+M7118Updsrt7xfYAY6KNcQ
cgUG4OJD6K8gh7x0o+gZ69PQeIZW44adNMOSUV+Kf1U5xjx4Okl+38qTyKa.
IUHpNq.RDqdC9KraCPxuDE7qctTEaJ2csv6JtorxusT0bgBmkj+X3sAggGN0
snKO445iH7erJMIK3mJxVDVu6+22+ca2Vs41Ijp3mOphfvMTE8RlpVFjlWpV
koRdQsXPJioGkQkmfyPrZ2KJgTuIl8djFZTRC.Y0CHpUszyN9o57RyTunVsN
sHu6u0MgG.7Vqr4CNsdCUF0AsUz9iYEy+MUMeEsuzEpGz3ZTrTkOzgu6iiNz
z7kqTqU4kIksHu2Obxlrx66IU3uL7A7Pxb03mdeFMb+w73pzEE4aAR+yca46
9I+Z.ttxw1O6f95CIOY4PmdYQQ1rjUujtNcVlpudT4amjm9bRopLsAT3nCmY
5yKWU4D2+xoxSptLOsd9phrr9Wslc8xP6Zg5kz4peOcQ4S0WtNDWu6j20MpW
cu963j0A6WObcsM7Pv5R0x.DO3uksX2+6cBYo4p4EaZLWb28zoNKl16bFyY3
M0cIc2yPUeww0sKfhpcMkMsUP6pwiWE98pFORU4v86s81ds+4seBx.yPYfLU
xPSSOWKx.0PY.OQxPU0gqIYfXnLflHYHhxuljArgxPzzHCwbx0jJfLSEPwSi
JHkQcUAtmqBQFpBxoQEDwhqn5BwFJBhIRDPzth.xuEAogh.eZDANAcEIBBCE
A1zHBLp7JRDLruynIpuyTN6JRDLrmynIpmyDI9JRDLreynIpey333qHQvvdM
ilntqgQ7qHQvv9LilpTWPHWQhfgcYFOQgnxht70fZqMbLu2vQ4lHPbSynVgY
697iSM0CSSuyddwyOqZD9vOYdA+w4EQrGyKzONufhjdLwvMfXZGwa+jXDFPL
brGSLwFPLwHOlXHFby21PW8UlgX.yPY9LyXPCSXA0mYFlALSrOGKCwf1rIXe
NXFhAMZSZmFedJyHMfYj9b3LDChmgh743YnQFvLTetW1TCR+P6Xl3qLiAw.S
i843YnFDCLC6y8zlZPLvsCCruxLFDCLS3ywyPMHFXdjO2WapAw.2NyV7Ulwf
Xf4buNdFChAlK849ZyLHF31IqmuxLFDCrf5ywyvLYP3D9besYDSFdReNdFlA
w.Kwd8cfMHFXoWOPbLChAtcMU3qLiAw.Gi7ZeFChAN1qGINlAw.2tNw70oHh
Aw.GG6y9LbjISqHudn33XSnFpOmgFNwDpQ30dMlLO8Pd8nwwYlPMdcWD3lLI
FQbu1qwjowHxqGPNtAgBu6oUhuRMlLGOwTe1qQDYB030iImvjngwdcGEDlDM
LA60dMlDML4ReX4Z.vnbyIBGF8tiXon9AQXSa3v3lHcM7NOG71td2F6YIWM7
1d.iPIqK1rZ9NInc4cEbDRWnVWllu+wC3WOr.5N9HeJcwhidR7Uy6oKVVTou
sfL3WgKlZierV3G4b3mpE9wNG94PwOB4j9OBsvu64+DqE9cO+GB3JvaWK6Nn
Cz1UbiFFf64AQnZY.NnKDCrAfcSWHtVFfC5BIzx.bPWHIXCf3ltPwZY.NXbP
QZY.tmKDEbjzHpS5BQwZY.NnKDQKCvAcgf2RLyMcgXZY.NnKDWKCvAcgf2Rr
a1edpTKCvAcgh0x.bOWHF7VhENoKDCokA3dtPLrVFfC5BAukXoa5BQ0x.bPW
HlVFfC5BAuk3X2zERnkA3ftPRsL.GzEBbKwX2L0h7HsL.2yEhizx.bvQ2.9v
K4lCuAmnkA3ftPTsL.GzEBbKwX2L6zbtVFfC5BIzx.bPWHvsDicyrSyi0x.b
OWHQjVFf64BIf2RralcZAVKCvAcgHZY.tmKDFb6.B2zEBgtzMfnKcC.eoa.j
KcCfdoa.rKcC3h+1nhKcCPdoa.wW3F.9RugL7kdnD3K8VhwW5sDisYKw61wV
ao4uBWm7hZw8U+dp4k2mTVtJc1lxl0YPWao9ERyCIMlxg2u8KTOjrIq79g26
XuscBeLqXVRVM2oVs+0bS3fW1idK3L3wL3OxnuBc1wIsaaE1FKsyxJo0zO06
snCuyhpekEE7KUB49808Qf79BGAsCuxSFbE4PqWMssqAvlkVKNpypNYjUbxn
zw4jE1juLY9uEjd5+MDCwFlgh9.LT6SfcBo4cUFiUuJcjiSQH9txGb0Jc6m0
lC36sZUvOUjsvkDL44SvnwjFAq48erD+WB1ItOiZoJeQPVQwxgjEL67cqFdb
yCIDB9vK4rScqFznpxIYpONI8rZ85jGUukkdnh6C9AzfDjPOBBeBBR19rQt8
0zTq6qCQP8W7i8ngC0eA6OvDM1YyyizAVvii0zyaWnimypDqp9IUA28uKJU2
8RUEu6Vms3+nxJlmV9s6dM3t+kJ+wxm1tqMUG1Omj+n5tuEb2rx7+YkaxcuN
H8De9t8Fp4IY.t4ABWLl9dtIie2ss234M++hpYCRzYmXaanGGQ+q1MFWwVT0
xwbU5Kp.YTTzfRC576y27.CRJmn6LNHY0bB8Wtzsj2w8VaGE91dosMUKjC+z
iLhM8SJ4.8N63dlw40NoDT8cREQr8eqsqYCp4fgsneN5FA1jHcgMUxqAJNtt
JFFs+amOXidOXK0E0rl2NqsnlEgOunF2e5uMVu3E5B6yB3NViGAbLq.NAeZb
SIcbLmB2TND2T6Po3XHX6XhG.k1VqoppTMWh1+syBrYf8RQe5TpDL1v1o5MB
D3He5fiAFaTqHpvvFyNhJFD33VQTggMgUDUXXSZGQk.BbwVQTggMTjUTUffC
YGYkBCcXqnq.AGwJ5JPvQsitxfgNlUzUffiaEcEH3D1QW4vPmzJ5JPvEaEcE
F3vVpetBXnCYEcEH3vVQWABNhczUILzQshtBDbLqnq.AG2N5ZLLzIrhtBDbR
qnq.AWrkRHArzkPhrSJI.hN6joInnyV4ZBXxlrT1l.hNKkuIfnyRYbBAK0ID
6jyInnyNYcBJ5rTdmPvxeBwNYdBH5n1I0SPQmkx8DBVJTn1I4SPQmcx9DTzY
ozOgfkEEpcx+DTzYmDPAEce9MWH.MVmXsmkCHd8byfxalkCMyd15uc9FX4IX
r5OOUWPf3zX6Mj7u6cZvZO+PjzlYMDWtcijI1+syCrmH+z1I6DUTOob14mJh
NSS8IrXZfcK+NUUuf4ASL1AdaAUa9+.28GYG
-----------end_max5_patcher-----------
</code></pre>
mbp 2.66, osx 10.6.8, 8GB ram.

technog0d
Posts: 265
Joined: Mon May 26, 2008 1:14 pm
Location: Philly
Contact:

Re: I haven't left my basement all day...

Post by technog0d » Tue Sep 22, 2009 11:27 am

Thanks for the optimized patch, Machinate... I have been thinking about it... And, I think i have a WAYYYYYY more optimized way of doing it. I will create the patch today that will solve many issues. I think i will use the, "funnel" command which will take my 16 step output from route and output two parameters, the index and the value. This way I will note have to do everything 16 times. Additionally, I will output the value of the funnel into a, "coll" in so that i can save it to send back to the Lemur when a pattern is saved.

Machinate, You were absolutely right about sending more data from the Lemur. As I said... I was in the basement to long and wasn't thinking straight. :-)
Websites:
Max For Live Community site:
http://www.max4live.info
http://www.noisemakers.info

Controllers: Lemur, Ohm 64, Monome, APC40, Launchpad
Daw: Live 8 Suite
Audio Interfaces: Apogee Ensemble & Duet
Monitors: JBL LSR 4300

Machinate
Posts: 11648
Joined: Thu Jun 24, 2004 2:15 pm
Location: Denmark

Re: I haven't left my basement all day...

Post by Machinate » Tue Sep 22, 2009 11:58 am

technog0d wrote:Thanks for the optimized patch, Machinate... I have been thinking about it... And, I think i have a WAYYYYYY more optimized way of doing it. I will create the patch today that will solve many issues. I think i will use the, "funnel" command which will take my 16 step output from route and output two parameters, the index and the value. This way I will note have to do everything 16 times. Additionally, I will output the value of the funnel into a, "coll" in so that i can save it to send back to the Lemur when a pattern is saved.

Machinate, You were absolutely right about sending more data from the Lemur. As I said... I was in the basement to long and wasn't thinking straight. :-)
hey, that's the point of these forums, isn't it? Keep posting what you come up with! :-)
mbp 2.66, osx 10.6.8, 8GB ram.

Post Reply