Giter Club home page Giter Club logo

scimpy's Introduction

Appveyor build status

Scimpy

Scimpy is an open-source, cross-platform loudspeaker design tool. Features include:

  • Modeling speaker impedance, phase, SPL, and group delay from TS Parameters
  • Measuring speaker impedance using your sound card as a signal generator and data acquisition system
  • Extract TS parameters from measured results and downloaded ZMA files.
  • Loudspeaker cabinet design: the tool will calculate speaker performance (SPL and group delay) for sealed and vented box designs. Will calculate "optimal" cabinet dimensions for traditional speaker alignments (B2 closed box, QB4-B4-C4)
  • A complete book covering speaker design theory

Scimpy is short for "Sound Card Impedance Measurements in PYthon"

Easy Installation

Ubuntu

To install:

sudo add-apt-repository ppa:showard314/scimpy
sudo apt-get update
sudo apt-get install scimpy

To keep up to date:

sudo apt-get update
sudo apt-get upgrade

You will to reinstall after you upgrade between Ubuntu versions

Windows

Download from https://ci.appveyor.com/project/maqifrnswa/scimpy/build/artifacts

More advanced installation

PyPi Package:

PyPi package available (https://pypi.python.org/pypi/scimpy). To use the PyPi scimpy package, you need to install SciPy first. SciPy is not on PyPi, so you first must install via conda (Windows) or your package manager (Linux). Info below, however, this is still pre-release software, so the github version will have more features and possibly less bugs than the pypi version for now.

Debian/Ubuntu Development Environment & Execution:

sudo apt-get install python3-scipy python3-pyaudio python3-matplotlib python3-pyqt5 python3-pandas
python3 run.py

Minimal Windows Python Environment & Scimpy Installation:

Install miniconda (32bit, even if you have 64 bit - makes things easier) from: http://conda.pydata.org/miniconda.html

Open Windows PowerShell (Start Menu, search for "Windows PowerShell") and type the following commands:

conda update conda
conda install matplotlib scipy numpy pandas pyqt git
pip install pyaudio
git clone [email protected]:maqifrnswa/scimpy.git
cd scimpy
python run.py

To run, open PowerShell

cd scimpy
python run.py

To update to the newest version of scimpy

cd scimpy
git pull

Scimpy Usage and Speaker Design Theory Book

Is available here: https://maqifrnswa.github.io/scimpy/doc/html/scimpy.html

License

Code: GPL3

Book/Documentation: CC-BY-SA 4.0

Other Open Sourced Audio Analysis Projects

MATAA: A Free Computer-Based Audio Analysis System

"MATAA is an extremely flexible and versatile audio analysis system. Similarly to many other computer-based audio analysis systems, MATAA applies a test signal to the device under test and simultaneously records the response signal for subsequent analysis. MATAA uses the computers built-in soundcard (or an external audio module) to play and record test signals to and from a device under test.

MATAA runs on all sorts of computer platforms because it uses Matlab or GNU Octave as a base (these are powerful number crunching programs which provide a huge toolbox of routines for data analysis and processing). This explains why MATAA is so flexible and easily extendible with custom test signals, data analyses, plotting procedures, and scrips to automate routine measurements.

MATAA is distributed as free software under the GNU General Public License." http://audioroot.net/mataa-mats-audio-analyzer/ http://audioroot.net/wp-content/uploads/2014/08/MATAA_aX.pdf https://github.com/mbrennwa/mataa

scimpy's People

Contributors

maqifrnswa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

scimpy's Issues

Wishlist from Ron E

http://www.diyaudio.com/forums/software-tools/288006-scimpy-open-source-speaker-design-impedance-measurements-book-win-mac-linux-4.html#post4644140

  • SC4 has slightly better transient response. QB3 has better F3. Both are useful, but if you can only have one, QB3 is best, IMO.
  • SPL phase for a box design isn't very useful, but since it comes along with the transfer function perhaps just a check box to enable/disable would be useful. Group delay is often desired, but I think few understand it enough for it to be really useful. Not terribly hard to add, though.
  • Some sort of step/impulse response widget could be more useful
  • Driver/Vent/PR displacement and velocity for a given stimulus, Max SPL (excursion and thermal limit, whichever is less) both are useful and easy to add.
  • Dual voice coil support.
  • Auxiliary filter alignments, passive radiators and 4th order bandpass (just a vented box stiffened by the sealed chamber and with no driver contribution to the sum response) are all quite easy to add.

Build artifacts on Appveyor expire

Please, don't use direct links to Appveyor artifacts when it comes to release builds, Appveyor deletes them, resulting in unavailability of built packages.

Put passive zobels in docs

Talk about need for passive crossovers impedance matching zobels in docs, and why not needed if output impedance is low (in active crossovers)

handle buffer over- under- runs better

when taking a measurement, catch the exception if a buffer over/under run occurs and tell user to either make buffer bigger or close other programs to free up some CPU bandwidth

Include loss/leakage in model & book

from Ron E:
You will probably want to leave the box and leakage damping terms in. For simplicity just use the same vented box model with Qa(bsorption), Ql(eakage) and Qp(ort), with Qp set to very low value (e.g. 1e-6)

Can't install

Hi, there!

With the latest git-version I can't run the installer. This is what I've done:

As root:
apt-get install python3-scipy python3-pyaudio python3-matplotlib python3-pyqt5 python3-pandas
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-matplotlib is already the newest version (2.0.0+dfsg1-2).
python3-pandas is already the newest version (0.19.2-5).
python3-pyqt5 is already the newest version (5.7+dfsg-5).
python3-pyaudio is already the newest version (0.2.10-1).
python3-scipy is already the newest version (0.18.1-2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

As user:
python3 setup.py install
Traceback (most recent call last):
File "setup.py", line 1, in
from setuptools import setup, find_packages
ImportError: No module named 'setuptools'

pip install scimpy
bash: pip: command not found

Have I missed something?

speaker model editing is annoying

qms and qes changes vas, vas changes qms and qes fs, so you end up in a loop where you can't enter in values you need.

don't know yet how to fix this since you need auto-updating for consistency, otherwise you might end up with something that is impossible. maybe have "checkboxes" for "user supplied value" so auto-updater does not update? but then importing from measurements/saved files are annoying...

Doesn't start on Ubuntu 16.04

I installed Scimpy using apt and your repository.

But it doesn't start and I get this error massage:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/matplotlib/__init__.py", line 882, in __setitem__
    cval = self.validate[key](val)
KeyError: 'axes.autolimit_mode'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/scimpy", line 9, in <module>
    load_entry_point('scimpy==0.0.dev1', 'gui_scripts', 'scimpy')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load
    return self.resolve()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python3/dist-packages/scimpy/scimpyui.py", line 11, in <module>
    import scimpy.imptesterui as imptesterui
  File "/usr/lib/python3/dist-packages/scimpy/imptesterui.py", line 9, in <module>
    import scimpy.speakertest as speakertest
  File "/usr/lib/python3/dist-packages/scimpy/speakertest.py", line 15, in <module>
    import scimpy.speakermodel as speakermodel
  File "/usr/lib/python3/dist-packages/scimpy/speakermodel.py", line 14, in <module>
    matplotlib.rcParams['axes.autolimit_mode'] = 'round_numbers'
  File "/usr/lib/python3/dist-packages/matplotlib/__init__.py", line 888, in __setitem__
    See rcParams.keys() for a list of valid parameters.' % (key,))
KeyError: 'axes.autolimit_mode is not a valid rc parameter.See rcParams.keys() for a list of valid parameters.'

What can I do?
Do I miss same additional packages?

update to pyqt5

matplotlib is compiled against qt5 on anaconda, update dependencies here to qt5

Check Eq of power radiated in Infinite baffle speaker

In equation 5.12 omega^2 is already taken in right hand part. How deos it still remain in the left hand part
In equation 5.14 and 5.15 when Z_e is expaned where does R_er (electrical equivalent of Radiation) is gone.

cannot import name 'qt_compat'

Hi, I apt-get installed the packages specified in README on Ubuntu 14.04, cloned the Git repo and performed sudo python3 setup.py install but it seems something is still missing?

Traceback (most recent call last):
  File "/usr/local/bin/scimpy", line 9, in <module>
    load_entry_point('scimpy==0.0.dev0', 'gui_scripts', 'scimpy')()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 351, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2363, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2088, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/local/lib/python3.4/dist-packages/scimpy-0.0.dev0-py3.4.egg/scimpy/scimpyui.py", line 9, in <module>
  File "/usr/local/lib/python3.4/dist-packages/scimpy-0.0.dev0-py3.4.egg/scimpy/imptesterui.py", line 9, in <module>
ImportError: cannot import name 'qt_compat'

FRD & ZMA support

Status

  • ZMA support
  • FRD support

Description
Save/load from FRD/ZMA
http://alloy.wishray.com/frd/frdis.htm
http://www.purebits.com/zmaconversion.html

FRD:

* Freq(Hz)  SPL(db)  Phase(deg)
*
10           21.0963   158.4356 
10.1517   21.0967   158.4363 
10.3056   21.3305   158.7836 
10.4619   21.5644   159.1299 
10.6205   21.7983   159.2452 
10.7816   22.032     159.3599 
...

ZMA:

* Hz Ohms Deg 
20.5078 8.6367 17.2747
23.4375 8.5838 17.4326
26.3672 8.5930 18.2126
29.2969 8.6587 19.2752
32.2266 8.7664 20.4470
35.1563 8.9045 21.6664
38.0859 9.0666 22.9222
41.0156 9.2514 24.2251
43.9453 9.4622 25.5941
46.8750 9.7079 27.0363
...

asterisks are comments
possibly accept csv with commas, semicolons, or spaces?
Smart comments: anything not starting with a number is a comment?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.