ACX Check fails in 2.4.1

Help for Audacity on macOS.
Forum rules
ImageThis forum is for Audacity on macOS 10.4 and later.
Please state which version of macOS you are using,
and the exact three-section version number of Audacity from "Audacity menu > About Audacity".


Audacity 1.2.x and 1.3.x are obsolete and no longer supported. If you still have those versions, please upgrade at https://www.audacityteam.org/download/.
The old forums for those versions are now closed, but you can still read the archives of the 1.2.x and 1.3.x forums.
kozikowski
Forum Staff
Posts: 69374
Joined: Thu Aug 02, 2007 5:57 pm
Operating System: macOS 10.13 High Sierra

Re: ACX Check fails in 2.4.1

Post by kozikowski » Fri Jun 05, 2020 11:08 am

This is a result of analyzing a noise segment only. No actual performance.

I'm assuming this is a sampling oddity. Still, that should be impossible.

OddReading.png
OddReading.png (20.08 KiB) Viewed 217 times

Koz

steve
Site Admin
Posts: 81627
Joined: Sat Dec 01, 2007 11:43 am
Operating System: Linux *buntu

Re: ACX Check fails in 2.4.1

Post by steve » Fri Jun 05, 2020 11:11 am

kozikowski wrote:
Fri Jun 05, 2020 11:08 am
I'm assuming this is a sampling oddity.
That's probably because of this: viewtopic.php?p=396709#p396709

I'll fix that.
9/10 questions are answered in the FREQUENTLY ASKED QUESTIONS (FAQ)

kozikowski
Forum Staff
Posts: 69374
Joined: Thu Aug 02, 2007 5:57 pm
Operating System: macOS 10.13 High Sierra

Re: ACX Check fails in 2.4.1

Post by kozikowski » Sat Jun 06, 2020 12:12 pm

I'll fix that.
Is there new test code?

I'm waking up a Win7 machine out of hibernation to do testing. No Win10. Sorry.

Koz

steve
Site Admin
Posts: 81627
Joined: Sat Dec 01, 2007 11:43 am
Operating System: Linux *buntu

Re: ACX Check fails in 2.4.1

Post by steve » Sat Jun 06, 2020 4:48 pm

kozikowski wrote:
Sat Jun 06, 2020 12:12 pm
Is there new test code?
Here's the new test code:

Code: Select all

;version 4
;type analyze
;debugflags trace

(defun getfloor (sig &aux (chunk 30))
  ;; Return guestimate of noise floor.
  ;; 'sig' is theRMS level and has around 10 Hz sample rate,
  ;; We look for the lowest 0.1 s block as the local 'floor' 
  ;; Return a label for each calculated 'floor'
  (let ((floor 999)
        (floor-labels ())
        (chunkcount 0)
        label
        (start 0)
        (srate (snd-srate sig)))
    (setf chunk (1- (* chunk srate)))  ;chunk size in samples
    (do ((val (snd-fetch sig) (snd-fetch sig)))
        ((not val))
      (cond
        ((<= chunkcount chunk)
            (incf chunkcount)
            (when (< val floor)
              (setf floor val)))
        (t  (setf label (list (/ start srate)
                              (/ (+ start chunkcount) srate)
                              (format nil "~a" (round (linear-to-db floor)))))
            (setf start (+ start chunkcount))
            (setf chunkcount 1)
            (push label floor-labels)
            (setf floor val))))
    (setf label (list (/ start srate)
                      (/ (+ start chunkcount) srate)
                      (format nil "~a" (round (linear-to-db floor)))))
    (push label floor-labels)))


(defun to-mono (sig)
  ;;; coerce sig to mono.
  (if (arrayp sig)
    (s-max (s-abs (aref sig 0))
           (s-abs (aref sig 1)))
    sig))


(defun stereo-rms(ar)
  ;;; Stereo RMS is the root mean of all (samples ^ 2) [both channels]
  (let ((left-mean-sq (* (aref ar 0)(aref ar 0)))
        (right-mean-sq (* (aref ar 1)(aref ar 1))))
    (sqrt (/ (+ left-mean-sq right-mean-sq) 2.0))))


;; This test is only required when running in the Nyquist Prompt
(if (< len 1)
    "No audio selected."
    (progn
      (setf rms
        (let ((rms (get '*selection* 'rms)))
          (if (arrayp rms)
              (linear-to-db (stereo-rms rms))
              (linear-to-db rms))))
      (setf peak (linear-to-db (get '*selection* 'peak-level)))
      (format t "Peak level:  ~a dB.~%~
                  RMS level:  ~a dB.~%"
              peak
              rms)
      (let ((sig (rms (to-mono *track*) 10))) ;Approx 10 Hz sample rate
        (setf *track* nil)  ;free *track* from memory
        (getfloor sig))))

9/10 questions are answered in the FREQUENTLY ASKED QUESTIONS (FAQ)

kozikowski
Forum Staff
Posts: 69374
Joined: Thu Aug 02, 2007 5:57 pm
Operating System: macOS 10.13 High Sierra

Re: ACX Check fails in 2.4.1

Post by kozikowski » Sat Jun 06, 2020 5:38 pm

;version 4
Version 4 of Nyquist, or this is release 4 of the code?

Koz

steve
Site Admin
Posts: 81627
Joined: Sat Dec 01, 2007 11:43 am
Operating System: Linux *buntu

Re: ACX Check fails in 2.4.1

Post by steve » Sat Jun 06, 2020 5:54 pm

kozikowski wrote:
Sat Jun 06, 2020 5:38 pm
Version 4 of Nyquist
Yes.
As soon as we have a plug-in version I'll add a plug-in version number.
9/10 questions are answered in the FREQUENTLY ASKED QUESTIONS (FAQ)

kozikowski
Forum Staff
Posts: 69374
Joined: Thu Aug 02, 2007 5:57 pm
Operating System: macOS 10.13 High Sierra

Re: ACX Check fails in 2.4.1

Post by kozikowski » Sun Jun 07, 2020 1:41 am

This is an 84 minute simple voice performance. I measured it in 20 minute chunks and it passes with noise hovering in the -61dB to -62dB range.

Screen Shot 2020-06-06 at 18.25.50.png
Screen Shot 2020-06-06 at 18.25.50.png (39.55 KiB) Viewed 194 times

This is the new code.

Screen Shot 2020-06-06 at 18.34.37.png
Screen Shot 2020-06-06 at 18.34.37.png (121.68 KiB) Viewed 194 times

Koz

kozikowski
Forum Staff
Posts: 69374
Joined: Thu Aug 02, 2007 5:57 pm
Operating System: macOS 10.13 High Sierra

Re: ACX Check fails in 2.4.1

Post by kozikowski » Sun Jun 07, 2020 2:03 am

How about you wrote "Noise Sleuth." If the performer fails Legacy ACX Check, run Noise Sleuth to help sort what happened and where.

Koz

steve
Site Admin
Posts: 81627
Joined: Sat Dec 01, 2007 11:43 am
Operating System: Linux *buntu

Re: ACX Check fails in 2.4.1

Post by steve » Sun Jun 07, 2020 12:47 pm

kozikowski wrote:
Sun Jun 07, 2020 2:03 am
How about you wrote "Noise Sleuth." If the performer fails Legacy ACX Check, run Noise Sleuth to help sort what happened and where.
I like that idea.
I also think that it could be built into one plug-in.

Three possible alternatives:

1.
The plug-in would have a simple GUI with a choice control: "Simple" / "Noise Sleuth".
The "Simple" option just gives you a single result for Noise Floor.
The "Noise Sleuth" option produces the labels.

2.
The plug-in runs without a GUI (as with the old effect).
It gives a simple single result for each of: Peak / RMS / Floor
AND the labels.

3.
The plug-in runs without a GUI.
It gives a simple single result for each of: Peak / RMS / Floor
It also labels any regions greater than "x" seconds that have a noise floor that is out of range (> -59 dB or < -90 dB).
I'm not sure what the best value for "x" should be, but I'd guess around 30 seconds.


One important question: Precisely what should the one result "legacy test" measure? The lowest 0.5 second RMS in the first 5 seconds?
9/10 questions are answered in the FREQUENTLY ASKED QUESTIONS (FAQ)

kozikowski
Forum Staff
Posts: 69374
Joined: Thu Aug 02, 2007 5:57 pm
Operating System: macOS 10.13 High Sierra

Re: ACX Check fails in 2.4.1

Post by kozikowski » Mon Jun 08, 2020 4:08 pm

Working on it.

I think what concerns me is the software binning a 90 min performance because of one perceived violation. A violation that we have every expectation that nobody else will ever find. By that measure, no home reader will ever pass noise.

But they do. Using Mastering and Legacy ACX Check, people get published all the time.

Maybe the readers will have to settle for a vacation villa on the Scottish coast. Côte de Gris.

Koz

Post Reply