ICSI Meeting Recorder Project:
Recording software

This page provides technical details about the computer system that is used for data collection for the Meeting Recorder Project at ICSI. This information should be considered in conjunction with the details of the audio hardware on the meeting recorder audio setup page.


The meeting room audio computer, popcorn.aciri.org, is a Dell 500 MHz Pentium III with 256MB of RAM and an internal 10GB SCSI-2 disk. It is running RedHat Linux 6.1, with a 2.2.12SMP kernel.

The 16 channel audio comes in over 2 ADAT lightpipe optical feeds into a Sonorus STUDI/O PCI interface card. Sonorus have given us a beta version of a driver for that card that works within the ALSA sound driver architecture. I have made some slight customizations to the version of the driver (snd_studio.o) that is running on that machine, but I expect my software will be compatible with future versions of the driver. The source of the driver is currently on the internal disk under /u/dpwe/projects/sonorus/studio-driver-0.3.3a/; this directory is a copy of the directory with the same path on the main ICSI file system, and the two are supposed to be kept in sync, although it is a manual process.


The recording software is composed of two pieces:

rcddrv is a C program based on the example code supplied with the Sonorus driver. Its source is currently in /u/dpwe/projects/sonorus/studio-driver-0.0.3a/test/ (although I should rename that to rcddrv soon). It accepts a simple command language via standard input, including some information reports to standard output. This language is not documented except within the source code and the way it is used by rcdgui. One possible advantage of having rcddrv as a separate program is that it could be run at a higher priority, to reduce the risk of dropped samples. However, this is seemingly not required at present.

rcdgui runs under the wish Tcl/Tk interpreter, although it also loads the [incr Tcl] object-oriented extensions. A screenshot is shown below. Each input channel has a separate 'mixer bar' element that allows activation/deactivation of that channel (to avoid the overhead and disk use of writing channels that are not being used), gain adjustment (which is actually the number of bits, between 0 and 16, by which the samples are shifted up before being stored; only the top 16 bits are saved to disk, so some gain adjustment may be required to optimize the dynamic range), and text entry widgets for the microphone ID and the associated participant, if any.

The mixer bar also includes a VU-style meter for each channel, based on the peak levels which are tracked by rcddrv. These levels reflect the influence of the gain slider to aid in level setting. Even inactive channels (indicated by the dull red channel button and greyed-out entry boxes) continue to show peak level displays, to alert the user if a channel that is believed to be disconnected actually has a signal coming in.

Note: the SOLO button has no effect at present, and neither do the play or return-to-zero buttons of the transport. Further, although pause and stop pass different commands to rcddrv, they have the same effect - you can resume recording after stopping, and the new data is simply appended to what has been recorded already. The only way to discard your recording to date is to quit the program and start over.

The session name, microphone and user identities, gains and channel activations can be saved to a "KEY" file under the File menu. An existing KEY file can also be read back, restoring these attributes. KEY files also contain fields for Description, Participants and Notes, each of which can be edited in a pop-up window accessed through the File menu. The date and time of the recording are automatically recorded in the KEY file.

The source to rcdgui is currently in /u/dpwe/projects/sonorus/studio-driver-0.0.3a/gui/, which should become rcdgui.

Back to DAn's Meeting Recorder index - ICSI Meeting Recorder homepage - DAn's homepage - ICSI Realization group homepage

Updated: $Date: 2000/07/06 00:23:36 $

DAn Ellis <dpwe@icsi.berkeley.edu>
International Computer Science Institute, Berkeley CA