A core activity of CompuPhase is bespoke development: the design and implementation of software according to customer specifications. We develop applications on Personal Computers as well as “embedded systems”.
For applications running on a PC, we are experienced with developing for Microsoft Windows (all versions), Microsoft DOS and Linux. CompuPhase focuses on expertise in the areas of system programming, graphical & multimedial technologies, and well as networking protocols.
Next to software running on standard PCs, we also write control code for electronic equipment and measurement systems. This “embedded software” usually runs on apparatus for which we also design the electronic circuit, but we can also write embedded software for other parties and apparatus. We also have deep knowledge of Real-Time kernels (RTOS) and low-level communication protocols.
On a regular basis, we summarize results of internal research and experiences that we gain in projects in technical reports and documents. Some of these documents are available on this site.
A few examples of our projects:
- A driver for a low level single-frame screen flash, to control game peripherals in a computer game, for R0R3 (USA).
- Educational games for children and adolescents, amongst which: "Plato en de Rekenspiegel" from Zwijsen Uitgeverij (Netherlands) and Euro afrekenen from the "Nationaal Forum voor de introductie van de Euro" (Netherlands).
- Graphical presentation of sound levels around the Schiphol airport (captured in real time) and the connection to the official sound level registration system NOMOS, for Schiphol airport (Netherlands).
- A sound support library that supports direct streaming of sound from CD-ROM to the sound card, "clickless" and gapless glueing of sound fragments, text-to-speech synthesis and compiling text-to-speech and prerecorded audio segments to a fluent full clip, for MarvelSoft Enterprises, Inc. (Canada).
- The maintenance of the product EGO for Windows, including the development of new components of the product, for Precept Media (France).
- See our list of recent projects for more.
CompuPhase expertises in the programming in Visual Basic, Delphi, C/C++ and Assembler Language under DOS, Windows (all versions) and Linux, and for both Intel and ARM processor architectures. We take pride in documenting the products that we make. When we build software for you, the source code is provided with the completed product (source code of 3rd party libraries is excluded). On request, we will use the development tools of your choice, so that you may be better able to maintain the product.
The first step in a project is the analysis. The result of a feasibility study or a cost analysis done by us, is a brief report with to the point information and, frequently, a proof of concept.
A programmer uses development tools, from compilers to text editors. CompuPhase also develops (custom) development tools, on its own as well as in cooperation with other parties. Some of our software tools are general enough to be distributed as a package; see the "Products" tab for details.
Other software tools are built per specification (and now belong to our customers). We have built drivers, 3D helper libraries, audio control libraries, and development tools for our customers, and we can do the same for you if you have a need for a special tool or driver.
Animation and visualisation
Every now and then, we look at computer animations in movies, television productions and computer programs (games and multimedia productions). Artists at Walt Disney Studios brilliantly summarized the art and craft of animating as the creation of the "illusion of life". Bringing two-dimensional, sketched artwork to life requires that you "illustrate" concepts as weight and balance, force and flexibility, action and reaction. It also calls for a touch of magic: the spectator, your audience, must forget that he or she is really watching a slide show of drawn pictures, albeit a quick slide show. Bringing "life" in an animation is as much a matter of drawing credible motions that adhere to the laws of nature, as an illusory feat. And as illusionists know, the key issue is to trap the spectators' focus and to lead it to your hand.
Animation shouldn't be "just a trick in a graphical editor". It is unfortunate that many animations in computer games and multimedia programs are so clearly put into motion with just a few mouse clicks: the characters are stiff, the motions sharp and sudden, the animated actor appears to lack weight... the illusion of life has perished. The lack of credibility of the animated actors is not a problem of 2D that one fixes by moving to 3D, it is an issue of suggesting weight and suggesting momentum, and an issue of anticipating motion and reacting to it. Obviously, a proper animation requires a larger effort than a blunt sequence of poses or positions: more drawings need to be made. More important, still, are a detailed analysis and a planning of how the individual drawings fit together, with respect to the flow of time. With analysis and planning, we nearly want to say "directing" and "choreography": the position and pose of any animob ("animated object") is put down in the planning -or exposure sheet- for every frame in the animation. The initial analysis is often done with storyboards; we have made our storyboard format available, including notes how to use it.
The most valuable resources for making animations are knowledge and skill. Drawing is an art; the physical laws of motion -the kinetics- is a science. Animation has been called "an exacting art", a blending of artistic creation and the physical foundations of gravity and momentum. That said, in animation, the physical laws are typically exaggerated and often simplified in rules of thumb: for example, guide all motions along an arc.
A head turn: the eyes move along the path of an arc
In games and interactive programs, an animob reacts on the actions of the user. Particularly in this situation it is necessary to keep a history of past motions in order to establish the next motion. Instead of a complete "movie" of several minutes and a fat folder with exposure sheets, one builds an animation by "gluing" several short segments together, where each segment is carefully laid out to flow seamlessly into the next. Each segment defines a single motion, or a few overlapping motions. The sequencing of segments, based on the history of motions and the state of the environment of the animob, is the task of a run- time script. This script is also part of the animation; it is a programmatic equivalent of the storyboard. Where the drawings express the appearance of the animob, the script defines its capabilities and behaviour. Users, or gamers, interact with the program/game and thereby change the environment of the animobs contained therein. Synchronization of the animations with the internal and external events now becomes a key issue.
The next step in computer animation is "artificial life": a mix of artificial intelligence, programmed "character" for each animob, knowledge gained over time, mood and coincidence. These techniques, based on behavioural research of individual people and animals and of flocks of people or animals, are promising to be the next evolutionary step in creating lively interactive animations.
CompuPhase has gained much experience in the area of visualisation and animation. Putting a picture on the screen (even in sequence) is no problem at all these days, but consider for instance:
- combining frame animations with sprite animations, creating so-called "video sprites"
- interactive frame animations, optionally enhanced with audio: the "movie" adapts itself to the context of the application or the activity of the user
- synchronizing the animation to (MIDI) music or other external events, see also an introduction on animation & MIDI)
- (interactive) screen savers
- screen-fonts, that are designed for optimal legibility from computer displays and low resolution devices, as opposed to the standard fonts, which are derived from print letters (see also an introduction on screen-fonts)
To get optimal performance, for example to run many animations concurrently, we specialize in efficient algorithms and hand-optimized assembler where necessary; we know MMX and SIMD. As engineers, with an eye for detail, we do not shy away from proper research and instrumenting and measuring code and components.
We have compiled a list of resources and tips on computer animation. Other documents on the more technical aspects of visualisation and animation are found amongst the many articles published on this site.