- 287 -Mazzola, Guerino / Noll, Thomas / Lluis-Puebla, Emilio: Perspectives in Mathematical and Computational Music Theory 
  Erste Seite (1) Vorherige Seite (286)Nächste Seite (288) Letzte Seite (454)      Suchen  Nur aktuelle Seite durchsuchen Gesamtes Dokument durchsuchen     Aktuelle Seite drucken Hilfe 

Now, denotators are complex, high-dimensional, circular, collection-typed and not necessarily numerical constructs. Thus an interesting problem appears: how do we represent such a construct in 3D-space? The solution to this problem is part of the more general principle of spatialization. Its core operation is called “folding”. It reduces a construct of the abovementioned properties to lower dimensions, as a special case suitable for 3D-Visualization. Folding is implemented on the module level and all levels higher up the denotator hierarchy. Section 8.2 describes folding in more detail.

5 The Rubette Interface

As the Rubette interface is so short, we include the complete definition from the Java file Rubette.java.

package org.rubato.base;  
 
import java.rmi.RemoteException;  
import org.rubato.math.yoneda.Denotator;  
 
public interface Rubette {  
    Denotator identify()  
        throws RubatoException;  
    Denotator execute(Denotator cmd, Denotator data)  
        throws RubatoException;  
}

The first method identify returns information about the Rubette and the commands. In fact it describes the actual interface of the Rubette. Using this information, the caller has exact knowledge of what the Rubette can do. It contains among others a list of the commands. Each command is defined by its name as well as the forms of its parameters and forms of its input and result data. Additionally each command may define a preferred satellite for its result denotator (see section 9.1). Documentation for the Rubette as a whole and the individual command may also be included together with a cockpit (see section 9.2) that acts as a user interface to the Rubette.


PIC

Figure 3: The Rubette interface


The second method execute calls a service, called command in our terminology, of a Rubette. As a Rubette generally features more than one command, the first argument to execute describes the command to invoke. The command is described by its name and, optionally, parameters, all of them packed into a denotator of a predefined standard form. The second argument is the data on which the command operates. The form of this denotator is provided as a part of the data returned by the identify method. Finally, the return denotator of this method is the result of the command.

Figure 3 illustrates a single call from a client Rubette to a server Rubette. Of course, the identify method needs only be called once before arbitrary calls of execute. The information returned by identify will not change.


Erste Seite (1) Vorherige Seite (286)Nächste Seite (288) Letzte Seite (454)      Suchen  Nur aktuelle Seite durchsuchen Gesamtes Dokument durchsuchen     Aktuelle Seite drucken Hilfe 
- 287 -Mazzola, Guerino / Noll, Thomas / Lluis-Puebla, Emilio: Perspectives in Mathematical and Computational Music Theory