anynome logo

Anynome

Official Software Page

Overview

Anynome is a generalized metronome, which displays audible or visual stimuli according to an arbitrary schedule. Additionally, keypress times are logged during the presentation, which enables data to be collected on reaction times or similar statistics.

Scheduling is accomplished via plugins which generate inter-stimulus interval time series. For example, for a standard metronome, this series would be made up of a single number repeated some number of times.

The plugin framework, however, allows more complicated stimulus schedules, such as random, chaotic, drifting, or sinusoidal. Any array of numbers generatable by a program written in C will work!

Downloads

Source tarball:anynome-0.9.2.tar.gz
Win32 binary:anynome-0.9.2.zip

Plugins

All plugin sources are included in the source tarball above. The compiled libraries below correspond to the latest release above.

These plugins must be in your system's library search path. On linux, or other '*.so'-using systems, anynome will also look in ./plugins.

ikeda(Linux ELF) (Win32)Ikeda system
constant(Linux ELF) (Win32)Traditional metronome
file(Linux ELF) (Win32)Read from a file

Plugin Development

Making new plugins is easy. Each plugin must implement the following functions:

void set_args(int argc, char *argv[], int opt_ind);
void get_delay_series(uint32_t *delay_data, int num_events);

void show_help(void);

set_args()
Each plugin may have its own command line arguments. After the main program parses the command line, the entire command line is passed to the plugin via set_args().

The main program uses getopt to parse its command line, and plugins may do so as well. The current optind is passed to set_args() as opt_ind. How you parse the command line is up to you, of course. Look at plugin_ikeda.c for a getopt example.

get_delay_series()
This function is responsible for filling in the delay_data array with num_events number of inter-stimulus delay times. The array is expected to be a series of microseconds.

show_help()
This is not strictly required, but is a very good idea. Each plugin is expected to take an -h parameter which displays the parameters it understands.