![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQEX2a_a0wvwBiqIOuRALmAzw3LJeZun3gDwVL_39FetEk3cSmRvFX34LChg5pbYyhvj07fN3ZViv9pExmNIbZN2jRu-zGzzVu0FQiq_PzhCdGjzVfmuUXVQVsk9ZIimZvw8-wOuhCteE/s280/Digitizer.jpg)
It was considered massively incorrect to require the operator (what the user was called back then) to digitize a point more than once. The problem occurred so often, that the users called it double digitizing. This was clear to me, since when I wrote something, I was also its first user when testing it. And double digitizing was incredibly bad because it required extra work. And it didn't respect the user's input.
As time went on, I became the author of the graphic editor (GED) on the Calma GDS-II system. You may not recognize this system, bit it was used to design the Motorola 68000, so you probably know its effects. GED fulfilled the promise of digitizing the geometry within the system, although it wasn't unique, and we all considered this requirement to be obvious. When I wrote it, I paid particular attention to caching the user's input so I wouldn't require anything at all to be entered twice. Even a closure point. Because by then, tablets were being used (but with wire-connected styluses) and often it was hard to hit the same point twice. So, I invented a snapping distance specifically so you only had to get close to the starting point and still specify closure.
Constraint-based systems were still in their infancy in 1978.
Programming
As I did more programming, I became aware of another corollary to the principle of respecting the user's input. It was called the Perlin principle of modular programming: we hide the similarities and highlight the differences. Sometimes the similarities are simply encapsulated in classes or modules. Usually the differences become parameters to the modules, or the differences are wrapped up in the way you call the modules or use the classes. Here the user is the programmer and their input is respected in some ways because they won't have to write something twice. There is another way to respect the programmer's input: transparency. When an API (application programming interface) is complicated, then it becomes less transparent and the possibility of bugs can increase. On the other hand, when an interface is clean and well-defined, the programmer doesn't have to learn too many things, or understand the assumptions made by the writer of the API. All these things make fewer problems and also fewer chances for bugs, because the user's model of the code is very close to the way the code actually works. In this way, the programmers intent is better respected.
MIDI
Later on, in the late 1980s the user input became more complex. In 1988, I built a program for recording and playing back MIDI data from keyboards and drum machines. I called it MIDI '88 and it's a project that really has never seen the light of day, except for in my studio. Well, I did show it to Todd Rundgren once. And, of course, John Derry.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivBFCXUg5jGx92-TNxYVE_k49fj_etXH4YAIBd7yJhJNBPetskc0iKmuOxADRDS9kdjgYtl6v30vDcE1uZm8Tvhm7stl1l6UzkiubYNVyeL6k2oVYDLuEsMtnQwF-o_NELGBUIPmJdHSk/s280/MIDIRingBuffer.jpg)
Tablets
When I first got a Wacom tablet in 1990, I sought to do the exact same thing: create an input spooler for the tablet data, and timestamp the data accurately. But with the Wacom, there was pressure data also that needed to be captured. And then there was tilt and bearing information.
The input spooler captured all these things.
But I soon learned that the data I got from the tablet wasn't perfect. It didn't really accurately capture the user's input at all. One source of the error was temporal aliasing. So I learned that input data often had to be massaged.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkeisEnnLkBZH1CZyslBv3aR5Hdem0Pk3e_onmdu-WwH7vPLEbVLtT8bzjFUkB8CQTsxMBR2-TY58VTa3uYxFQbRxY_Idd8uxGWdKaRZ-j6popp64ktNQL44RFr0FywY1nnQCAEncaIf4/s1600/Scribble.jpg)
But, conversely, when the stylus was moving fast, less control was exerted on the actual position of the brush. So I could afford to use parametric cubic interpolation to create more points in the brush stroke in fast-moving sections of the brush stroke. This was a good thing, because there were fewer points per inch in fast-moving sections due to the fixed sampling interval: when your hand moves the stylus faster, the sample points are spaced farther apart.
All this made for smoother scribbling in Painter.
When John Derry came to Fractal Design in 1992, his enthusiasm for mark-making actually meshed quite well with my desire to accurately capture the input. It made Painter a very good tool indeed for an artist for these reasons.
We perfected the motto with respect to mark-making: to accurately capture the nuances of human expression and faithfully reproduce them, allowing the artist's style to come through.
It is this statement that I stumble through towards the end the video in my early post Creativity and Painter, Part 1. Ah, the early days.
No comments:
Post a Comment