Thanks again Robert. I think this snippet is still useful, so I’ve updated it for Audacity 3.x
;version 4
;type analyze
;;; mix to mono if stereo
(defun mono (sig)
(if (arrayp sig)
(sim (aref sig 0) (aref sig 1))
sig))
;;; test against powers of 2
(defun bit-test (sig bits)
(snd-maxsamp
(integrate
(diff sig
(quantize sig (truncate (power 2 bits)))))))
;;; find the bit depth
(defun bit-depth (sig)
(let ((sig (mono sig))
(test-values '(10 11 20 23 29 31)))
(dolist (bits test-values)
(if (= (bit-test sig bits) 0)
(return bits)))))
;; run the test
(case (bit-depth *track*)
(10 "8 bit unsigned")
(11 "12-bit")
(20 "16-bit integer")
(23 "24 bit integer")
(29 "30 bit compressed (mp3 etc.)")
(31 "32-bit integer")
(t "32 bit float"))