GithubHelp home page GithubHelp logo

corinfinite / brp-pacu Goto Github PK

View Code? Open in Web Editor NEW
13.0 3.0 4.0 16.28 MB

An audio analysis tool to configure any sound system with an equalizer. It compares the output of the system to the input of the system and allows you to use this data to perform final equalization by matching the results with actual DSP/EQ.

License: GNU Lesser General Public License v3.0

C 87.84% Shell 4.65% Makefile 4.61% M4 1.31% C++ 1.59%

brp-pacu's Introduction

BRP-PACU - An Audio Configuration utility

BRP-PACU is a dual channel FFT audio analysis tool. It is designed to aid in the equalization and time alignment of a sound system. It compares the output of the system to the input of the system to obtain the transfer function of the system. It is similar to commercial products like Smaart.

Dependencies

Development versions of the following packages:

  • build-essential for build tools
  • jack2
    • Tip: If jack is not already installed on your system, try to install the package qjackctl which depends on JACK and provides an easy way to manage JACK connections.
  • GtK+ and Glade
  • GTKdatabox for GTK3
    • git clone https://git.code.sf.net/u/felipo/gtkdatabox gtkdatabox3
    • Run ./scripts/myAutogen.sh and then the traditional ./configure, make, and make install since this is not a release, but coming straight from the repo.
    • The original library on SourceForge claims GTK3 support on the git master branch but this has not been tested with BRP-PACU; while the fork from felipo indicated above has been tested OK.
  • FFTW version 3

On Ubuntu 16.04:

sudo apt install build-essential libfftw3-dev libc6 libglade2-dev libglib2.0-dev libgtk2.0-dev libjack-jackd2-dev

You can likely tweak this if you are on a different distribution. GTKDatabox must still be installed from the source following the instructions above.

Building

When you first checkout the repo you must first run ./autogen.sh to generate some Autotools files. If configure.ac or Makefile.am are changed you must run this script again.

Run the traditional ./configure, make, and make install to build BRP-PACU.

You can start BRP-PACU with ./BRP-PACU.

When BRP-PACU is installed on your system using make install, the executable is named “BRP_PACU”. It can be started from the Run dialog (that comes up when pressing ALt-F2), or from a command line which will give extra debugging information.

Usage

See docs/Usage.md

brp-pacu's People

Contributors

fefcas avatar fhaust avatar nettings avatar nikbeier avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

brp-pacu's Issues

Processing is done in JACK callback

The JACK callback should return as fast as possible but there is buffer filling and shuffling that occurs. This should be moved into the main thread or a new thread, along with the other processing tasks.

Check pink noise generator for correctness.

A while ago I tried to test BRP-PACU on a live system and myself and a colleague observed that the pink noise generator seemed to be lacking in the high end when compared to the pink noise generated by a Yamaha LS-9. The audio interface was a Digidesign MBox2.

Averaging is done on GUI rendering

Averaging on the output trace is done when the GUI updates. If the GUI updates more frequently the trace will appear smoother. If the GUI updates less frequently the trace will appear less well behaved. This is not desirable.

Averaging should be done as part of calculating the auto spectra and cross spectrum. Resolving this will be part of resolving #18

Feature: Change window function

The user must be able to specify what windowing function they wish to be applied to the input audio through the GUI.
The user must have at least two window functions to choose from. Currently Blackman is implemented and Hanning should be added. More functions would be nice.

Upgrade from GTK2 to GTK3

https://developer.gnome.org/gtk3/stable/gtk-migrating-2-to-3.html

Preparation steps done in 0ed157d and 92f2ae3

Any checked items without a bullet point below them were not used/applicable

  • Replace size_request by get_preferred_width/height
  • Replace GdkRegion by cairo_region_t
  • Replace GdkPixmap by cairo surfaces
  • Removed in 92f2ae3
  • Removed commented out code involving Pixmaps
  • Replace GdkColormap by GdkVisual
  • GdkDrawable is gone
  • Event filtering
  • Backend-specific code
  • GtkPlug and GtkSocket
  • The GtkWidget::draw signal
  • GtkProgressBar orientation
  • Check your expand and fill flags
  • Scrolling changes
  • GtkObject is gone
  • Unsure exactly how to resolve, for the time being changing GTK_OBJECT to G_OBJECT
  • GtkEntryCompletion signal parameters
  • Resize grips
  • Prevent mixed linkage
  • It may be an issues that the latest gtkdatabox release (0.9.3.0) uses gtk2 and the release suggested in our current readme is 0.9.2.0
  • The master branch on the sourceforge repo advertises gtk3 support
  • This github repo advertises gtk3 support
  • It appears there may be gtk3 versions in newer Ubuntu repositories: https://packages.ubuntu.com/zesty/libgtkdatabox-0.9.3-0-glade
  • Further investigation is needed
  • Install GTK+ modules in the right place

Phase and "coherence" plots?

Hi, and thanks for adopting BRP-PACU! I've been playing around with it many years ago, and when I wanted to resurrect it this week, I found it still required FFTW2... so I was more than happy to stumble upon your fork! It works very well for me so far. I would love to see a "coherence" graph (I think this is what most dual-FFT tools call it) that indicates how reliable each part of the computed transfer frequency response is based on if those frequencies are actually in the reference signal and how much correlation there is to the measured signal in that bin. At the moment, I frequently see a slight artefact at the HF end, which appears as if it's shelved up by about 10dB above 16k (disappears of course when using pink noise).
Additionally, having a way to display the phase portion of the FFT would be a great aid in tuning crossovers and time-alingning subwoofer stacks.
All the best, and thanks for sharing your work! Jörn

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.