Mark Sherman
December 10, 2008


Using scheme, develop an interface to the Roland Desktop Engraver for depth-based artistic engravings. The ultimate goal is to have a relief-carving like image, using all three dimensions.


Concepts Demonstrated

  • Recursion and List-building are used to generate the instructions for the engraver.
  • Higher Order Procedures are used to generate depth maps on the fly, much like the Henderson Picture Language used HOPs to generate images is 2-space.
  • Abstraction is used to provide a simple API while hiding the nuts-and-bolts of the system
  • List mapping is used heavily to prepare and process pixel data to depth lists.

External Technology

The Engraver required interfacing over the serial port. The engraver itself is a very precise piece of external technology that takes commands in ASCII. The built-in scheme ports procedures provide the interface to the linux port representation in the filesystem, and the linux kernel then handles the communication. All of these layers are external to scheme.


This project applies new concepts to image engraving. Rather than rendering the image through varying the density of standard pixels, this system adjusts the depth of the engraving to produce and image. The end result is a controllable scan-line-based, functional real-world carving mechanism powered by scheme. Every scanline that is carved is generated by a function describing the depths along that line, a feature that only scheme and its close relatives can support.

Technology Used Block Diagram

Additional Remarks

This project required a good deal of work be devoted to hardware and low-level API development. Once that was abstracted, image loading was required, which is a sub-project unto itself.

Please keep in mind that the engraver is a DANGEROUS tool, and should not be operated without proper safety considerations.