Sam Tannous (Sorry about the name but Gtune was already taken ;-)

Gstring is postcardware. If you find Gstring useful, please mail me a postcard of your hometown:
Attn: Sam Tannous
7025 Kit Creek RD
RTP, NC 27709

Note: A non-GUI version called string.c is included in version 1.0.0!

Gstring is yet another guitar tuning application (written in C). It requires a soundcard, a microphone (we read 8 bit data (16384 sample buffer) sampled at 22050Hz from /dev/dsp), the FFTW package, and if you want a GUI, you will need the GTK package and GtkDatabox. I've included a non-GUI version as well.

Special thanks to Roland Bock for his GtkDatabox widget and to the developers of FFTW for their performance tips.

[   News   |   Information   |   Download   |   Screenshot   |   Copyright   ]

N     E     W     S
June 10, 1999 (version 1.0.0)
Many performance changes made. Also created a non-GUI version called string.c so you don't have to have GTK installed.
March 25, 1999 (version 0.8.0)
Initial Release.
I     N     F     O     R     M     A     T     I     O     N

Gstring is guitar tuning application written in C using the GTK+ toolkit and FFTW for its fourier transform. A non-GUI version called "string" is included so you can run this without GTK or GtkDatabox.


At the present time, Gstring has enough functionality to be useful, but it's far from complete. It's still beta software, and new features and bug fixes are being added all the time. Although it takes fairly large number of samples from the sound card, the FFT routines are really good since we use FFTW. We use idle CPU cycles to do most of the work so that the machine is not too bogged down. On my Tosiba tecra 8k it takes about 3% to 5% of my cpu to run the non-GUI version. Screen shot

Here's the obligatory screenshot.

D     O     W     N     L     O     A     D

Recent sources can be found here:

  • gstring-1.0.0.tar.gz . This is includes i386 executable binaries of both gstring and string (non-GUI version) both dynamically linked. I've made many performance changes and I also created non-GUI version called string.c so you don't have to have GTK or GtkDatabox installed.

  • gstring-0.8.0.tar.gz Initial release. This is includes an i386 executable binary (dynamically linked).
System Requirements

Before you download it, you may want to verify that the following packages are installed on your system

  • Please see the README file included in the package for installation and usage instructions.

  • You need a sound card and a microphone. We need to be able to sample at 22050 Hz and collect 16384 samples at a time in 8 bit format (unsigned char). Almost all modern sound cards can do this. Feel free to tweek the sampling rate at sample size. We read directly from /dev/dsp and use ioctl() to set various things.

  • You will need at least version 2.1 of the FFTW libraries and headers as well. The package name looks like this "fftw-2.1.1-1.i386.rpm" and you can get this RPM (for RedHat) at various archives. You can get the source code from M.I.T. here: FFTW and compile it yourself. They even have Linux binaries and RPMS here: M.I.T. binaries. You can also get the latest RPM's from various RPM contrib archives . It will work with FFTW 2.0 but you may need to change the line in the source code that includes drfftw.h to make it include rfftw.h instead.

    For the non-GUI version (called string.c), you can ignore the following two requirements!

  • The GIMP Toolkit, available from the GTK site. You need at least versions 1.2.0 of both gtk+ and glib. If you are running a Redhat Linux system, get the latest stable gtk+ and glib library (both the libraries and the headers (which are located in the *-devel RPMS)) from one of these mirrors RPMs.

  • You will also need at lease version of the GtkDatabox widget. You will need this until this widget gets added to the main Gtk+ distributions. Grab the latest tar file, copy the two files, gtkdatabox.c and gtkdatabox.h into the gstring source directory (where you have gstring.c). If you didn't install gtkdatabox (which you don't have to), you will need to edit gtkdatabox.c and change

    #include "gtk/gtkdatabox.h"


    #include "gtkdatabox.h"

    in order to use my makefile.

any patches to contribute, please drop me a note.

C     O     P     Y     R     I     G     H     T

Copyright (C) 1998-1999 Sam Tannous

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.

You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Please NOTE: None of the code available here comes with any warranty or support, however, comments or questions may be addressed to me via email at stannous at employees dot org and I will do my best to handle them, though I cannot guarantee a timely response, as this code is UNSUPPORTED.