> Henning Thielemann wrote: > > The current version of Haskore only respects the Tempo change when > > computing the duration of a music. But it ignores phrases like > > ritardando. It would be difficult to respect these phrases, because > > they depend on the player. Even more, they are only considered when > > linearizing the music (what is called "performance"). It would be > > inconvenient to pass a 'Context' to 'dur' or 'take' and other time > > related commands. I'm thinking about resolving temporal effects within > > the hierarchical Music structure, that is before switching to the > > linear Performance structure.
On Thu, 18 Oct 2007, Paul Hudak wrote: > I'd be interested in discussing this issue further. What do you mean by > your last sentence below? I think of an extended Music structure where a label is attached to each node (primitive, serial or parallel composition). This label can store the duration of the contained music, respecting temporal effects like Tempo and Ritardando. Especially primitives then have two values for duration: The original (local) duration and the duration which is altered according to temporal effects. 'take' is then implemented the following way: Attach the sub-music durations to all nodes, respect temporal phrases. In the labeled structure you can easily find the cutting points for 'take'. Then cut the according notes and rests. Then convert back to the unlabeled Music structure. There remains the problem, that undoing ritardando means computing square roots, which is not possible in general with Rationals. I could only do that approximately. :-( Flattening phrases within the hierarchical music structure turns out to be useful also for the application of software synthesis effects. If I want to apply a software synthesis effect like a reverb to a part of the music, today I must do this after conversion to the linearized Performance structure. But in the performance the information of which event belongs to which musical part is lost. However, since there is a class of phrases (maybe even all phrases?) which can be expressed using general Music, I could expand those phrases within the hierarchical Music, then manage synthesizer effects, then linearize to a performance ready for MIDI, CSound, or SuperCollider. In case of pure Haskell sound synthesis a linearized performance is even not needed. _______________________________________________ haskell-art mailing list haskell-art@lists.lurk.org http://lists.lurk.org/mailman/listinfo/haskell-art