Re: [PD] Array that scrolls from right to left

2009-02-24 Thread Sebastien Lelong
Hi Frank, hi guys,

Many, many thanks for your explanation and your example ! I've finally
understood how to use [trigger] objects and store value in a [float] (I have
to admit I needed quite a lot of time, a paper and a pen: I must be very
slow thinking in Pd :)). Indeed, a nice exercise.

I have one question though (not related to [trigger]). In your example, as
in Martin's, you use $0-a16 to name the array. I understand $0 is used when
building an abstraction and creating multiple instances of this abstraction.
My question is how can I configure this array, from the parent (from the
patch using the abstraction) ? For instance, I'd like to add xticks,
ylabel, etc... I usually use a message, like:
_
[array1 ylabel -1 0 1 (

but the same with $0-a16 obsviously doesn't work, since $0 is not known (I
understand it's a counter incremented at each creation). Is this possible to
do this ?


Cheers,
Seb


Hallo,
 Sebastien Lelong hat gesagt: // Sebastien Lelong wrote:

  Thanks for your help. I'm getting things that kind of scroll...
 building
  an horrible patch :) Some values are random, I guess I have a problem
 when
  access extremities of the array. I'm sure there's something simpler,
  probably using trigger, but I can't figure out how I could use a trigger
  here. Could you give one last hint ? I guess I need to learn how to
 think
  pure data...

 Indeed: Understanding triggering and execution order brings you much
 closer to thinking in Pd. There are only two things to remember: The
 left inlet of (most) objects is hot, the right is cold and lets you
 use an object as a storage container.

 OTOH the right outlet of (most) objects fires before the left one.
 This holds especially true for the [trigger] object whose main purpose
 is to control the order in that your patch cords get activated.

 Both facts are nicely combined in the scrolling table solution in the
 attached patch. The top [trigger] object shows how sometimes in Pd you
 have to think far ahead: Its right outlet stores a number in a float
 object below that gets used much later.

 The lower trigger object (abbreviated as [t ...]) shows another common
 idiom: It's followed by crossed patch cords. You will often see this
 when something is stored for a moment and the previously stored value
 is used instead.

 Anyway the attachement shouldn't be to hard to folllow with its
 comments, but feel free to ask any questions. Getting it is
 important here. :)

 Ciao
 --
  Frank BarknechtDo You RjDj.me?  _ __footils.org__

 ___
 Pd-list@iem.at mailing list
 UNSUBSCRIBE and account-management -
 http://lists.puredata.info/listinfo/pd-list




-- 
Sébastien Lelong
http://www.sirloon.net
http://sirbot.org
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-24 Thread cyrille henry
hello,

have you tried to look at mapping/timeroll object.
it's exactly what franck describ...
cyrille


Sebastien Lelong a écrit :
 Hi Frank,
 
 
 Thanks for your help. I'm getting things that kind of scroll... 
 building an horrible patch :) Some values are random, I guess I have a 
 problem when access extremities of the array. I'm sure there's something 
 simpler, probably using trigger, but I can't figure out how I could use 
 a trigger here. Could you give one last hint ? I guess I need to learn 
 how to think pure data...
 
 Anyway, thanks again.
 
 Cheers,
 Seb
 
 
 
 Hallo,
 Sebastien Lelong hat gesagt: // Sebastien Lelong wrote:
 
   I've recently discovered Pure Data as versatile platform I could
 use to
   build a robotic GUI. The idea is to collect data from a robot,
 send it to an
   OSC (open source control) server, get the data in pd~ and deal
 with it. One
   important aspect would be to plot data, in real-time, so the
 graph scrolls
   from right to left, and data is appended to the end of array
 (right) (well,
   I hope what I write is understandable...).
  
   So far so good, I've been able to build all the OSC part, and
 even plot
   things in a array in pd~, but I can only find a way to plot data
 from left
   to right, and when array's end is reached, clear it and start
 from beginning
   again. In other words, I can't make it scroll...
 
 One simple way to make it scroll would be to use [list-lastx
 TABLESIZE] from the [list]-abs collection. Just prepend a 0 to the
 outgoing list and send it to a receiver named after the table like this:
 
  [table DATA 16]
 
  [r ROBOT]
  |
  [list-lastx 16]
  |
  [list prepend 0]
  |
  [s DATA]
 
 Alternatively do it manuall. The basic algorithm is this:
 
 If a new ROBOT-float comes in store it. Then start a loop over the table
 where you
 
 1) read out the current element with [tabread]
 2) store it in the right inlet of a [float]
 3) write the new value into the table with [tabwrite]
 4) increment your counter
 5) repeat using the float stored in 2) as the new value.
 
 This is a good excercise to get familiar with the [trigger] object and
 Pd's execution order.
 
 Ciao
 --
 Frank
 
 ___
 Pd-list@iem.at mailto:Pd-list@iem.at mailing list
 UNSUBSCRIBE and account-management -
 http://lists.puredata.info/listinfo/pd-list
 
 
 
 
 -- 
 Sébastien Lelong
 http://www.sirloon.net
 http://sirbot.org
 
 
 
 
 ___
 Pd-list@iem.at mailing list
 UNSUBSCRIBE and account-management - 
 http://lists.puredata.info/listinfo/pd-list

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-24 Thread Frank Barknecht
Hallo,
Sebastien Lelong hat gesagt: // Sebastien Lelong wrote:

 I have one question though (not related to [trigger]). In your example, as
 in Martin's, you use $0-a16 to name the array. I understand $0 is used when
 building an abstraction and creating multiple instances of this abstraction.
 My question is how can I configure this array, from the parent (from the
 patch using the abstraction) ? For instance, I'd like to add xticks,
 ylabel, etc... I usually use a message, like:
 _
 [array1 ylabel -1 0 1 (
 
 but the same with $0-a16 obsviously doesn't work, since $0 is not known (I
 understand it's a counter incremented at each creation). 

Correct!

 Is this possible to do this ?

[; array1 ylabel -1 0 1( (note the semicolon!) is the same as this: 

 [ylabel -1 0 1 (
 |
 [s array1]

because semicolon messages are just a shortcut for senders.

In object boxes like [s ...] you can use $0 variables, so inside of the
scrolling abstraction your could use: 
 
 [ylabel -1 0 1 (
 |
 [s $0-array]

Now to let something control the array from the outside, I'd recommend
to just use an [inlet]: 

 [inlet]
 |
 [s $0-array] 

Ciao
-- 
Frank

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-24 Thread Frank Barknecht
Hallo,
cyrille henry hat gesagt: // cyrille henry wrote:

 have you tried to look at mapping/timeroll object.

I think, there is a minor bug in timeroll: Instead of [list apppend 0]
it should probably be [list prepend 0]

(Btw. I think the dependency of mapping on purepd is a bit, uhm,
uncomfortable.)

Ciao
-- 
Frank

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-24 Thread cyrille henry


Frank Barknecht a écrit :
 Hallo,
 cyrille henry hat gesagt: // cyrille henry wrote:
 
 have you tried to look at mapping/timeroll object.
 
 I think, there is a minor bug in timeroll: Instead of [list apppend 0]
 it should probably be [list prepend 0]
you're right.
thanks.


 
 (Btw. I think the dependency of mapping on purepd is a bit, uhm,
 uncomfortable.)
i strongly agree here.
i need your help to have Hans authorisation to remove it!

Cyrille


 
 Ciao

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-24 Thread Martin Schied
Hi Sebastien,

 Sebastien Lelong hat gesagt: // Sebastien Lelong wrote:

   
 I have one question though (not related to [trigger]). In your example, as
 in Martin's, you use $0-a16 to name the array. I understand $0 is used when
 building an abstraction and creating multiple instances of this abstraction.
 My question is how can I configure this array, from the parent (from the
 patch using the abstraction) ? For instance, I'd like to add xticks,
 ylabel, etc... I usually use a message, like:
 _
 [array1 ylabel -1 0 1 (

 but the same with $0-a16 obsviously doesn't work, since $0 is not known (I
 understand it's a counter incremented at each creation). 
 

if there aren't too many of those arrays in your patch, probably Frank's 
solution is far more simple and convenient.

another possibility would be using creation arguments as names. you 
would then use $1-arrayname in an abstraction instead of $0-arrayname 
which uses the first creation argument of the abstraction in your parent 
patch. (so $2 stands for the second creation argument and so on)

if you create an object [myabstraction something]  in your parent patch 
you can access the array's properties by sending for example

[ylabel -1 0 1(
 |
[s something-arrayname]

or like you wrote before using
[; something-arrayname ylabel -1 0 1(]

also have a look at /doc/2.control.examples/14.dollarsigns.pd for more 
stuff with dollar signs as creation arguments. (i found it kind of 
confusing the first time, so perhaps better don't try too hard and have 
a look later again)

notice that dollar signs in messages like

[$1 $2 (

are not the same as dollar signs from creation arguments. That's one 
thing which can also seem strange when learning pd...

Just try the below to understand what dollar signs stand for in messages.

[one two three four(
 |
[$2 $3 $1(
 |
[print]

Dollar sings in messages like the above are not affected by creation 
arguments, by default they return 0 (and an error message, just click on 
the message [$2 $3 $1( directly to see that).

in the ppd_scroll abstraction you would have to change each $0-graph 
into $3-graph (because $1 and $2 are already in use) and then create 
instances of it like [ppd_scroll 10 1 myname] and send settings to 
myname-graph then.

cheers,
Martin

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-24 Thread Frank Barknecht
Hallo,
cyrille henry hat gesagt: // cyrille henry wrote:

  (Btw. I think the dependency of mapping on purepd is a bit, uhm,
  uncomfortable.)
 i strongly agree here.
 i need your help to have Hans authorisation to remove it!

Hehe, I think you two better fight it out without me. :)

But anyway I think, it would be cool if mapping could be a bit more
self-contained.  Personally I would prefer it as a vanilla library as
that would make it possible to to be used in vanilla enviroments like
RjDj or even PDa (although without [list] that would be hard). 

I guess, some externals cannot sensibly be removed, but at least
float_argument is so trivial ... Maybe just copy it over to mapping and
use it from there?

Ciao
-- 
Frank

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-24 Thread cyrille henry


Frank Barknecht a écrit :
 Hallo,
 cyrille henry hat gesagt: // cyrille henry wrote:
 
 (Btw. I think the dependency of mapping on purepd is a bit, uhm,
 uncomfortable.)
 i strongly agree here.
 i need your help to have Hans authorisation to remove it!
 
 Hehe, I think you two better fight it out without me. :)
 
 But anyway I think, it would be cool if mapping could be a bit more
 self-contained.  
YES
Personally I would prefer it as a vanilla library as
 that would make it possible to to be used in vanilla enviroments like
 RjDj or even PDa (although without [list] that would be hard). 
yep, list is mandatory for most mapping stuff.


 
 I guess, some externals cannot sensibly be removed, but at least
 float_argument is so trivial ... Maybe just copy it over to mapping and
 use it from there?
yes, except float_argument, any_argument and purepd/once i don't see where to 
remove dependence.
speedlim maybe also but it is used only in the examples...

other dependence are hard to remove, or limited to specific object, or only in 
the help file.

Cyrille


 
 Ciao

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


[PD] Array that scrolls from right to left

2009-02-23 Thread Sebastien Lelong
Hi guys,


I've recently discovered Pure Data as versatile platform I could use to
build a robotic GUI. The idea is to collect data from a robot, send it to an
OSC (open source control) server, get the data in pd~ and deal with it. One
important aspect would be to plot data, in real-time, so the graph scrolls
from right to left, and data is appended to the end of array (right) (well,
I hope what I write is understandable...).

So far so good, I've been able to build all the OSC part, and even plot
things in a array in pd~, but I can only find a way to plot data from left
to right, and when array's end is reached, clear it and start from beginning
again. In other words, I can't make it scroll...

Is there a common, usual way to do this ? Should I use struct, pointer
and other kind of advanced stuffs ? Is there any externals I could use or
base on to build this ?


Thanks in advance for your help,
Cheers,
Seb
-- 
Sébastien Lelong
http://sirbot.org
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-23 Thread Frank Barknecht
Hallo,
Sebastien Lelong hat gesagt: // Sebastien Lelong wrote:

 I've recently discovered Pure Data as versatile platform I could use to
 build a robotic GUI. The idea is to collect data from a robot, send it to an
 OSC (open source control) server, get the data in pd~ and deal with it. One
 important aspect would be to plot data, in real-time, so the graph scrolls
 from right to left, and data is appended to the end of array (right) (well,
 I hope what I write is understandable...).
 
 So far so good, I've been able to build all the OSC part, and even plot
 things in a array in pd~, but I can only find a way to plot data from left
 to right, and when array's end is reached, clear it and start from beginning
 again. In other words, I can't make it scroll...

One simple way to make it scroll would be to use [list-lastx
TABLESIZE] from the [list]-abs collection. Just prepend a 0 to the
outgoing list and send it to a receiver named after the table like this: 

 [table DATA 16]

 [r ROBOT]
 |
 [list-lastx 16]
 |
 [list prepend 0]
 |
 [s DATA]

Alternatively do it manuall. The basic algorithm is this: 

If a new ROBOT-float comes in store it. Then start a loop over the table
where you

1) read out the current element with [tabread]
2) store it in the right inlet of a [float]
3) write the new value into the table with [tabwrite]
4) increment your counter
5) repeat using the float stored in 2) as the new value.

This is a good excercise to get familiar with the [trigger] object and
Pd's execution order.

Ciao
-- 
Frank

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-23 Thread Sebastien Lelong
Hi Frank,


Thanks for your help. I'm getting things that kind of scroll... building
an horrible patch :) Some values are random, I guess I have a problem when
access extremities of the array. I'm sure there's something simpler,
probably using trigger, but I can't figure out how I could use a trigger
here. Could you give one last hint ? I guess I need to learn how to think
pure data...

Anyway, thanks again.

Cheers,
Seb



Hallo,
 Sebastien Lelong hat gesagt: // Sebastien Lelong wrote:

  I've recently discovered Pure Data as versatile platform I could use to
  build a robotic GUI. The idea is to collect data from a robot, send it to
 an
  OSC (open source control) server, get the data in pd~ and deal with it.
 One
  important aspect would be to plot data, in real-time, so the graph
 scrolls
  from right to left, and data is appended to the end of array (right)
 (well,
  I hope what I write is understandable...).
 
  So far so good, I've been able to build all the OSC part, and even plot
  things in a array in pd~, but I can only find a way to plot data from
 left
  to right, and when array's end is reached, clear it and start from
 beginning
  again. In other words, I can't make it scroll...

 One simple way to make it scroll would be to use [list-lastx
 TABLESIZE] from the [list]-abs collection. Just prepend a 0 to the
 outgoing list and send it to a receiver named after the table like this:

  [table DATA 16]

  [r ROBOT]
  |
  [list-lastx 16]
  |
  [list prepend 0]
  |
  [s DATA]

 Alternatively do it manuall. The basic algorithm is this:

 If a new ROBOT-float comes in store it. Then start a loop over the table
 where you

 1) read out the current element with [tabread]
 2) store it in the right inlet of a [float]
 3) write the new value into the table with [tabwrite]
 4) increment your counter
 5) repeat using the float stored in 2) as the new value.

 This is a good excercise to get familiar with the [trigger] object and
 Pd's execution order.

 Ciao
 --
 Frank

 ___
 Pd-list@iem.at mailing list
 UNSUBSCRIBE and account-management -
 http://lists.puredata.info/listinfo/pd-list




-- 
Sébastien Lelong
http://www.sirloon.net
http://sirbot.org
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-23 Thread Martin Schied

Hi!

Sebastien Lelong wrote:


So far so good, I've been able to build all the OSC part, and even 
plot things in a array in pd~, but I can only find a way to plot data 
from left to right, and when array's end is reached, clear it and 
start from beginning again. In other words, I can't make it scroll...


I made something very similar but whithout scrolling originally. I added 
something to make it scroll, view the attached patch. there's a settable 
refreshrate (redraws the array every n values) so it doesn't consume too 
much CPU just for redrawing.


I'm not sure if that third part of the patch should be optimized like 
the first one - does copying and rewriting from a 'visible' array 
refresh the array on each write? Perhaps someone knows...



Martin




ppd_scroll.pd
Description: application/puredata
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Array that scrolls from right to left

2009-02-23 Thread Frank Barknecht
Hallo,
Sebastien Lelong hat gesagt: // Sebastien Lelong wrote:

 Thanks for your help. I'm getting things that kind of scroll... building
 an horrible patch :) Some values are random, I guess I have a problem when
 access extremities of the array. I'm sure there's something simpler,
 probably using trigger, but I can't figure out how I could use a trigger
 here. Could you give one last hint ? I guess I need to learn how to think
 pure data...

Indeed: Understanding triggering and execution order brings you much
closer to thinking in Pd. There are only two things to remember: The
left inlet of (most) objects is hot, the right is cold and lets you
use an object as a storage container.

OTOH the right outlet of (most) objects fires before the left one.
This holds especially true for the [trigger] object whose main purpose
is to control the order in that your patch cords get activated. 

Both facts are nicely combined in the scrolling table solution in the
attached patch. The top [trigger] object shows how sometimes in Pd you
have to think far ahead: Its right outlet stores a number in a float
object below that gets used much later. 

The lower trigger object (abbreviated as [t ...]) shows another common
idiom: It's followed by crossed patch cords. You will often see this
when something is stored for a moment and the previously stored value
is used instead. 

Anyway the attachement shouldn't be to hard to folllow with its
comments, but feel free to ask any questions. Getting it is
important here. :)

Ciao
-- 
 Frank BarknechtDo You RjDj.me?  _ __footils.org__


scrolling-table.pd
Description: application/puredata
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list