No. 004: Basic Usage for the Encad Novajet Colour Plotter

This note gives basic instructions for outputting images to the Novajet, as well as a few tips for better results.

Revised by:     Marcos H. Woehrmann     January 05, 1995
Written by:     Paul H. Yoshimune       April 27, 1994 

Introduction

This technical note contains general hints for converting images to HP RTL for output to an Encad Novajet. For similar instructions relating to an HP 650c colour plotter, see Technical Note #3

Please note that this text assumes you have Alchemy v1.7.7 or better. If you require an update, please contact our Sales department (phone number below).

Front Panel Setup

The settings on the Novajet's front panel can directly affect the output quality and capabilities of the plotter. While there are no "correct" settings, we have found we obtain best results with the settings below. Also, note that this list is not exhaustive, but only covers options which are likely to affect output from Image Alchemy.

Plot Setup

(Mode=Enhanced Color) This option forces the plotter to make four small passes where it would normally make one relatively large one. The net effect is to reduce banding, which it does quite well.

(DPI=300) You generally always want to plot at the highest possible resolution.

(Frame Length=Auto) This just tells the plotter to automatically determine the paper size, as opposed to you having to tell it for each different roll or sheet you load.

(Media Standard=All) This option allows the NovaJet to automatically determine the loaded paper size. If it fails for some reason, you can tell the plotter exactly what sort of paper you are using.

Emulate

(Emulation=HP RTL) Image Alchemy will always generate HP RTL data as opposed to an HPGL variation.

(Expand [vs. Normal]) Setting the Expand option allows the plotter to print further toward the edges of the paper, giving you an increased plot area. With a standard 36 inch wide roll, maximum plot width increases from 34.8 inches to 35.6 inches.

(Rotate=0) Normally, rotation should be 0 (none).

(Override Host=No) This setting gives the software control over various plotter variables, which is usually what you want; if this option is set to "Yes," software control will be ignored.

Roll

(Roll=On) This tells the plotter that it is taking roll paper as opposed to cut sheet.

(Cut=On) This tells the plotter to cut the paper after the plot has been sent.

(Save Media=On) This tells the plotter to cut the paper immediately after the plot is done, rather than advancing to the full size of the media. (i.e., if the plot is only 36 inches long, but the frame size is 48 inches, the paper will be cut at 36 inches instead of being advanced the additional 12 inches).

MS-DOS Machines

Before beginning, you should note that the standard version of Image Alchemy (alchemy.exe) is sufficient for dealing with smaller images, as it only utilizes conventional memory, but will likely fail on larger images. When converting images for full-size output on the HP650c, using the 386 Enhanced version of Alchemy (alch386.exe) will get around this problem by using extended/expanded memory, as well as virtual memory. Please see Technical Note #1 for more information.

Converting various images to HP RTL for output on a Novajet is generally not a problem, but there are a few pitfalls which many people run into. Let's start with a simple conversion:

     alchemy sample.jpg --r10 

This will convert the file sample.jpg to an HP RTL file suitable for output to a Novajet. You must use type 10 compression when generating an RTL file for a Novajet - no other type will work properly. In any case, the result is a file called sample.rtl.

At this point, you could plot the image by using the copy command, with the binary option:

     copy /b sample.rtl lpt1: 

This assumes your plotter is hooked up to lpt1 (the first parallel port). Note that the /b is required here, and a source of confusion for a great many people. Normally when sending a file directly to a device like this, DOS assumes that you're sending 7-bit ASCII information. Since all RTL files are binary, you lose 1/8th of your information, and the plot fails. Symptoms include lack of colour, a large black box, streaking lines across the image, or no plotter activity at all.

Note that you can also send the data directly to the plotter by specifying the device as the output filename when calling Alchemy. In this case, no RTL file will be created. In general, if you are only plotting one copy of an image, this is the way to go; if you are plotting multiple copies, it is better to create the RTL file once, and copy it to the plotter several times to prevent Alchemy from duplicating work. The syntax looks something like this:

     alchemy sample.jpg --r10 lpt1: 

Assuming the image was 640x480 to begin with, and there was no DPI information, the resulting plot would be about 2 inches wide and 1.5 inches tall. This is because the plotter is functioning at 300dpi. Thus, you will probably want to scale the image. The default scaling algorithm is nearest neighbor, which will likely produce stairstepping. In most cases, type "b" scaling (averaging/linear interpolation) is the best choice because it produces good results in a reasonable amount of time.

We've found that we usually get best results with Jarvis, Judice, and Ninke dithering, using a serpentine raster (-ds3). Additionally, it is sometimes worthwhile to add a bit of perturbation (noise). In this case, something like a "-ds3 10" works well.

At this point, you can try plotting the image with a command like:

     alchemy sample.jpg --r10 -Xb34i -+ -ds3 10 -D300 300 lpt1: 

This will generate a plot on the NovaJet which is 34 inches wide at 300dpi (10,200 pixels), and scaled appropriately in the Y-dimension to preserve the aspect ratio; Jarvis, Judice, and Ninke dithering will be used, along with a serpentine raster and some perturbation; the DPI is specified as being 300 in each direction; and the output is sent directly to the plotter.

The only problem you might have now is that the image is too dark, or there is too much ink on the paper. This will depend on your inks, as well as the type of media you've fed the plotter. If you're using a high-quality glossy paper and plotting non-photo realistic images, this output may be fine. If you're using the plain paper which came with the plotter, you'll likely need to lighten the image some.

In the past, undercolour removal (UCR) files were recommended for lightening an image for output to the NovaJet; this was because gamma correction did not work with CMYK output. This has since been fixed, and lightening the image is now best done with gamma correction. Alchemy needs both an input and an output gamma to work. For the NovaJet, an input gamma of 1.0 and output gamma of 2.5 seems to work well with standard paper. When using the high-quality Presentation-grade paper, a gamma of 1.6 tends to work well. Your mileage may vary. Making the output gamma value lower darkens the image, and making it higher lightens it.

So, if you are sending an image to a Novajet from an MS-DOS machine, to be plotted full-size, and are using stock paper and inks, this line will often get you nearly optimal results:

     alchemy sample.jpg --r10 -Xb34i -+ -ds3 10 -D300 300 -Gi1.0 -Go2.5 lpt1: 

Sometimes little "dots" will be noticeable in areas of solid colour, which trail off as you move further into the colour. This is the result of dithering, and is as it should be. Dithering using an error diffusion algorithm (which is what most of Alchemy's algorithms are) gives an image the illusion of having more colours than are actually present. This allows you to get photographic quality out of a NovaJet, which is only a four colour device.

Error diffusion dithering works by taking the difference in the pixel value from the original image and output image, and passing it along to the next pixel to be processed. This means that each individual output pixel may not have the closest possible match to the original input pixel, but the overall colour content for a given group of pixels will be more accurate. The passing of error is what accounts for the random "dots" in the output plot.

Oftentimes, however, you want to be able to prevent this. Alchemy supports "coring," which lets you specify an amount of error to disregard when dithering. If the amount of error being passed to a pixel is less than the coring factor, that error is simply thrown away, preventing the random dots.

The coring factor is specified as part of the dithering option, after the perturbation. So, the usage for the dithering option is:

     -d[s] [dither type] [perturbation] [coring factor] 

To specify a coring factor, you must include the dither type and the perturbation. So, using the above example, with no perturbation, and a coring factor of 20, the command line would look like this:

     alchemy sample.jpg --r10 -Xb34i -+ -ds3 0 20 -D300 300 -Gi1.0 -Go2.5 lpt1: 

If the coring factor is too low, it will be hard to see its effects. If the coring factor is too high, it will negate dithering to a large degree. In the worst case, if you specify a coring factor of 127, dithering will essentially be turned off, resulting in banding of colours.

As an aside, when rendering PostScript files to HP RTL when using Image Alchemy PS, you must specify the -Zm2 option for colour output. If this is not specified, it will be assumed that you want the PostScript file rendered in black and white.

Unix Machines

Basically, everything works the same on Unix boxes as it does on MS-DOS boxes, except for the method of plotting. You cannot specify /dev/ttya (or whatever device name is associated with the plotter) as the output filename. The problem is the same, however - you must get the resulting RTL data to the plotter in binary mode.

How you do this will vary depending on the machine you're working with.

If you have an /etc/printcap file (as found on a Sun running SunOS, for example) that will need to be modified to accept binary data, and not perform any translation or filtering. Then, you can use lpr to send the data to the plotter.

The printcap entry for the plotter must have at least the following entries:

     :sh:sf:sb:ms=cs8,-opost:mx#0: 

Additionally, you must have the basic fields such as printer name, port, etc. defined. The above entries tell the plotter to suppress headers, suppress formfeeds, suppress banners, set terminal mode to cs8 (binary), not post process, and not limit file size.

If your system does not have a printcap file, but instead uses the /var/spool/lp/interface directory (as found on an SGI, for example) to determine how to send data to the plotter you can modify this instead.

In that /var/spool/lp/interface directory there will be a file called NovaJet (or plotter or whatever your sysadmin called your plotter when installing it). You need to modify this file, insuring the following settings:

BANNER=0 
TRAILER=0 
RAW=1 

(You may want to make a backup copy of the file before modifying it).

If your systems does not use either of these two mechanism for configuring data ports please contact us.

Alternatively, we have written a short C program called sendserial.c which opens a serial device directly, along with the RTL file, and copies data directly from the file to the device. This bypasses the printcap file entirely, to ensure the data is untouched. If you have access to a C compiler, you can compile this short program yourself and prevent the headaches associated with printcap modification. If you have a parallel connection, however, you are forced to either change to a serial connection or modify the printcap file.

If you have Internet access, you can ftp sendserial.c from ftp://ftp.handmadesw.com/pub. If not, but you have a modem, you can get the program from our bulletin board at +1 510 252 0929. If you have neither, you can call us at +1 510 252 0101 and we'll fax or snail-mail you a copy.