FTAP is a Linux-based program (written by Steve Finney) for tapping and music performance experiments. It uses standard MIDI input and output devices and collects keystroke data and outputs auditory (MIDI) signals with reliable millisecond resolution. A trial is specified by a simple format ASCII text file, usually about 20 lines long. The types of experiments FTAP can run includes, but is not limited to:
FTAP is described in an article in Behavior Research Methods, Instruments, and Computers (Finney, S.A. (2001), "FTAP: A Linux-based program for tapping and music experiments", v 33, pp 65-72). Please cite this article when writing up any research which makes use of FTAP.
FTAP is available at no cost (but without warranty) in source code form under the GNU PUBLIC LICENSE.
The FTAP distribution can be downloaded as a gzipped tar file (about a megabyte). Extract it by first using "gunzip" and then the "tar" program; you will be left with a directory hierarchy named "ftap.2.1.05". The README files and the documentation should then get you started.
The documentation will eventually be readable on line, and is included in the distribution. However, you can also directly access the User's Guide and Reference Manual in .pdf format.
The current release number is 2.1.05; this number will change anytime there is a change to the FTAP source. See the Release Notes for information on changes in the latest release.
Download the latest official FTAP distribution.
I have added one useful feature (the ability to sound a specified tone at a specified trigger, e.g., to signal experiment end at a specific time or keystroke count), enhanced (somewhat) the way factors and output file names are handled, and made minor changes to compile with the gcc 3.2.3 version supplied with the Suse 9.1 distribution. See the CHANGES_2.1.06 file for more details.
Suse 9.1 includes the Linux 2.6 kernel. When FTAP is used with the ALSA drivers supplied with the Linux 2.6 kernel, the loop cable benchmark performs fine (millisecond resolution) with an unmodified installation using a Soundblaster Live! Value Digital Sound Card; the 4Front drivers were not required. Let me know your experience with other cards.
The documentation has not been updated, and I have not even included it in this tarfile...that's why it's a Beta distribution :-). If the additional features are interesting to you, install 2.1.05, and then build (or use) the 2.1.06 ftap binary.
This probably isn't ready for prime time (the code may be, but not the distribution itself), but it might be useful for somebody, so I'm making it publically available.
Download the experimental 2.1.06 FTAP distribution.
In the documentation and writeups, I have recommended the use of the 4Front MIDI drivers for real-time use, but stated that the standard Linux MIDI OSS/Free drivers (e.g., as distributed with RedHat) should be adequate for evaluation use. This appears to be incorrect; it looks as if the OSS/Free drivers do not support the select() system call for input on "/dev/midi", which is what FTAP uses to do (effectively) non-blocking reads (I'm not positive of this diagnosis, but it's my best guess). Thus, at least with my current configuration with RedHat Linux 7.0 and a SB Live! soundcard, FTAP will not run AT ALL with the stock MIDI drivers (but it runs fine with the 4Front MIDI driver).
So for now, it looks as if the 4Front driver is required for FTAP use. My experience with 4Front has been very good: installation is seamless, you can download a free evaluation copy which will allow you to evaluate both the drivers and FTAP, and 4Front technical support seems good (this is unsolicited testimony; I have no financial stake in or personal connection with 4Front Technologies). The 4Front drivers are written by the original author of the OSS/Free drivers. Purchasing a full-use copy of the 4Front driver will cost you $20-$35, so it's affordable, but you do not get source code.
This slipped by me, because I've been using the 4Front drivers for the last year or two. I wish FTAP didn't require a commercial, non-open source driver, but right now I don't have time to rewrite the FTAP code (or the OSS/Free driver :-) ). See the Reference Manual for further gory details.
Possibly the open-source ALSA drivers will work, but I have not gotten around to checking this out. Let me know if you try it. FTAP is currently hard-wired to use "/dev/midi".
I have run FTAP on a fairly standard computer configuration (various Pentium-based PC's running various versions of RedHat Linux, with either a Creative Soundblaster-16 MIDI card or a Soundblaster Live! card). The binary has also been run under Debian 8.0 (Linux 2.4 kernel), though currently some include file discrepancy gives a compilation error. FTAP should probably run on most other Pentium-based Linux distributions, and it might even work on Linux on other architectures if recompiled, though this has not been tested. Let me know if you try it.
A MIDI interface with an input and output port is required. This requires both a hardware MIDI interface of some sort and a supporting Linux driver. FTAP accesses MIDI data with the generic "/dev/midi" interface, so it is not dependent on a particular MIDI card; on the other hand, I can't guarantee that all MIDI cards will work! See discussion in the Reference Manual. A useful Linux MIDI reference is the Linux MIDI and Sound Page. Dave Phillips has written a book called The Book of Linux Music and Sound (Linux Journal Press/No Starch Press) which you may also find useful.
FTAP evaluation and experiment development can be done by running FTAP as a normal user (although if your system is loaded it may be sluggish). For millisecond-precision data collection, I recommend running FTAP with root privileges (i.e., as a setuid 'root' program), as this allows using the sched_setscheduler and mlockall system calls. I also strongly recommended that anyone using FTAP for serious data collection test the speed of the MIDI interface on their computer; instructions (and other information) for doing this are included in the Reference Manual. See also Finney (2001b), ``Real-time Data Collection in Linux: A Case Study", Behavior Research Methods, Instruments and Computers, v 33, pp 167-173.
Finney, S.A. (2001a), "FTAP: A Linux-based program for
tapping and music experiments",
Behavior Research Methods, Instruments, and Computers
v 33, pp 65-72.
Finney (2001a) in .pdf format.
Finney, S.A. (2001b),
``Real-time Data Collection in Linux: A Case Study",
Behavior Research Methods, Instruments and Computers, v 33, pp 167-173.
Finney (2001b) in .pdf format.
FTAP has been a one-person project (me!). It is a fairly complex program, but one that I thought was of enough potential general use to be worth making public. I think it does a lot of stuff that no existing programs do (and some manuscript reviewers have expressed the same opinion), but I have discovered there is a huge gap between a useful program that the programmer can use and a program for public distribution. Two particular concerns:
There's not a friendly installation script. On the other hand, FTAP itself is just a single executable file, so just place it in your home bin directory, or in /usr/local/bin. Actual data collection should be probably be done with root privileges. More information is in the Release Notes, User's Guide, and Reference Manual.
If you're familiar with Linux or UNIX, then working with FTAP should be fairly easy. If you're totally new to Linux, it might or might not be straightforward. If you can't get your MIDI drivers to work and you don't know what ``setuid root" means, you'll probably need to get some outside assistance.
FTAP's installation base has grown by 200% in the last 4 months alone (from 1 site to 3 :-) ). If this rate continues, there should be over 1.5 million FTAP users in 4 years (August 2004 addendum: world domination is occurring slower than expected. Two years later, I know of only 4 sites using FTAP (including me)).
FTAP is ``Open Source". If you find it useful, let me know. If you have suggestions for improving it, let me know. If you find or fix bugs, let me know. I will try to respond to questions, and am prepared to fix bugs, clarify the documentation, etc. If FTAP looks interesting to you but you're having trouble getting it to work, please contact me.
Some discoveries that have not made it into the latest documentation: