Welcome to %s forums

BrainModular Users Forum

Login Register

Matrix Pack official thread

Let's talk about free additional packs
Post Reply
martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 06 Mar 2010, 12:09

Welcome in the matrix :D

The purpose of this thread it to centralize feedbacks, ideas, support and questions about the Matrix Pack.

Have fun :)

I'll keep this first post updated with latest news about the Matrix Pack.
_______________________________
Latest version : Matrix Pack v1.01 (fixed bugs in examples patches)

Great user contributed add-ons :
- Matrix Keyboard by 23fx23.
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 06 Mar 2010, 22:56

here we o yeah...
new addon: matri keyboard;)

gurulogic
Member
Posts: 1019
Contact:

Unread post by gurulogic » 07 Mar 2010, 11:39

So much to wrap my head around. I've just finally figured out arrays and now this! I think this is going to change my world, I just haven't quite figured out how yet...?
Just one quick question for now, what is the best approach to giving each cell a unique integer output value? I messed around with the Set Array Value module, but this approach seems tedious.

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 07 Mar 2010, 12:21

So much to wrap my head around. I've just finally figured out arrays and now this! I think this is going to change my world, I just haven't quite figured out how yet...?
Hehe, i'm agree that it's the beginning of a new world. I just tried to make it the simplest for a first shot.
Lots of things will 'evolve/be added' in the future, based on feedbacks and use.

In fact, it's just a specialized array, who store cells value (actually a float) row after row, it's very similar to a bitmap buffer.
Just one quick question for now, what is the best approach to giving each cell a unique integer output value? I messed around with the Set Array Value module, but this approach seems tedious.
What do you mean by giving each cell a unique integer output value ? what do you want to achieve ?

You can use an 'Display Array' module, with an array size of cols*rows.
But the best way for now is by script, as you can loop through columns and rows.

For now, the cells color are hard coded to map a 0->1 range on the value (from the ON/OFF params of the 'edit layout'), but nothing prevent you to store any float value in it, you'll just have strange color.
Martin FLEURENT - Usine Developer - SDK maintainer

ethnix73
Member
Posts: 604
Location: France, Caen
Contact:

Unread post by ethnix73 » 07 Mar 2010, 14:32

yes, it's really the beginning of a new world!!!

I was looking for a way to change the synchro of your matrix fall seq example...Was about to ask, and find a way. Just the time to understand a littlle more your patch. Thanks for this so great addon!
Seb.Dub

joffo78
Member
Posts: 1033
Contact:

Unread post by joffo78 » 09 Mar 2010, 11:58

Hello
This pack seems to be very usefull for me because i'm trying to make an aks synth emulation !
so something desapointed me.
why didn't you make a true matrix with routing between input and output.
If i understand how does it work inlet are only to trig each row.
what i'd like is put for example an oscillator (thank to nay seven pack) on one inlet and filter or envelops to outlet
so i've just to on one row to make the connection.
instead of that i have to make each connection between each modules with one "freeze event flow" which the on/off button pluged
in the outlet of the matrix.
It's very fastidious.
do you know any solution ?
Regards
JF
PS sorry for my english.

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 09 Mar 2010, 14:04

Hi joffo78,
This pack seems to be very usefull for me because i'm trying to make an aks synth emulation !
so something desapointed me.
why didn't you make a true matrix with routing between input and output.
From what i understand, you want to use the matrix to make this part :
Image
The concept seems very similar to the mixer example patch, have you studied how it work ?

Can you be more precise about the 'true matrix routing'? what is the difference with the mixer example patch, for example.
If i understand how does it work inlet are only to trig each row.
The basic way to populate the matrix is with the mouse to trig or adjust the switch/fader value. The matrix is is literally an array of switch or fader, nothing else.
The 'cells in' inlet is here to populate the matrix (automation, reload of preset...).
There is also optional individual cells inlet (up to 128) but you'll loose a part of the modularity provided by array.
what i'd like is put for example an oscillator (thank to nay seven pack) on one inlet and filter or envelops to outlet
so i've just to on one row to make the connection.
instead of that i have to make each connection between each modules with one "freeze event flow" which the on/off button pluged
in the outlet of the matrix.
The thing to understand is, to be as generic as possible, the matrix isn't made to deal directly with the signal (oscillator, audio...) but just act as a command layer. The matrix module is just a way to display an array of switch/fader and know nothing about the use of them. It's up to you to decide what each cells value mean in your context.

You'll surely have to add some patch or script to specialize his behavior.
It's very fastidious.
do you know any solution ?
Well, in your case, you have to deal with a 16*16 matrix, so an array of 256 switch, it's not a trivial task.

I don't have some magic solution, sorry.
But if you start from the mixer example patch and adapt it to suit your needs, we'll surely found some way to make the patching easier/less tedious


Sorry, if i can't help you much for now, but i need more precise infos.
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 09 Mar 2010, 14:36

for sure it seems not trivial for a 16x16, but a 4x4 or 8x8 seems more decent?
in this 16x16case wouldn't it be possible to use dynamic wiring using IML? if a cell matrix is swiched on it creates alink between source and destination, if swiched off delete the link? Im note sure however how to interact with text in iml, but should be doable no?might be a bit long to setup once, but once we got a template that works...mmm a script that prepares iml msg to send relating to some captions/int var input?
just a thought.

edit: even without script, it seems doable to populate a list box for all create wire message (by adding a comma on a list box item to create lines of the message),the ouput text is considered as comma text, and can feed the lines input of iml., and another for all delete message.
lot of text to input once, but once it's done..

joffo78
Member
Posts: 1033
Contact:

Unread post by joffo78 » 09 Mar 2010, 21:36

Thank you a lot for your answers.
I'm afraid to but to much beginner to start this project.
I saw the mixer example and it seems to be the way that i must follow.
But i'm not be able to undersand how does it work. It's too hard for me.
there are too much sub patch and i'm loosing !
Could you help me to understand how does it work ?

joffo78
Member
Posts: 1033
Contact:

Unread post by joffo78 » 09 Mar 2010, 21:55

after looking the mixer matrix i'm beginning to understand.
One thing stay difficult is the sub patch named MX get col

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 09 Mar 2010, 23:09

Mx get col is used to extract a column in the matrix. in fact matrix is an array(group) of values, where cells are indexed from top left to bottom right. ie for a 4x4 matrix:
00-01-02-03
04-05-06-07
08-09-10-11
12-13-14-15

as we want to extract first column, we need to get the values 00-04-08-12
the expand/compress array is used here in compress mode, if the array is 16 lengh, compressing by 4(nb of col) (mean expanding of 1/4=0.25) will make a output array of lengh 4, only each value on 4 of the master 16 staying on output, so we will get those 00-04-08-12.
by using the shift before expanding, ie shift -1, we will get 01-05-09-13 (2nd column), ect...
hope it helps.

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 09 Mar 2010, 23:51

As you see joffo78, what you try to achieve is not a trivial task, but it's totally doable, just have to go step by step ;)

At first, try to cut the whole thing in some smaller and simpler task.
For now, you don't have to understand what is happening inside all these utilities patch (MX_xxx), just concentrate yourself on what services they provide and how you can use them.

Like 23fx23 said, the MX_get_col patch deliver you an array with all the values of a column. From that, each array values corresponds to the value of the respective row for this column, mean each cell value of the column.

So the values of the matrix are extracted in two steps :
-firstly, we separate each column, it's the job of the MX_get_col patch
-secondly, for each column we use the value representing each row in this column to modulate two signals (one oscillator and on filter, for example).

Try to recreate a simple 2*2 routing/mixer matrix, with 2 oscillators (rows) and two filters (cols) it's enough to understand the principle.
When you'll have finish this simple prototype, you'll just have to extend the same routing to a bigger matrix.

Go, go, go....you'll success, we'll help you the best we can :)
Martin FLEURENT - Usine Developer - SDK maintainer

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 18 Mar 2010, 17:23

Hello,

Just to let you know, i splitted the 'Evolution and future releases' section off the wiki page -> link

-What to expect in the next release :
What is planned and what i'm working on.

-More general TODO list :
Wanted evolutions but not yet started or planned.
This one just wait for you to grow ;)
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 18 Mar 2010, 19:45

martignasse wrote:individual Cells colors/captions ,in fact, it’s already implemented
what really??omg 8)

it's true there are so many possibilities, worth checking what could be a good simple/modular ratio.
ideally on matrix i would love to have two modes, one where you use it with build in , one where it would be like it was just agrid of "panels" with colors and captions in, in fact the "lock" mode, but that would still output infos, to 'make the patch outside".

my suggz/thought about colors:

1)color array in , in "absolute"would be most simple/modular, to allow dealing with ie some osc received colors or ext data.
2) array in could display the off's of 'color in' darker, and on lighter. seems easy to use.(maybe then a contrast fader? so that if set on 0, matrix dont' affect colors when changing on/off so we can deal with 'outside' color, if 0.5, off are displaying various dark colors we feeded in, on are lighter.
3)in buid in mode: HSLset color with Y, to set a cell color we press "set color", then the cell and while we move Y we can quick set it's hue,
either same for S, L, or maybe S and L could stay "global" for all cells to make it simpler, just need to set different colors generally.

otherwise on my square i founded feed 3 HSL arrays is very modular and most usefull, as you can control all hue, lum and sat quickly.
can make a sequencer and change all hue, make a lighted bar pass easy, or set individual, choose that if a swhich goes of it's grey or colored, ect..
but it seems a complex add, to matrix, but that would be my graal module;)
maybe just color in and im gonna try to script those HSL arrays, still a build in would be very handy;);),
in any case im so excited that matrix will be able to deal with color and captions, so awaiting!!!

captions suggs:
1) absolute comma in?
2) n inputs (chosen to be drived to col or row) of comma in.
3) build in: press edit text' clic a cell, type text, leave edit text, caption memorized. easy!

ethnix73
Member
Posts: 604
Location: France, Caen
Contact:

Unread post by ethnix73 » 19 Mar 2010, 17:34

Concerning caption, they could be exposed as in button, switch modules. I had just this thought after looking as the mondocombo addon (http://www.sensomusic.com/forums/viewtopic.php?id=2041). It could be done with the matrix module, and would be light on CPU...Just a little comment.
Seb.Dub

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 19 Mar 2010, 21:16

thanks for feedback and ideas, guys :)

@23fx23 :
wow, i'll have to re read many time to understand all the direction you develop...but it's very precious feedback and practical infos.
what really??omg 8)
When i say 'already implemented', it's just that each cells have already a structure to store two color infos, at code level.
Actually, one color is hard coded for cell border and the other is populated by mapping respective cell values to a gradient from OFF color to ON color.
What is missing is a dynamic access to individual cells parameters like BackColor, CaptionColor, FontColor, Caption.

about the two mode idea :
ideally on matrix i would love to have two modes, one where you use it with build in , one where it would be like it was just agrid of "panels" with colors and captions in, in fact the "lock" mode, but that would still output infos, to 'make the patch outside".
what do you mean by 'build in' ?
the lock mode just cut the mouse interaction, but not data's update and cells value manipulation through the 'cell in' array
1)color array in , in "absolute"would be most simple/modular, to allow dealing with ie some osc received colors or ext data.
yes, i think it's the preferred approach, in fact it should be the same for other attributes we want to have access to.
1 array for colors
1 array for captions
....
but ouch, it's rapidly a big huge mess of datas :o we have to found a very clever solution :rolleyes:
2) array in could display the off's of 'color in' darker, and on lighter. seems easy to use.(maybe then a contrast fader? so that if set on 0, matrix dont' affect colors when changing on/off so we can deal with 'outside' color, if 0.5, off are displaying various dark colors we feeded in, on are lighter.
The fact is : cells act has 'switch' (mode toggle/draw) or 'fader' (mode fade) and we need to define color behavior for these two states.
It's a rule in Usine that the 0->1 gap mean OFF/ON, but for fader, limits should be adaptable...
And don't forget we can inject a matrix bitmap as background of another matrix....the upcoming 'cells transparent if OFF' do a good job to mix two matrix content.

bref, a complex problem
3)in buid in mode: HSLset color with Y, to set a cell color we press "set color", then the cell and while we move Y we can quick set it's hue,
either same for S, L, or maybe S and L could stay "global" for all cells to make it simpler, just need to set different colors generally.
ok, i understand a little your 'build in' mode concept, a way to 'manually' setup cells default attributes, that is ? and 'edit mode' and a 'run mode' like in 'vintage' hardware ?
I'm not a fan of this approach, but i understand the ease of use it provide ;)
the risk of separated mode is to end up with a super cool feature in edit mode we absolutely want in run mode...
but the idea to use the matrix interface itself to setup default params is interesting :)
otherwise on my square i founded feed 3 HSL arrays is very modular and most usefull, as you can control all hue, lum and sat quickly.
can make a sequencer and change all hue, make a lighted bar pass easy, or set individual, choose that if a swhich goes of it's grey or colored, ect..
but it seems a complex add, to matrix, but that would be my graal module;)
maybe just color in and im gonna try to script those HSL arrays, still a build in would be very handy;)wink,
in any case im so excited that matrix will be able to deal with color and captions, so awaiting!!!
So, when we'll have color modules arrays friendly, you'll can reproduce this behavior with just a 'color in' array !
something like this
Image
so, color array seems the way to go
captions suggs:
1) absolute comma in?
2) n inputs (chosen to be drived to col or row) of comma in.
3) build in: press edit text' clic a cell, type text, leave edit text, caption memorized. easy!
1) yep, a cell caption input, but remember we also have the cell value who can be displayed too...not so simple
2)seems impracticable...
3)easy for the user....not for the coder:lol: super luxe feature, but hard to implement.

@ethnix73:
Concerning caption, they could be exposed as in button, switch modules. I had just this thought after looking as the mondocombo addon (http://www.sensomusic.com/forums/viewtopic.php?id=2041). It could be done with the matrix module, and would be light on CPU...Just a little comment.
yep, that's exactly the idea :)


We begin to have solution for each params type, but we have to found the good list of exposed params.
Imagine, if we expose the round size attribute, could make some good fx :lol:

to resume :
-cells val -> the actual cells in array input, to store an custom value.
-cells col on -> array input, to choose the ON color for each cells.
-cells col off -> array input, to choose the OFF color for each cells.
-cells cap -> comma list input, to choose the caption to each cells, if empty for a cell, no caption displayed

-still miss the infos to map ON/OFF colors to the value, i wanted to add an OFF value and ON value like in the new switch, but if for each cells, it's to heavy and maybe not necessary...
-plus, i wanted to introduce the concept of selected col and row, with direct access to the content ( two array out), what do you think ?

...toooo looooong post....;)
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 20 Mar 2010, 01:27

Hey martignasse!
yup sorry, i also thought what i was trying to translate was unreadable...

by buid in i meant the matrix have an action on value/color, ie in fader mode "internally",stand-alone, vs "outside" is if we set in example some values in an array, ie using a fader, mouse module ect, and feed values back in matrix.
it at start appears to me that the "lock" mode was cool for that, matrix, not interfering on colors(input values). but as we coudn't get cliqued index infos, i couldn't set my external arrays values relating to cliqued cells. I so tried, don't really beiliving on it to set the matrix in "toggle" mode, but then matrix acts on values, as espected wich interfers with "outside" data, not wanted in that case
....
but the cool unspected thing is that seems to work ok on "fader" mode!!! even if i go up with mouse, i can patch differently and input a reversed value, matrix display "outside" input value, over "internal, build in", and they don't seem to fight together in crasy loops...
great....(don't bother too much to understand that so complex thing im trying to explain, i got my
it just work ok, forget what i said ;)

woa yes the HSL picture is just exactly what i dream about, (yesseems i may get it!!!!!!? :rolleyes:
with this for sure any kind of setup can be done in a fast, easy and modular way, no need to complexify the matrix.
it's a perfect combo with matrix, not to say ultimate for me( I just patched 64x cells independant, to 64xH,S,L, then re 64xRVB arrays and re64xrvb, so about 1024 wires, and cpu is ok but a bit high, with matrix this could be done with two modules, two wire: matrix and a HSL array in!!!!)
with this imo a simple color in on matrix would do all jobs, ie we fill an array with some red hue value, going to HSL H in.
we pick the values array out of matrix, we drive it to L , we ve just redone the "fade mode".
but then we can easy make what we want: instead of lum, decide the fade mode interracts on sat, or on hue.
ultra modular, low number of wires, just one absolute array in.
anyway pesonnally i would be ultra happy, with what you present:
_array in cells values
_comma in for caption
_array in cells color on, color off : (but as said above, just one array in should be enough in most case no?, we can then deal outside unlimited nb of cases with color modules, imo simpler to setup one array than two, but i can imagine you need two for internall stuff.
its just that one should result half Cpu, as exemple i imagine I will make some "tracks"(column), with some clips "in", cells on.
then if ie we want to highlight a selected track, we will need then to make the extra lum operations on both arrays, this could results in 2x more cpu and could apply for many operations. don't know if this would not match your programming setup,

edit: forget that again:P, just thought even with 2 array in, we can feed the same to both, giving the result im after, so no worries,
one or two is anyway great... but might simplify you the task, who knows, maybe in fact 2 would be more modular, maybe just higher cpu (cause we have to think dealing with big arrays can quickly get high in cpu.....

, also that transparent/bitmap in option is reaaly exiting, and might do many possibilities.
colors and caption on matrix will make it really, really, really a huge module i will use a lot :),
it will also just decrease my patching time about 2000 percent. even if all is array, i don't like singles anymore ;)

relating button value feature,we could deal the on off values outside with a get/set array so personally i wouldn't bother on that.

for me we could stay "relatively simple", be a control unit, complex modular things can then be done "outside" the matrix to refeedback it. that's the general modular power of usine.
but build in selected row/col for sure is a cool idea, as it's probably an often/usefull do task.
in itself the fact you could provide colors and caption is just awesome for me, i didn't wanted to request captions cause felt it was impossible as C,'not really usine module", im just so well surprised, this module will be just insanely powerfull...

edit: sorry far tooo long post too, but matrix is sooo exciting , it's a really great job you did/sure you'll do on that one martin, tons of thanks.;)
(to be honest i had let it a bit left for now cause needed some colors and caption on a 64liveosc setup , but a huge new era seems to come, wait to rebuild it matrix powered.. (what? change size of the grid, yeaah easy ;) )
cheers mate!

edit : just a though, it could be nice to somehow have a control over indexes, on my square i wanted sometimes to have a "track" setup, or sometimes lines, this came far more handy to control colors, higlight a track, or a scenes. we can do this with offsted geter/seters, but seems a cpu conduming solution, hard to
achieve with big arrays.
i don't think it need to be buid in in matrix, cause i can imagine it can be complex, and should more be dealed outside.. how we could convert inputs easealy? in my case i just rewired, but on big matrix this could become a nightmare... any ideas?
00-04-08-12 to 01-02-03-04
01-05-09-13 05-06-07-08
02-06-10-14 09-10-11-12
03-07-11-15 13-14-15-16
mmm well i feel this can be my first script look up, wonder if would be lower cpu than rewire, anyway would be more modular with col/row inputs..

ps: new add on, matrix XYZ setup;)

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 21 Mar 2010, 20:08

hey martin, once more a little "futur request" hehe, i was impressed by the way lemur can "scale" their matrix , ie changing cells height, who knows....

http://www.jazzmutant.com/mu.php

now i stop asking and let you work hehe..

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 21 Mar 2010, 20:44

I think it will do the trick...;)
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 21 Mar 2010, 21:13

wow ...ifeel like a little child waiting for christmas :) can't wait next matrix release!!

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 21 Mar 2010, 23:00

was experimenting and trying to make an horizontal seq ( need your lessons martin..;) )
and I've made this little hack on the fall seq example
the 5 first presets...
http://www.sensomusic.com/forums/upload ... _nay_2.pat

you just need to ad a VSTI who accept correctly the velocity

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 22 Mar 2010, 20:05

wow nay :cool:

totally fractal :P

with preset 1 and Mr Tramp2 : ear
what a cool little bird in the spring !

edit : and some beautiful color ;)
Martin FLEURENT - Usine Developer - SDK maintainer

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 22 Mar 2010, 22:05

glad you like it ;)
but what about horizontal way..?

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 22 Mar 2010, 22:48

something like this ?

matrix_scroll_horiz_example.pat

very basic but you got the idea :)

if you make a more elaborated but simple example, i'll include it in the next pack iteration with pleasure ;)
Martin FLEURENT - Usine Developer - SDK maintainer

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 22 Mar 2010, 23:17

great !
thanks a lot mister Neo !!
have to study that closely !

VjRobotX
Member
Posts: 18
Contact:

Unread post by VjRobotX » 26 Mar 2010, 15:32

Well I finally Matrix in full force and I understand a bit about how his works, but my problem is
how and where they deposited the sounds
事在人为 shì zài rén wéi, La réussite dépend des efforts de l'homme

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 26 Mar 2010, 16:00

in the example named matrix_fall_seq_example , you can find a midi out module in the patch
suppress it and just link in place a vsti , or a sampler ( in midi in only mode )

Clearscreen
Member
Posts: 482
Location: Australia
Contact:

Unread post by Clearscreen » 29 Mar 2010, 03:33

So much to learn about this module! I've hacked together a solution using patching to make the matrix 'mono' (ie only having a single cell lit at a time - if i press a new cell it turns all other offs) but I thought this would be better done in the module (or possibly in a script with a feedback loop to the array input?). Any thoughts on this guys?

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 29 Mar 2010, 05:27

how do you do bt patch?i do like this:
Image
(soon matrix cells can be transparent)
but there are other techniques using setarray, or script, true that if not to hard to implement, might be a good new mode for futur "matrix listboxes" ;)

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 29 Mar 2010, 05:55

Image
@martin
between, related to that, i find a bit strange that on above patch, if i clic some cells, the step array set on only clicqued cell, as you see ie here (like i want,cool), one bar is up. this is feedback to matrix but matrix don't update correctly, no cellz light up. (note i forgot to relink the wire out of array to matrix, i just deleted to debug, but it there, imagine) iguess this is a pb of "modes".
let's say i dlike for example to build that "only one feature", using some set array (set all 0, getindex clic,set to 1, feedback to matrix). generally with all what i try this is always tricky and matrix generally not updates correctly, imo because of "build in modes" i suppose, that's why i previously spoke about a "lock mode with info", so that we could get matrix indexs, but matrix would not write/change colors internally at all, we control them in an absolute way via outside array.
I think in my everyday uses this would be really more handy and we could extend matrix power easely, less asking for you to pgm it ;)

dont' know if see what i mean, i would like to have matrix like it was N cellz with data/color/caption input and mouse down,indexes output, but not having any action on data or color just like if it was some usine img/panels.(build in modes are nice for lot of cases, but an absolute control on input is full modular to extend) we could make nice thingz.
please please an"outside"mode.

Clearscreen
Member
Posts: 482
Location: Australia
Contact:

Unread post by Clearscreen » 30 Mar 2010, 02:25

23fx23 wrote:how do you do bt patch?
Thanks for sharing - that's a much different way of looking at at than my solution... very clever! I did it the hard way with logic and patching for each cell. The difference is mine is fully mono, meaning I can sweep a finger across the cells and it'll track beautifully with ONLY a single cell lighting. In yours if I press and sweep across the cells several cells light up and get carried over to the storage matrix, then reimported to the initial matrix - not ideal, but there might be a way around it?

Also, for some reason the bitmap out of the second matrix isn't feeding in to the first matrix for me? Not sure why that is? I haven't setup v5.13 usine yet, but I wouldn't have thought that'd be the problem?

how would you use setarray for this?

Anyway, here's a link to my complicated frankenstein solution:
Matrix Selector v1 patch

Clearscreen
Member
Posts: 482
Location: Australia
Contact:

Unread post by Clearscreen » 30 Mar 2010, 03:17

Ok, I think I've solved my problems
:
- the bitmap thing was because I had the squares in the front matrix set too large to show the squares underneath... I'm not really awake today...

- I think I've solved the sweeping issue by changing the how the '0 to 1' module is used, but the patch tends to freak out and hang if I sweep too fast for too long, not sure why that is. Also, it uses more cpu than my painstakingly put together v1 patch. The advantage here though is that it can be expanded to more cells without too much difficulty....

Image

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 30 Mar 2010, 13:10

yup, and this is one equivalent should work with unlimited nb of cellz, a bit less wiring:
check variation of mean array, if >0, acts like if a cell was swiched from 0to1.
Image

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 30 Mar 2010, 13:18

wow, some interesting discussions here :)

i'll try to answer quickly... but i have to study some internal stuff to see what can be included inside the module.
Clearscreen wrote:So much to learn about this module! I've hacked together a solution using patching to make the matrix 'mono' (ie only having a single cell lit at a time - if i press a new cell it turns all other offs) but I thought this would be better done in the module (or possibly in a script with a feedback loop to the array input?). Any thoughts on this guys?
It should be possible to add an exclusive mode...maybe in the 'mouse mode' list or in 'edit layout' options.
There is so so much things to add 'inside' the module that we have to see if it's better inside the module, or by script in a feedback loop...
23fx23 wrote:between, related to that, i find a bit strange that on above patch, if i clic some cells, the step array set on only clicqued cell, as you see ie here (like i want,cool), one bar is up. this is feedback to matrix but matrix don't update correctly, no cellz light up. (note i forgot to relink the wire out of array to matrix, i just deleted to debug, but it there, imagine) iguess this is a pb of "modes".
well, i agree that data's manipulation can be very tricky, but it's maybe just a matter of making a solid collection of utils scripts or patch for common task.

for an exclusive mode by patch, try this ;)
Image
and it's pretty easy to make a script version :) just translate the math involved into a script !
dont' know if see what i mean, i would like to have matrix like it was N cellz with data/color/caption input and mouse down,indexes output, but not having any action on data or color just like if it was some usine img/panels.(build in modes are nice for lot of cases, but an absolute control on input is full modular to extend) we could make nice thingz.
please please an"outside"mode.
hehe, paradoxical...
you are describing a completely and only visual component, but we are discussing about including a max of data processing into the module.
That's the real question about future evolution...find good balance between these two mode.

@Clearscreen
here is the same patch with draw mode compatibility
Image
Martin FLEURENT - Usine Developer - SDK maintainer

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 30 Mar 2010, 13:26

23fx23 wrote:yup, and this is one equivalent should work with unlimited nb of cellz, a bit less wiring:
check variation of mean array, if >0, acts like if a cell was swiched from 0to1.
http://www.sensomusic.com/forums/upload ... no%20B.JPG
and a very clever one here :cool:

at least, we have to explore all these patch possibility before 'build in' a behavior into the module.

what should go in utilities patch/script, and what should go inside the module....
hard question but i want to limit the complexity of the module by adding only most complex behavior, the rest should go in utils.

anyway, good job guys
you help me a lot by exploring all these area
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 30 Mar 2010, 13:36

martignasse wrote:you are describing a completely and only visual component, but we are discussing about including a max of data processing into the module.
i see what ou mean, that need reflexion.

note what i speak about would not only be visual, it would still output mouse down and indexes, then we deal the "process" outside. i really feel modular would be higly extended by script or patching.
im not keen on pgm, for me it wouldn't need hard refinding, that would be a clone of fade mode, with matrix locked to not not interracting on values/colors, kind of swich on matrix seting the values or not, if not letting the user control ie matrix colors feeding both on and off colors, and independantly values, well probably easier to say than to do ;)

i got my hsl array scripts ready btw ;)

edit: yup i think lot of cases can be easy done "external", that's why i hammer that much on an outside mode, to not bother you later
with any build in, we will then be able to script or patch any behaviour.

Clearscreen
Member
Posts: 482
Location: Australia
Contact:

Unread post by Clearscreen » 31 Mar 2010, 02:03

Thanks for the help guys - these solutions are great!! Learning a lot going through this stuff - I'll try to do my first ever script using Martin's last maths solution later today I think.

i have to say that's one thing I love about Usine, there's always a solution - and usually more than one :D

bsork
Site Admin
Posts: 1334
Location: Asker, Norway
Contact:

Unread post by bsork » 01 Apr 2010, 10:59

If anyone's interested, I've created a script extends the single/exclusive cell ideas above. To reduce CPU when used on large matrices, I don't reset the whole matrix, column, and/or row, but instead keep track of the previous cells.

[c]
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// To be used with the Matrix user module to turn other cells as selected by the mode parameter:
// - cell : only one cell on in the whole matrix
// - column: only one cell on per column
// - row: only one cell on per row
// - col/row: mixture of "column" and "row"
//
// NOTE:
// - Changing mode clears the matrix.
// - With the matrix' mouse mode = "fade" the clearing of other cell(s) takes place when the
// mouse button is released. (Maybe something to work on - both behaviours could be useful?)
// - With the matrix' mouse mode = "draw", this script doesn't work very well, but "column"
// and "row" might be useful despite the slightly weird behaviour.
//
// bSork, March 2010
/////////////////////////////////////////////////////////////////////////////////////////////////

VAR pArrIn, pArrOut, pMode, pNumRows, pNumCols, pLastCol, pLastRow, pMouseDown : tParameter;
VAR mode, numCols, numRows, lastCol, lastRow, lastIn : Integer;
VAR cols : ARRAY OF Integer;
VAR rows : ARRAY OF Integer;
VAR first, clicked : Boolean;

PROCEDURE Init;
BEGIN
pArrIn := CreateParam('cells in', ptArray); SetIsOutput(pArrIn, FALSE);
pArrOut := CreateParam('cells out', ptArray); SetIsInput(pArrOut, FALSE);

pMode := CreateParam('mode', ptListBox); SetIsOutput(pMode, FALSE);
SetListBoxString(pMode, '"cell","column","row","col/row"');

pNumCols := CreateParam('num of cols', ptDataFader); SetIsOutput(pNumCols, FALSE);
SetFormat(pNumCols, '%.0f'); SetMin(pNumCols, 1); SetMax(pNumCols, 128);

pNumRows := CreateParam('num of rows', ptDataFader); SetIsOutput(pNumRows, FALSE);
SetFormat(pNumRows, '%.0f'); SetMin(pNumRows, 1); SetMax(pNumRows, 128);

pLastCol := CreateParam('last click col', ptDataFader); SetIsOutput(pLastCol, FALSE);
SetFormat(pLastCol, '%.0f'); SetMin(pLastCol, -1); SetMax(pLastCol, 127);

pLastRow := CreateParam('last click row', ptDataFader); SetIsOutput(pLastRow, FALSE);
SetFormat(pLastRow, '%.0f'); SetMin(pLastRow, -1); SetMax(pLastRow, 127);

pMouseDown := CreateParam('mouse down', ptSwitch); SetIsOutput(pMouseDown, FALSE);

first := TRUE;
clicked := FALSE;
END; // Init

///////////////////////////////////////////////////////////////////////////////////////

PROCEDURE NewMode;
VAR i : Integer;
BEGIN
mode := round(GetValue(pMode));
FOR i := 0 TO (numCols - 1) DO cols := -1;
FOR i := 0 TO (numRows - 1) DO rows := -1;
lastIn := -1;
IF (NOT first) THEN
FOR i := 0 TO (GetLength(pArrOut) - 1) DO
SetDataArrayValue(pArrOut, i, 0.0);
END; // NewMode

///////////////////////////////////////////////////////////////////////////////////////


PROCEDURE DoUpdate;
VAR newValue : Single;
VAR lastClicked : Integer;
BEGIN
IF (lastCol >= 0) THEN BEGIN // clicking within the matrix module but not in a cell returns -1/-1
lastClicked := lastRow * numCols + lastCol;
newValue := GetDataArrayValue(pArrIn, lastClicked);
IF (newValue <> 0.0) THEN BEGIN
IF (mode = 0) THEN BEGIN // Single cell
IF ((lastIn >= 0) AND (lastIn <> lastClicked)) THEN
SetDataArrayValue(pArrOut, lastIn, 0.0);
lastIn := lastClicked;
END
ELSE BEGIN
IF ((mode = 1) OR (mode = 3)) THEN BEGIN // column or col/row
IF (cols[lastCol] >= 0) THEN
SetDataArrayValue(pArrOut, cols[lastCol] * numRows + lastCol, 0.0);
cols[lastCol] := lastRow;
END;
IF ((mode = 2) OR (mode = 3)) THEN BEGIN // row or col/row
IF (rows[lastRow] >= 0) THEN
SetDataArrayValue(pArrOut, lastRow * numRows + rows[lastRow], 0.0);
rows[lastRow] := lastCol;
END;
END;
END;
SetDataArrayValue(pArrOut, lastClicked, newValue);
END;
clicked := FALSE;
END; // DoUpdate

///////////////////////////////////////////////////////////////////////////////////////

PROCEDURE Callback(n : Integer);
VAR i : Integer;
BEGIN
CASE n OF
pMode : NewMode;
pNumCols : BEGIN
numCols := round(GetValue(n));
SetArrayLength(cols, numCols);
IF (NOT first) THEN BEGIN
FOR i := 0 TO (numCols - 1) DO cols := -1;
SetLength(pArrOut, numRows * numCols);
END;
END;
pNumRows : BEGIN
numRows := round(GetValue(n));
SetArrayLength(rows, numRows);
IF (NOT first) THEN BEGIN
FOR i := 0 TO (numRows - 1) DO rows := -1;
SetLength(pArrOut, numRows * numCols);
END;
END;
pLastCol : BEGIN
lastCol := round(GetValue(n));
clicked := TRUE;
END;
pLastRow : BEGIN
lastRow := round(GetValue(n));
clicked := TRUE;
END;
pMouseDown : clicked := TRUE;//IF (GetValue(n) = 1.0) THEN clicked := TRUE;
END;
END; // Callback

///////////////////////////////////////////////////////////////////////////////////////

PROCEDURE Process;
BEGIN
IF (clicked) THEN DoUpdate;
IF (first) THEN BEGIN
SetLength(pArrOut, numRows * numCols);
NewMode;
first := FALSE;
END;
END;
[/c]
Bjørn S

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 01 Apr 2010, 11:42

woa master bsork that look very interesting, will study that !, thanks a lot for sharing.

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 01 Apr 2010, 12:07

Really good job bsork :cool:

I'll see what can be done to make it work in draw mode (maybe have to modify some internal behavior...)
Martin FLEURENT - Usine Developer - SDK maintainer

bsork
Site Admin
Posts: 1334
Location: Asker, Norway
Contact:

Unread post by bsork » 01 Apr 2010, 15:51

Thanks for the nice words, guys! Regarding the draw mode, I actually think it's working technically speaking, but the mixed behaviour of the matrix and the script both turning off cells makes it appear rather confusing.

Anyway, here's another go where I've fixed the fade mode behaviour. Now the effect on the other cells is immediate when clicking in a new cell.

[c]
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// To be used with the Matrix user module to turn other cells as selected by the mode parameter:
// - cell : only one cell on in the whole matrix
// - column: only one cell on per column
// - row: only one cell on per row
// - col/row: mixture of "column" and "row"
//
// NOTE:
// - Changing mode clears the matrix.
// - With the matrix' mouse mode = "draw", this script doesn't work very well, but "column"
// and "row" might be useful despite the slightly weird behaviour.
//
// bSork, March 2010
/////////////////////////////////////////////////////////////////////////////////////////////////

VAR pArrIn, pArrOut, pMode, pNumRows, pNumCols, pLastCol, pLastRow, pMouseDown : tParameter;
VAR mode, numCols, numRows, lastCol, lastRow, lastIn : Integer;
VAR cols : ARRAY OF Integer;
VAR rows : ARRAY OF Integer;
VAR first, clicked : Boolean;

PROCEDURE Init;
BEGIN
pArrIn := CreateParam('cells in', ptArray); SetIsOutput(pArrIn, FALSE);
pArrOut := CreateParam('cells out', ptArray); SetIsInput(pArrOut, FALSE);

pMode := CreateParam('mode', ptListBox); SetIsOutput(pMode, FALSE);
SetListBoxString(pMode, '"cell","column","row","col/row"');

pNumCols := CreateParam('num of cols', ptDataFader); SetIsOutput(pNumCols, FALSE);
SetFormat(pNumCols, '%.0f'); SetMin(pNumCols, 1); SetMax(pNumCols, 128);

pNumRows := CreateParam('num of rows', ptDataFader); SetIsOutput(pNumRows, FALSE);
SetFormat(pNumRows, '%.0f'); SetMin(pNumRows, 1); SetMax(pNumRows, 128);

pLastCol := CreateParam('last click col', ptDataFader); SetIsOutput(pLastCol, FALSE);
SetFormat(pLastCol, '%.0f'); SetMin(pLastCol, -1); SetMax(pLastCol, 127);

pLastRow := CreateParam('last click row', ptDataFader); SetIsOutput(pLastRow, FALSE);
SetFormat(pLastRow, '%.0f'); SetMin(pLastRow, -1); SetMax(pLastRow, 127);

pMouseDown := CreateParam('mouse down', ptSwitch); SetIsOutput(pMouseDown, FALSE);

first := TRUE;
clicked := FALSE;
END; // Init

///////////////////////////////////////////////////////////////////////////////////////

PROCEDURE NewMode;
VAR i : Integer;
BEGIN
mode := round(GetValue(pMode));
FOR i := 0 TO (numCols - 1) DO cols := -1;
FOR i := 0 TO (numRows - 1) DO rows := -1;
lastIn := -1;
IF (NOT first) THEN
FOR i := 0 TO (GetLength(pArrOut) - 1) DO
SetDataArrayValue(pArrOut, i, 0.0);
END; // NewMode

///////////////////////////////////////////////////////////////////////////////////////


PROCEDURE DoUpdate;
VAR newValue : Single;
VAR lastClicked : Integer;
BEGIN
IF (lastCol >= 0) THEN BEGIN // clicking within the matrix module but not in a cell returns -1/-1
lastClicked := lastRow * numCols + lastCol;
newValue := GetDataArrayValue(pArrIn, lastClicked);
IF (mode = 0) THEN BEGIN // Single cell
IF ((lastIn >= 0) AND (lastIn <> lastClicked)) THEN
SetDataArrayValue(pArrOut, lastIn, 0.0);
lastIn := lastClicked;
END
ELSE BEGIN
IF ((mode = 1) OR (mode = 3)) THEN BEGIN // column or col/row
IF (cols[lastCol] >= 0) THEN
SetDataArrayValue(pArrOut, cols[lastCol] * numRows + lastCol, 0.0);
cols[lastCol] := lastRow;
END;
IF ((mode = 2) OR (mode = 3)) THEN BEGIN // row or col/row
IF (rows[lastRow] >= 0) THEN
SetDataArrayValue(pArrOut, lastRow * numRows + rows[lastRow], 0.0);
rows[lastRow] := lastCol;
END;
END;
SetDataArrayValue(pArrOut, lastClicked, newValue);
END;
clicked := FALSE;
END; // DoUpdate

///////////////////////////////////////////////////////////////////////////////////////

PROCEDURE Callback(n : Integer);
VAR i : Integer;
BEGIN
CASE n OF
pArrIn : clicked := TRUE;
pMode : NewMode;
pNumCols : BEGIN
numCols := round(GetValue(n));
SetArrayLength(cols, numCols);
IF (NOT first) THEN BEGIN
FOR i := 0 TO (numCols - 1) DO cols := -1;
SetLength(pArrOut, numRows * numCols);
END;
END;
pNumRows : BEGIN
numRows := round(GetValue(n));
SetArrayLength(rows, numRows);
IF (NOT first) THEN BEGIN
FOR i := 0 TO (numRows - 1) DO rows := -1;
SetLength(pArrOut, numRows * numCols);
END;
END;
pLastCol : lastCol := round(GetValue(n));

pLastRow : lastRow := round(GetValue(n));

pMouseDown : clicked := TRUE;
END;
END; // Callback

///////////////////////////////////////////////////////////////////////////////////////

PROCEDURE Process;
BEGIN
IF (clicked) THEN DoUpdate;
IF (first) THEN BEGIN
SetLength(pArrOut, numRows * numCols);
NewMode;
first := FALSE;
END;
END;
[/c]
Bjørn S

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 01 Apr 2010, 16:19

bsork wrote:I actually think it's working technically speaking, but the mixed behaviour of the matrix and the script both turning off cells makes it appear rather confusing.
that's an example of what i mean by needing an "oustside" mode , matrix not interacting as the script/external patching would control in an absolute way, to avoid such confusing i often get also.

sorry to hammer matin, you know i love the matrix!!!!

didn't tried yet but that excusive mode per row/column/total seems very exciting!!!

bsork
Site Admin
Posts: 1334
Location: Asker, Norway
Contact:

Unread post by bsork » 01 Apr 2010, 18:16

23fx23 wrote:that's an example of what i mean by needing an "oustside" mode , matrix not interacting as the script/external patching would control in an absolute way, to avoid such confusing i often get also.
I didn't mean that the fact that the visuals and the internal data show the same causes any confusion. It's more two behaviours that don't go too well together. The matrix in draw mode will turn cells on and off depending their current state, while the script also will turn off (other) cells, especially with the col/row mode which turns off other cells both horizontally and vertically. What I'm not quite sure of, is whether the matrix turns the current cell on or off depending on it's current value or on some separate, internal "status" value.
Bjørn S

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 01 Apr 2010, 19:23

@23fx23
Don't worry, it's your job to sell me this concept of 'outside mode' ;) and you make it well
But it's mine to not accept it by default :D and try to explore all alternatives before make a choice

@bsork
I'm agree with your statement about inside and outside behavior, it's an important part of the problem here and with data manipulation in general.

Actually, the matrix module maintain an internal array of cells values.
In draw mode, the cell under the mouse (when mouse down or mouse move) is evaluated from this internal array and the 'draw cell val' to turn the cell ON or OFF.

note that your last version work well in 'draw mode' :cool:

Anyway, i think we just have to continue to explore by script or patch for now.
Sometime in the future, i'll take time to review all these jewels and decide what can be integrated inside the module.
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 02 Apr 2010, 03:39

@martin ok hehe i let down for a while:))
sorry for my bsork misunderstanding.

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 08 Apr 2010, 22:24

Hi all,

I just posted the 1.1 version of the Matrix Pack in the download section :)

News are, for the user module :
- cells values are preserved when changing ‘NumOfCols’ off the matrix.
- new layout option to make cells OFF transparent.
- corrected a bug on mouse move when in draw mode.

and for utils and example patches :
- added MX_scroll_horiz util patch.
- added MX_exclu_mode util patch.
- added matrix_scroll_horiz_example patch.
- added matrix_exclusive_mode_example patch.
- added Sequenaya_lite example patch.

Hope you like it ;)
Martin FLEURENT - Usine Developer - SDK maintainer


User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 08 Apr 2010, 22:48

yes!!
great job martin and bsork !
thanks a lot !

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 09 Apr 2010, 11:13

now , a little request :
( don't know if it's for guru script or for martin )
i would like to randomize the fade values of only active cells...
an idea ..?

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 09 Apr 2010, 22:10

Hey bsork i tried your script "selective" and this seems very cool.

hoewer here it work partially, the cell mode is ok, but not col / row modes, only working on first row/col, is it normal?

bsork
Site Admin
Posts: 1334
Location: Asker, Norway
Contact:

Unread post by bsork » 09 Apr 2010, 23:39

23fx23 wrote:Hey bsork i tried your script "selective" and this seems very cool.

hoewer here it work partially, the cell mode is ok, but not col / row modes, only working on first row/col, is it normal?
No. It worked when I tested it, but that was with a very simple patch with only the script and a matrix. Do you have anything else connected in between the script and the matrix in some way?
Bjørn S

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 10 Apr 2010, 00:11

mmm o yup i retested, the first script you posted is ok, the second will work only once per row/col..

bsork
Site Admin
Posts: 1334
Location: Asker, Norway
Contact:

Unread post by bsork » 10 Apr 2010, 00:23

nay-seven wrote:now , a little request :
( don't know if it's for guru script or for martin )
i would like to randomize the fade values of only active cells...
an idea ..?
If I understand you correctly, something like this script:
[c]
VAR pArrIn, pArrOut, pRandomize : tParameter;

PROCEDURE Init;
BEGIN
pArrIn := CreateParam('cells in', ptArray); SetIsOutput(pArrIn, FALSE);
pArrOut := CreateParam('cells out', ptArray); SetIsInput(pArrOut, FALSE);
pRandomize := CreateParam('randomize', ptButton); SetIsOutput(pRandomize, FALSE);
END; // Init

PROCEDURE Callback(n : integer);
VAR len, i : Integer;
BEGIN
IF (n = pRandomize) THEN BEGIN
len := GetLength(pArrIn);
SetLength(pArrOut, len);
FOR i := 0 TO (len - 1) DO
IF (GetDataArrayValue(pArrIn, i) > 0.0) THEN
SetDataArrayValue(pArrOut, i, random)
ELSE
SetDataArrayValue(pArrOut, i, 0.0);
END;
END;

//no process
[/c]

Connect a Pass If Changed between Cells Out of the script and Cells In on the matrix.

I had a quick try with modules, but the Random module only generates a single value, so every active cell get the same value, which I suppose it's not what your after(?). However, under Data/Random Generators you'll find the Random Pattern Array script, which can be used, or you might have a go at combining the two scripts into one.

Actually, I didn't notice the existing script before writing my own, but you can use an A>B on the array out from the matrix and multiply the output of that with the randomized array, and you'll get values only for cells with non-zero values.

What you might also consider is to add something that makes sure that the randomized values never are 0, or else the cells will not be randomized in the next round.
Bjørn S

bsork
Site Admin
Posts: 1334
Location: Asker, Norway
Contact:

Unread post by bsork » 10 Apr 2010, 00:34

23fx23 wrote:mmm o yup i retested, the first script you posted is ok, the second will work only once per row/col..
Just retested myself, and it looks ok to me. To be sure we're dealing with the same code, I even copied the code from this thread. Hm, mysterious...

Well, time to go to bed, I suppose.
Bjørn S

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 10 Apr 2010, 00:41

mm strange indeed, restested now it works, sorry i must have made something wrong..

bsork
Site Admin
Posts: 1334
Location: Asker, Norway
Contact:

Unread post by bsork » 10 Apr 2010, 00:51

Good to know it worked out for you.

Ooops - forgot to go to bed... :P
Bjørn S

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 10 Apr 2010, 11:52

fantastic sir bsork !!
no problem with my sequenaya , works really fine ,cool to humanize the velocity of sequence ( with vsti who accept it correctly )

now I've try to figure how to set it in the last 23fx 's baby but no way , i can succeed to have it graphically on the matrix ,i can have it on the midi note , but not the 2 , or if i can , new note will be deleted with the next random..

so 23fx if you can help me on this , i suppose it will be faster for you..?:D

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 11 Apr 2010, 00:14

sorry i missed your post nay, yup i can try to have a look. im trying to make the same loop start & end as sequenaya, then will try to
check that random, but more complicate as i got in fact all infos in a bigger virtual matrix, not main used matrix, but seems doable with some tweaks..

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 13 Jun 2010, 15:25

hello all,

i know i'm late, but i didn't forgot to work on the matrix...

so a little teaser to show you how things are coming along
you can see some HSL colors array and captions array populating the matrix :cool:

Image

-basic colors and captions implementation are done, i have to polish that and make some heavy test.
-multi touch part isn't done yet


hope you like it
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 13 Jun 2010, 20:19

YYY EEE AAAA HHHH

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 14 Jun 2010, 00:03

IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-

aaaaaaaaarf can't wait the bomb :cool:

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 14 Jun 2010, 08:19

ha ha, didn't you know that Martin was a little sadistic.?
:D

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 14 Jun 2010, 17:16

nay-seven wrote:ha ha, didn't you know that Martin was a little sadistic.?
:D
hehe, not false lol, but 23fx23 is a brave victim :P
IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-IWANNABETATESTMATRIXASAP-

aaaaaaaaarf can't wait the bomb
in fact, i have some obvious bug to kill before go in beta test....

-> me return to code ;)
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 14 Jun 2010, 17:21

AAhhhh glad to see ya on it man, good luck!!!

Clearscreen
Member
Posts: 482
Location: Australia
Contact:

Unread post by Clearscreen » 15 Jun 2010, 07:05

REALLY lookin forward to this.... :o

mchenetz
New member
Posts: 6
Location: Philly
Contact:

Unread post by mchenetz » 08 Jul 2010, 00:19

Hi all,

It is a little adjustment right now because i am quite new to this platform and do not know all of the objects yet... I think i an overthingking everything. Anyhow, Here is what i want to do... I have a 64 pad controller that i want to map to the matrix. Right now, i just want to see the lights of the matrix, light up. So far, I have the midi in working and i have a, "Mod 8" and, "div 8" to get the rows and columns from my midi value. The question is, what does cell in of the matrix expect? Somehow, and i am thinking in how i would accomplish this in Max, I have to get the column, row and value into the cell in. I am playing around with arrays, but i am not sure if that is what i should do yet. Any help would be greatly appreciated.

Regards,
Mike
Sites:
http://noisemakers.info/
http://max4live.info/

Some gear:
2 Lemurs, Livid ohm64 and Block, Monome 64, Launchpad, APC40

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 08 Jul 2010, 01:28

Hi mike

"cell in" is an Array input, group of values one after the other that correspond to the values going from 0 to 1 of each cellz,starting from top left to bottom rigth, that are reflected by lighting up, so if i well understood in your case you can bypass the mod and div thing and direct set one element of the array (cell vallue) from a CC. ie CC00 wil set cell 00 , CC63 will set cell 63.
to use this you will can use the "set Array Element Value" that pick matrix ArrayOut, and refedback to Matrix In.

On the module you see index, (=Cell number, = CC number), Value (On 1, off 0, so Midii/127) and , set Value wich will apply change to the array you will probably want to occur each time you received midi Changes for example led of midi module.

Clearscreen
Member
Posts: 482
Location: Australia
Contact:

Unread post by Clearscreen » 08 Jul 2010, 03:48

martignasse wrote:hello all,

i know i'm late, but i didn't forgot to work on the matrix...

so a little teaser to show you how things are coming along
you can see some HSL colors array and captions array populating the matrix :cool:

http://www.sensomusic.com/forums/upload ... ptions.jpg

-basic colors and captions implementation are done, i have to polish that and make some heavy test.
-multi touch part isn't done yet


hope you like it
This looks great, but any hint on when this'll be released? I could do with some of this functionality...

mchenetz
New member
Posts: 6
Location: Philly
Contact:

Unread post by mchenetz » 08 Jul 2010, 16:25

23fx23 wrote:Hi mike

"cell in" is an Array input, group of values one after the other that correspond to the values going from 0 to 1 of each cellz,starting from top left to bottom rigth, that are reflected by lighting up, so if i well understood in your case you can bypass the mod and div thing and direct set one element of the array (cell vallue) from a CC. ie CC00 wil set cell 00 , CC63 will set cell 63.
to use this you will can use the "set Array Element Value" that pick matrix ArrayOut, and refedback to Matrix In.

On the module you see index, (=Cell number, = CC number), Value (On 1, off 0, so Midii/127) and , set Value wich will apply change to the array you will probably want to occur each time you received midi Changes for example led of midi module.
Thanks for the quick reply... I was trying to take the easy way out. :-) Here is my scenario... I have a Livid Block and Ohm64 that I thought would be perfect tot use with the Matrix set... Typically in Max (Sorry to bring up Max so much. Just what I am accustomed to), I can convert the midi notes (0-63) to a col, row pair, so that is what the mod and div did. This way i can send a 0 0 1 for column 0, row 0 and 1 for note on as a value. This allows me to not have to connect each button to a matrix in. I was looking for the matrix to interpret the row, col value and then set the corresponding cell. So, i guess I just need to map each button in the 64 button grid. No biggy... If there is a better way then please tell me. Thanks again for your help.

Regards,

Mike
Sites:
http://noisemakers.info/
http://max4live.info/

Some gear:
2 Lemurs, Livid ohm64 and Block, Monome 64, Launchpad, APC40

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 08 Jul 2010, 17:08

Yes, but instead of dealing with col/row you can direct set the Index relating to CC nb in, no need col/row conversion,
the CC 00 to 63 direct conrol matrix cells (assuming your 64 cc are indexed same way, from top left to botom right).

If on input you want to have cols/row, the real index to set on matrix will just be (Col Mod 8) + (Row x 8)
on reverse as you thought, to convert index to col/row (index mod 8) + (index Div 8).
so you can build really simple subpatch convertor.

it depends the way you deal, but for me easier access would be (16cellz example): on your livid:

cc00 cc01 cc02 cc03
cc04 cc05 cc06 cc07
cc08 cc09 cc10 cc11
cc12 cc13 cc14 cc15

that way if you press cell Cc09, the setArray will set matrix cell index 9, wich is visually corresponding, without bothering
cols and row. You don't have to connect each button to matrix in, just use the setArray Element Value (/Array). Ill
make ya a pic when getting back home.

if you want to keep cols row way of thinking, can make a subpatch that converts the indexIn(cc) to row/col , then
reconvert col/row to absolute index for matrix, but i don't see the point (exept if your livid is indexed matrix inversed).

mchenetz
New member
Posts: 6
Location: Philly
Contact:

Unread post by mchenetz » 08 Jul 2010, 17:45

23fx23 wrote:Yes, but instead of dealing with col/row you can direct set the Index relating to CC nb in, no need col/row conversion,
the CC 00 to 63 direct conrol matrix cells (assuming your 64 cc are indexed same way, from top left to botom right).

If on input you want to have cols/row, the real index to set on matrix will just be (Col Mod 8) + (Row x 8)
on reverse as you thought, to convert index to col/row (index mod 8) + (index Div 8).
so you can build really simple subpatch convertor.

it depends the way you deal, but for me easier access would be (16cellz example): on your livid:

cc00 cc01 cc02 cc03
cc04 cc05 cc06 cc07
cc08 cc09 cc10 cc11
cc12 cc13 cc14 cc15

that way if you press cell Cc09, the setArray will set matrix cell index 9, wich is visually corresponding, without bothering
cols and row. You don't have to connect each button to matrix in, just use the setArray Element Value (/Array). Ill
make ya a pic when getting back home.

if you want to keep cols row way of thinking, can make a subpatch that converts the indexIn(cc) to row/col , then
reconvert col/row to absolute index for matrix, but i don't see the point (exept if your livid is indexed matrix inversed).
Thanks again... I will try it out when i get back home tonight. I really appreciate your help. I do think that the matrix is inversed in it's default layout. I will have to check.

Mike
Sites:
http://noisemakers.info/
http://max4live.info/

Some gear:
2 Lemurs, Livid ohm64 and Block, Monome 64, Launchpad, APC40

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 08 Jul 2010, 22:03

this shows ya the system of the setArray, can't test but should work directly if same way indexed
Image

howerver if reverse indexed, a bit of math is needed to convert the index, by inserting this between CC and set index:

swaped index = (index div 8) + ((index mod 8)*8) for a 8x8 matrix.
Image

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 08 Jul 2010, 22:21

don't know if it's the same problem but for the addon sequenaya I've use a swap array module to inverse the matrix..?

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 08 Jul 2010, 22:45

you're right nay, but I used wrong word by using "swap"
not exactly the same, swap array reverse orders of the cells, without bothering cols and rows, 0 become 63, 63 become 0,
1 become 62 ect, wich cannot work in that case, wich would more be called "swapping cols/rows way of indexing"

funny thought i was calling that "rotating 90" in my patches, if fact its rotating+flip vertical,
swap array would be "fliping horizontal + fliping Vertical", so made me think a little generic patch/script for all
scenarios like we would do on images could be a nice util, especially with upcoming colors Arrays, it
could be easy for user to visualize (ok, i need to rotate bacward and flip) than pathing the maths each time...
Il see i f can give a shot, martin will propably already have inclueded some indexes manipulation tools in next release?

mchenetz
New member
Posts: 6
Location: Philly
Contact:

Unread post by mchenetz » 09 Jul 2010, 01:20

Thanks for the help. It was exactly what i needed. All of the objects are really well done and I tend to overthink them. I am really digging Usine. I am going to do a writeup and walkthrough soon for noisemakers.info. I now just have to add some logic to do something with the Block control. Hmmmm lots to think about. Probably start out with a glitchy type sequencer to replace my MLR type patch in M4L... Next after that is to integrate my multitouch AIO-PC. I think that Usine has HUGH potential.

Here is the result, so far:

Image
Sites:
http://noisemakers.info/
http://max4live.info/

Some gear:
2 Lemurs, Livid ohm64 and Block, Monome 64, Launchpad, APC40

mchenetz
New member
Posts: 6
Location: Philly
Contact:

Unread post by mchenetz » 09 Jul 2010, 01:22

oh yeah, I almost forgot... I did have to use the second patch illustrated to invert the matrix for the Block/Ohm64. Thanks fot that...

Mike
Sites:
http://noisemakers.info/
http://max4live.info/

Some gear:
2 Lemurs, Livid ohm64 and Block, Monome 64, Launchpad, APC40

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 09 Jul 2010, 01:54

cool glad it work ok for ya. yes you ll see usine is awesome!

note two advices:

if wanna make a midi Thru, like your picture seems, you can bypass the create midi message, and diect connect
midi of in to out, but maybe you wanted to try some things.

Also when creating matrix, it ask you for a nb of fader, this create some inputs, and have the advantage of leting
you see the values, but if you don't use individual inputs but array like here, you can make a "no fader" one, it can still
have 64 cellz you control with the array, use probably tiny less cpu/memory, and space on screen :)

yup there are tons of stuff to play with with matrix, sequencers,mlr, clip triggers, multifx, audio matrix...

Im actually on kind of Rex/Mlr patch that let me slice a loop using markers and replay the sequence at any tempo,
then with arrays i random slice order, make rolls, reverse, pitch ect. very cool instant loops variations i spent hours making in
midi, then a matrix trig some paterns or slice live, ofset in the loop, change time ect. quite happy of it, have to finish it..
It gives me much better results than ableton type 1/16 offsets, or any king of Vst that usually slice on 16th, cause here
it really trig the sices related to maker, meaning with their transient and lenght.

some times i just press auto random and after a while the ghost crasy drummer can ouput me some very similar to the
Afx, squarepusher or amontobin kind of hard breaked drums very coherent loops, so i rec and selecta, cheating easy,
for dnb breaking stuff, no more pgming ;) arf need time to finish that one..

mchenetz
New member
Posts: 6
Location: Philly
Contact:

Unread post by mchenetz » 09 Jul 2010, 03:08

Thanks for the advise... I really need to get accustomed to all of the devices and their parameters... It's a matter of finding an object that I picture in my head in the module library. Again, thanks for your help. I will contribute anything I make back to the community.

Mike
Sites:
http://noisemakers.info/
http://max4live.info/

Some gear:
2 Lemurs, Livid ohm64 and Block, Monome 64, Launchpad, APC40

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 09 Jul 2010, 14:23

Clearscreen wrote:This looks great, but any hint on when this'll be released? I could do with some of this functionality...
should come out with the 5.18 version of usine and SDK ...
Martin FLEURENT - Usine Developer - SDK maintainer

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 13 Aug 2010, 19:48

Matrix Pack 1.2[large][/large]
you'll find in the download section the new version off the matrix pack :)

Image

lots of new features and more examples and utils patchs

improvements :
- added inlets/outlets compatibility for patch with old version.
- added 'cells rounded' and 'cells round size' in edit layout.
- added 'cells col' array and 'cells caption' array inlets.
- added 'matrix size' and 'last clicked cell' outlets.
- added three HSL offset sliders for cells OFF colors in edit layout panel.
- added 'edit' mode in 'mouse mode'.

comments :
This version works only with Usine v5.25 and above. so for now, use it with the 5.25 beta.
the wiki page is updated for this new version.

enjoy
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 13 Aug 2010, 19:55

yeeeeeeeeeeeeeeaaaaaaaaaaaaaaaa

User avatar
senso
Site Admin
Posts: 4424
Location: France
Contact:

Unread post by senso » 13 Aug 2010, 20:07

great job Martin!
This pack is an essential part of Usine.

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 13 Aug 2010, 20:15

yep !
amazing and addictive module !

Clearscreen
Member
Posts: 482
Location: Australia
Contact:

Unread post by Clearscreen » 14 Aug 2010, 01:43

WOO HOO!! Been looking forward to this!:D

Floego
Member
Posts: 319
Location: Venezuela
Contact:

Unread post by Floego » 14 Aug 2010, 13:43

When building a patch using the matrix, I found it difficult to find a solution on this simple patch ( I know it looks like a trivial logic problem, sorry if that is the case):

Image

The problem is that I can't get to avoid somekind of feedback/loop problem when trying to update the values of the matrix. The solution would be very simple but I just can't reach that.:/

in case anyone are interested, here is the (very very simple) patch:

http://sensomusic.com/forums/uploads.ph ... roblem.pat

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 14 Aug 2010, 14:04

not sure to understand what you want but a 1 to 0 module between the mouse down outlet and the set value...?

Floego
Member
Posts: 319
Location: Venezuela
Contact:

Unread post by Floego » 14 Aug 2010, 14:20

Yes! that solved the problem!. :D

That patch is a little part of a greater one (a pianoroll) but I isolated this problem and failed to find the solution you did. I'm testing how much responsive matrix is when using the edit mode instead of the draw or toggle mode (that's the reason for the oscilloscope into the patch). But it could be useful to create a mine sweeper game using usine , isn't it?.:P

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 15 Aug 2010, 18:57

@Floego : cool you solved your problem

more generally in usine, it's important to 'break' infinite update loop like in your patch. you should decide precisely when the update take place (what action or state cause the update) and put some glue modules (pass, pass if changed, 0 to 1...) to limit to only this case.

about 'edit' and 'lock' modes differences, they both ignore mouse interactions with cells, but 'edit' update the 'last click XXX' and 'lock' don't.

'edit' mode is ideal to process cells stats (values, colors, captions...) externally.


hope it help
Martin FLEURENT - Usine Developer - SDK maintainer

Floego
Member
Posts: 319
Location: Venezuela
Contact:

Unread post by Floego » 15 Aug 2010, 22:34

Thank you martin :)
Usine seems like a set of microcontrollers to me.

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 14 Sep 2010, 08:42

i noticed a light but i can't find how trigged:

got patchs with a matrix of 1x4 that returns arrays of 16?

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 14 Sep 2010, 09:50

23fx23 wrote:i noticed a light but i can't find how trigged:

got patchs with a matrix of 1x4 that returns arrays of 16?
can you reproduce, or provide an example patch to reproduce ?

with your intensive use of the matrix, i'm happy that you may found some bug ;)
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 14 Sep 2010, 11:21

well i guarantee you ive made a reaaaallly intensive use of matrix recently martignasse, especially in my liveosc patch.
everything are matrixs ;).
http://www.youtube.com/watch?v=Hgf7nXyLGJ8
and the beast is awesome powerfull I can scroll with inertia inside a 16x32 matrix without problems impressive.
also made a "bird wiew" of 128x32, not in the video , again no pb.

It was geting a bit slow on 32x16 with captions and rounded (normall i think hehe) but i found the trick of using IML to swich them off via LAYOUT procedure, then on only when scroll is finished. work like a charm high speed then.

the only tiny bugs ive found so far, (if ever they can be called bugs), is that if dynamically changing size of column ie,
borders colors and cell colors if feed with a 1 size array single)won't redraw the new cells if extended. not drastic but i have to often fill arrays to correct, where a one size could be enough, any possibility to get a redraw if size change?

the other is something that is really rare but more annoying is that size thing..the pb is i didn't tracked yet when it occurs.
feel something related to presets or i don't know...
have a look at the 8x automs addon, there are two small matrix, i think they have this pb, i needed to put a setarray size
on output, otherwise they output 16size array instead of 4, but only sometimes..

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 14 Sep 2010, 12:20

ok, cool, i'll try to track and resolve these issues for the next version.

but if you find some simple patch to reproduce, send them to me

edit :
hoooo yes, your upcoming liveosc version is very, very impressive and you push the matrix module so far :o

that why i'm happy you just found one or two minor bugs :D
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 14 Sep 2010, 12:48

i pushed it much more since the time of that video you l see !
yes it's pretty stable and rocky, master pgming module :cool:

i ll try to find ya simple patchs. the boders/cell color. can be easy reproduced. make a color in on borders, no array just color. save the patch, reopen and and change mx nb of cols or row by increasing . I investigate on the size stuff. ill let ya know, btwn i only seen it once or two on my 1000x uses so...

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 14 Sep 2010, 14:22

I couldn't help making a little vid how hard i make matrix suffer ;)
http://www.youtube.com/watch?v=mM7IGu9P9Eg

bsork
Site Admin
Posts: 1334
Location: Asker, Norway
Contact:

Unread post by bsork » 14 Sep 2010, 14:31

Now that's pretty wild!:D
Bjørn S


martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 14 Sep 2010, 14:49

wow, i'm curious about how many script you made to implement all these features, lots of thing to extract in a generic way

... i really love the map window :cool:
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 15 Sep 2010, 15:11

sorry martin i missed your post.

yep in fact i got some 2 scripts that compute inertia sroll/zoomm for X ans Y in 01 range i remap to my NB_tracks nb_clips, and one main script thats stores all datas from osc and reupdate 'smaller' matrix from the complete matrix also used as
the 'map'. yeah im quite happy of the map, work like a charm, the surounded rectangle has been done
with an overlay using new draw object connections availability so that's quite low cpu vs my first borders colors attempt; the trycky part was to keep a local mapping of scroll when touching down matrix, but also being controllable in an absolute way via scroller and/or bird view. and each one chang need to update the other and if zooming have to adapt the scroll for being centered and correct limited and vice versa.

ill see if i can extract for a more generic use in usine. can be cool for sequencers or others matrix based, but afraid
would better rebuild all , abit weird messy actually. but keeping concepts. exept inertia (that need imo to be accurate a sampling over time to check velocity XY before released, and should prevent cell activating while scrolling, a lighter system suggested by senso is checking deviation from mousedwn to mouse release, but less accurate.) that's not that hard to rebuild now
i know what to do, and it's a piece of cake for ya i guess ;) , finally just some usual i+scrollY,j +scrollX, lenzoomY, lenzoomX ..

but it's true i would love to see a generic script for such setup, after long experiments, it s one of the more pleasant to use.
can swich beetween big adapted for touch cells or global overview with ultra fast and 'natural' nagigation options.

my personnal monster ideal generic MX script would be this (XY inertia local/absolute scrolling with global map)+ Bsork multimode (one, per col, per cell) activation system+ my usual prefered XYZ cell system (XY relatives values+ separate toggles per cell)... some hard work in perspective but once done could be reused and adapted for tons of uses.
ill try to get over it once live OSc, wich i will rename to Live Matrix V2 (to thank ya for this killer module) will be finished...
but if ya got some ideas and want go for one, result would be cleaner if that's yours probably ;)

gurulogic
Member
Posts: 1019
Contact:

Unread post by gurulogic » 20 Sep 2010, 06:46

Any ideas how I can make the cells momentary, as in they only output a value and stay lit while pressed or have a value input?

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 20 Sep 2010, 09:30

check my addons padayan_v2 or midipadayan_v2( in the options menu ), I've add a moment feature, maybe can suit your needs..

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 20 Sep 2010, 09:55

will check nay teck i do like this for momentary:
Image

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 20 Sep 2010, 10:08

really clean solution 23fx !
sadly don't work with draw mode...?

gurulogic
Member
Posts: 1019
Contact:

Unread post by gurulogic » 20 Sep 2010, 10:40

thanks! I think 23fx way works better for me cause the nay way resets all pads and with the 23fx way I can still take over the cells with incoming messages at the fader inlets, or maybe even with the array inlet if I find a way...
Hopefully this is the start of a Monome emulator a...Matrixnome? :)

I''ll take any further questions to the patching forum but that was the important one...

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 20 Sep 2010, 10:45

indeed won't work in draw mode (maybe the edit mode should behave the same as draw and update indexs as well martin ?)
here is a tiny more complex solution for draw mode, recreating the draw behaviour
Image

@ guru: imo you should avoid contolling via fader + array and do all the job with array, would be more clean even if
there are no rules in usine. . try to catch the set/getarrayelement behaviours, then you will be able to do pretty what ya want.
don't hesitate if question, i think we are a few who spent time on matrix and arrays already, so can make you earn some time ;)

@ martignasse: here are my two little requests:

A) index updates like draw mode in edit mode (no worries if too complex)
B) redraw colors when changing size, more often annoying in my cases as i got to fill lots of arrays to compensate and feel
it has a certain impact on cpu when intensive use. here is a simple patch showing the pb:
the patch showing what i mean

if not to complex, that would rock for me as my live matrix patch use a lot dinamyc resize on several matrix of consequent sizes :)

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 20 Sep 2010, 11:10

great for the matrixnome project !

@23fx, i ll keep your solution for some circumstances ,but with this one , i can play only one note ..?

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 20 Sep 2010, 11:15

you mean want that an enabled cell stay on when going on next one? then on release do they stay or all reset?

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 20 Sep 2010, 11:17

i second 23fx on the B , I've also problems with that ..

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 20 Sep 2010, 11:18

yes, reset on release ;)

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 20 Sep 2010, 11:19

i guess you meant such behaviour nay , but that's probably the tek ya use already : (draw mode on mx).
Image

btw I really looove the new way module get reduced, that's insane cool. great job olivier!!!

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 20 Sep 2010, 11:31

yes, more or less ( i often found more complex solution than i need..:D.)

and yes i second that too

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 20 Sep 2010, 17:44

23fx23 wrote:@ martignasse: here are my two little requests:

A) index updates like draw mode in edit mode (no worries if too complex)
B) redraw colors when changing size, more often annoying in my cases as i got to fill lots of arrays to compensate and feel
it has a certain impact on cpu when intensive use. here is a simple patch showing the pb:
the patch showing what i mean

if not to complex, that would rock for me as my live matrix patch use a lot dynamic resize on several matrix of consequent sizes :)
A) i understand, but are you sure the actual behavior will not miss if i change it ?
it will force you to externally store the index when mouse down if you want to simulate a toggle mode...
the best solution is maybe to have both, like 'edit draw' and 'edit toggle', i don't know...

B) yes, i know, it's THE THING i didn't finish to release the 1.2 version earlier :|,
it's more complex than it seems, i'll try to found a solution for the next update has it will be a 'performance optimization' update :)

but you'll have to wait a little... i have some other priorities ;), like a 'matrix - audio mixer' for example
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 20 Sep 2010, 18:53

yes no worry i can wait. cool news for the perf update,

for A) that's a good reflexion i had also but I don't think it s a problem in most cases, cause actually drawmode let pass the cliqued cell index only while mouse is down, so it's totally possible to make a toggle externally if i clic on 5 and set to reverse value of prev5, but indeed can be boring in the case we want select a cell, then that mouse y controls something, index will change while
being not wanted. we can then use a pass or affect frommouse0 to 1, but can be repetitive...
...so dual mode is probably the more modular and user friendly choice if ya feel it's not too complex...

B) there is not a REDRAW procedure ;) ?

take your time im waiting anyway still lot of work on livematrix, but near the beta stage ;)

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 24 Sep 2010, 14:59

hey martin, sorry another little request :)

would that be asy to extend 128 limit to 256 or 512?

im using it for my 'map' feature, i know it sound like a huge matrix, but actually im preloading a 48x128.
48 tracks is far enough in most situation, but 128 could be a limit for nb of scenes, i got few livesets with more than 128 scenes.
since i update it only a short pulse when loading is done, it seems cpu correct.
mmm or maybe a futur "pixel draw" user module would do a lighter job for such purpose ?(gonna make some requests to caco hehe)... anyway, just to know if their is an easy editable 'max rows ' constant ;).

but take your time, ill post my beta with a 128 setup, just for later...
looking so see that powerfull matrix audio mixer ;)

soundmind
Member
Posts: 236
Contact:

Unread post by soundmind » 02 Nov 2010, 03:10

Let me begin by saying that the matrix module is IMO one of the best additions to usine. But, I dont know if this has been mentioned but the matrix does not store its values in the conductor. Am i missing something? thanks.

soundmind
Member
Posts: 236
Contact:

Unread post by soundmind » 04 Nov 2010, 08:18

Thanks again for this essential module. I have two small requests if it is possible.

1) In fader mode,would it be possible to use the mouse wheel to scroll the values like usines fader module?

2) In its current state when you have a populated matrix in draw mode and drag the mouse to draw in values, the cells that are on turn off and the cells that are off turn on. Would it be possible to implement a mode to draw each cell on or off regardless of its state? An idea to determine if the draw turns them on or off could be based on the state of the first clicked cell.

thanks.

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 04 Nov 2010, 17:00

1) In fader mode,would it be possible to use the mouse wheel to scroll the values like usines fader module?
good one, it put it on my todo list :)
2) In its current state when you have a populated matrix in draw mode and drag the mouse to draw in values, the cells that are on turn off and the cells that are off turn on. Would it be possible to implement a mode to draw each cell on or off regardless of its state? An idea to determine if the draw turns them on or off could be based on the state of the first clicked cell.
ye, i see what you mean, but maibe better to add a draw mode for that (like 'invert') ?
added too anyway

Thanks for the feedback
Martin FLEURENT - Usine Developer - SDK maintainer

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 04 Nov 2010, 17:03

soundmind wrote:Let me begin by saying that the matrix module is IMO one of the best additions to usine. But, I dont know if this has been mentioned but the matrix does not store its values in the conductor. Am i missing something? thanks.
oops, missed this one :| sorry

can you confirm and send me a .wkp reproducing ?
(mfleurent -AT- free -DOT- fr)
Martin FLEURENT - Usine Developer - SDK maintainer

soundmind
Member
Posts: 236
Contact:

Unread post by soundmind » 04 Nov 2010, 20:50

martignasse wrote:can you confirm and send me a .wkp reproducing ?
Well it can be easily reproduced. Just load a matrix into a fresh wkp and try to store its state to the conductor. I did notice that it does store in a preset manager though.

Thanks.

soundmind
Member
Posts: 236
Contact:

Unread post by soundmind » 05 Nov 2010, 01:09

here is another problem i noticed.
Here is the patch. Included are a few presets which change the size of the matrix array but notice how the new size number is not reflected in the array size module between the "[ ]" where the array size should display? It seems to have a mind of its own and has a tendency to jump to 70 but what is more strange is that the error is not always reflected in the output fader. To get these results sometimes it is necessary to repeatedly click on alternating presets with different stored array sizes but the error seems to be consistent at times. Hope this helps.

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 05 Nov 2010, 08:41

yes, i can reproduce the bug too, I've also test with an array to check if it's came from the get array size but no, it's happen only with the matrix..

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 05 Nov 2010, 09:54

there is definitely some problems with how the module store and reload datas, especially when the size change.

it affect presets and conductor, but also what is saved in patch and workspace.

anyway, it was already on my todo list because actually, it's pretty heavy on memory.

thanks again for the feedback.
Martin FLEURENT - Usine Developer - SDK maintainer

ethnix73
Member
Posts: 604
Location: France, Caen
Contact:

Unread post by ethnix73 » 05 Nov 2010, 16:57

I don't know if it's script or matrix module related, but the exclu mode is not compatible with a preset manager martignasse....
Seb.Dub

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 15 Mar 2011, 12:14

Transfered from another thread :
joffo78 wrote:...i had a lot of suggestions for your amazing matrix module !
it would be fantastic if we could take an individual value on each cell by numeric value (for example cell n°25 at 0.5)
it would be great to if you could display each number of cell then a value corresponding of the cell content (cell 1/0.78 cell 2/1 cell 3/0.52 etc).
i'd like to change the value of only one of the cell without changing the other (at the array input make a script for selecting cell then value).
i hope we could understand me.
Martin FLEURENT - Usine Developer - SDK maintainer

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 15 Mar 2011, 12:58

it would be fantastic if we could take an individual value on each cell by numeric value (for example cell n°25 at 0.5)
you mean extracting a value or setting it by index? anyway, it's a job for 'get array element value' and 'set array element value' modules. or maybe i misunderstood what you mean.
it would be great to if you could display each number of cell then a value corresponding of the cell content (cell 1/0.78 cell 2/1 cell 3/0.52 etc)
Actually, all the cell caption job is up to you, you have to provide a comma text with each caption.
Take a look at the 'matrix_show_cell_val_example' and especially to the 'edit cell caption' script it's a good base for what you want.

well, i keep the idea of an internal mode with basic auto-caption (with the value of the cell). but for more complex caption, it really should be made externally.
i'd like to change the value of only one of the cell without changing the other (at the array input make a script for selecting cell then value).
you can do that directly with the input cells faders if you created the matrix with some.
or by manipulating the array cells array like you mentioned, for this, the 'matrix_edit_cell_example' is your friend ;)

to resume, the idea behind the matrix module it to be the most generic, all specialized data processing (on values, colors, caption...) should be made externally by patch or script.
i know this make it less easy for the user, but it's the only way to keep the modularity, with the huge amount of possibility, it's impossible to implement them all inside the module.

ask me if you need some help with the examples and utils patch.
Martin FLEURENT - Usine Developer - SDK maintainer

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 15 Mar 2011, 13:03

oups, long time ago :
ethnix73 wrote:I don't know if it's script or matrix module related, but the exclu mode is not compatible with a preset manager martignasse....
yep, i know, the problem is at script level. as it is based on the last clicked cell, it's not working very well with the data provided by the preset manager.
not easy to solve, maybe by implementing these mode internally in the module.
Martin FLEURENT - Usine Developer - SDK maintainer

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 15 Mar 2011, 16:13

And here an other one , I've just create this patch( at first it's a pack , horizontal, vertical , sequencer and with text list )
and I've 2 questions :
_is there a way to add precision to the array values( here the last array to dispatch values can't reflect the precision chosen in the options)
_it's seems that the precision ( this time when you change the value ) is not the same on all the height of the cells

here the patch

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 15 Mar 2011, 17:04

_is there a way to add precision to the array values( here the last array to dispatch values can't reflect the precision chosen in the options)
well, absolutely not possible.
precision(nb of decimal digit) in usine is only a graphic thing. behind, values are always plain float.
the matrix and the array module (like you noticed) always deal with plain float values.
but maybe you want some sort of snapping, witch is different.
_it's seems that the precision ( this time when you change the value ) is not the same on all the height of the cells
in fader mode, the drag to change a cell value is a linear function, but not based on the cell height, it's a constant of 50. that is, 50 pixel to go from min value to max value.
this constant isn't exposed to the user, thus not modifiable, but you have a shit mode where you can multiply it from 1 to 10 (in edit layout) , so, up to 500 pixel.
Martin FLEURENT - Usine Developer - SDK maintainer

joffo78
Member
Posts: 1033
Contact:

Unread post by joffo78 » 15 Mar 2011, 19:43

HI
martignasse.
Thank you for your answer but i afraid it's a little bit to complicated for me (you patch examples are very complex).
May i ask you some questions in french forum ?
thanks
jof

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 15 Mar 2011, 20:09

yep, no problem, make a matrix thread in the french section, i'll answer with pleasure
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 15 Mar 2011, 22:17

any news on the perf/ multitouch update ;) ?

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 15 Mar 2011, 22:29

ok martin
i know for the shift function, but on a touch screen .....:/

User avatar
senso
Site Admin
Posts: 4424
Location: France
Contact:

Unread post by senso » 15 Mar 2011, 22:47

this constant isn't exposed to the user, thus not modifiable, but you have a shit mode where you can multiply it from 1 to 10 (in edit layout) , so, up to 500 pixel.
why can't you create a layout value? Then could be adjustable by the user?

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 15 Mar 2011, 23:36

nay-seven wrote:i know for the shift function, but on a touch screen .....hmm
senso wrote:why can't you create a layout value? Then could be adjustable by the user?
yep, simple like that :)
it's on my todo list now
Martin FLEURENT - Usine Developer - SDK maintainer

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 15 Mar 2011, 23:39

23fx23 wrote:any news on the perf/ multitouch update ;) ?
well, it's coming....slowly as i'm busy with other things too. but it's coming
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 15 Mar 2011, 23:45

cool, anyway, ive no multitouch yet, and very busy too :D still interested by any updates ;) cheers martin

ethnix73
Member
Posts: 604
Location: France, Caen
Contact:

Unread post by ethnix73 » 19 Mar 2011, 02:24

oups, long time ago :

ethnix73 wrote:
I don't know if it's script or matrix module related, but the exclu mode is not compatible with a preset manager martignasse....
yep, i know, the problem is at script level. as it is based on the last clicked cell, it's not working very well with the data provided by the preset manager.
not easy to solve, maybe by implementing these mode internally in the module.
It would be really great!
Seb.Dub

joffo78
Member
Posts: 1033
Contact:

Unread post by joffo78 » 14 Jun 2011, 08:30

hello martin
i wonder if t's possible to have possibility of memorize matrix with conductor with time fade.
Senso did it in the next version with xy pad and it would be fantastic to do the same with matrix .

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 15 Jun 2011, 21:42

hello joffo78,

i cant answer for now, i have things to check before.

i'll feedback soon.
Martin FLEURENT - Usine Developer - SDK maintainer

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 16 Jun 2011, 10:55

hi again joffo78,

what do you mean by
Senso did it in the next version with xy pad
?

is this behaviour (fade time on the XYpad) exist in the 5.50.58 or is it for the next version ?
Martin FLEURENT - Usine Developer - SDK maintainer

joffo78
Member
Posts: 1033
Contact:

Unread post by joffo78 » 17 Jun 2011, 00:23

No it dosen't work in the 5.50.58 version but senso promise me that it will be work in the next version.

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 17 Jun 2011, 14:11

ok, thanks

so i'll see that with him, hope i'll can achieve that
Martin FLEURENT - Usine Developer - SDK maintainer

joffo78
Member
Posts: 1033
Contact:

Unread post by joffo78 » 18 Jun 2011, 15:42

Hello martignasse.
I ve another problem too.
when i put a patch with a matrix on the time line of the sequencer it doesn't memorize the contain of the cells.
could you have a look on that ?
thank

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 23 Jan 2012, 19:43

i noticed a small thing: the reset value doesn't seem effective. here i can enter 1 or 0, nothing will change when pressing reset.

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 23 Jan 2012, 20:55

23fx23 wrote:i noticed a small thing: the reset value doesn't seem effective. here i can enter 1 or 0, nothing will change when pressing reset.
yop, good catch :)

it's a regression bug :rolleyes:
will be fixed in the next release

thanks
Martin FLEURENT - Usine Developer - SDK maintainer

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 23 Jan 2012, 21:44

cool thanks martin, btwn it's seems to react very well, got no memory pbs yet while stressing it quite a lot ;) that's cool

artificial
Member
Posts: 87
Location: Austria
Contact:

Unread post by artificial » 23 Jan 2012, 23:05

thanks for the matrix pack, it is absolutely amazing! :)

just a short question: is it possible to flip the order of the rows? this way index 0 would be the bottom left cell of the grid...

thanks in advance! :)

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 24 Jan 2012, 08:51

hi artificial,

unfortunatly, there is no easy way to achieve that...
script is your friend for this type of task.

is it only the graphical representation you want flipped or the array data too ?

[edit] the swap array module turn it from 180 deg, making the 'new' 0 index in down right cell
Martin FLEURENT - Usine Developer - SDK maintainer

artificial
Member
Posts: 87
Location: Austria
Contact:

Unread post by artificial » 24 Jan 2012, 10:29

thanks for the answer.

well it would just need the graphical representation to be flipped...

i got a 4x4 matrix and i managed to get the result by using 4 "get row" modules ... so far this worked great, but I also need "exculsive mode (cells)" to work with the 4 "get row" modules! until now, i was not able to get it working rightly...

i'm going to have a look at the swap array module, thanks for the suggestion! :)

martignasse
Site Admin
Posts: 611
Location: Lyon, FRANCE
Contact:

Unread post by martignasse » 24 Jan 2012, 11:11

well,

for a 4*4 you can achieve that by module

but mixing that with the exclu patch is tricky, because your click infos aren't flipped...

here is a try :
Image

but the exclu is valid only by clicking on the left matrix, and the right one is just graphic infos result

hope it help
Martin FLEURENT - Usine Developer - SDK maintainer

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 24 Jan 2012, 11:28

don't know the use you need, but if you need only a graphical one with value out, here an other one :
Download

artificial
Member
Posts: 87
Location: Austria
Contact:

Unread post by artificial » 24 Jan 2012, 16:26

thanks for your suggestions, guys! i'm going to check them out as soon as i'm at home from work! :)

Post Reply

Who is online

Users browsing this forum: No registered users and 55 guests