SHAART is a Python-based audio analysis toolkit, for educational purposes
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Main web page:

SHAART Acoustic Tools, v 0.6
(Feb 12, 2016)

(yes, the name is a joke)
About    Downloads    Release Notes    License    Screenshots    Running From Source


This lightweight audio analysis suite was initially written for educational purposes only over a period of 4 days. (And then improved in bits.)
It's amazing how much you can accomplish with minimal knowledge of Python programming.

The name "SHAART" uses the author's initials (S.H.) in homage to the famous "SMAART" set of acoustics analysis tools.
That and "SHAART" is just hilarious to say, for other reasons.
(Note: "homage" = parody, derivative work = fair use = please don't sue.)


Mac Binary Application (105 MB, Yosemite - OS X 10.10); Source code (in Python); Sample WAV file
(For those interested in using the source code, see the bottom of this page for further instructions.)


This software is both "Open Source" and "Free," released under the Jesus license: "Freely you have received, freely give" (Matthew 10:8). Do as you like. Modify, redistribute, etc. See the GitHub repository


Release Notes/Issues

  • v0.5:
    • Got its own App icon!
    • "Power": Improved power spectrum calculation and display.
    • "Equation": Added equation for inverse exp. sine sweep (with "depinking").
    • Added IR creation tutorial (documentation)
  • Despite saying WAV file everywhere, the newest version of SHAART will read AIFF files too. And the previous issue with 24-bit PCM WAV files has been resolved.
  • You don't need a WAV file to use the room mode calculator or the Sabine calculator.
  • No you can't get a logarithmic frequency scale for the spectrogram. Not yet.
  • For waterfall plots, it doesn't clear the window if you change the input data, resulting in multiple plots on the same page. Bug or feature?


invSpectro (above) created the file lena.wav, which has a spectrogram shown below:

And interestingly, if lena.wav is encoded as an MP3, then re-read and re-written as a WAV, one can see the "lossyness" of the MP3:

One can also apply various audio plugins to the sound and see the effect on the image, e.g. echo:



And here's an interesting one: a "leveler" effect turns Lena into a vampire:

Running from Source

Running from source, via Python and MacPorts:
First, we'll assume you have already installed MacPorts. (Hint: To get the XCode Command Line Tools without creating an Apple Developer account, after you install Xcode, go into a terminal shell and run "xcode-select --install". Voila!)
Then make sure you have all the ports/packages you need:

sudo port install py27-numpy py27-scipy py27-matplotlib py27-pil py27-pyqt4 py27-pyaudio py27-scikits-samplerate libsndfile; sudo easy_install-2.7 scikits.audiolab 

Then don't forget to run python select:

sudo port select python python27

Then you should be good to go! Just

tar xvfz SHAART.tar.gz
Finally, "./" should run it!

Or, for the truly ambitious:
Building a binary from source
Make sure you can run as described above, before proceeding. The build requires py2app, which used to have issues with MacPorts, however the newer versions of MacPorts seemed to work now. So, run

sudo port install py27-py2app

Then cd into the SHAART source directory and run

/opt/local/bin/python py2app

and wait around while it builds. If successfull, you will find "" in a new subdirectory called "dist"!

Author: Scott Hawley

More docs & info:


SHAART is intended as an in-house solution for teaching PHY2010 ("Physics for 
Audio Engineering Technology") at Belmont University.  Perhaps others will find 
it useful as well.  ...That and the PHY4410 ("Survey of Advanced Physics") 
students and I have been learing Python this semester to implement our 
simulations and analysis, so writing this also serves as an instructive 
exercise in Python programming.

The source code any binaries are free.  Free as in beer, and free as in "do 
whatever you want with them."  SHAART was made using code provided by others for 
free.   "Freely you have received, freely give."

The name is an acronym using the author's initials (S.H.), along with words 
like "Acoustic," "Analysis," "Reverberation Time" or "Research Tools" -- as well 
as, it is hoped, a lighthearted and not-legally-problematic play on words with 
the name of the industry-standard SMAART audio analysis software made by 
Rational Acoustics,Inc.  (SHAART is in no way affiliated with SMAART or 
Rational Acoustics, fyi.)  I mean, "SHAART" is just hilarious to say.

Author: Dr. Scott H. Hawley, Associate Professor of Physics, 
        Belmont University, Nashville TN USA.  
Date:   March 24, 2013

Improvements, bug reports, inquiries, donations, etc.: scott.hawley@(belmont)

Go up to the "File" tab (or press command-O) and select a WAV file to analyze.

Note: SHAART was made using Python and the SciPy package (among others).  SciPy 
can read *some* WAV files but not others.  Not sure why.  If you're having file 
input issues, including wanting to read some other format (e.g., MP3), then try
loading your file into Audacity and exporting it as a WAV.  Then read the new 
file with SHAART.

Note: You don't need a WAV file to use the room mode calculator.

Running/Building from Source:
Running from source requires python packages pyqt4, scipy, numpy, matplotlib, 
...aaaand probably a host of others.  Just run ./

To modify the user interface: The interface was built on QT4 using the QT 
Designer application, which reads & saves the file ui_shaart.ui:
% Designer ui_shaart.ui 
--> note: on MacPorts, Designer is no longer accessible from the command line,
rather it is an app in /Applications/MacPorts/

This is then converted to a python script by running, e.g.,

%  pyuic4-2.7 ui_shaart.ui > !

There is also a file provided for building a standalone application 
via py2app:

% python py2app

The final application gets placed in a new subdirectory called dist/. 
Note that even if the py2app build looks like it fails, there will usually be
a fully-functional application waiting in dist/ anyway!

List of files:         - the main control window, and most of the mode calc's     - most of the rt60 tab functionality  - power spectrum  - spectrogram  - reverb characteristic graph for the Sabine calc    - waterfall plot
    ui_shaart.ui      - QT Designer file for the user interface      - auto-generated by pyuic          - used for py2app.  See above.
    shaart_logo.png   - one of the most horrifying graphic designs ever