Automation

View: New views
9 Messages — Rating Filter:   Alert me  

Automation

by Neels Janosch Hofmeyr :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

Btw, from now on, find updated versions of Automation at
http://hofmeyr.de/neels/software/automation

I'm pretty confident that it works cross-platform by now.
New versions might trickle in as improvements are made.

I'll try make this a quark when I have time to bother.

~Neels



signature.asc (196 bytes) Download Attachment

Re: Automation

by TomD-4 :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

I've tried it and first I would say thank you for this good idea,  
which works well for a moment, but often freezes SC3 which I have to  
force quit...

Le 12 oct. 08 à 07:48, Neels Janosch Hofmeyr a écrit :

> Btw, from now on, find updated versions of Automation at
> http://hofmeyr.de/neels/software/automation
>
> I'm pretty confident that it works cross-platform by now.
> New versions might trickle in as improvements are made.
>
> I'll try make this a quark when I have time to bother.
>
> ~Neels
>


_______________________________________________
sc-users mailing list

info (subscribe and unsubscribe): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/

Re: Automation / Presets

by Andrzej Kopeć :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

Maybe slightly OT, but does exist something to handle presets in  
similar way? When one could register or dock gui elements to some  
controller object, then save a number of presets, and (then) invoke  
them with gui or programatically? (I think there is something similar  
in Max, but I'm not shure).
Just curious :)

ak


Wiadomość napisana w dniu 2008-10-13, o godz. 23:15, przez TomD:

> I've tried it and first I would say thank you for this good idea,  
> which works well for a moment, but often freezes SC3 which I have to  
> force quit...
>
> Le 12 oct. 08 à 07:48, Neels Janosch Hofmeyr a écrit :
>
>> Btw, from now on, find updated versions of Automation at
>> http://hofmeyr.de/neels/software/automation
>>
>> I'm pretty confident that it works cross-platform by now.
>> New versions might trickle in as improvements are made.
>>
>> I'll try make this a quark when I have time to bother.
>>
>> ~Neels
>>
>
>
> _______________________________________________
> sc-users mailing list
>
> info (subscribe and unsubscribe): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/

pozdrawiam,
Andrzej Kopeć




_______________________________________________
sc-users mailing list

info (subscribe and unsubscribe): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/

Re: Automation / Presets

by monkey fist :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

here's a preset class i wrote a while ago.
i just tested and it seems to still work pretty well.
also attached is an example of its use.
needs some cleaning up but otherwise...

give it a try and let me know if it works for you,
-michael







[GUIPreset_example.rtf]

{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350
{\fonttbl\f0\fnil\fcharset0 Monaco;}
{\colortbl;\red255\green255\blue255;\red0\green0\blue191;\red96\green96\blue96;\red191\green0\blue0;
}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural

\f0\fs18 \cf0 \
(\
w = \cf2 SCWindow\cf0 .new(\cf3 "Preset"\cf0 , \cf2 Rect\cf0 (
\fs20 500, 400, 430, 215
\fs18 )); \cf4 //new window\cf0 \
~preset = \cf2 GUIPreset\cf0 .new(\cf3 "giffer"\cf0 );\cf4 //new preset with the name, "giffer"\cf0 \
~preset.gui(w, \cf2 Point\cf0 (150,150));\cf4 //make a gui frame for the preset and put it in the window\cf0 \
\
\
4.do(\{\cf2 arg\cf0  i;\
        var a; \
        a = \cf2 SCSlider\cf0 (w, \cf2 Rect\cf0 (10, 23*i, 100, 20));\
        ~preset.add(a); \cf4 // add each SCSlider to the preset\cf0 \
\});\
\
g = \cf2 SC2DSlider\cf0 (w, \cf2 Rect\cf0 (130, 0, 100, 90));\
~preset.add(g); \cf4 //add this thing\cf0 \
\
\cf4 //and this\cf0 \
\cf2 ~preset.add(SCMultiSliderView\cf0 (w, \cf2 Rect\cf0 (232, 0, 100, 70))\
        .value_([0.1,0.2,0.3,0.4,0.5,0.6])\
);\
                \
\
10.do(\{\cf2 arg\cf0  i;\
        ~preset.add(\cf2 SCButton\cf0 (w,\cf2 Rect\cf0 (132+(i*20), 100, 15, 15))\
                .states_([\
                        [\cf3 "1"\cf0 , \cf2 Color\cf0 .black, \cf2 Color\cf0 .white],\
                        [\cf3 "2"\cf0 , \cf2 Color\cf0 .blue, \cf2 Color\cf0 .red],\
                        [\cf3 "3"\cf0 , \cf2 Color\cf0 .red, \cf2 Color\cf0 .yellow]\
                ])\
        );\
                \cf4 //and these\cf0 \
\});\
\
w.front;\
\
)\
\
\
How to:\
hit "S" button on the preset gui to store onto whatever number is on the menu next to it.\
right now it should be a one\
menu will automatically increment by 1 for the next time you store\
\
move some sliders around.\
\
hit the "S" button a second time and you should now have two presets stored, 0 and 1\
\
check this by pushing the "L" button (load) with 0 and 1 in the menu next to it.\
this should recall the presets you just stored\
\
below these buttons is the interpolation slider that will interpolate between the 2 presets.\
set the left hand menu to 0 and the right hand menu to 1\
move the slider in the middle and you should see all of the sliders moving from preset 1 to 2.\
\
\
\
\cf4 //methods\cf0 \
~preset.controlArray \cf4 //this is where they are\cf0 \
~preset.detectIndex(g);  \cf4 //find the index of the MultiSlider reference in the preset \cf0 \
~preset.save; \cf4 //save state makes the first file and appends a 0\cf0 \
\cf4 //move the sliders around\cf0 \
~preset.save; \cf4 //save state makes the second file and appends a 1, and so on\cf0 \
~preset.load(0); \cf4 //now load the first\cf0 \
~preset.load(1); \cf4 //now load the second\cf0 \
~preset.save(0); \cf4 //write over the first preset\cf0 \
~preset.save(1); \cf4 //write over the secondpreset~preset.presetName;\cf0 \
~preset.presetName \cf4 //shows the name of the preset file\cf0 \
~preset.filename \cf4 //shows the currently loaded preset\cf0 \
~preset.clear \cf4 //remove all objects from the preset's \cf0 \
\
}





On Oct 13, 2008, at 3:09 PM, Andrzej Kopeć wrote:

> Maybe slightly OT, but does exist something to handle presets in  
> similar way? When one could register or dock gui elements to some  
> controller object, then save a number of presets, and (then) invoke  
> them with gui or programatically? (I think there is something  
> similar in Max, but I'm not shure).
> Just curious :)
>
> ak
>
>
> Wiadomość napisana w dniu 2008-10-13, o godz. 23:15, przez TomD:
>
>> I've tried it and first I would say thank you for this good idea,  
>> which works well for a moment, but often freezes SC3 which I have  
>> to force quit...
>>
>> Le 12 oct. 08 à 07:48, Neels Janosch Hofmeyr a écrit :
>>
>>> Btw, from now on, find updated versions of Automation at
>>> http://hofmeyr.de/neels/software/automation
>>>
>>> I'm pretty confident that it works cross-platform by now.
>>> New versions might trickle in as improvements are made.
>>>
>>> I'll try make this a quark when I have time to bother.
>>>
>>> ~Neels
>>>
>>
>>
>> _______________________________________________
>> sc-users mailing list
>>
>> info (subscribe and unsubscribe): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>
> pozdrawiam,
> Andrzej Kopeć
>
>
>
>
> _______________________________________________
> sc-users mailing list
>
> info (subscribe and unsubscribe): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


GUIPreset.sc (7K) Download Attachment

Re: Automation / Presets

by Neels Janosch Hofmeyr :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

would be pretty easy to adapt Automation to do that, really. Basically just
remove all the timing stuff and add a call that saves a snapshot on call
(which I was going to add anyway).

Andrzej Kopeć wrote:

> Maybe slightly OT, but does exist something to handle presets in similar
> way? When one could register or dock gui elements to some controller
> object, then save a number of presets, and (then) invoke them with gui
> or programatically? (I think there is something similar in Max, but I'm
> not shure).
> Just curious :)
>
> ak
>
>
> Wiadomość napisana w dniu 2008-10-13, o godz. 23:15, przez TomD:
>
>> I've tried it and first I would say thank you for this good idea,
>> which works well for a moment, but often freezes SC3 which I have to
>> force quit...
>>
>> Le 12 oct. 08 à 07:48, Neels Janosch Hofmeyr a écrit :
>>
>>> Btw, from now on, find updated versions of Automation at
>>> http://hofmeyr.de/neels/software/automation
>>>
>>> I'm pretty confident that it works cross-platform by now.
>>> New versions might trickle in as improvements are made.
>>>
>>> I'll try make this a quark when I have time to bother.
>>>
>>> ~Neels
>>>
>>
>>
>> _______________________________________________
>> sc-users mailing list
>>
>> info (subscribe and unsubscribe):
>> http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>
> pozdrawiam,
> Andrzej Kopeć
>
>
>
>
> _______________________________________________
> sc-users mailing list
>
> info (subscribe and unsubscribe):
> http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>


signature.asc (196 bytes) Download Attachment

Re: Automation

by Neels Janosch Hofmeyr :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message



TomD wrote:
> I've tried it and first I would say thank you for this good idea, which
> works well for a moment, but often freezes SC3 which I have to force
> quit...

*freezes* SC3 !?
Wow, that's weird.

I guess some sc concurrency/efficiency guru should take a closer look at the
particular implementation. I did find some stuff I thought I fixed, but
apparently my use of Routine is not ideal.

I'd be grateful for any suggestions on how to do more reliable timing and
scheduling...

>
> Le 12 oct. 08 à 07:48, Neels Janosch Hofmeyr a écrit :
>
>> Btw, from now on, find updated versions of Automation at
>> http://hofmeyr.de/neels/software/automation
>>
>> I'm pretty confident that it works cross-platform by now.
>> New versions might trickle in as improvements are made.
>>
>> I'll try make this a quark when I have time to bother.
>>
>> ~Neels
>>
>
>
> _______________________________________________
> sc-users mailing list
>
> info (subscribe and unsubscribe):
> http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>


signature.asc (196 bytes) Download Attachment

Re: Automation

by James Harkins-2 :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message


On Oct 14, 2008, at 6:10 PM, Neels Janosch Hofmeyr wrote:
*freezes* SC3 !?
Wow, that's weird.

I guess some sc concurrency/efficiency guru should take a closer look at the
particular implementation. I did find some stuff I thought I fixed, but
apparently my use of Routine is not ideal.

I'd be grateful for any suggestions on how to do more reliable timing and
scheduling...

Since nobody chimed in... making SC freeze is pretty easy to do. Virtual machine threads are not preemptive, so if you have a routine that never yields (or an infinitely-running routine that yields 0 as the time until the next 'awake'), SC will go into an infinite loop.

A concurrency/efficiency guru is probably not needed -- I'd say the first step is to check all your routines and see if there is any possibility, even a slight one, of 0 timings being returned.

The realtime-priority clocks (SystemClock, TempoClock) are reliable -- I think it's the server timing help file that explains more about how they use "logical time" to keep accurate time.

hjh


: H. James Harkins

: jamshark70@...

: http://www.dewdrop-world.net

.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:


"Come said the Muse,

Sing me a song no poet has yet chanted,

Sing me the universal."  -- Whitman



Re: Automation

by Neels Janosch Hofmeyr :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

Thanks, James,

though I don't know what to do yet, I'll try to alleviate the problem by
reading and thinking some more. Btw, since, I also got "the scheduler is
full" messages running my Automation, so I must have broken it.

I am/was pretty busy on the Subversion Developer Summit, but it ends tonight
and I might get some time to review Automation soon.

~Neels


James Harkins wrote:

>
> On Oct 14, 2008, at 6:10 PM, Neels Janosch Hofmeyr wrote:
>> *freezes* SC3 !?
>> Wow, that's weird.
>>
>> I guess some sc concurrency/efficiency guru should take a closer look
>> at the
>> particular implementation. I did find some stuff I thought I fixed, but
>> apparently my use of Routine is not ideal.
>>
>> I'd be grateful for any suggestions on how to do more reliable timing and
>> scheduling...
>
> Since nobody chimed in... making SC freeze is pretty easy to do. Virtual
> machine threads are not preemptive, so if you have a routine that never
> yields (or an infinitely-running routine that yields 0 as the time until
> the next 'awake'), SC will go into an infinite loop.
>
> A concurrency/efficiency guru is probably not needed -- I'd say the
> first step is to check all your routines and see if there is any
> possibility, even a slight one, of 0 timings being returned.
>
> The realtime-priority clocks (SystemClock, TempoClock) are reliable -- I
> think it's the server timing help file that explains more about how they
> use "logical time" to keep accurate time.
>
> hjh
>
>
> : H. James Harkins
> : jamshark70@...
> : http://www.dewdrop-world.net
> .::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:
>
> "Come said the Muse,
> Sing me a song no poet has yet chanted,
> Sing me the universal."  -- Whitman
>
>


signature.asc (196 bytes) Download Attachment

Re: Automation

by James Harkins-2 :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

On Oct 16, 2008, at 10:36 PM, Neels Janosch Hofmeyr wrote:

Thanks, James,

though I don't know what to do yet, I'll try to alleviate the problem by
reading and thinking some more. Btw, since, I also got "the scheduler is
full" messages running my Automation, so I must have broken it.

Sounds like a lot of functions are being scheduled very quickly. This doesn't happen when running a Routine, btw, because the Routine exists in the queue only once. When it wakes up, it's popped out of the queue and then put back in when the delta value is returned.

But if you're doing:

Routine({
100.do({ |i|
SystemClock.sched(2, { i.postln; nil });
0.01.wait;
});
}).play;

... that will put 100 functions into the queue in the first second, and then they wake up one by one after that. The same result could be obtained without flooding the queue:

Routine({
2.0.wait;
100.do({ |i|
i.postln;
0.01.wait;
});
}).play;

I haven't looked closely at automation, and won't have time to in the near future -- something to consider anyway.

PriorityQueue is a good way to merge time sequences -- see Ppar for a really brilliant, and very practical, usage.

Are you using any data thinning strategies? It might not be necessary to save every controller nudge.
hjh


: H. James Harkins

: jamshark70@...

: http://www.dewdrop-world.net

.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:


"Come said the Muse,

Sing me a song no poet has yet chanted,

Sing me the universal."  -- Whitman


LightInTheBox - Buy quality products at wholesale price!