Coder Social home page Coder Social logo

r128x's Introduction

This project is now frozen as I'm not able to keep it alive on recent apple computers. You can go to https://github.com/ShikiSuen/r128x for an updated UI

Ce projet est désormais figé car je ne peux plus développer sur des machines Apple récentes. Vous pouvez tester https://github.com/ShikiSuen/r128x pour une interface utilisateur mise à jour

r128x, a tool for loudness measurement of files on Mac OSX Intel.

with gui now !

r128x-gui

r128x is released under a GPL license.

Binaries

v 0.3 2020-04-11 binaries can be found in the release tab. (voir version Française plus bas)

Description

r128x is a tool for measuring Integrated Loudness, Loudness range and Maximum True Peak of audio files on the Mac OS X system with an Intel processor.

It uses libebur128 (https://github.com/jiixyj/libebur128) for the Integrated Loudness and Loudness Range measures.

It uses CoreAudio's AudioConverter service to oversample audio data and obtain the Maximum True Peak.

It uses CoreAudio ExtAudioFile's service to read the samples from an audio file.

You can build two different binaries from the sources : a command line utility (r128x-cli) and a graphical interface utility (r128x-gui).

Installation

You can build the executables from the Xcode project, or use the provided executables.

Just drag the executable file to your hard drive. /usr/local/bin/ should be a nice place to put the command line binary r128x-cli if you want it to be in your $PATH.

Usage

r128x-cli /some/audio/file.wav Will print out the file name, the Integrated Loudness in LUFS, the Loudness range in LU, the Maximum True Peak in dBTP. Will print an error message in case of unsupported file or if an error occurs during processing.

r128x-gui supports drag and drop of audio files. You can also use the file selector.

Issues

Channel mapping is static, using the default libebur128 channel mapping : L / R / C / LFE / Ls / Rs. You will have incorrect results if your file's channels mapping is different. As r128x uses CoreAudio to read audio files, only file formats/codecs supported by CoreAudio are supported by r128x.

r128x, une application pour les mesures de Loudness de fichiers audio sur Mac OS X Intel.

r128x est distribué sous licence GPL.

v 0.3 11/04/2020

Description

r128x est une application pour la mesure du Loudness Intégré, du Loudness range et du Maximum True Peak de fichiers audio sur Mac OS X avec processeur Intel.

Elle utilise la bibliothèque libebur128 (https://github.com/jiixyj/libebur128) pour les mesures de Loudness Intégré et de Loudness Range.

Elle utilise le service AudioConverter de CoreAudio pour le sur-échantillonage nécessaire à la mesure du Maximum True Peak.

Elle utilise le service ExtAudioFile de CoreAudio pour la lecture des échantillons audio d'un fichier.

Vous pouvez compiler deux exécutables à partir des sources : un utilitaire en ligne de commande (r128x-cli) et une application avec interface graphique (r128x-gui).

Installation

Vous pouvez compiler les exécutables depuis le projet Xcode, ou utiliser les exécutables fournis.

Il suffit de faire glisser les exécutables sur votre disque dur.

/usr/local/bin/ peut être un bon choix de répertoire de destination pour r128x-cli si vous voulez que l'exécutable soit dans votre $PATH.

Utilisation

r128x-cli /chemin/vers/unfichier.wav affichera le nom du fichier, son Loudness Intégré en LUFS, son Loudness Range en LU et son Maximum True Peak en dBTP. affichera un message d'erreur si le fichier n'est pas pris en charge ou qu'une erreur s'est produite durant l'analyse.

r128x-gui accepte le glisser-déposer de fichiers audio. Vous pouvez également utiliser le sélecteur de fichiers.

Problèmes

La configuration des canaux audio est statique et utilise la configuration par défaut de libebur128 : L / R / C / LFE / Ls / Rs.

Les résultats seront incorrects si la configuration des canaux audio de votre fichier est différente.

Étant donné que r128x utilise CoreAudio pour lire les fichiers audio, seuls les formats/codecs pris en charge par CoreAudio sont pris en charge par r128x.

r128x's People

Contributors

audionuma 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

r128x's Issues

Not possible to pipe output to file

Since the tool is printing progress as it is analyzing, you can't pipe the output from r128x-cli to a file, thus output like:

r128x *.m4a > logfile.txt

… will produce output looking like the attached screenshot - full of progress data, and every once in a while, a line with the actual output.

image

GUI progress elements don't update on recent macOSes (and suggested fix)

At some point, I think a macOS update broke the way some of the progress indicators in the GUI are drawn. (I'm pretty sure it's been a few years at least, and I don't remember when they were last working correctly.)

Specifically, I've mostly noticed these issues:

  • The "Processing: " label never updates to show the file being processed
  • The progress indicator in the bottom right will only update the progress when the window becomes active/inactive (and then resets to zero after a moment)

I finally got around to cloning the code and seeing if I could track down the issue (not an expert here, so my explanation may be lacking). The main culprit seems to be using the GUI API outside of the main thread (which seems to not be a recommended practice--thread safety issues?). My guess is Apple added protections to the API calls at some point that breaks the functionality when called out of the main thread.

From the brief looking and testing I've done, it looks like you can fix this by dispatching the API calls to the main thread like this (example in progressUpdate):

// Replace this:
// [self.progressIndicator setDoubleValue:[f doubleValue]];
// with this:
dispatch_async(dispatch_get_main_queue(), ^{
        [self.progressIndicator setDoubleValue:[f doubleValue]];
   });

This style of wrapper should be applied to any UI API calls out of the main thread (i.e., in the thread running processNextFileInQueue).

Finally, I think the reason the progress bar periodically reset is because it's set to 0 in every call to updateView (runs every second by timerFire). Moving that set-to-zero call to somewhere else (processedFiles? End of processNextFileInQueue?) might be better.

I'm thinking about finishing up the modifications I made while testing and open a pull request addressing this issue--if there's interest, let me know and I'll try to get it together sooner rather than later.

P.S., Thanks so much for this project. I've been using it for years to check the volume levels on a podcast I edit, and (aside from these very minor issues) it's been perfect for me.

Installation question.

I'm a newbie...so forgive me if I ask an obvious-seeming question.
Which is the r128x executable file? I downloaded the zip, but I don't see a dmg.

Measurements for "input threshold" and "target offset"

Hi,
Is it possible to add "input threshold" and "target offset" to output? Or do you know if these are calculated from IL, LRA and TP.
I'm looking into using r128x-cli for the initial (measurement) step of audio normalisation using ffmpeg's loudnorm filter. This would require all the measurements made by ffmpeg's loudnorm 1st pass which include "input threshold" and "target offset".
Thank you.

Not running or compiling on osx 10.6.8

I know this is an old OS, but I work in a "video-machine-room" with a bunch of Mac Pros and they have a lot of specialized hardware and software, so updating to Lion would probably mess up our systems pretty bad. And we really need a good comandline r128 meter for some bash-scripts I'm working on. And I finally found this project and it looks like it'd be perfect for our needs. But unfortunately it doesn't run or compile, neither the GUI or the CLI on osx 10.6.8.

I've tried to compile it myself using xcode and your instructions here on github, but I get a couple of errors that I don't know how to fix, doesn't seam like it'd be too hard to fix them for someone skilled in objective-c though.

I would be very gratefull if you could take a look at this.

xcode-errors

Unable to parse rf64 audio files

CoreAudio ExtAudioFile service doesn't support rf64 files.
This prevents measuring of (for example) 2 hours 5.1 channels 48 kHz 24 bit interleaved wav files.

Memory leak?

I think that there is a memory leak somewhere in the code, but I can't find it. Open activity monitor while processing a large file and you'll see that after a file is processed, memory is not reclaimed by the OS. Anyone else experiencing something similar?

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.