Skip Navigation.
Section 0

Windows Interface: Server Object Library

By Mark David [21030170+]

It became obvious when I began working on this piece of the project that what was actually needed was two components. Here is the first of these two, called ChromaServer. It can be referenced from any Microsoft Visual Studio environment, and accomplishes the following for the application developer:

So far, it seems to be doing a pretty good job. The third point is not completely possible for a couple of reasons, which are explained in the doc and the FAQs. I don't believe, however, that this will get in the way of the utility of the eventual application; this primarily because I will be treating the Chroma as a peripheral, not a storage device. Program information will be stored on the computer and written to the Chroma as needed, not vice versa. The interface (exposed properties, methods and events) for recording and playback of performances is pretty skeletal with this version, but will grow as I find out more precisely what is required.

This is the Version 0.03. I've tested it quite a bit, but it no doubt still has bugs. If you find any, please do let me know. Any suggestions for improvement are welcome, also, although I may or may not decide to incorporate them. The source is there, too, if anyone wants to embellish it.

Here are the files:

This component is very closely structured around the Chroma's programming interface, with objects like Programs and Instruments, and methods that parallel the Chroma's command language. The second component will be an OCX, with a set of controls structured more like a synthesizer's interface (oscillator, filter, amplifier, etc.). For now, I'm putting the code that translates between these two models in the client application; someday, I may package that as a component as well.

Finally, a big thank you to David Clarke [21030085++] for publishing the source for his tape2txt utility, from which I was able to infer the structure of the 59-byte packed Chroma Program format, used in the ReadProgram and WriteProgram commands.