|
Problems: The proposed solution requires not only the knowledge of the components available in each package and their usage (parameterization), but also the scripting languages of the software packages as well as the interprocess communication issues. While the first requirement is equivalent to knowing what can be done semantically and thereby defining a condition for effective work (see also section 2.1), methods should be elaborated in order to shield beginners from having to know the different how-tos at a higher programming level, while more advanced users still can intervene at a lower level, to provide better solutions.
5.2 Interprocess Communication RoutingTo establish a communication between two programs, a route must be found from the caller to the called program. It can be realized as a chain of suitably configured communication components. This can be very simple if the two programs speak the same communication language, such as Apple events. As a more complicated example, we consider the communication between OpenMusic, running on one computer under Mac OS 9, and a Rubato process, running on a Mac OS X computer. As remote Apple events may be disabled on the Mac OS X, or else the user does not know how to send events from OpenMusic to another computer, an indirect route must be chosen. In MCL the OpenTransport facility of Mac OS 9 can be used. This allows to open a TCP/IP connection to another computer. In the MCL community a user has implemented the remote-shell protocol, such that a command can be sent as as string to the Mac OS X computer, be executed there and return as a string it’s standard output. Arrived on the other computer with correct user access rights (the user name and password are sent at the beginning of the protocol), the command can open a local communication channel to Rubato using Apple events or Objective-C’s distributed object calls. To provide different ways of communication, we implemented some file-based and/or event-based interprocess communication processes for different situations. For detains see the OHR13
5.3 Language MappingsOne way--proposed in Garbers (2003)--to reduce the need to know different programming languages, or at least their syntax, is to extend OpenMusic’s processing methods for patches, which are visual configurations of programming language elements. Currently these are mapped to LISP expressions (function definitions, |