Re: [Audacity-devel] Bass and Treble upgrade
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Richard A. <ri...@au...> - 2013-02-23 21:28:24
|
On Thu, 21 Feb 2013 12:54:26 +0000 Steve the Fiddle <ste...@gm...> wrote: > Has anyone had time to look at this yet? No. I'm not entirely sure this is a useful piece of functionality, and given the way the patch has come out, there is quite a lot of review to do (even where code hasn't changed, it has moved function so there are a lot of deletes and re-adds of the same lines). I'm not so sure it's useful in the sense that there is a perfectly good Normalise effect already, so this looks like a re-invention of the wheel (especially given that you effectively can't clip a 32-bit track). An effect that normalises the audio will of course run at half the speed of the one-pass effect on many systems which are I/O limited for this sort of processing. The only other normalising effect in core code is the compressor, where it is used to achieve correct make-up gain for the compression applied. This is a example of putting in duplication (another lot of normalisation code) rather than solving the underlying problem (lack of compound effects, even limited support for just compounding built-in effects). This tends to come back and bite us in the long run. This is one of a number of areas in which I think our implementation is sticking plaster over cracks in the effects framework rather than fixing/extending the framework. Others are: * Preview implementation - it's functionally identical in most effects, but has separate code for each. If there was an easy way to save and restore the complete ShuttleGUI state (there might even be, it depends if the copy constructor exists and works), then the preview code wouldn't need to know about individual effect variables, and would be generic in the superclass. * Saving settings - again, this gets re-done for each effect, when it could be done by extending shuttlegui to have a "write-to-prefs" method which would generate automatic prefs names, saving on a bunch of maintenance work. It looks like there is mess related to integer format tracks which should also be fixed - probably by making the two-pass temporary track always floating point, given that the effects always run in floating point format. This also avoids a redundant set of dither, which has lots of benefits. This is the difference between code that works now, and code that keeps working with minimal effort in the future! - it's mostly about design, not individual lines of function. Richard |