[PD] [coll] bug

Alexandre Torres Porres porres at gmail.com
Sat Jan 28 19:06:17 CET 2017

2017-01-26 17:30 GMT-02:00 Ivica Ico Bukvic <ico at vt.edu>:

> Joining late to the party...
> Being the culprit (I wrote the threaded addition to the coll object) I am
> curious--Alexandre, do you mind elaborating how did the threaded thing
> break max-msp compatibility? If you create a coll object without the
> optional arg, you get Max behavior. If you add the optional arg you get
> threaded which theoretically breaks determinacy in favor of avoiding
> dropping samples due to file I/O in the middle of a performance.

sure, here's the deal, Max already has an optional 2nd argument, which is
for telling it to not look for a file with that name. This is so because
the 1st argument can be either for naming a coll object or telling it to
look for a file to load. Moreover, if you give it a file name to look for
and read, that also works as the name of the coll object, meaning that you
can have multiple coll objects with that name. But since different coll
objects with the same name already sahre the data, you don't need all of
them to read files.

Some examples:

[coll name 1] <= this is a named coll, there's no file, don't bother
looking for it

[coll x.txt] & [coll x.txt 1] <= the one to the left loads the file, the
one to the right shares the data & doesn't look for the file because it
doesn't need to.

This 2nd argument for coll was introduced in Max 4.0.8

Most of the objects in cyclone are outdated to Max 4.0 and not to some
later version of Max 4 as was assumed sometimes - you can find descriptions
of the cyclone library as "clones from max 4.5" but that is not true,
probably that description was made by the time Max 4.5 was around and
people were just assuming it to be true, but it's not.

It's funny how when cyclone 0.1 alpha 1 comes out, it's already outdated,
cause it was released when Max 4.1 had just been made available (like a
week or 2 before).

Therefore, cyclone's [coll] was outdated since version 0.1 alpha01, and it
just kept outdated until the original author abandoned it (in version 0.1
alpha 55)

Well, enough anecdotes... back to cyclone's current development

The optional 2nd argument was introduced in Pd-l2ork (I don't know when),
and ported to cyclone in the version "cyclone 0.2 beta1". Nonetheless, it
is now removed from the latest state: "cyclone 0.2 beta3" - which is in
deken for windows, and cyclone 0.2 beta1 is still available for mac and
linux in deken. One way or another, if you build it from the repository,
you'll get cyclone 0.2 beta3, without the 2nd argument/threaded

I can see other details in this version of coll. For some reason, the bang
output on the third outlet (when finishing reading a file) was removed, and
it is only present in the threaded version.

I can also check that this optional argument can come in any order, before
or after the coll name. In the documentation of cyclone 0.2 it is mentioned
that it's supposed to be only as the 2nd argument (btw, even though this is
removed from cyclone 0.2 beta3, it is still mentioned in the
documentation). Anyway, also having it as the 1st argument goes against the
original max's syntax. So I consider that these changes added some relevant
noise to coll's structure.

So, in my opinion, if new things were to be introduced to coll as they
were, it'd would have been good to check its state. I'm sure that if it was
realized it had a missing 2nd argument that the right thing to do would be
to include it and have another way of dealing with the extra functionality,
in a less intrusive way to its original syntax and all.

I think that an additional "flag" is less intrusive for an extra
functionality. Something like "-threaded".

Well, we've been working on updating cyclone, and the major concern is to
update and include missing functionalities, from Max 4.0 up to the latest
version (Max 7.3.1 currently). There are about 60 objects that needed work
in that direction (and now we have only 5 more to go). None of the other
updates raise any issue like coll does, because coll was the only one that
suffered such kind of intervention. So, what are doing with coll?

We've already updated it to include missing functionalities, which is the
2nd argument, a couple of attributes and a couple of extra methods
(renumber2 and insert2). We are also fixing a couple of bugs. One of the
bugs is the bang output on the 3rd inlet, that we put back...

About the threaded version, we're including it kind of as a flag, but in
the max's attribute style way, so "@threaded 1" loads the threaded version,
and this can also be edited with a "threaded" message method.

I still have a couple of other things to reply to regarding the rest of
your message

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20170128/a65c2f27/attachment.html>

More information about the Pd-list mailing list