News: Several new users have found that MEABench displays their data like this, which is obviously not right. This is due to a change in the hardware representation of raw data in recent MultiChannel Systems PCI cards. The fix is simple: instead of typing “./configure” when compiling MEABench, type “./configure --with-hardware=mcsE”.

MEABench is a set of interacting linux programs for recording data from MEAs and real time processing. It can be used to acquire and visualize data from MultiChannel Systems multi-electrode array hardware in real time. On-line spike detection is available, as well as suppression of artifacts induced by 60 Hz pickup and by stimulation. A growing number of small utilities for data analysis is included with the source code, and you can easily add your own. MEABench provides continuous and triggered recording of raw electrode data as well as extracted spike data. MEABench is very suitable for real-time feedback stimulation, since roundtrip times from pre-amplifier to stimulator is less than 200 ms worst-case (less than 50 ms average).

MEABench consists of a set of semi-independent modules, communicating through standard unix facilities. Each component of the tool set is an independent C++ program utilizing a common core library. Because of this modularity, it is very easy to add new components or to modify existing components for use with different hardware or to fulfill new requirements.

The documentation for MEABench consists of a user guide, and in-source documentation for developers. A paper about MEABench was presented at the 2nd IEEE EMBS Conference on Neural Engineering. (More of my writings are available here. You may also view an older poster presentation about MEABench. Please feel free to contact me if you think you may be interested in using MEABench or would like some more information.

We use MEA amplifiers by MultiChannel Systems, so the current implementation of MEABench is geared towards their system. Modification for other hardware should be straightforward. (If you are interested in writing such a port, please contact me so we can try to prevent a full code fork.) MEABench communicates with the hardware through a driver written by Thomas DeMarse ( with kind assistance from MultiChannel Systems.

MEABench is distributed in source form only. It should compile on any reasonably recent linux distribution with any 2.4.x or 2.6.x kernel. It requires gcc 2.95 or later and qt 3.0 or later. (Qt 4 is not supported.) Gcc is included with most if not all linux distributions, and can be obtained from many sources, including Qt can be obtained from Trolltech. Most Linux distributions provide both a Qt version 3.x and version 4.x.

For now, I do not intend to maintain separate development and distribution branches. That means that you are downloading a perpetual work in progress.

Download MEABench by clicking on one of the links below:

Version Release date Notes
MEABench-1.2.5 March 21, 2011 New: A majority of new users now seems to use the "E" revision of the MCS hardware, so I changed the configure script to require explicit mention of hardware. You are downloading a work in progress. Please read the user guide and the Disclaimer.
MEABench-1.2.4 March 7, 2011 New: Several minor bugfixes, plus mention of "mcsE" in user guide.
MEABench-1.2.2 November 4, 2009 New: Bug fixes for 64-bit operating system. Data acquisition on 64-bit operating systems has still not been tested. I am particularly interested to hear about your experience, be it positive or negative. Also, if you notice any regressions that may be due to the 64-bit conversion, please send me an email.
MEABench-1.2.0 February 25, 2009 New: MEABench now supports 64-bit operating systems, at least for analysis. Files recorded on 32-bit machines can be replayed on 64-bit machines and vice versa. Data acquisition on 64-bit operating systems has not been tested. I am particularly interested to hear about your experience, be it positive or negative. Also, if you notice any regressions that may be due to the 64-bit conversion, please send me an email.
MEABench-1.1.6.tar.gz February 3, 2009 New: Minor fixes for compatibility with the latest g++ compiler.
MEABench-1.1.5.tar.gz November 3, 2008 New: Now works with kernel 2.6.26. Older kernels are supposedly still supported. Please email me if you discover otherwise.
MEABench-1.1.4 August 21, 2007 New: Various minor bugfixes and build issues. Still requires Qt 3.x.
MEABench-1.1.0 December 12, 2006 New: Now compiles with 2.6.x kernels. Still requires Qt 3.x. (MEABench will not compile with Qt 4.)
MEABench-1.0.18 May 17, 2006 New: Now compiles with gcc 4.x. Still requires Qt 3.x and a 2.4.x kernel. (MEABench will not compile with Qt 4 or 2.6.x kernels.)
MEABench-1.0.17 February 13, 2006
MEABench-1.0.16 October 13, 2004 New: Brand new spike detector ("type 8"). New online raster plot program: "flexraster". New remote monitoring program: "meamon".
MEABench-1.0.11 February 9, 2004 New: Now automatically detects libqt or libqt-mt.
MEABench-1.0.10 January 20, 2004 New: Now works with qt-3.2.
MEABench-1.0.8 June 9, 2003 New: Spike detector with automatic noise level adaptation.
MEABench-1.0.6 March 13, 2003 New: Updated version of Raster, and new variant "OneRaster" that shows a single raster plot of combined activity on all channels.
MEABench-1.0.3 January 6, 2003 New: Spikesound: an online sonifcation tool for spikes. The MCCard driver now accepts shared IRQs on computers that support them. Plus the usual array of bug fixes.
MEABench-1.0.1 November 16, 2002 Several bugfixes, and improvements to the docs. New: A collection of matlab functions to load MEABench output files.
MEABench-october-2002 October 4, 2002 First public release.
MEABench-july-2002 July 5, 2002 Final pre-release.

Selected older versions are still available upon request.

Detailed installation instructions are included in the package, but if you are using linux, you can probably just do this:

tar xzf MEABench-1.2.5.tar.gz
cd MEABench
./configure --prefix=/opt/MEABench --with-hardware=mcsE
[Type your “root” password.]
make install

That puts all executables in /opt/MEABench/bin.

MEABench relies heavily on posix threads and IPC. I don’t think it relies on any linux-specific quirks, but I’ve never penetrated deep enough into any other unix variant to know for sure. Porting to MS Windows will probably be tough. Tom DeMarse has ported MEABench to Mac OS X; contact him for details. If you are planning to write a port, please let me know so we can discuss some of the issues involved.


MEABench is used by these research groups, among others:

If your lab uses MEABench too, I would love to add your webpage to this list. Please send me an email!


These pages are maintained by Daniel Wagenaar, who also wrote the software described here. Please contact me by sending e-mail to for any questions, comments or bug reports. I do not respond to e-mails with html formatting. Other than that, I try to answer my mail reasonably fast. Including the word "MEABench" in your subject line helps to catch my attention, especially if your email address looks like ;-).

If you find any of this stuff useful, I’d love to receive a postcard with a picture of your part of the world, and a URL link to your research pages. My research pages are here. If you use these tools in research, I appreciate preprints of publications.

Here are my real world coordinates:

Daniel A. Wagenaar
California Institute of Technology
1200 E. California Blvd. 139-74
Pasadena, CA 91125

Notice: since I am not a paid programmer, I cannot guarantee support. Please read this Disclaimer for some of the other things I cannot guarantee. Having said that, I am very much interested in receiving bug reports and suggestions (or better still, patches) for improvement.

Fine print: You may distribute MEABench under the conditions of the GNU General Public license (GPL) version 2. However, I do request that you let me know if you distribute modified versions (read the GPL (section 2 in particular) for more conditions on distributing modified versions). Also, please mention the MEA Users mailing list when you give out copies of this software.

We gratefully acknowledge support from the National Institutes of Health, the Broad Foundations, the Burroughs Wellcome Fund, and MultiChannel Systems, without whom none of this would have been possible.