Sorry for not replying earlier this challenging proposal!
Unfortunatly I am not aware of Erlang. Can you sugget an introductive paper?
"Two algorithms for the instantiation of structures of musical objects" is the most detailed paper on the polymetric and time-setting algorithms in BP2. It is more up to date than the chapters of my PhD thesis dedicated to the same topics. However, my description of the polymetric expansion algorithm does not take into account the _tempo() tool that I introduced later for more flexibility. However, changes can be traced in the source code and they do not deeply alter the algorithm. When time permits (?!) I will rewrite the formal description of this algorithm.
Both algorithms are linear as demonstrated in my thesis. This was necessary given the complexity of musical structures and the relatively poor performance of machines in the late 1990s.
In terms of space, BP2 uses an array of 'time-objects' but the size of this array is minimized by the quantization process. I was quite lucky to implement this process at the 'symbolic level', which meant modifying the polymetric expression before spreading its objects over the phase table. This is perhaps the best reason for using polymetric representation.
I am certain that the time-setting could be worked out in many other interesting ways. I designed it with a particular notion of sound-object, but more elaborated ones could be implemented provided that their description is accessible to a user-friendly editor or built up by appropriate algorithms.
Sorry for not being very helpful... Please keep in touch as I am quite interested in new theoretical approaches!
All the best
Bernard Bel
>Hi Jacob,
>
>I don't know too much about concurrency or the details of BP2's internal
>algorithms. (The grammar, polymetric expr, and time-setting algs are all
>quite complex and I have never been able to look at them in depth). I do
>wonder if parallel evaluation of polymetric expressions could work but I
>don't really know that it couldn't and perhaps you already have some ideas
>about how to do that.
>
>I do believe that BP2's algorithms are rather unique, so there are not other
>examples to work from. I'm sure that these algs are rather linear. Perhaps
>finding some unrelated examples of how to take some standard "linear"
>algorithms and transform them to take advantage of Erlang would be useful.
>
>But if you need help navigating the BP code, please ask and I will do my
>best to answer. There are a lot of globals and stuff that I have slowly
>come to understand the purposes of. Also, a lot of the main data structures
>are obscured a little by the fact that Mac Classic programming used handles
>instead of pointers when allocating memory (eg. char** instead of char*).
>So, you will see a lot of expressions like (*((*foo)[i].bar))[j] which would
>be similar to foo[i].bar[j] if regular pointers were used.
>
>I do have a question. Are the articles you mentioned available online? I'd
>like to read them myself.
>
>Best,
>Anthony
>
>Jacob Glenn wrote on 11/12/08 10:28 AM:
>
>> I'm just getting started on an Erlang application that incorporates some
>> ideas from Bol Processor. The goal is to have true concurrent polyphony,
>> where every concurrent sound object runs in its own process and musical
>> events are messages passed between processes and timestamped using a logical
>> clock algorithm. I'm not necessarily interested in grammars, but I am hoping
>> to take BP2's polymetric expressions, the time-setting algorithm, etc. and
>> adapt them to Erlang's concurrency model. This will require reworking those
>> algorithms to use timestamped messages rather than the arrays, tables, and
>> other C data structures that BP2 uses.
>>
>> Unfortunately I don't have a lot of guidance as I haven't seen another
>> application that does anything remotely similar to what I'm trying to do.
> > I've done a limited amount of spelunking in the BP2 source code, but I am
>> not much of a C programmer. I've read all of Bernard Bel's English
>> publications (unfortunately I don't read French). The articles that have
> > been especially helpful so far have been "Two algorithms for the
> > instantiation of structures of musical objects" and "Time and musical
>> structures."
>>
> > Can anyone recommend other literature or software I should look at?
|