Constraining lists, whose length is undetermined

Torsten Anders t.anders at nici.kun.nl
Tue Jan 29 14:47:20 CET 2002


On Monday 28 January 2002 18:32, you wrote:
> t.anders at nici.kun.nl (Torsten Anders) writes:
> > I would like to do music composition / analysis with the means of Oz. 

> First, a disclaimer: I know zip about computational music
> composition.

I am no computer scientist either 8~)


> From a solution [..] you can then construct a
> term-based representation [...]

Sorry, but I do not understand "term-based".


> If you start with a commitment to the term-based representation, I
> doubt that you'll be able to really take advantage of constraint
> propagation.  

Sorry, but I do not understand "commitment to the term-based representation".


> Term-based representation are well-suited for
> model-generative approaches, but not at all for the model-eliminative
> approach of constraint propagation.

I understand: you can only propagate constraints between variables which are 
all "accessible".

I thought it may be possible to compute with lists of undetermined length in 
a search mechanism which generates a new child space for each additional 
element of that list (a variable). In a certain child space, all list 
elements up to the elements introduced in that space are "accessible". So 
within that space you may do constraint propagation on all those accessible 
elements.

But of course this results in an (much) increased total search space, because 
the search will process all those lists with different length independently 
and probably there is no way to propagate between partial solutions of 
different length.



[Rest of the mail is OT]

> Define a score as consisting of a number of voices (single note tunes). 
> Define a voice as an assignment of pauses and pitches to consecutive 
> time intervals.  Now this is starting to look vaguely like a scheduling
> problem

Thanks for this proposal! But there are little musical forms you can 
represent  that way (but chorals and fuges are examples). Even for a solo 
violin you may need 4 voices at maximum (on for each string). For a piano 
(needs a theoretical max of 88 voices) this will become cumbersome to handle. 
With a presentation using parallel and sequencial containers at the other 
hand you can have an avarage classical piano piece in an (almost) humal 
readable way.

But this presentation is limited too. You would need special 
constructs to represent events with underspecified time information (like 
trills, appogiaturas etc.).)

However, I will keep your suggestion in mind and read about scheduling in Oz.


> Let me offer an other way of thinking about it.  A long time ago, I
> read "a generative theory of tonal music" by Jackendoff and someone
> else whose name I can't remember.  

F. Lerdahl and R. Jackendorf. 1983. A generative theory of tonal music. MIT 
press

> So another way to approach the problem would be to regard it as a 
> linguistic problem [...]: give a well-formedness condition
> characterizing the grammatical (i.e. admissible) scores.  
> Here again, there are constraint-based approaches which might help... 

So far as I know: Lerdahl & Jackendorf were interested to find style 
independend analysis criteria, which are therefore rather general (example 
for a preference rule: "at a note of longer duration it is more likely we 
perceive a grouping border". well-formedness rules are even more general as: 
"every note onset must be associated with a beat." [Both cited only by 
heart]). It does not lead very far to use such general rules "the opposite 
way" to turn them into pieces.

But anyway, if I am going to do an analysis inspired by Lerdahl & Jackendorf  
I still have similar problems. An analysis of e.g. the grouping structure 
will be represented in a tree. I am starting with the leaves of the tree 
(e.g. the notes of a single voice [Lerdahl & Jackendorf only dealt with 
single voices]). Now I need to estimate how many notes belong to the first 
group and collect them in a list as the elements of the first group container 
etc. So again I am constraining a list of undetermined length.

A less clean approach will be just to mark the notes (e.g. by a special 
feature of the note). But I can't do that with an integer only: I will 
probaly need to analyze more then only one grouping hierachy. And it will be 
not a good idea to have a special feature for every grouping layer: this 
would become a somewhat clumsy program. But even more important: I do not 
know before, how many grouping layer I will need.



I thing I need to continue reading "Concurrent Constraint Programming in Oz 
for Natural Language Processing" to see how you did that for language 
processing. It shoulded be that different, I dare to thing. 

Perhaps I missed your point of proposing a model-generative approach. You are 
proposing to generate a score-tree by a certain grammar? I certainly do not 
dislike this idea. But a deterministic approach (e.g. like a markov-chain) 
will not help me. I like the general idea of constraint programming, because 
it allows to describe various aspects (e.g. rules concerning melody vs. 
harmonic rules) independently. I would really be glad if I could write some 
effcient constraint based music composition stuff (I did something 
compareable once using Screamer in Lisp: it worked well but was unusable 
slow.). But I understand that you can not propagate over an undetermined 
number of elements. 

So probably I either solve a subproblem (e.g. set the number of notes before 
search) effciently. Or I do something more general but inefficient. 

Did I miss your point?


> of course,
> for most music (i.e. not Bach-like :-), you pretty much have to forget
> the whole Shenkerian analysis angle.

Sorry, didn't got that.


Thank you for your comments,
Torsten Anders
-
Please send submissions to users at mozart-oz.org
and administriva mail to users-request at mozart-oz.org.
The Mozart Oz web site is at http://www.mozart-oz.org/.





More information about the mozart-users mailing list