A Free, Open Source, Cross-Platform Audio Editor
Specially designed for Heart Sound and Lung Sound Visualization and Analysis
Phonocardiography enhancements funded and supported by Thinklabs Medical
Platform developed by the Audacity Team
This is the online help for Thinklabs Phonocardiography powered by
Audacity. It is meant to be a quick
Further documentation on medical application is to be provided at http://www.thinklabsmedical.com
Audacity documentation is available at:
|Skip to Start - moves the cursor to time 0. If you press Play at this point, your project will play from the beginning.|
|Play - starts playing audio at the cursor position. If some audio is selected, only the selection is played.|
|Loop - if you hold down the Shift key, the Play button changes to a Loop button, which lets you keep playing the selection over and over again.|
|Record - starts recording audio at the project sample rate (the sample rate in the lower-left corner of the window). The new track will begin at the current cursor position, so click the "Skip to Start" button first if you want the track to begin at time 0.|
|Pause - temporarily stops playback or recording until you press pause again.|
|Stop - stops recording or playing. You must do this before making changes, edting, saving or exporting.|
|Skip to End - moves the cursor to the end of the last track.|
|Import Audio - allows you to import sounds recordings into
the current Project/Patient. If you have recorded one or more sound(s)
from a patient, use Import to open the sound file. Continue to add
additional files that belong to a given patient, so that the Project
contains all the relevant recordings made during one exam. Each file is
imported into its own separate Track. Note that Stereo recordings will
import with both Left and Right. Use the Track Menu to Split Tracks,
then Delete the unwanted track, and then select Mono in the Track Menu.
This will convert stereo to Mono and remove a duplicate track.
|Amplify - (a Track or part of a Track must be selected to activate this function) - allows you to scale a track to be louder and softer. It is recommended that you simply Amplify to the maximum level. This can be done automatically by clicking Amplify and then OK, and the Amplify function will adjust to maximize without clipping any peaks. If you wish to control the amplification level, enter a value into the dB window. Note that a signal doubles in amplitude for every +6dB and halves for every -6dB amplitude change. Note that you can select a small segment of a waveform, such as the sounds between peaks, and amplify them significantly to enhance murmurs.|
|Filter - (a track or part of a track must be selected
to activate this function) - allows you to filter a track or part of a
track. There are various pre-set filters for manipulating heart sounds
and lung sounds, or you can adjust the Equalizer to filter sound to
your own specifications. For instance, you may find that a sharp
high-pass filter (allow high, block low frequency) enables you to
listen to a particular valve sounds very clearly. Merely place your
cursor over the Equalization Curves, and draw the desired response to
create a custom filter.
|Rate Change - (a track or part of a track must be selected to activate this function) - changes the tempo (speed) of the audio without changing the pitch. This will change the length of the selection. This is useful for expanding heart sounds so that heart sound splits, S3 or S4 and rapid events such as gallops can be slowed down and spread out.|
|Display Spectrograms On/Off - allows you to view tracks with the Spectrogram below the Waaveform, or the Waveform without Spectrogram. The Spectrogram shows frequence content by showing Frequency along the vertical axis and color as the Intensity of a given frequency. For instance, if you see a bright region towards the lower part of a spectrogram, it suggests that there is a high intensity of low frequency energy at that moment in time. This is most useful for seeing murmurs or additional heart sounds such as S3 in a waveform which may not be visible on the time-domain plot of the waveform. Note that if you have a slow computer or limited memory, it is best to manipulate tracks (zoom, pan, etc.) without the Spectrogram, and the click Display to show the Spectrogram once you've zoomed in. Otherwise you may find that zooming or panning across a track is very slow.|
The Mixer Toolbar has three controls, used to set the volume levels of your audio device and choose the input source. The leftmost slider controls the playback volume, the other slider controls the recording volume, and the control on the right lets you choose the input source (such as "Microphone", "Line In", "Audio CD", etc.). Use the Record Level Meter to set the correct level. To record from your stethoscope, connect the stethoscope to the Mic or Line Input, and select the correct Input source for the stethoscope. Then adjust the Volume Control on the stethoscope, and the Input Volume level on the slider. Generally it is best to set the stethoscope Volume Control to Maximum (10). However, check the recording for clipping of the signal which will produce distortion and annoying sound artifacts. Ideally, set the level to peak at about 50-75% of maximum. Once you have made your recordings, use Amplify on the Thinklabs Toolbar to maximize signal levels.
Changing the Speaker controls has no effect on the audio data in your project - in other words it doesn't matter what the output volume level is when you Export or Save a project - the end result is the same.
All of the buttons on this toolbar perform actions - and with a couple of exceptions, they're all just shortcuts of existing menu items to save you time.
Holding the mouse over a tool will show a "tooltip" in case you forget which one is which.
|Trim away the audio outside the selection|
|Silence the selected audio|
|Redo (repeat last command).|
|Fit selection in window - zooms until the selection just fits inside the window.|
|Fit project in window - zooms until all of the audio just fits inside the window.|
The Meter Toolbar is used for monitoring the input and output audio levels. Typically it is used to make sure that the loudest volume is as loud as possible (for maximum fidelity) without clipping or distorting it. The output (playback) meter is the green one, on the left in the picture above, and the input (recording) meter is in red, on the right.
The meters provide a visual indication of the current audio levels going in and out of audacity.
If you float the Meter Toolbar by dragging it out of the toolbar, you can resize it and even orient it vertically.
Normally the meters are only active when you are playing or recording audio. However, you can also monitor input when you're not recording - to do this, either select "Monitor Input" from the input meter's pop-up menu, or else just click on the input meter. If you have a microphone or other input source attached, you will be able to watch the level of the audio before you start recording.
Each meter shows several characteristics of the audio level at once:
If clipping is detected when you are recording, you should stop, lower
the volume of your input source, and start recording again from the
If the output meter clips then you need to make some or all of your
quieter using the track gain control.
If the level of the input (recording) source is too high, you can try to lower the input level using the Mixer Toolbar, but if this doesn't work, you should try to lower the volume of the external input source (e.g., your microphone, cassette player, or record player).
It is possible, especially if you have an older, slower computer, that the Meter Toolbar may interfere with Audacity's ability to record or play audio with the highest quality, because your computer is so busy redrawing the meters that it doesn't have time to process enough audio. In this is the case for you, you can disable the Meter Toolbar in the Interface tab of the Preferences dialog.
Name... - lets you change the name of the track. Importing a
Track will name the Track to the file name. Recording will not name a
Track - you must name it using this Menu selection.
Move Track Up - exchange places with the track above this one.
Move Track Down - exchange places with the track below this one.
Waveform - sets the display to Waveform - this is the default way of visualizing audio.
Spectrum - display the track as a spectrogram, showing the
amount of energy in different frequency bands. Shoing the Spectrum
requires a fast computer. It is better to zoom in to the view you want
and then show spectrum, rather than panning and zooming with Spectrum
Split Stereo To Mono - when you Import a Track, if it is a
Stereo recording, both Channels/Tracks will show (left and right). For
phonocardiography use, the second track is redundant or blank. Once you
Import a track, Click Split Stereo to Mono, and it will split Left and
Right. Then DELETE the redundant track (X in the top left corner of the
Label Tracks can be used to annotate an audio Track. They can be
used to label S1, S2, S3, S4, murmurs, and even save selected portions
of a sound.
Label Tracks are generated automatically when you Import a sound
file. You can then delete the Label Track by clicking X in the left
corner of the Label Track.
To create a new Label Track, select New Label Track from the
click or select where you would like to place a label, and choose
Add Label at Selection from the Project Menu,
and a Label Track will be created automatically if one doesn't already
To add a new label, click or select where you want the new label to appear, then select Add Label at Selection from the Project Menu, then type the name of the label, and finally press Enter or click outside of the label.
In addition, you can use the Add Label at Playback Position command from the Project Menu if you want to add a label at a certain place while you are listening. By default, this command has a shortcut of Control+M.
To edit the name of a label, click anywhere in it.
Zoom in first if there are too many labels crowded together and you
are unable to click on the one you want. When a label is selected
for editing, it looks like the S2 label below:
When editing the name of a label, you are limited to using just the backspace key for editing. There is currently no way to move the insertion point to append a letter to the beginning of a label.
Once a label is selected, you can move to the next label by pressing
Tab, and move to the previous label by pressing Shift-Tab.
To delete a label or multiple labels, select the area containing the
label flags you wish to delete, and choose Silence from the
Alternatively you can delete
an individual label by clicking on it and pressing Backspace until you
have deleted all of the characters in the label, then pressing Enter.
To move labels, use the normal editing commands like Cut, Copy, Paste, Delete, and Silence.
You can save a selection in a label. When you create a new label, the left selection edge determines the position of the label's flag. However, the right selection edge is also stored in the label, and when you click on it, the full original selection will be restored. If you wish to apply this selection to only a subset of the tracks, shift-click in the label area to the left of each track's waveform to change whether each track is part of the selection or not.
Label Tracks are saved when you save an Audacity Project, so if you
just want to continue using the labels along with the same file,
just save a project. But you can also export the labels to a simple
text file, and import them. This allows you to save information about
the locations of events in an audio file for use in another program,
and also provides a way to mass-edit the labels if necessary.
To export a Label Track, choose Export Labels... from the File Menu. The exported file will contain one line per label, starting with the time offset in seconds, then a tab, and then the name of the label, for example:
1.217995 Bass intro
3.921073 Guitar enters
7.584454 Drums enter
To import a Label Track, choose Import Labels... from the File Menu.
New - creates a new empty window
Open... - opens an audio file or an Audacity project in a new window (unless the current window is empty). To add audio files to an existing project window, use one of the Import commands in the Project menu.
Close - closes the current window, asking you if you want to save changes. On Windows and Unix, closing the last window will quit Audacity, unless you modify this behavior in the Interface Preferences.
Save Project - saves everything in the window into an Audacity-specific format so that you can save and quickly continue your work later. An Audacity project consists of a project file, ending in ".aup", and a project data folder, ending in "_data". For example, if you name your project "Composition", then Audacity will create a file called "Composition.aup" and a folder called Composition_data. Audacity project files are not meant to be shared with other programs - use one of the Export commands (below) when you are finished editing a file.
Save Project As... - same as Save Project (above), but lets you save a project as a new name.
Recent Files ... - brings up a list of files you have recently opened in audacity to be re-opened quickly.
Export As WAV... - exports all of the audio in your project as a WAV file, an industry-standard format for uncompressed audio. You can change the standard file format used for exporting from Audacity by opening the File Format Preferences . Note that exporting will automatically mix and resample if you have more than one track, or varying sample rates. See also File Formats.
Export Selection As WAV... - same as above, but only exports the current selection.
Export as MP3... - exports all of the audio as an MP3 file. MP3 files are compressed and therefore take up much less disk space, but they lose some audio quality. Another compressed alternative is Ogg Vorbis (below). You can set the quality of MP3 compression in the File Format Preferences. See alsoMP3 Exporting.
Export Selection As MP3... - same as above, but only exports the current selection.
Export Labels... - if you have a Label Track in your project, this lets you export the labels as a text file. You can import labels in the same text format using the "Import Labels..." command in the Project Menu.
Export Multiple... - lets you split your project into multiple files all in one step. You can either split them vertically (one new file per track), or horizontally (using labels in a Label Track to indicate the breaks between exported files.
Page Setup - configure how Audacity will print out the track waveforms using the Print option, and what printer to use.
Print - Print out the main window view from audacity showing the tracks and waveforms.
Exit (Quit) - closes all windows and exits Audacity, prompting you to save any unsaved changes first.
Undo - This will undo the last editing operation you performed to your project. Audacity supports full unlimited undo - meaning you can undo every editing operation back to when you opened the window.
Redo - This will redo any editing operations that were just undone. After you perform a new editing operation, you can no longer redo the operations that were undone.
Cut - Removes the selected audio data and places it on the clipboard. Only one "thing" can be on the clipboard at a time, but it may contain multiple tracks.
Copy - Copies the selected audio data to the clipboard without removing it from the project.
Paste - Inserts whatever is on the clipboard at the position of the selection or cursor in the project, replacing whatever audio data is currently selected, if any.
Trim - Removes everything to the left and right of the selection.
Delete - Removes the audio data that is currently selected without copying it to the clipboard.
Silence - Erases the audio data currently selected, replacing it with silence instead of removing it.
Split - Moves the selected region into its own track or
replacing the affected portion of the original track with silence.
See the figure below:
Duplicate - Makes a copy of all or part of a track or set of tracks into new tracks. See the figure below:
Select ... > All - Selects all of the audio in all of the tracks in the project.
Select ... > Start to Cursor - Selects from the beginning of the selected tracks to the cursor position.
Select ... > Cursor to End - Selects from the cursor position to the end of the selected tracks.
Find Zero Crossings - Modifies the selection slightly so that both the left and right edge of the selection appear on a positive-slope zero crossing. This makes it easier to cut and paste audio without resulting in an audible clicking sound.
Selection Save - Remembers the current selection (or cursor position), allowing you to restore it later.
Selection Restore - Restores the cursor position to the last position saved by "Selection Save".
Move Cursor ... > to Track Start - Moves the cursor to the start of the current track.
Move Cursor ... > to Track End - Move the cursor to the end of the currently selected track.
Move Cursor ... > to Selection Start - Moves the cursor to the start of the current selection.
Move Cursor ... > to Selection End - Moves the cursor to the end of the current selection.
Snap-To ... > Snap On - Enable Snap-To mode. When Snap-To mode is enabled, the selection will be constrained to the nearest interval on the time scale, by default the nearest second. So if you click and drag from 4.2 seconds to 9.8 seconds, it will result in a selection from 4 seconds to 10 seconds, exactly. You can change the units that are snapped to using the "Set Selection Format" option in the View Menu .
Snap-To ... > Snap Off - Turns Snap-To mode off letting you select arbitrary ranges of time
Preferences... - opens the Preferences dialog.
Zoom In - Zooms in on the horizontal axis of the audio, displaying more detail about less time. You can also use the zoom tool to zoom in on a particular part of the window.
Zoom Normal - Zooms to the default view, which displays about one inch per second.
Zoom Out - Zooms out, displaying less detail about more time.
Fit in Window - Zooms out until the entire project just fits in the window.
Fit Vertically - Resizes all of the tracks vertically so they all fit inside of the window (if possible).
Zoom to Selection - Zooms in or out so that the selection fills the window.
History... - Brings up the history window. It shows all the actions you have performed during the current session, including importing. The right-hand column shows the amount of hard disk space your operations used. You can jump back and forth between editing steps quite easily by simply clicking on the entries in the window, the same as selecting Undo or Redo many times in a row. You can also discard Undo history to save disk space. The history window can be kept open while you work.
Import Audio... - This command is used to import audio from a standard audio format into your project. Use this command if you already have a couple of tracks and you want to add another track to the same project, maybe to mix them together. You cannot use this option to import Audacity Projects. The only way to combine two Audacity Projects is to open them in separate windows, then copy and paste the tracks.
Import Labels... - This command takes a text file which contains time codes and labels, and turns them into a Label Track.Import Raw Data... - This menu command allows you to open a file in virtually any uncompressed format. When you select the file, Audacity will analyze it and try to guess its format. It will guess correctly about 90% of the time, so you can try just pressing "OK" and listening to the result. If it is not correct, however, you can use the options in the dialog to try some other possible encodings.
At the beginning of your imported track(s), you may notice a little bit of noise. This is probably the file's header, which Audacity was not able to parse. Just zoom in and select the noise with the Selection Tool, and then choose Delete from the Edit Menu.
Edit ID3 Tags... - Opens a dialog allowing you to edit the ID3 tags associated with a project, for MP3 exporting
New Label Track - This creates a new Label Track, which can be very useful for textual annotation.
Remove Tracks - This command removes the selected track or
tracks from the project.
Even if only part of a track is selected, the entire track is removed.
You can also delete a track by clicking the X in its upper-left corner.
To cut out only part of the audio in a track, use
Delete or Silence.
Add Label at Selection - This menu item lets you create a new label at the current selection. You can title the label by typing with the keyboard and then hitting "Enter" when you're done.
Add Label at Playback Position - This menu item lets you create a new label at the current location where you are playing or recording. Do this if you want to mark a certain passage while you're listening to it. You can title the label by typing with the keyboard and then hitting "Enter" or "Return" when you're done. Only available whilst audacity is playing.
Thinklabs Phonocardiography Help - Takes you to www.thinklabsmedical.com Help information on using Thinklabs Phonocardiography Software..
Audacity Help - The original Audacity Help information. This
can be useful to see some of the tools that exist in standard Audacity.
In some cases, the standard Audacity provides features that have been
removed from Thinklabs Phonocardiography.
About Thinklabs - takes you to www.thinklabsmedical.com.
About Audacity - displays the version number and credits.
If you compiled Audacity yourself, check here to verify which
optional modules were successfully compiled in.
The items in this menu only work when you have audio selected.
Audacity does not have any real-time effects; you must select the
audio, apply the effect, and then listen to the results.
Most effects have a Preview button. Clicking on this button plays up to three seconds of audio, allowing you to hear what it will sound like after the effect is applied. This is useful for fine-tuning the effect parameters.
Amplify - changes the volume of the selected audio. If you click the "Allow clipping" checkbox, it will let you amplify so much that the audio ends up beyond the range of the waveform, and is clipped (distorted). The default value when you open the effect is to amplifiy so that the loudest part of the selection is as loud as possible without distortion.
Change Tempo - changes the tempo (speed) of the audio without
changing the pitch. This will change the length of the selection. This
is useful for expanding sounds so that heart sound splits and other
rapid events can be slowed down. Note that you must select part or
whole track to activate this function.
Equalization - Boost or reduce arbitrary frequencies. You can select one of a number of different curves designed to equalize the sound of some popular record manufacturers, or draw your own curve.
FFT Filter - similar to Equalization, lets you enhance or reduce arbitrary frequencies. The curve here uses a linear scale for frequency.
Normalize - allows you to correct for DC offset (a vertical
displacement of the track) and/or amplify such that the maximum
amplitude is a fixed amount, -3 dB. It's useful to normalize all
of your tracks before mixing. If you have a lot of tracks, you may then
need to use the track gain sliders to turn some down.
High Pass Filter - allows you to filter out lower frequencies and keep the higher frequencies. This is useful for filtering out heart sounds when you are only interested in lung sounds, enhancing valve clicks, etc. This is a quick filter to use, however we recommend using the Filter Button on the Thinklabs Toolbar for better control of the filtering parameters.
Low Pass Filter - allows you to filter out higher frequencies and keep the lower frequencies. This is useful for filtering out hiss or white noise, ambient noise, or breath sounds, and enhance heart sounds. This is a quick filter to use, however we recommend using Filter Button on the Thinklabs Toolbar for better control of the filtering parameters.
Plot Spectrum - To use this feature, first select a region of audio from a single track, then select "Plot Spectrum". It opens up a window that displays the Power Spectrum of the audio over that region, calculated using the Fast Fourier Transform. The graph represents how much energy is in each frequency. As you move the mouse over the display, it shows you the nearest peak frequency. This window can also display other common functions that are calculated using the Fast Fourier Transform, including three versions of the Autocorrelation function. The Enhanced Autocorrelation function is very good at identifying the pitch of a note.Import Audio - allows you to add a sound file to the Project (Patient). If you have recorded one or more heart or lung sounds, and you wish to work on them, or add them to other sound tracks you already have open, use Import to import the sound file into a new audio track. When you use Import, a Label Track will also be added to facilitate annotation of the imported sound..
New Label Track - allows you to add a new Label Track to a project. This is to provide annotation..
Light/Dark Color Scheme -
There are two color schemes - dark background and light waveforms (Dark
Color Scheme), or light background and dark waveforms (Light Color
Schemes). The Dark Color Scheme is intended for viewing on a computer
screen, and the Light Color Scheme is useful for copying the screen to
paste into reports that might be printed. By using a Light Color Scheme
for printed reports, you save toner ink, and create prints that are
easier to read. You may also find the Light Color Scheme to be more
effective during Powerpoint presentations or other teaching using a
How to Copy the Display - quick instructions on copying the display to the clip-board so that you can paste the screen image into a document or report.
You can view any audio track as a Spectrogram instead of a Waveform by selecting one of the Spectral views from the Track Pop-Down Menu. This dialog lets you adjust some of the settings for these spectrograms.
Use this panel to set the location of Audacity's temporary directory (folder). Audacity uses this directory whenever you work on a project that you haven't saved as an Audacity Project (AUP file) yet. You have to restart Audacity (close and open it again) for changes to the temporary directory to take effect.
This panel lets you change keyboard shortcuts. All of the commands
that appear in Audacity menus appear on the left, along with a few
other buttons that can get keyboard shortcuts. To change a command,
first click on the command you want to change. Then type the new
keyboard shortcut on your keyboard. Verify that the correct shortcut
appears in the box below. If it's what you want, press the Set
button. Or to get rid of a keyboard shortcut, press Clear.
To reset to Audacity's defaults, press the Defaults button. This will get rid of any changes you have made.
If you have customized your keyboard layout and want to share it with someone else, you can press Save... and save your complete keyboard layout as an XML file that you can share. To load an existing layout, press the Load... button and locate the XML file.
This panel doesn't let you change anything, but it lets you view all of the commands and actions that you can do using the mouse, many by holding down extra modifier keys.
Audacity projects are stored in an AUP file, which is a format that has been highly optimized for Audacity so that it can open and save projects quickly. In order to achieve this speed, Audacity breaks larger audio files into several smaller pieces and stores these pieces in a directory with a similar name as the project. For example, if you name a project "chanson", then Audacity will create a project file called chanson.aup to store the general information about your project, and it will store your audio in several files inside a directory called chanson_data. While the Audacity Project format is based on XML and is meant to be open, it is not currently compatible with any other audio programs, so when you are finished working on a project and you want to be able to edit the audio in another program, select Export from the File Menu.
This is the default uncompressed audio format on Windows, and is supported on almost all computer systems. Audacity can read and write this format. People working with multichannel audio at very high quality settings, or with very long recordings, should note that the maximum size of a wav file is 2GB.
This is the default uncompressed audio format on the Macintosh, and it is supported by most computer systems, but it is not quite as common as the WAV format. Audacity can read and write this format.
This is the default audio format on Sun and NeXT computers, and
usually u-law compressed, so it is not a very high quality
format. U-law compression is a very simple, fast but low quality way to
reduce the size of the audio by about 50%. This format was one of the
formats supported by
Web browsers, and it is still often used for short sound effects where
quality is not as important.
Audacity exports both 8-bit u-law files, and 16-bit uncompressed files, which are the same quality as wav or aiff files.
This is a compressed audio format that is a very popular way to store music. It can compress audio by a factor of 10:1 with very little degradation in quality. Audacity can both import and export this format. For more information on how to export MP3 files from within Audacity, see Exporting MP3 Files.
This compressed audio format was designed to be a free alternative to MP3. Ogg Vorbis files are not as common, but they are about the same size as MP3 with better quality to rival AAC or WMA. Audacity can import and export this format.
Audacity cannot encode MP3 files by itself, because the MP3 encoding algorithm is patented and cannot legally be used in free programs. However, Audacity has been programmed to recognize other existing MP3 encoders that you can download separately. All you have to do is obtain the appropriate MP3 encoder for your computer and then show Audacity where it is located.
|If you use...||You need to...|
|Windows||Download LAME and look for the file called lame_enc.dll|
|Linux/Unix||Download LAME and compile it as a shared object, then look for the file called libmp3lame.so|
|Macintosh||Download LAMELib (see our website for more info).|
For links to these MP3 encoders, go to the Audacity web page
(http://audacity.sourceforge.net/) and go to the page for
your operating system.
The first time you try to export an MP3 file, Audacity will ask you to locate your MP3 encoder. Locate the file indicated above. From then on, Audacity will not need to ask you again and you will be able to export MP3 files easily.
Note: Audacity is distributed under the terms of the GNU General Public License (GPL) - the full text of the license is below. All of the source code to Audacity is available from http://audacity.sourceforge.net. However, some of the libraries that Audacity is based on are distributed under the terms of different (but GPL-compatible) licenses.
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.