GNUitar Guitar processor software What is GNUitar ? GNUitar is a real-time sound effects software that allows you to use your computer as a guitar processor. It has GTK+ based interface. It can be compiled on any flavor of UNIX that have GTK+ 1.2, 2.0, Glib, pthreads and OSS sound driver. It also works on Windows. This program was inspired by two earlier works: * Ele 0.1 by Morris Slutsky [1]http://www-personal.umich.edu/~mslutsky/elepage/index.html * Guitar FX Processor by Marin Vlah [2]http://fly.srk.fer.hr/~mvlah/fx_processor.html GNUitar is free software and is distributed under GNU GPL license. GNUitar is pronounced like "GNU Guitar". English is not my native language, so when I invented this word I did not think how it should be pronounced. Unless someone has a better idea, let's pronounce it like this for now. Download [3]http://www.gnuitar.com/downloads.php [4]http://freshmeat.net/projects/gnuitar [5]http://sourceforge.net/projects/gnuitar Requirements You will need: * GTK+ versions 1.2.6 or better, or GTK+ 2.0 or better * GLIB 1.2 or better * POSIX threads on UNIX * full-duplex sound card * To compile: GCC on UNIX, Microsoft Visual C++ 6.0 or 7.0 on Windows Performance GNUitar should run on even low-end hardware. It has been reported to work on even a Pentium II / 300 MHz computer. However, some of the effects demand more CPU power, and probably ~1 GHz machine is required for running complicated effect setups. When running the program, make sure you close all unnecessary applications, to free more resources. Avoid anything that can cause lots of disk I/O or sudden bursts of CPU usage. GNUitar runs with increased priority if available; this may cause hang-ups and delayed system response on low-end machines potentially making the computer unusable. Therefore you should take care to save all important data in other applications before launching GNUitar. This situation probably does not occur in practice, but with elevated task priorities the consequences for misbehaviour become greater. Performance - UNIX notes GNUitar executable file should be setuid root to process sound using real-time priority class; otherwise you'll hear glitches and delays while switching between windows. The program drops privileges as soon as the effect-processing thread has been started, even before any GTK+ initialization or command line handling, so it should be safe on any system. GNUitar has a latency of about 4-8ms on Linux/Pentium II/450/AWE64 ISA! Performance - Windows notes Windows have complex problems with latency when processing audio in real time, mostly because of its non-uniform drivers architecture. GNUitar latency on Windows is much higher than on Linux. The real latency depends mostly on the sound card's driver. GNUitar for Windows has two playback methods: * Playback via MME * Playback via DirectSound The first method uses the standard MME API (functions waveOut*()). The second method requires DirectX to be installed and uses DirectSound for playback. The method can be switched from the sampling parameters dialog, by checking/unchecking the "Playback via DirectSound" checkbox. DirectSound playback shows the best results that are almost close to Linux performance. The MME playback exists for compatibility purposes, and for another reason. If a driver is not optimized for DirectSound, Windows will automatically emulate DirectSound output using the MME devices. If a WDM driver is used (see below), DirectSound support is not implemented by the driver developer but by the operating system. MME playback support exists specially for this case, when the output via DirectSound is emulated by OS. Windows Sound Drivers Overview There are few kinds of sound drivers for Windows: old VXD (Win95/98), NT4-kernel style, and modern WDM drivers that were introduced in Windows 98/SE. AFAIK WDM drivers provide much lower latency. Therefore, avoid VXD drivers; use modern WDM drivers instead, if possible. The difference in latency between two kinds of drivers is really noticeable: I had 100ms up to ~400ms on Pentium III/850/ISA AWE64/VXD/MME playback, and ~60ms on Pentium MMX/166/Yamaha OPL3/WDM/MME playback laptop. Try to start/stop sound few times, if the initial latency is bad. The kind of bus (PCI Express/PCI/ISA) of the sound card does not affect the latency that much, it's most often a software issue. Old sound cards that are unusable in Windows are likely to work just fine in Linux. How To Control Latency The latency can be controlled to a high degree in the Options dialog. It can be invoked from the Options->Sampling Parameters menu (or by Ctrl-P). You will need to stop playback before entering this dialog. There is an option called "Fragment Size". The lower the fragment size is, the better is the latency, but this is not a free lunch. If the latency is too low, the CPU drain from constantly attending to the sound card leaves no time for anything else! You may need to increase the fragment size on low-end computers. Try increasing this value if you hear repeated scratches from the speakers. General notes on how to achieve the best performance: * The lower the sampling rate, the less there is CPU load. Drawback is the lower sound quality. * The lower the fragment size, the better is the latency. Drawback is the higher system load. * The audible periodic scratches (DirectSound output) can be fixed by decreasing the overrun threshold (sampling parameters dialog). * Increase the fragment size and decrease the sampling rate on low-end CPU, to gain the best latency/overruns/load ratio. * On Windows, prefer WDM drivers, if possible. Try both MME and DirectSound playback; choose which is the best. * Prefer Linux over Windows. Properly tuned Linux kernel has 10-100 times better latency on the same hardware. * Make gnuitar executable setuid root on UNIX, to allow it run with increased priority. Installation See [6]INSTALL file for common installation notes. Interface and Controls There are 3 areas in the main window. The right area is a list of all available effects. The central area contains effects that are currently used. There are few buttons right to it should be used to add/remove effects and change its order. Each effect has separate top-level control window with appropriate sliders. Each effect-control box is shown in the window manager task bar. The left area contains available effect layouts, or presets, and button to add the one. Layout is a "snapshot" of your effects and its' settings, you can load/save using "File" menu. Big "Switch" button is used to switch layouts. In this manner, you can change current sound by one mouse/keyboard click. Big "START/STOP" button is used to start/stop playback. You may want to try pressing it a few times if you experience buffer overruns or broken sound output. You can write track of what you play to a file. Just click check-box "Write track" at the bottom of program window, enter file name and play. Don't forget that continuous track write can fill out your hard drive. The track file format is WAV data on Windows and Linux. Linux WAV writing depends on libsndfile. However, if you do not have sndfile, then the data is raw 16-bit signed data, with the sampling rate and channels as defined in the sampling parameters dialog. You can convert it with [7]sox like this: sox -w -s -c 1 -r 44100 track.raw track.wav, and then to [8]ogg vorbis: oggenc track.wav Effects The controls and description of the effects follow below. Autowah The autowah is implemented using a digital model of the moog ladder filter. The model was designed by Antti Huovilainen, and it was published at DAFx'04. On low resonance values it acts a lot like a 2nd order bandpass filter with some saturation colouring the sound into a warm, bloomy sound. On high resonance values, the wah becomes a sound synthesizer itself. period length of one cycle of effect low freq lowest frequency (the cycle ends at this freq.) high freq high frequency (the cycle starts at this freq.) dry/wet mix clean sound with processed sound resonance choose resonance of the moog ladder filter. Values above 110 % lead to self-supporting oscillations. continuous sweep The Wah can be run in two modes, one where it sweeps between the low and high frequency in /\/\/\/ type manner, and another where it "listens" to input signal and tries to detect guitar picks for triggering the wah sweep synchronously with guitar picking. The pick detection works best if the wah receives unaltered input signal from the guitar, rather than say distorted input from the overdrive effect. Distortion distort power of effect level volume in case you need to mute it quickly saturation high-frequency "sand" in the sound lowpass lowpass filter that can be used to change the sound feel Delay A no-frills time-delay effect that can also split original signal in several physical output channels if available. decay decay % between subsequent repeats time delay time between repeats repeat number of repeats multichannel (if available) switch effect to circulate delay voices through available channels Reverberator Reverberator produces echoed "space" sound. Controls: delay delay before repeating starts wet "wet" (processed) sound volume dry "dry" (clean) sound volume regen decay % between subsequent repeats Tremolo Tremolo is a pitch shifter that does not preserve note relationships (in other words, a bit like a genuine tremolo bar). This effect is really a version of Stereo phaser with Wet at 100 % and only one channel used for output. period length of one cycle of effect amplitude depth of modulation Chorus / Flanger This effect mixes a time-delayed versions of input with the original signal simulating several players playing the same tune. Variations of this concept also produce flanger and vibrato effects. ChorusUse several voices and long base delay time. FlangerWith just 1 voice and low delay time, the effect becomes a flanger. However, by adding more voices and increasing the delay, the sound again turns choruslike. If the multichannel mode is available and enabled, the effect distributes one voice per output channel. Vibrato If dry/wet at 100% (fully wet) and 1 voice, this effect is a vibrato. delay fixed time delay before mixing depth the depth of modulation period the length of modulation cycle voices number of chorus voices to mix dry/wet dry vs. wet mixing ratio regen feedbacks some of the output back to input Echo Another reverberation effect, but not like the others. Echo simulates a large hall echo using varying length of delays in all its voices, and produces complicated echo pattern that simulates large hall full of hard surfaces of different sizes. decay decay % between subsequent repeats voices number of independent echo voices delay sets the length of maximum echo delay Phaser Phaser operates by introducing a variable frequency dependant delay over the audio signal. If the dry/wet ratio is at 50 %, the delayed components will produce interference with the original signal which produces moving notches across the audio spectrum, producing the phaser sound. However, if dry/wet ratio is at 100%, this effect becomes a vibrato. period length of the modulation cycle depth an unitless measure of the maximum delay imposed by the effect on the audio dry/wet the dry vs. wet mixing ratio Rotary speaker Rotary speaker is an implementation of the combined horn and bass speaker mounted on opposite sides of a rotating cabinet. As the cabinet turns, the doppler effect shifts the audio spectrum up and down, depending on whether the speaker is receding or approaching. period Time for one complete rotation of the cabinet. Vibrato Slows down and speeds up playback to achieve an effect like old tape. This is done by time-delaying the playback in a long sinuous curve. * period - length of one cycle of effect * amplitude - maximum time delay Overdrive Another cool distortion. Emulates the distortion circuits in many popular overdrive pedals such as Ibanez TS9. drive how much amplification clip changes tone from TS9-type fuzz to less powerful distortion treble tone control Tube amplifier Because Overdrive is limited to simulating the Ibanez TS9, another effect is required for more powerful distortion sounds. The effect loosely models a tube amplifier with a variable number of output stages, each which add different kind of clipping to the sound. Some tone controls are provided for additional flexibility. stages Number of stages. All can be used to produce distortion, 5 stages being very close to overkill. gain Gain per stage. Higher gains drive the later stages into more clipping. bass cut A highpass filter with tunable cutoff frequency. Increasing this value reduces bass from the output. middle cut Decreasing the value of the control introduces a deepening notch at 720 Hz, allowing the effect to be used for dark distortion sounds. treble cut A lowpass filter with tunable cutoff frequency. This can be used to change the tone and control noise. Noise gate Simple noise reduction effect. IMPORTANT NOTES * Should be used BEFORE the distortion. * If you want to achieve a note slight attack (fade in), you must increase the Hold time as much as possible. Otherwise with the low Attack time and low signal you the effect will be constantly false triggered, therefore breaking the fade-in effect Controls are: * threshold - minimal volume of the sound required to pass signal to the output. * hold - if the signal is below threshold during this time, it will be muted. Should be as low as possible. Simply - it is an effect triggering time. * release time - if the signal is below threshold, the playback is not muted immediately but fades out this time instead * attack - if the signal is above the threshold, it will fade in this time. Usually should be 0, but having it non-zero will produce interesting effect just like the violin sound. * hysteresis - the threshold required to turn off the playback when it is already on (the regular threshold affects only the growing signal, while hysteresis affects fading signal). Should not be made larger than the threshold value. Equalizer bank A no-frills equalizer effect with plenty of sliders for fine grained control of the frequency response. Equalizers are rumoured to be especially useful before and after distortion effects. Pitch shifter Pitch shifter alters audible pitch by dividing the input into several small buffers and playing through them in a different rate, causing the pitch alteration. Because rate shifting implies generating new sample data or omitting some of the sample data, there is a discontinuity problem at buffer edges which is handled through weighting the buffer data with windowing function and overlapping the buffers in such a way that sample amplitude remains fairly constant. Bugs With many pitch shifting values several frequencies encounter difficult phase cancellation that may render some notes almost inaudible or significantly alter their characteristics. Additionally, as the new sample data is "generated" from audio data across several hundred milliseconds, there will be echo effects when adjusting the rate upwards. Finally, the dry signal is delayed by this effect to control some of the phase cancellation during wet/dry mixing phase. The latency introduced depends on the amount of rate shifting. halfnote how many half-notes to adjust upwards or downwards finetune adjust for in-between tones for half-notes wet/dry select mix % between unprocessed and processed signal Tuner This is a simple general-purpose instrument tuner. The display contains: * the current detected frequency of the sound * the ideal frequency of the sound * the note closest to the measured frequency * an indicator that shows how the two frequencies are matched * list of typical guitar tunings, and indicators that light up when frequency matches their pretabulated frequencies. How to tune In nutshell: if the indicator veers to left, tune up; if it veers to right, tune down. Tuner is generally agnostic to the desired tuning. Some indicators are provided that match some of the most typical guitar tunings, but whether you use them or not is up to you. Tricks and tips Tuner is very sensitive to noise (unfortunately), so a good, clean signal is the most important thing. If tuner doesn't quite seem to work for you out of the box, try the following tricks: * Mute all other strings lightly with your fingers. Don't press or bend the strings, if you have a floating bridge--this will have similar effect as pressing tremolo bar down. * Pick the string normally above the pickups. The tuner tends to find the frequency component with the most amplitude. If you pick the strings in an unusual way, it may find some high-order harmonics instead (or even worse, oscillate between some upper harmonic and the base frequency). * Try different pickups if tuner has difficulties with particular pickups. You can also use the tuner to fix your guitar's intonation (the length of the string). You may need to check intonation whenever you change your string make or gauge. First, tune your guitar as perfectly as possible, then pick all the strings at the 12th fret. You should see the tuner report double the frequency but the accuracy indicator should stay centered. Compare this frequency with the harmonic 12th frequency -- they should be the same. However, if the indicator of fretted 12th is right to the harmonic, you need to make the string longer. If it is to left, you need to make the string shorter. As a general guideline, the thinnest strings are the shortest, and the thickest strings the longest. Bugs * Windows version is not very stable yet. There could be problems with memory leaks and with sound initialisation/closing. Send bug reports to [9]fonin at gnuitar dot com. About Free Software Development You should always keep in mind, that development of free software doesn't work in the same way as commercial development. Every successful free software project has an active user base behind it. This means that your comments, ideas and bug reports are extremely important. If something doesn't work, or some feature is missing, please mail me about it. Thank you in advance! You can send GNUitar related mails to me at [10]fonin at gnuitar dot com. Legal Issues GNUitar is a free software and is distributed under the terms of GNU GPL license. You are free to copy and share the program with other people, you are not limited with the number of computers where you can use it. You can redistribute the program and the works based on it under the terms of GPL license. You have complete sources and detailed compile instructions to build the program yourself, as well as binaries. You have full freedom with using and sharing the program, according to the GNU software concept. Frequently Asked Questions See [11]this page. Related Links [12]http://www.gnuitar.com/downloads.php and [13]http://freshmeat.net/projects/gnuitar and [14]http://sourceforge.net/projects/gnuitar - GNUitar project pages [15]http://www.linux-sound.org - excellent categorized list of Unix sound software [16]http://home.sprynet.com/~cbagwell/sox.html - SoX playback/record/processing software [17]http://bladeenc.mp3.no/ - BladeEnc, free MP3 encoder Authors [18]Max Rudensky <fonin at gnuitar dot com> <fonin at yahoo dot com> [19]Antti S. Lankila <alankila at bel dot fi> Eugen Bogdan (/Dexterus) <dexterus at hackernetwork dot com> Vasily Khoruzhick <anarsoul at gmail dot com>