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.)
Downloads 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.)
License 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
- 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 SHAART.py from source, via Python and MacPorts: Running from Source
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...then
cd SHAARTFinally, "./SHAART.py" should run it!
Or, for the truly ambitious:
Building a SHAART.app binary from source
Make sure you can run SHAART.py 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 setup.py py2app
and wait around while it builds. If successfull, you will find "SHAART.app" in a new subdirectory called "dist"!
Author: Scott Hawley
More docs & info:
================================================================================ SHAART Purpose: 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. License: 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." Nomenclature: 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 Contact: Improvements, bug reports, inquiries, donations, etc.: scott.hawley@(belmont) ================================================================================ Usage: ===== 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 ./SHAART.py. 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/Designer.app This is then converted to a python script by running, e.g., % pyuic4-2.7 ui_shaart.ui > ! ui_shaart.py There is also a setup.py file provided for building a standalone application via py2app: % python setup.py 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: SHAART.py - the main control window, and most of the mode calc's rt60widget.py - most of the rt60 tab functionality pwrspecwidget.py - power spectrum spectrowidget.py - spectrogram rcgraphwidget.py - reverb characteristic graph for the Sabine calc waterwidget.py - waterfall plot ui_shaart.ui - QT Designer file for the user interface ui_shaart.py - auto-generated by pyuic setup.py - used for py2app. See above. shaart_logo.png - one of the most horrifying graphic designs ever SHAART.