<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 3.2 Draft//EN”> My darkroom is actually a combined office/hobby room (conveniently located on the attic so it is very easy to make it a darkroom - only two very small windows). As it happens, I have a number of computers and a soldering iron over there, so it was a logical step to hook a couple of relays to a parallel port and control safelight and enlarger from my Linux PC.

Over time, I added a collection of scripts etcetera that helps me with developing film, printing teststrips, etcetera. I keep it all together in a couple of directories, and you can <a href=darkroom.tgz>download a snapshot</a> if you want to. If there is enough interest, I might start making actual distributions so please let <a href=mailto:cg@cdegroot.com>me</a> know when you’re using it!

There is no documentation in the snapshot, so here is a short description of the contents of the file:

hardware/
A couple of files from somewhere on SunSite (I don't remember the original filename - credits to a guy called <a href=mailto:reza@ucsd.edu>Reza</a>) that detail how to build a light switch with minimal hardware, hook it to the parallel port, and control it with C programs. If I can build it, everyone can - and I built it.
src/
C++ source code to control the switches in various ways. Building the software here will result in the following programs:

setswitch
clearswitch
toggleswitch
Commands to set, clear or toggle switches. A numeric argument specifies the data line of the parallel port the relay is hooked to (I have hardcoded the enlarger on line 0, the safelight on line 1). Example:

setswitch 0

Switches on the enlarger.

magtimer
Switches on the enlarger for a specified amount of time (you specify the time in 1/1000ths of a second on the command line). Example:

magtimer 12000

Gives a 12 second exposure.

drtimer
For developing film, drtimer lets you specify times and beeps (you need a soundcard for this). Big numbers on screen show the countdown, and a beep every minute helps you keep track in the dark when developing sheetfilm etcetera. You can mix a number of arguments - times in 1/10th of a second and `+' characters for a series of three consecutive beeps. Example:

drtimer 50 100 + 600

Counts down from 5 seconds, beeps, counts down from 10 seconds, beeps three times, counts down from 60 seconds, beeps. </dl>

scripts/
A collection of scripts using the C++ programs to give a higher level interface. You need to hack these yourself to fit your working style and chemicals.

dev-roll
dev-sheet
Scripts for roll or sheet development. Roll development assumes a daylight tank, and thus prompts via the screen. Sheet development assumes darkness, and thus prompts with short sentences. Both take two arguments: minutes and seconds of development, and guide you through the whole process. This greatly enhances consistency, of course. Example:

dev-sheet 6 00

Guides you through the process of sheet film development with a development time of 6 minutes.

hstops
tstops
qstops
Calculates times for a test strip around a given time (in seconds) with intervals of half, third and quarter stops, respectively. Example:

hstops 10

Calculates the eight half stops around 10 seconds (2.5, 3.536, 5.0, 7.071, 10.0, 14.142, 20.0 and 28.284 seconds).

teststrip
Helps making a teststrip. Give spacing (h, t, q) and central time and it will prompt you to hit enter for each exposure. So a test strip becomes a matter of alternately hitting enter and exposing the next part of the strip (note that I don't make cumulative test strips - I only uncover a single part of the test strip, so that every part receives a single exposure). Example:

teststrip h 10

Makes a test strip with half stops around 10 seconds (thus exposing for the times as given with the previous example).

xdarkroom
A script that you should modify to suit your needs. It kills of the fvwm95 task bar (because it would stay on top otherwise) and starts an xterm that just covers my 1024x768 screen completely. As the xterm has a black background with a dark red foreground, you can quite safely use this window when printing (set your screen to maximum contrast, and then turn down brightness until the background is really black). The shell started in the xterm reads the file darkroomrc, which has a number of aliases to make single-key actions possible. Instead of this script you can also use a virtual console with black background and red foreground, of course.
darkroomrc
Contains utilities and functions for the other scripts. Specifically, when used from darkroomrc. When included into a shell (with . darkroomrc), it comes up in the default mode that has a single programmed function key: F1 for B&W printing. When hitting F1 Enter, you enter this mode and get a different keymap: F1 for a 12 second exposure, F2 for a 9 second exposure, F5 for a drtimer paper development sequence (develop 60 seconds, drip 15 seconds, stop bath 30 seconds, drop 15 seconds, fix 60 seconds), F6 for switing on the enlarger, F7 for switching off the enlarger and turning on the safelight. So, a basic print of 12 seconds would be: F6 Enter, compose and focus, F7 Enter put the paper on the easel, F2 Enter, pick up the exposed paper, F5 Enter and start developing according to the beeps. This script, of course, is meant to be modified to suit your needs. </dl>
sounds/
Canned sentences for sheet film development. I generated these with the text-to-speech facility of MacOS, recorded them on another Mac, and converted them to WAV format in order to make them usable on Linux. </dl>

You can compile and install everything by the three commands:

./configure
make

and as root

make install

which will install in /usr/local/bin and /usr/local/lib/darkroom everything needed to make your Linux box your Darkroom Computer.