1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-01 16:39:30 +02:00

569 Commits

Author SHA1 Message Date
james.k.crook@gmail.com
fe722df653 Tweaks to Noise Reduction, by Paul Licameli.
1. Put the new files at the proper level of the Solution Explorer tree. 
2. Fix a tiny tiny inefficiency in RotateHistoryWindows(). 
3. Do not use leading zero-padded windows when gathering statistics. 
4. Hamming windows are in the advanced menu of choices, following Federico Miyara's suggestion.
2014-11-29 17:03:57 +00:00
lllucius@gmail.com
125e0f37dd Add missing Export and Import of AudioUnit presets
And listens for latency changes now
2014-11-29 13:14:35 +00:00
lllucius@gmail.com
d60225cb61 A few more changes for AudioUnits
I added a few assertions just to be safe.  Haven't hit
the particular situations yet, but I've only tested less
than 50 or so AUs.

We were missing a few Apple AUs like panners and mixers.

The plugin "installation" dialog sort is reversed on the Mac...weird

Made the effect windows float on top of the owning project window.
Looking for opinions on which method is best.
2014-11-29 01:22:41 +00:00
lllucius@gmail.com
ee276e839e Follow up to r13654...actually commited the renamed file. 2014-11-27 18:52:47 +00:00
lllucius
071cd0f066 Disables the rack and fixes a couple of other things
Needed to redo a bit of code so that effects would work
without the rack in the middle.  I wanted to disconnect
it completely as I'm not sure it something that will be
kept around.

During realtime preview, effects will be applied in the
order their dialogs were opened...hmmm...what happens
if they don't have a dialog???  I look into that.

Fixed the focus target for windows when cycling among
active windows as suggested by David B.

Fixed plugin registration if the plugins were located
in the "Plug-ins" folder.  I believe this problem may
have played a role in the duplicate menu items.
2014-11-27 12:22:41 +00:00
lllucius@gmail.com
540f5c78c9 AudioUnits rework...
They now work on Yosemite.

AudioUnits with a custom Cocoa UI now display graphically
instead of reverting to the generic view

The Cocoa version of the generic view is now used when
needed...instead of the Carbon version.

The order of UI preference is Cocoa, Carbon, Generic,
unless force to Generic view user setting.

They now support realtime preview.

They also support dialog resizing as I found many that
scaled nicely (mostly Apple's).

Uses the new Effect format so now supports user and
factory presets.

NOTE:  Be VERY critical when testing this as I've
       never written Objective-C or Cocoa code
       before!
2014-11-25 08:08:15 +00:00
stevethefiddle@gmail.com
e159414c9d Change Speed - Make 3 member variables private and re-disable FromTime menu. 2014-11-25 03:09:54 +00:00
stevethefiddle@gmail.com
1dfbe5974e Apply Leland's Read Only Numeric Text Control to Change Speed effect. 2014-11-23 22:54:24 +00:00
stevethefiddle@gmail.com
f6f8f2e3cf Change Speed effect - disable user input changing the 'Current Length' control. 2014-11-23 18:43:17 +00:00
stevethefiddle@gmail.com
07098fe324 Update Change Speed effect. Adds To/From time controls and a 'simple' speed multiplier.
Should also fix bugs 772 and 780.
2014-11-22 19:12:57 +00:00
lllucius
981e6db6ea Keep non-interactive effects from going into a recursive loop. 2014-11-20 22:48:07 +00:00
stevethefiddle@gmail.com
233275f652 A couple of refinements to Nyquist v4 plug-in property lists.
1) Makes *TRACK* CLIPS property easier to use in Nyquist.
2) Allows plugins to bypass track view check on preview.
2014-11-20 15:48:25 +00:00
stevethefiddle@gmail.com
0b2074db8c Reduce minimum Attack/Decay times. 2014-11-20 08:59:51 +00:00
lllucius
59552ed41b Fix return value problem. 2014-11-19 14:53:19 +00:00
lllucius
41083f74cc Another round of effects bashing.
I've added some of the new plugin stuff to LV2, Nyquist, and
Vamp so that they play better in the new system.  They no
longer get bunched in with the Audacity effects when sorting
or grouping the menus.  They have not been fully converted
but they should be good for 2.1.0.

Nyquist plugins now include ";author" and ";copyright"
statements.

Added the 4 new Nyquist plugins to the Windows build.

Audiounits are still coming...had to push them to the back
burner to get this other stuff out of the way.

Scanning for new plugins has been improved so that newly
discovered ones will be shown to the user when Audacity starts.

Effects menu sorting has been fixed and improved.

Disabling effect types in Preferences works again and you
no longer have to restart Audacity for them the change to work.

Effect usage in chains works again.

Plugin registration dialog code simplified a bit.

Group names in the pluginregistry are now base64 encoded.  I
never really thought about it, but wxFileConfig group names
are case insensitive and since I was using the group name as
the plugin ID, I ran into a conflict on Linux where there
were two plugins with the same name, just different case.  (And
they were different plugins.)  Hoping all of this will change
when/if the config file gets converted to XML.  (wx3 if finally
including XML support)

A fair amount of cleanup of this new code has been done and
will continue as more stuff is converted.
2014-11-19 06:58:44 +00:00
stevethefiddle@gmail.com
c2f90ac41e Change *selection* tracks property to a list rather than a total - greater flexibility for plugins. 2014-11-17 16:04:08 +00:00
stevethefiddle@gmail.com
8ca85d0595 Support version 3 syntax in Nyquist Prompt. 2014-11-17 02:48:47 +00:00
lllucius
31081470cf Fixes disappearing focus as reported by David and cleans things up a bit. 2014-11-16 06:52:36 +00:00
lllucius@gmail.com
a334a39152 Found that the problem was a missing "class" on the friend statements.
I totally didn't see it!  It wasn't until I googled the error
that I had to stop, slap myself on the back of the head and
say "DOH!"
2014-11-14 04:18:23 +00:00
lllucius
ad92e8c4bf One more round of effects changes.
The big thing is the common efffects UI.  Right now Ladspa and VST
have been converted to use it and Audiounits will be next.  It makes
everything nice and consistent while reducing the clutter in the
dialog.

Other goodies are:

Ladspa effects now show output controls when supplied by the effect
Ladspa effects now work fine as Analyze type effects
Ladspa now has user presets
VST effects dialog is now less cluttered...leaving more room for the effect
Ladspa and VST effects now share a common UI
Ladspa and VST effects are now usable in chains
Ladspa and VST effects now handle user presets the same way
Currently active effects settings automatically saved and reloaded
Can now do numeric range checking on input fields.

And, as always, plenty of critter squashing.
2014-11-14 03:03:17 +00:00
lllucius
4c0aa60871 A subset of the original v4 patch (which will become v5 eventually)
The main operational difference is that for v4 effect onward, the 
sound name will now be *TRACK*.  This will not affect existing
effects since they use version number 3 or less.

This also provides the Nyquist effect with much more information about
the current processing:

Variable       Property    What
*AUDACITY*     VERSION     current Audacity version number

*SYSTEM-DIR*   BASE        Audacity install path
*SYSTEM-DIR*   DATA        Audacity data path
*SYSTEM-DIR*   HELP        Audacity help path
*SYSTEM-DIR*   TEMP        Audacity temp file path
*SYSTEM-DIR*   PLUGIN      Audacity search path for Nyquist plugins

*PROJECT*      RATE        current project sample rate
*PROJECT*      TRACKS      total number of tracks in the project
*PROJECT*      WAVETRACKS  number of wave tracks in the project
*PROJECT*      LABELTRACKS number of label tracks in the project
*PROJECT*      MIDITRACKS  number of midi tracks in the project
*PROJECT*      TIMETRACKS  number of time tracks in the project

*SELECTION*    START       start time of current selection
*SELECTION*    END         end time of current selection
*SELECTION*    TRACKS      number of tracks in the current selection
*SELECTION*    CHANNELS    number of channels in the current selection
*SELECTION*    LOW-HZ      low frequency from spectrogram (if available, else nil)
*SELECTION*    CENTER-HZ   center frequence (calculated) (if available, else nil)
*SELECTION*    HIGH-HZ     high frequence from spectrogram (if available, else nil)
*SELECTION*    BANDWIDTH   bandwidth in octaves (calculated) (if available, else nil)
*SELECTION*    PEAK-LEVEL  peak amplitude for the current selection

*TRACK*        INDEX       1-based index of track being processed
*TRACK*        NAME        name of track
*TRACK*        TYPE        type of track: wave, midi, label, time
*TRACK*        VIEW        track view: Waveform,  Waveform (dB), etc.
*TRACK*        CHANNELS    number of channels in the track
*TRACK*        START-TIME  start time of track
*TRACK*        END-TIME    end time of track
*TRACK*        GAIN        track gain
*TRACK*        PAN         track pan
*TRACK*        RATE        sample rate of track
*TRACK*        FORMAT      sample format: 16 (int), 24 (int), 32.0 (float)
*TRACK*        CLIPS       list of start/end times for clips for each channel
2014-11-13 16:38:20 +00:00
james.k.crook@gmail.com
2c64427129 Changes to compile NoiseReduction for Linux too. 2014-11-13 12:53:33 +00:00
james.k.crook@gmail.com
84db3a5cc6 Gray out noise reduction fields dynamically when they are not relevant.
Patch from Paul Licameli.
2014-11-13 12:15:43 +00:00
james.k.crook@gmail.com
703fafacb2 Frequency-selection aware noise reduction, plus small adjustments to toolbar and effect. (patch from Paul Licameli)
1. Change in project.cpp fixes misbehavior of spectral selection toolbar,
when you try to enter numbers in the low or high frequency boxes and one of
the frequencies was undefined.

2. Changes in NoiseReduction.cpp now take the spectral selection into
account in step 2, so that noise is reduced (or isolated) only in the
selected range of frequencies.  No effect on statistics gathered in step 1.

3. Other noise reduction changes:  avoid an assertion in case of certain
incompatible settings, and end all messages in message boxes consistently
with a period.
2014-11-11 18:02:31 +00:00
james.k.crook@gmail.com
e76c17d384 Edgar's fix: Missing include file when compiled for wx3.x 2014-11-11 16:08:17 +00:00
james.k.crook@gmail.com
740bc0d983 Fixed warnings about AUDACITY_DLL_API.
If one class is exported, then all the classes it derives from must be exported too, otherwise we get warnings wherever it is used.
2014-11-11 15:47:48 +00:00
james.k.crook@gmail.com
6e384e2f6b Noise Reduction Effect by Paul Licameli.
#ifdef EXPERIMENTAL_NOISE_REDUCTION for now.
2014-11-10 21:30:44 +00:00
james.k.crook@gmail.com
035ee5cdff [Bug 782] Nyquist parameters changed (during this session) now remembered until end of session, as before.
Thanks to Steve for tracking this down.
2014-11-09 21:54:06 +00:00
james.k.crook@gmail.com
af8457dd1c From: martin@steghoefer.eu [PATCH 16/16] Fix runtime problem with wxWidgets 3.0: Segmentation fault due to events arriving before initialization.
"The dialogs LadspaEffectDialog, LV2EffectDialog and VampEffectDialog receive EVT_TEXT events before the dialog classes are properly initialized. To prevent this, a workaround was already in place, but was only active on Windows. This happens now on more platforms (including GTK). So activate it on the wxGTK with wx3.0, too."
2014-11-08 16:53:43 +00:00
james.k.crook@gmail.com
88ed83d967 Included missing changes to move from TimeTextCtrl to NumericTextCtrl in r13557. 2014-11-08 16:48:36 +00:00
james.k.crook@gmail.com
8a9987a0d9 From: martin@steghoefer.eu [PATCHES 02-15 of 15] Fix runtime problem with wxWidgets 3.0:
Correct string formatting for:
2/15  %d + enum => %d + int
3/15  %lld + int64_t => %lld + long long
4/15  %d + int64_t => %lld + long long
5/15  %d + double => %f + double
6/15  %d + int32_t => %d + int
7/15  %d + intptr_t => %p + void*
8/15  gint, guint
9/15  %d + long => %ld + long
10/15 %n + int => %d + int
11/15 %x + int => %x + unsigned int
12/15 %f + int => %d + int
13/15 %S + wxChar* => %s + wxChar*
14/15 %d + size_t => %d + int
15/15 %d + size_t => %lld + long long

"The functions wxString::Format, wxString::Printf (and others indirectly) have become stricter about parameter types that don't match (format specifier vs. function parameters). So the bugs (that were already present in audacity before) become visible in wx3.0 as error message dialogs. I've checked all occurrences of Printf, wxPrintf, PrintfV, Format, FormatV, wxLogDebug and wxLogError systematically and made the type match."

Note (9/15): In TrackPanel.cpp, ExportMP2.cpp and CompareAudioCommand.cpp this patch supersedes related change done in r13466 because the new solution requires fewer casts and therefore simplifies the code.

Note: Many .po files are affected, and we need to be very careful about this.  Incorrect "%d" and similar in translation files may lead to crashes in those languages (only).  This is something we should actually have been more careful about in the past.  We need to write a script to check that the "%d" and similar format specifiers match between English and translation.
2014-11-08 16:42:34 +00:00
james.k.crook@gmail.com
8305bfdb05 From: martin@steghoefer.eu [PATCH 01/15] Fix runtime problem with wxWidgets 3.0: Correct string formatting: wxLongLong -> %lld + long long
The functions wxString::Format, wxString::Printf (and others indirectly) have become stricter about parameter types that don't match (format specifier vs. function parameters). So the bugs (that were already present in audacity before) become visible in wx3.0 as error message dialogs. I've checked all occurrences of Printf, wxPrintf, PrintfV, Format, FormatV, wxLogDebug and wxLogError systematically and made the type match.

Note: In Shuttle.cpp this patch supersedes one related change done in r13466 because a wxLongLong_t can be bigger than an int and in a generic function like "TransferLongLong" this should be taken into account.
2014-11-08 16:06:28 +00:00
james.k.crook@gmail.com
67d2b274e2 Frequency Selection toolbar from Paul Licameli.
Linux/Mac will need new files adding to project, SpectralSelectionBar.cpp, NumericTextCtrl.cpp.
2014-11-08 15:18:43 +00:00
lllucius
7bb4b7c941 More effect changes to new format and realtime preview
Main effect host processing extended to support generate
effects and sync locked tracks.

Ladspa updated to utilize new generate support.

I'll address Analyze plugins when I get to the SBSMS ones.

Shared and private config changes are flushed immediately.

Cancel button restored to VST and Ladspa dialogs.  This
also restores the ESC button functionality.

Current parameters saved with Apply or Ok clicked...not
when Audacity ends.

Ladspa and VST effects with that reports no input and
no outputs are now ignored.

Ladspa effects providing a latency value is now handled.

Ladspa generator effects now use the TimeTextCtrl for
specifying duration.
2014-11-07 09:54:04 +00:00
lllucius@gmail.com
94d97f87b8 Darn Windows developers! (Or the VS compiler is just too helpful.) 2014-11-06 04:58:40 +00:00
lllucius
3d8de17c22 Slightly better error handling during effect initialization
It at least detects load failures now.  ;-)
2014-11-05 20:41:29 +00:00
lllucius@gmail.com
126152a756 Converts the ladspa effects to the new format and adds realtime support
This also (hopefully) corrects some additional problems in general 
realtime support.  Particular focus should be given to the handling
of various combinations of stereo, left channel mono, right channel
mono, and true mono as this has been a particularly troublesome
area.
2014-11-05 07:06:38 +00:00
lllucius
080b67ce9e Adds the ability to sort and group the Effects menus
Current options:

Publisher: name (the closest to what we have now)
Name (doesn't include the publisher, just a straigt up alpha sort
Publisher (creates submenus based on the publisher)
Type (creates submenus based on the type, VST, Nyquist, etc.)

And the Linux method of creating submenus based on number of items
is available to all and you can choose how menu you want per submenu.
I had to bring this back since I'd removed it when for the new effects
and I figured why limit it to only Linux...

Check it out in Preferences (effect page).

You'll also notice that the effects page is starting to talk about 
plugins.  That will progress further (baby steps) so bare with me
for just a bit more.
2014-11-04 01:38:13 +00:00
lllucius
4583e91621 More fixes for the realtime stuff.
Nothing new added in this one.  Should fix the odd behavior
with a single track not really working correctly.
2014-11-03 22:47:55 +00:00
lllucius
cae6669275 Round 3 of realtime changes.
This gets meter type VST effects working again by extending the

The master now maintains his own internal buffers and sums (mixes) all
playing tracks into those buffers.  The buffers are then fed into the
VST effect that is presented to the user.  This allows the effect to
provide feedback to the user if it support it.  Such effects may display
meters or clipping indicators.

Several issues with treading have also been corrected (hopefully ;-)).
These showed up mostly on Linux, but could have happened on the others
as well.

The realtime support is no longer limited to 2 channels per logical
track.  Once support for more channels is added, this should be ready
for it.

The rack dialog can now be toggled via the edit toolbar button.  It
doesn't stay pressed because the closing of the dialog would have to
be communicated back to the toolbar.

As the rack is updated with new or removed effects or active state
changed, all effects in the active list were shutdown and all effects
in the updated list were initialized.  This now shuts down only the
effects no longer in the list and initializes only new ones.

The rack now uses wxBitmapButton instead of Audacity's AButton.  The
AButton has a timing issue that prevents it from being deleted while
processing the click event.  I looked into it, but gave up and switched
to the wxBitmapButton.  Unfortunately, there's a problem with the
wxBitmapButton as well...at least on my setup here.  Either the bitmaps
are being scaled or antialiased.  Will have to get feedback on this.

I finally figured out why some VSTs didn't seem to do anything in
realtime, at least in my case anyway.  I've installed a lot of demo
VSTs and while they work in "batch/offline" mode, some of them will
not work in realtime since vendors tend to remove automation as one
of the demo limitations.

More changes coming shortly...
2014-11-03 06:48:54 +00:00
stevethefiddle@gmail.com
df7978d5ce Change case RPM to rpm.
Further changes to Change Speed GUI to follow.
2014-10-31 22:13:48 +00:00
lllucius
d50e9fee52 Realtime preview round 2
This changes the realtime preview from using 1 effect for all tracks
to an effect per track (logical track).  This should clear up the 
bad audio when more than one track (or a stereo track) is present.

An unfortunate side effect is that meter effects no longer work since
the one presented to the user is not the one doing the actual work.
Suggestions on how to remedy this are welcome.
2014-10-30 14:04:48 +00:00
lllucius
d48f03518f Fixing some typos and makes effects added to rack OFF by default
That's going to solve some doubling up of effects while playing I think.
2014-10-29 03:46:53 +00:00
james.k.crook@gmail.com
f0b3367a8a Effects Rack now appears center screen first time it is used. 2014-10-27 21:47:28 +00:00
lllucius@gmail.com
c6ffa89d23 Add (restore?) the ability to build without trashing the source tree
You may now do:

mkdir build
cd build
../configure
./audacity

And all but one directory will remain unmolested...no more object files
in "src".

And if you look carefully, you'll see that the newly built "audacity" is
copied to the top of the build tree...no more having to use "src/audacity"
to run.

You can of course still do the configure from the top and get all of the
objects strewn about the tree.

I still haven't figured out how to keep the locale directory from getting
soiled.  I'm not really sure there's a way around it really.
2014-10-27 07:34:17 +00:00
stevethefiddle@gmail.com
2abb46b83d Allow generator effects to use preview without requiring a selection to be made.
Documentation: This does not affect any currently shipped effects. This will need documenting on the wiki for writing Nyquist plug-ins.
2014-10-26 20:30:22 +00:00
lllucius
1eeb4d979a The fabled realtime effects...
I've made it where you can enable and disable via experimentals:

EXPERIMENTAL_REALTIME_EFFECTS
EXPERIMENTAL_EFFECTS_RACK

You will notice that, as of now, the only effects currently set up for
realtime are VSTs.  Now that this is in, I will start converting the
rest.

As I start to convert the effects, the astute of you may notice that
they no longer directly access tracks or any "internal" Audacity
objects.  This isolates the effects from changes in Audacity and makes
it much easier to add new ones.

Anyway, all 3 platforms can now display VST effects in graphical mode.
Yes, that means Linux too.  There are quite a few VSTs for Linux if
you search for them.

The so-called "rack" definitely needs some discussion, work, and attention
from someone much better at graphics than me.  I'm not really sure it should
stay in as-is.  I'd originally planned for it to be simply a utility window
where you can store your (preconfigured) favorite effects.  It should probably
revert back to that idea.

You may notice that this DOES include the API work I did.  The realtime effects
were too tied to it and I didn't want to redo the whole thing.  As I mentioned
elsewhere, the API stuff may or may not be very future proof.

So, let the critter complaints commence.  I absolute KNOW there will be some.
(I know I'll be hearing from the Linux peeps pretty darn quickly.  ;-))
2014-10-26 03:24:10 +00:00
richardash1981
c2c525dcc3 remove commented out code 2014-10-25 21:16:00 +00:00
james.k.crook@gmail.com
67a18f165a MSVC 2013: Code analysis tool & -> &&
Via David Avery.
2014-10-25 08:25:22 +00:00
james.k.crook@gmail.com
d96bbb1f3a Spectral selection effects now prompt for missing frequency fields when used in time selection mode. 2014-10-24 20:27:04 +00:00