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
download a snapshot if you want to. If there
is enough interest, I might start making actual distributions so please
let me 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:
- A couple of files from somewhere on SunSite (I don't remember the
original filename - credits to a guy called
Reza) 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.
- C++ source code to control the switches in various ways. Building the
software here will result in the following programs:
- 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:
Switches on the enlarger.
- 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:
Gives a 12 second exposure.
- 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.
- 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
- 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.
- Calculates times for a test strip around a given time (in seconds) with
intervals of half, third and quarter stops, respectively. Example:
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).
- 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
teststrip h 10
Makes a test strip with half stops around 10 seconds (thus exposing for
the times as given with the previous example).
- 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,
- 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.
- 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.
You can compile and install everything by the three commands:
and as root
which will install in /usr/local/bin and
/usr/local/lib/darkroom everything needed to make your Linux
box your Darkroom Computer.