Welcome to %s forums

BrainModular Users Forum

Login Register

Script challenge of the day:master/slave encoder

I need help on a Patch
Post Reply
moody33
Member
Posts: 338
Contact:

Unread post by moody33 » 01 Mar 2011, 13:11

A special dedicace to 23fx23 and bsork :P ..and other script programmer of course.

Here is the script challenge of the day usiners !

Rules:

-Queue two incoming values in an array, where A is the master, and B the slave. Then sort array by increasing values, reject zeros at the beginning, resize the array, and send out array by increasing order with two outputs: A and B which have the same master/slave relationship they had at the input.

-Clear/reset button.

-A clock input to queue values.


optionnal :

-possibility to have more slaves values. Where A is the master, and B,C,D...(n) are the slaves.

-What you want.

Here is a patch showing the basic idea.

Image

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

Unread post by bsork » 01 Mar 2011, 22:14

At first I didn't understand a thing of what you meant by "master and slave", but now I think I've got it... Just to be sure: You want to queue incoming MIDI messages, and then output them sorted by code1 (CC number, Note number...) with the exception of any 0s in master(?).

Have I missed the point totally, or..?
Bjørn S

moody33
Member
Posts: 338
Contact:

Unread post by moody33 » 01 Mar 2011, 22:28

I'm sorry for my bad english Bsork! I do my best !

A master have one slave or several ones. It's like a good friend he always have with him, like a knife, a wife ( hooooo ! bad boy !) , a credit card or his mind ! So, Note number have always a slave called velocity. In our case Code 1 is the master and Code 2 is the slave. So if we queue a Code 1, it means that it have a Slave Code 2 with him, in his pocket :cool:. So, if we queue several master in an array, and randomize their order, we want to be sure that Slave A is exactly in the same place ( or array position) than Master A. Slave B in the same position than Master B and so on. so I think you got it and you don't missed the point !

The zero is an exception in my patch, that's why I ask for..but it's not an obligation !

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 02 Mar 2011, 00:24

it's not a script but a patch variation to get the clock stuff and little less process.
Image

moody33
Member
Posts: 338
Contact:

Unread post by moody33 » 02 Mar 2011, 14:31

hey,, finally you have submit your entry ! :lol: I will take a look as soon as possible;

moody33
Member
Posts: 338
Contact:

Unread post by moody33 » 02 Mar 2011, 18:51

Nice 23fx23. Using the patch ON/OFF is a good idea . I never think about it. And of course, less cpu than mine. thanks;

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

Unread post by bsork » 02 Mar 2011, 23:19

Here's a script with a master array and NUM_SLAVES slave arrays, where the master array can be sorted ascending or descending.

I haven't put in any queueing or clearing and things like that as I think that can be easily done with modules outside of the script. However, I've been thinking that something similar for MIDI messages might come in handy once in a while, but I won't do that right now.

I will try to make both a MIDI variety and a safer and more versatile version of this script (see the comments) in a few days and upload them as add-ons.

Here it is;

Code: Select all

CONST NUM_SLAVES = 2;

VAR pSorting : tParameter;
VAR pMaster : tParameter;
VAR pSlave : ARRAY[1..NUM_SLAVES] OF tParameter;

PROCEDURE Init;
   VAR i : Integer;
BEGIN  
   pSorting := CreateParam('sort order', ptListBox); SetIsOutput(pSorting, FALSE);
   SetListBoxString(pSorting, '"ascending","descending"');

   pMaster := CreateParam('master array', ptArray);
   SetMin(pMaster, 0); SetMax(pMaster, 255); // Min/Max values suitable for MIDI data

   FOR i := 1 TO NUM_SLAVES DO BEGIN
      pSlave[i] := CreateParam('slave array ' + IntToStr(i), ptArray);
      SetMin(pSlave[i], 0); SetMax(pSlave[i], 255);
   END;
END; // Init

PROCEDURE Callback(N:integer); 
   VAR i, j, k : Integer;
   VAR tmp : ARRAY[0..NUM_SLAVES] OF Single;
BEGIN
   // Checks of equal array lengths not implemented - could lead to out-of-range indices being used
   // Idea: Handle single or no value the same way eg the math modules do
   IF (trunc(GetValue(pSorting)) = 0) THEN BEGIN
      FOR i := 0 TO (GetLength(pMaster) - 1) DO
         FOR j := (i + 1) TO (GetLength(pMaster) - 1) DO
            IF (GetDataArrayValue(pMaster, i) > GetDataArrayValue(pMaster, j)) THEN BEGIN
               tmp[0] := GetDataArrayValue(pMaster, i);
               SetDataArrayValue(pMaster, i, GetDataArrayValue(pMaster, j));
               SetDataArrayValue(pMaster, j, tmp[0]);
               FOR k := 1 TO NUM_SLAVES DO BEGIN
                  tmp[k] := GetDataArrayValue(pSlave[k], i);
                  SetDataArrayValue(pSlave[k], i, GetDataArrayValue(pSlave[k], j));
                  SetDataArrayValue(pSlave[k], j, tmp[0]);
               END;
            END;
   END
   ELSE BEGIN
      FOR i := 0 TO (GetLength(pMaster) - 1) DO
         FOR j := (i + 1) TO (GetLength(pMaster) - 1) DO
            IF &#40;GetDataArrayValue&#40;pMaster, i&#41; < GetDataArrayValue&#40;pMaster, j&#41;&#41; THEN BEGIN
               tmp&#91;0&#93; &#58;= GetDataArrayValue&#40;pMaster, i&#41;;
               SetDataArrayValue&#40;pMaster, i, GetDataArrayValue&#40;pMaster, j&#41;&#41;;
               SetDataArrayValue&#40;pMaster, j, tmp&#91;0&#93;&#41;;
               FOR k &#58;= 1 TO NUM_SLAVES DO BEGIN
                  tmp&#91;k&#93; &#58;= GetDataArrayValue&#40;pSlave&#91;k&#93;, i&#41;;
                  SetDataArrayValue&#40;pSlave&#91;k&#93;, i, GetDataArrayValue&#40;pSlave&#91;k&#93;, j&#41;&#41;;
                  SetDataArrayValue&#40;pSlave&#91;k&#93;, j, tmp&#91;0&#93;&#41;;
               END;
            END;
   END;
END;// Callback procedure
Bjørn S

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 02 Mar 2011, 23:51

woa can't wait to test and analyse that script!!! thx bsork, i failed the sort function so used a module and
decided to chunked the process in 3 different scripts to reuse in other parts of my stuff.
queue_ndatas in one array, reorganise the array, extract datas sub arrays, sort master array, link slaves to master new positions.
here it's made for 4 datas, could be extended but need variable editing and few manual wiring..
less sexy than a single script by the way, but still, submit my entry :)
Image
the patch here

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

Unread post by senso » 03 Mar 2011, 00:01

whaooo+++

moody33
Member
Posts: 338
Contact:

Unread post by moody33 » 03 Mar 2011, 01:10

Waouuuu !

Thanks a lot Bsork and 23fx23 !
This is awesome ! And this topic seems to become far from the the basic idea !
You are masters !

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

Unread post by bsork » 03 Mar 2011, 08:31

Nice one, 23fx23!

The sorting is just a simple "bubble sort" if you want to check it out - probably one if of the simplest sorting methods there is. I am definitely no expert on these things, and just copied it from an example I had lying around and added the descending variety. Being mostly an Oracle database programmer, I'm used to write "ORDER BY <one-or-more-fields>" without worrying at all about how it's being done.
Bjørn S

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 03 Mar 2011, 10:21

i will definitely check it tonight!! , i had googled and found several methods but i had pb understing them. this will be a perfect subpart in my patch, as all the previous operations (queue,extract) are as you pointed much easier to do for me, but could then feed your script for the dual sort function in a more elegant way than mine (cheating by encapsuling IDs in decimal part :rolleyes:) version. so let's activate the brain and check 'the bubble sort' alg ;)

edit: i will try to hack your script by myself, but if you have time, (no hurry at all!) i would enjoy a 'simpler' script
that would be a 'sort array' function, but would output 2 arrays, one being the sorted input, the other being a same
length array that output the new positions of original steps. i have then already a 2nd script to sort N slave regarding the IDs.

(I usually try to do all in one scripts but start to wonder if would be not better to make a database of simpler ie extended Array functions, to quick-prepatch and debug via set of primitives scripts, then combine once the more specific wanted behaviours are ok, wonder if could then find a workable way to transform then those scripts to reusable 'functions' in scripts, like what u said about oracle, something like 'arrayOut:= SORT(ArrayIn,ascending); or arrayout:= incrFill(ArrayIn,0,1) to fill an array like a ramp ect..

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 03 Mar 2011, 11:44

hey bsork, i had a look and strart to decipher, great script!!!! didn't thougth we could make/read/acesss booth in/outs, i always
was creating in and outs, look cool easier technique.

i just think i found a slight bug: for slaves process, in booth
SetDataArrayValue(pSlave[k], j, tmp[0]);
should be SetDataArrayValue(pSlave[k], j, tmp[k]);


at least work like a charm when changed ;)
forget my previous request, i should be able to get it via tweaking the script. cool

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

Unread post by bsork » 03 Mar 2011, 12:00

Thanks for finding the bug - I was a bit lazy when testing, I must admit. Typical error when using copy/paste...:/

About the combined input/output thingie, this is the first time I've done it that way myself. I just thought I should try if it could work, and it did. Less coding needed, and maybe some CPU cycles spared, unless there's a similar copying from in to out going on behind the scenes.

Hopefully there aren't any possible, hidden pitfalls in doing it that way. Any comments, Senso?
Bjørn S

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 03 Mar 2011, 17:56

hey moody, if ya want i ve combined and optimized my patch flows redundant process with bsork script in a single script.
so it should meet the all the requested features of challenge ;)
CONST MAX_DATAS = 4; // NB of datas, first is master
var Queue, clear, arrayin : Tparameter;
VAR pSorting : tParameter;
VAR pMaster : tParameter;
VAR pSlave : ARRAY[0..MAX_DATAS-1] OF tParameter;
VAR mode, counter, NB_DATAS: integer;
////////////////////////////////////
PROCEDURE Init;
VAR i : Integer;
BEGIN
ArrayIn := CreateParam('DatasIN', ptArray); setisOutput(ArrayIN,false); setMax(ArrayIN,255); setMin(ArrayIN,0);
pSorting := CreateParam('sort order', ptListBox); SetIsOutput(pSorting, FALSE); SetListBoxString(pSorting, '"no sort","ascending","descending"');
Queue := CreateParam('Queue', ptButton); setisOutput(Queue,false);
Clear := CreateParam('Clear', ptButton); setisOutput(Clear,false);
FOR i := 0 TO MAX_DATAS-1 DO BEGIN
pSlave := CreateParam('arrayOut ' + IntToStr(i), ptArray); SetMin(pSlave, 0); SetMax(pSlave, 255);
setisInput(pSlave, false);
END;
counter:=0;
END; // Init
///////////////////////////////////
PROCEDURE Callback(N:integer);
BEGIN
if (n>-1) then begin
Mode:= trunc(getvalue(pSorting));
if (n=clear) and (getValue(clear)=1) then CLEAR_DATAS;
if (n= queue) and (getvalue(queue)=1) then QUEUE_DATAS;
if MODE > 0 then SORT_DATAS;
end;
END;// Callback procedure
//////////////////////////////////
Procedure CLEAR_DATAS;
var i: integer;
Begin
counter:=0; // reset length counter of queue fn
for i:= 0 to MAX_DATAS-1 do begin
setLength(pSlave, 0);
end;
end;
/////////////////////////
Procedure QUEUE_DATAS;
var i: integer;
begin
NB_DATAS:= MinI(getlength(ArrayIn),MAX_DATAS);
counter:= counter + 1;
for i:=0 to NB_DATAS-1 do begin
setLength(pSlave,counter);
setDataArrayValue(pSlave,counter-1,getdataArrayvalue(ArrayIn,i));
end;
end;
/////////////////////////////////////////////////////
PROCEDURE SORT_DATAS;
VAR i, j, k, L : Integer;
var A, B , C : single;
var NEEDSORT: Boolean;
VAR tmp : ARRAY[0..MAX_DATAS-1] OF Single;
BEGIN
L:= GetLength(pSlave[0]);
FOR i := 0 TO L-1 DO
FOR j := (i + 1) TO L-1 DO begin
A:= GetDataArrayValue(pSlave[0], i);
B:= GetDataArrayValue(pSlave[0], j);
C:= A-B;
NEEDSORT:= ((C > 0) AND (MODE=1)) OR ((C < 0) AND (MODE=2));
IF NEEDSORT THEN BEGIN
tmp[0] := GetDataArrayValue(pSlave[0], i);
SetDataArrayValue(pSlave[0], i, GetDataArrayValue(pSlave[0], j));
SetDataArrayValue(pSlave[0], j, tmp[0]);
FOR k := 1 TO NB_DATAS-1 DO BEGIN
tmp[k] := GetDataArrayValue(pSlave[k], i);
SetDataArrayValue(pSlave[k], i, GetDataArrayValue(pSlave[k], j));
SetDataArrayValue(pSlave[k], j, tmp[k]);
END;
END;
END;
END;
////////////////////////////////////////

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

Unread post by nay-seven » 03 Mar 2011, 17:59

Any chance to have a generic patch to illustrate all this great collaborative work...?

moody33
Member
Posts: 338
Contact:

Unread post by moody33 » 03 Mar 2011, 18:50

Definitely great script 23fx23 !

If I understand correctly, If i need more or less slaves, I have only to change this parameter : CONST MAX_DATAS = 4 ??? The script will then create the required number of output isn't it? Nothing else to change isn't it?

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 03 Mar 2011, 18:57

normally yes ;) , but you have to recompile the script then.

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 03 Mar 2011, 23:19

@ nay, i didn't found yet personally a good use of the sort function (im sure there are), but extended on the queue n data ideas ive made this little patch called "anything recorder".

like it's name describes it can record a set of datas coming from any items with various ranges, ie fader, xy, lisboxes ect from the patch and replay/recall the datas quite easily by using busses. here can rec 8 datas and can be extended to 16, or more with a bit of wiring.

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

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

Unread post by nay-seven » 03 Mar 2011, 23:44

Great ! that's a cool example 23fx !
could be really useful !,
btw, when you say " don't rec too long " what will be the correct limit for you...?
and an other question : is there a way to store the record with the patch ..?

moody33
Member
Posts: 338
Contact:

Unread post by moody33 » 04 Mar 2011, 00:17

@nay If you want to store the record with the patch, you can simply use a "store array" (or several? ) script in the array folder of usine. I haven't the time to deeply look at the 23fx23's patch however, so you have to find where to store the value !

@23fx23 You have a lot of good ideas ! Excellent !

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 04 Mar 2011, 10:57

thx guys, btw that wasn't the original idea (more storing/recall midi mess, but bsork should make a better job for this ;) )

@ nay, i don't really know the limit, depends on precision and nb of datas, CPU and ram. but i think it can handle a descent amount of time.

for exemple by default it sample 8 datas each 32 blocs (at prec of 32). So the arrays size increment of 8 each 100ms (roughly for a 128 buffer). I wouldn't try to go with memory array of >16000 size, wich make roughly (16000/8= 2000 cycles of 100ms or 200 seconds, about 3mn by default). to know the data lenght you can see it on the fader when recording, (have to multiply by N datas). It could handle more but CPu/ram could suffer, best is to try and find the bad limit...
precision means it will sample the x datas each n blocs. a too low gap beetween each sampling could lead to very big arrays very quickly, try to remain a 16 or 32, unless you record very fast changes or need hi precision, then can go to 8 or less,
but proportionally should reduce the recording time as well. i will try to instestigate and convert this as a more secured addon with adapted limited recording time if got time a bit later..

for the Store array it should work if i use the new option senso imlemented a while back about storing arrays in scripts; i will have a look. then the preset manager could be also able to store/recall different recs.im on it ;)

this just triged me an idea:
a variance could be to use it as a 'manual snaphots manager'. it would have the benefit of being able to store/recall huge amount of presets for various items located anywhere at different places in the workspace, without heving to copy them in same subpatch first, and act as kind of a 'SubPreset' Manager, the normal preset manager could tehorically recall ie 16 sets or memory arrays of 512 'subpresets'.
i also suspect it could react faster than ie conductor or PM in certain cases as it will apply the value in a bloc accurate way,
for such automations or sequenced applications. the cherry on the cake would be an utility to smooth morph between sets.
kind of manual 'sub conductor'. dk if im clear lol

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 04 Mar 2011, 21:04

@ nay, im a bit ot now,

but if you want there is a more sexy data recorder to test with various enhancement and fixed bugz, ( fixed ranges and other)
now the recordings are saved with the workspace and recallable via the preset manager.
Also added a sync system and display and changed the sampling rate frequency to more musical uses,
precision is now in nb of steps per bar. 32 or 64 default give great resuls. same circular buffer recording type as my previous addons. dlike some reviews before posting as add-on maybe if worth ?

Image
rec_anything_A5

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

Unread post by nay-seven » 05 Mar 2011, 00:37

great !
gone to test this baby tomorrow !
and yes it's could be a good addon

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

Unread post by nay-seven » 05 Mar 2011, 19:38

Just a thought : maybe a more concrete example could be cool..?
here a little one ( use the 5.50.45, cause .47 has a little bug with the grain sampler )

Download

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 05 Mar 2011, 19:56

nice. cool ex. yup you are right.

yesterday i fighted and implemented the shift/scale/roll function of my vst automations addon, but i would need, and also to get a correct vizualization range, to pick also min/max values of wanted modules, studing the best ways not too boring for user...

User avatar
cmodica
Member
Posts: 606
Location: Pélissanne
Contact:

Unread post by cmodica » 15 Mar 2011, 20:10

I will test it as soon as possible. It seems to be very interesting for recording automation in Usine.:)

Is it possible to record some parameters without synchronisation ?
For exemple record parameter changes during ''x sec'' and when i stop recorded play the same ''x sec'' automation in loop mode ?

23fx23
Member
Posts: 2545
Contact:

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

Hi cmodia, in fact i worked very hard since last version on a new much powerful and clean/easy version that should be soon a futur addon. i just fail a last tricky part where i dlike my script to auto-detect the user has changed param 1 and 4 for exemple, to
rec only those param and keep the other automations playing, being unafected.. a bit more tricky than i thought to be compatible
with midi remote without bothering engaging independant swichs first, but im pretty sure it can work. im neaaahh :o

for now it can rec up to 16 datas, each are synced only , but each can have an independant lenght from 1/8 to 32 bars,
I will try to find a way to deal with a non-synced 'loop' option.

User avatar
cmodica
Member
Posts: 606
Location: Pélissanne
Contact:

Unread post by cmodica » 17 Mar 2011, 14:51

Hi, i ,am very impress and your future addon will be a master piece !!
I am sure that it should be a hard job ...

Tank you very much for your help. Usine will be definitively the best music live tool if we can record automation on the fly during a performence !

r.erorr
Member
Posts: 405
Location: Latvia
Contact:

Unread post by r.erorr » 30 Jan 2012, 22:23

Hi... Amazing tool !
1. does it work only when sequencer is turned on?
2. Can I record Matrix behavior with this data recorder?

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 31 Jan 2012, 02:18

you pick up back oldies lol,

if you speak about the data recorder, the final version is somewhere in addon, but i had gone too complex with too much stuff, i should have redone a simpler version, but i never found the time to do so... i don't remember sequencer was needed, do you mean master play? not sure i understand what you mean by sequencer ..
2) no sadly it was able to store/replay several but only singles values. to replay matrix would need an array version, wich would be much more cpu intensive and a bit more complex to patch. one trik is sampler can record array (audio is array of buffer size), so if matrix got inferior size you can re-size the array to buffer size and rec/replay with a sampler. i will try to think about an array version, but im really affraid i won't have time so i can't promise. there are so much patch in progress i don't find time to finish :( too much work

r.erorr
Member
Posts: 405
Location: Latvia
Contact:

Unread post by r.erorr » 31 Jan 2012, 13:42

Of course, I don't want to waste your time with scripting, because I mainly solve matrix recording [at least in this case], but without visual feedback. maybe there simple way to display feedback on another matrix? I you could look and say that its really not possible without scripting, I will stop my experiments :)
http://www.sensomusic.com/forums/upload ... ctorty.wkp

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 31 Jan 2012, 14:07

yup, i will check the wsp an tell ya

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

Unread post by nay-seven » 31 Jan 2012, 15:20

r.error : I've test a different method, far to be perfect , but can be a start..?
Download

r.erorr
Member
Posts: 405
Location: Latvia
Contact:

Unread post by r.erorr » 31 Jan 2012, 15:41

Thanks Nay, for helping... first I will tray to understand your version, and replay later

r.erorr
Member
Posts: 405
Location: Latvia
Contact:

Unread post by r.erorr » 31 Jan 2012, 16:58

nay-seven wrote:r.error : I've test a different method, far to be perfect , but can be a start..?
Download
Hey, Nay... I made some corrections, and now it looks very good. I would newer tough about using MIDI, but it somehow works. Just one question about synchro playback. Now it is that every loop is identical, but I would like to have as it was originally in my patch -bit of random. I think that tempo is separate from trajectory loop, therefore every loop little different, and sound like endless rhythm.

http://www.sensomusic.com/forums/upload ... t_edit.pat

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

Unread post by nay-seven » 31 Jan 2012, 17:58

glad you find it useful,
here a quick test, with pattern choice ( as we use the piano roll..) and a little of swing and random
( you can also use the pitch inlet to add random too, many ways, as always with Usine )
Download

User avatar
GDLive
Member
Posts: 133
Location: Landes / Sud Ouest / France
Contact:

Unread post by GDLive » 02 Feb 2012, 21:36

whooo, looks very headaching collaborative work...:cool:

I'm sure this patch could have solve previous patching problems, but don't remember really where :rolleyes:

Congrats to the team !

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 04 Feb 2012, 19:49

ive looked at your wksp r.error, nic (think it could be optimized, not sure i understand the unpack array, you could drive directly the cell nb to be reced no? but well if it works ;) ) l added few modules that makes visual feedback normally:
mx visual feedback


edit: here is an i feel better/optimized version, just 1mx instead of 2 and no unpack but directly rec cell nb.
mx optimized fb

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 04 Feb 2012, 20:54

hey ive just looked at your patch nay, it's cool idea for the patern stuff well done!

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

Unread post by nay-seven » 04 Feb 2012, 21:22

thanks 23fx, your's is cool too , will use it for sure !

I've a midi version on the way , thanks r.erorr for the inspiration: Download

r.erorr
Member
Posts: 405
Location: Latvia
Contact:

Unread post by r.erorr » 05 Feb 2012, 19:47

23fx23 wrote:ive looked at your wksp r.error, nic (think it could be optimized, not sure i understand the unpack array, you could drive directly the cell nb to be reced no? but well if it works ;) ) l added few modules that makes visual feedback normally:
mx visual feedback


edit: here is an i feel better/optimized version, just 1mx instead of 2 and no unpack but directly rec cell nb.
mx optimized fb
Hi, 32Fx32
1. I can't get rid of this [-1] witch is between calls. therefore i used Unpack Array. but now I see your solution, thanks!
2. Thanks fore your version of visual feedback. But just one question, why the Matrix is so CPU hungry?
I tried to make visual feedback through color input, but the same result - up 32% CPU only for one matrix... hmmmm? And I noticed that CPU rises depending on speed[Of course I can use reasonable speed, but its tricky anyway].
Then I tried to synchronize Matrix with XY panel movements for visualisation using colums and row out, and CPU is ok, but then I can't use Nay sugestion - Piano roll as recorder, witch is more correct and effective here, than XY pad recorder
3. Thaks for helping! :)

r.erorr
Member
Posts: 405
Location: Latvia
Contact:

Unread post by r.erorr » 05 Feb 2012, 20:16

nay-seven wrote:thanks 23fx, your's is cool too , will use it for sure !

I've a midi version on the way , thanks r.erorr for the inspiration: Download
Hi, Nay... intresting! there is multiple playback on overdub mode.

Post Reply

Who is online

Users browsing this forum: No registered users and 22 guests