Main web page: http://hedges.belmont.edu/~shawley/SHAART
GitHub page: http://github.com/drscotthawley/SHAART
SHAART Acoustic Tools, v 0.7
(April 7, 2020)
(yes, the name is a joke)
About
Features
Downloads
License
Tutorials
Screenshots
Running From Source
Building an Executable
FAQ
Release Notes
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 by Rational Acoustics, Inc. ...That and "SHAART" is just hilarious to say, for other reasons. (Note: "homage" = parody, derivative work = fair use = please don't sue.)
Most of these features are illustrated in the Screenshots section further down this page.
2013 - 2015: 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.
2015+: GPL 2. See LICENSE.md file.
General Instructions: Go up to the "File" tab and select an audio file to analyze.
TODO: Add more here
The spectrogram and waterfall plot (below) only show File A:
Note: The following 'Theoretical Steady-Steate Room Response' is pretty fake; it's just a bunch of superimposed parabolae, but without it this pane had a bunch of empty space:< br>
The values of absorption coefficients for the Sabine calculator come from the table in Chapter 8 of the Berg & Stork textbook:
The "invSpectro" feature created the file mandrill.wav which has a spectrogram shown below:
And interestingly, if the audio 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 effects to the sound and see the effect on the image, e.g. echo:
Wah-wah:
Reverb:
And here's an interesting one: a "leveler" effect:
Running SHAART.py from source:
Create a new Anaconda Python environment and install dependencies, then run...
cd SHAART/source
conda create --name shaart python=3.7
conda activate shaart
conda install -c conda-forge librosa pyqt pillow pyaudio
./SHAART.py
First follow the instructions above for running from source. Then we will proceed by using pyinstaller
, that will create a new directory called SHAART/source/dist/
, in which a successful build will result in the presence of working binary executable.
xxxxxxxxxx
conda install -c conda-forge pyinstaller
And (because of conflicts) downgrade setuptools too, via pip
:
xxxxxxxxxx
pip install --upgrade 'setuptools<45.0.0'`
In order to run from source, you'd already need to have XCode, the command-line tools, and HomeBrew installed. Then in we install python.app
and an older versions of a few things to build the app:
xxxxxxxxxx
conda install -c conda-forge python.app joblib=0.11 scikit-learn=0.21.3 librosa=0.6.1
pyinstaller SHAART.spec --specpath=test
...and you'll find SHAART.app
in source/dist/
.
We could re-use the .spec file from the Mac build, but it would give us a whole directory instead of one executable. Instead, run this line:
xxxxxxxxxx
pyinstaller -w --icon=SHAART.icns --hidden-import="sklearn.utils._cython_blas" --hidden-import="sklearn.neighbors._typedefs" --hidden-import="sklearn.neighbors.quad_tree" --hidden-import="sklearn.tree._utils" --onefile SHAART.py
...And then you can just run the dist/SHAART
executable from the command line. (Note: I can't seem to get it to be a "clickable icon" in Nautilus/Gnome. Not sure how to do that.)
Here are the steps taken to build the Window EXE:
Download & Install Windows SDK: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
Download & Install Anaconda (64 bit): https://www.anaconda.com/
Run Anaconda Powershell prompt and install requirements:
xxxxxxxxxx
conda install -c conda-forge ffmpeg
conda install -c anaconda pyqt pywin32 pypiwin32
conda install pyaudio librosa pywintypes
Downgrade setuptools
to avoid conflicts pyinstaller
as per https://github.com/pypa/setuptools/issues/1963:
pip install --upgrade 'setuptools<45.0.0'
Run pyinstaller
with these arguments:
xxxxxxxxxx
pyinstaller -w --icon=shaart_logo_icon.ico --hidden-import="pypiwin32" --hidden-import="pywintypes" --hidden-import="sklearn.utils._cython_blas" --hidden-import="sklearn.neighbors._typedefs" --hidden-import="sklearn.neighbors.quad_tree" --hidden-import="sklearn.tree._utils" --onefile SHAART.py
Run QT5's designer
or Designer
app (good luck finding this on your hard drive, btw; instead you might want to just download QT from the main site). Open ui_shaart.ui
as an input file. Change the GUI as you like, save it, and then to generate the .py file, run
xxxxxxxxxx
pyuic5 -x ui_shaart.ui -o ui_shaart.py
v0.7:
v0.6: Minor improvements to speed and reliability
v0.5:
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.
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: April 7, 2020 (original March 24, 2013)
Contact: Improvements, bug reports, inquiries, donations, etc.: scott.hawley@(belmont)