Browse Source

Eliminate Experimental.h, configure compile options instead...

... This makes it impossible to forget to include the EXPERIMENTAL definitions
(such as when cutting and pasting code) and so get unintended quiet changes of
behavior.

The EXPERIMENTAL flags are now specified instead in new file Experimental.cmake
pull/2/head
Paul Licameli 2 years ago
parent
commit
e653b4aaf8
  1. 4
      CMakeLists.txt
  2. 13
      cmake-proxies/CMakeLists.txt
  3. 2
      src/AColor.cpp
  4. 2
      src/AboutDialog.cpp
  5. 2
      src/AdornedRulerPanel.cpp
  6. 2
      src/AllThemeResources.h
  7. 2
      src/AudacityApp.cpp
  8. 2
      src/AudacityApp.h
  9. 2
      src/AudacityLogger.cpp
  10. 2
      src/AudacityLogger.h
  11. 2
      src/AudioIO.cpp
  12. 2
      src/AudioIO.h
  13. 2
      src/AudioIOBase.cpp
  14. 2
      src/AudioIOBase.h
  15. 3
      src/CMakeLists.txt
  16. 2
      src/CommonCommandFlags.cpp
  17. 1
      src/CrashReport.cpp
  18. 2
      src/CrashReport.h
  19. 2
      src/DeviceChange.cpp
  20. 2
      src/DeviceChange.h
  21. 2
      src/DeviceManager.cpp
  22. 2
      src/DeviceManager.h
  23. 2
      src/Envelope.cpp
  24. 2
      src/EnvelopeEditor.cpp
  25. 216
      src/Experimental.cmake
  26. 221
      src/Experimental.h
  27. 2
      src/FileNames.cpp
  28. 2
      src/HelpText.cpp
  29. 2
      src/Internat.cpp
  30. 3
      src/Internat.h
  31. 2
      src/LabelTrack.cpp
  32. 2
      src/Menus.cpp
  33. 2
      src/MixerBoard.cpp
  34. 2
      src/MixerBoard.h
  35. 2
      src/ModuleManager.cpp
  36. 2
      src/NoteTrack.cpp
  37. 2
      src/NoteTrack.h
  38. 2
      src/PluginManager.cpp
  39. 2
      src/ProjectAudioManager.cpp
  40. 2
      src/ProjectFileManager.cpp
  41. 2
      src/ProjectManager.cpp
  42. 2
      src/ProjectSelectionManager.cpp
  43. 2
      src/ProjectSettings.cpp
  44. 2
      src/ProjectWindow.cpp
  45. 2
      src/RealFFTf.cpp
  46. 2
      src/RealFFTf.h
  47. 2
      src/RealFFTf48x.cpp
  48. 2
      src/SelectedRegion.cpp
  49. 2
      src/SelectedRegion.h
  50. 2
      src/ShuttleGui.cpp
  51. 2
      src/SplashDialog.cpp
  52. 2
      src/Theme.cpp
  53. 2
      src/TimeTrack.cpp
  54. 2
      src/Track.cpp
  55. 2
      src/Track.h
  56. 2
      src/TrackArtist.cpp
  57. 2
      src/TrackArtist.h
  58. 2
      src/TrackInfo.cpp
  59. 2
      src/TrackInfo.h
  60. 2
      src/TrackPanel.cpp
  61. 2
      src/TrackPanel.h
  62. 2
      src/ViewInfo.cpp
  63. 2
      src/WaveClip.cpp
  64. 2
      src/WaveTrack.cpp
  65. 2
      src/ZoomInfo.cpp
  66. 2
      src/commands/CommandManager.cpp
  67. 2
      src/commands/CommandManager.h
  68. 2
      src/effects/BassTreble.cpp
  69. 2
      src/effects/Distortion.cpp
  70. 2
      src/effects/DtmfGen.cpp
  71. 2
      src/effects/Effect.cpp
  72. 2
      src/effects/Effect.h
  73. 2
      src/effects/EffectManager.h
  74. 2
      src/effects/EffectUI.cpp
  75. 2
      src/effects/EffectUI.h
  76. 2
      src/effects/Equalization.cpp
  77. 2
      src/effects/Equalization.h
  78. 2
      src/effects/Equalization48x.cpp
  79. 2
      src/effects/Equalization48x.h
  80. 2
      src/effects/NoiseReduction.cpp
  81. 2
      src/effects/NoiseRemoval.cpp
  82. 2
      src/effects/NoiseRemoval.h
  83. 2
      src/effects/Normalize.cpp
  84. 2
      src/effects/Normalize.h
  85. 2
      src/effects/Phaser.cpp
  86. 2
      src/effects/RealtimeEffectManager.cpp
  87. 2
      src/effects/ScoreAlignDialog.cpp
  88. 2
      src/effects/ScoreAlignDialog.h
  89. 2
      src/effects/Wahwah.cpp
  90. 2
      src/effects/nyquist/Nyquist.cpp
  91. 2
      src/import/ImportFFmpeg.cpp
  92. 2
      src/import/ImportFLAC.cpp
  93. 1
      src/menus/FileMenus.cpp
  94. 1
      src/menus/HelpMenus.cpp
  95. 1
      src/menus/PluginMenus.cpp
  96. 1
      src/menus/SelectMenus.cpp
  97. 1
      src/menus/TrackMenus.cpp
  98. 1
      src/menus/TransportMenus.cpp
  99. 1
      src/menus/ViewMenus.cpp
  100. 2
      src/ondemand/ODDecodeFFmpegTask.cpp

4
CMakeLists.txt

@ -418,6 +418,10 @@ elseif( CMAKE_SYSTEM_NAME MATCHES "Windows" )
file( TO_NATIVE_PATH "${pkgdir}/tools/python.exe" PYTHON )
endif()
# define EXPERIMENTAL flags
# Do this before consistency checks for added third-party libraries
include( "src/Experimental.cmake" )
# Add our children
add_subdirectory( "cmake-proxies" )
add_subdirectory( "help" )

13
cmake-proxies/CMakeLists.txt

@ -147,8 +147,21 @@ addlib( libogg ogg LIBOGG NO YES "ogg >= 1.3.1" )
addlib( libvorbis vorbis LIBVORBIS NO YES "vorbis >= 1.3.3" "vorbisenc >= 1.3.3" "vorbisfile >= 1.3.3" )
addlib( libflac flac LIBFLAC NO YES "flac >= 1.3.1" "flac++ >= 1.3.1" )
addlib( lv2 lv2 LV2 NO YES "lilv-0 >= 0.24.6" "lv2 >= 1.16.0" "serd-0 >= 0.30.2" "sord-0 >= 0.16.4" "sratom-0 >= 0.6.4" "suil-0 >= 0.10.6" )
addlib( portmidi midi MIDI NO YES "portmidi >= 0.1" )
if (NOT USE_MIDI AND
"EXPERIMENTAL_MIDI_OUT" IN_LIST EXPERIMENTAL_OPTIONS_LIST )
message(FATAL_ERROR "EXPERIMENTAL_MIDI_OUT requires USE_MIDI")
endif ()
addlib( portmixer portmixer PORTMIXER NO YES "" )
if (NOT USE_PORTMIXER AND
"EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT" IN_LIST
EXPERIMENTAL_OPTIONS_LIST )
message(FATAL_ERROR "EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT requires USE_PORTMIXER")
endif ()
addlib( portsmf portsmf PORTSMF NO YES "portSMF >= 0.1" )
addlib( libsbsms sbsms SBSMS NO YES "sbsms >= 2.2.0" )
addlib( soundtouch soundtouch SOUNDTOUCH NO YES "soundtouch >= 1.7.1" )

2
src/AColor.cpp

@ -20,7 +20,7 @@ It is also a place to document colour usage policy in Audacity
#include "Audacity.h"
#include "AColor.h"
#include "Experimental.h"
#include <wx/window.h>
#include <wx/colour.h>

2
src/AboutDialog.cpp

@ -28,7 +28,7 @@ hold information about one contributor to Audacity.
#include "Audacity.h" // for USE_* macros
#include "AboutDialog.h"
#include "Experimental.h"
#include <wx/dialog.h>
#include <wx/html/htmlwin.h>

2
src/AdornedRulerPanel.cpp

@ -21,7 +21,7 @@
#include "Audacity.h"
#include "AdornedRulerPanel.h"
#include "Experimental.h"
#include <wx/setup.h> // for wxUSE_* macros
#include <wx/tooltip.h>

2
src/AllThemeResources.h

@ -45,7 +45,7 @@ from there. Audacity will look for a file called "Pause.png".
// we want to include it multiple times in Theme.cpp.
#include "Audacity.h"
#include "Experimental.h"
#include "MacroMagic.h"
#define XPMS_RETIRED

2
src/AudacityApp.cpp

@ -18,7 +18,7 @@ It handles initialization and termination by subclassing wxApp.
#include "Audacity.h" // This should always be included first; for USE_* macros and __UNIX__
#include "AudacityApp.h"
#include "Experimental.h"
#if 0
// This may be used to debug memory leaks.

2
src/AudacityApp.h

@ -17,7 +17,7 @@
#include "Audacity.h"
#include "audacity/Types.h"
#include "Experimental.h"
#include <wx/app.h> // to inherit
#include <wx/timer.h> // member variable

2
src/AudacityLogger.cpp

@ -17,7 +17,7 @@ Provides thread-safe logging based on the wxWidgets log facility.
#include "Audacity.h" // This should always be included first
#include "AudacityLogger.h"
#include "Experimental.h"
#include "FileNames.h"
#include "Internat.h"

2
src/AudacityLogger.h

@ -16,7 +16,7 @@
#include "Audacity.h"
#include "Experimental.h"
#include "MemoryX.h"
#include "Prefs.h"

2
src/AudioIO.cpp

@ -416,7 +416,7 @@ time warp info and AudioIOListener and whether the playback is looped.
#include "Audacity.h" // for USE_* macros
#include "AudioIO.h"
#include "Experimental.h"
#include "AudioIOListener.h"

2
src/AudioIO.h

@ -17,7 +17,7 @@
#include "AudioIOBase.h" // to inherit
#include "Experimental.h"
#include <memory>
#include <utility>

2
src/AudioIOBase.cpp

@ -11,7 +11,7 @@ Paul Licameli split from AudioIO.cpp
#include "Audacity.h"
#include "AudioIOBase.h"
#include "Experimental.h"
#include <wx/sstream.h>
#include <wx/txtstrm.h>

2
src/AudioIOBase.h

@ -12,7 +12,7 @@ Paul Licameli split from AudioIO.h
#define __AUDACITY_AUDIO_IO_BASE__
#include "Audacity.h" // for USE_* macros
#include "Experimental.h"
#include <atomic>
#include <cfloat>

3
src/CMakeLists.txt

@ -125,7 +125,6 @@ list( APPEND SOURCES
Envelope.h
EnvelopeEditor.cpp
EnvelopeEditor.h
Experimental.h
FFT.cpp
FFT.h
FFmpeg.cpp
@ -965,6 +964,8 @@ list( APPEND SOURCES
xml/XMLWriter.cpp
xml/XMLWriter.h
xml/audacityproject.dtd
Experimental.cmake
)
#

2
src/CommonCommandFlags.cpp

@ -11,7 +11,7 @@ Paul Licameli split from Menus.cpp
#include "Audacity.h"
#include "CommonCommandFlags.h"
#include "Experimental.h"
#include <wx/frame.h>

1
src/CrashReport.cpp

@ -8,7 +8,6 @@
#include "Audacity.h"
#include "CrashReport.h"
#include "Experimental.h"
#if defined(HAS_CRASH_REPORT)
#include <atomic>

2
src/CrashReport.h

@ -15,7 +15,7 @@
#undef HAS_CRASH_REPORT
#include "Audacity.h"
#include "Experimental.h"
#if defined(EXPERIMENTAL_CRASH_REPORT)

2
src/DeviceChange.cpp

@ -15,7 +15,7 @@
#include "DeviceChange.h"
#include "Experimental.h"
#if defined(EXPERIMENTAL_DEVICE_CHANGE_HANDLER)

2
src/DeviceChange.h

@ -13,7 +13,7 @@
#include "Audacity.h" // for HAVE_LIBUDEV_H
#include "Experimental.h"
#if defined(EXPERIMENTAL_DEVICE_CHANGE_HANDLER)

2
src/DeviceManager.cpp

@ -12,7 +12,7 @@
// For compilers that support precompilation, includes "wx/wx.h".
#include <wx/wxprec.h>
#include "Experimental.h"
#include "portaudio.h"
#ifdef __WXMSW__

2
src/DeviceManager.h

@ -18,7 +18,7 @@
#ifndef __AUDACITY_DEVICEMANAGER__
#define __AUDACITY_DEVICEMANAGER__
#include "Experimental.h"
#include <chrono>
#include <vector>

2
src/Envelope.cpp

@ -29,7 +29,7 @@ a draggable point type.
#include "Envelope.h"
#include "Experimental.h"
#include <math.h>

2
src/EnvelopeEditor.cpp

@ -11,7 +11,7 @@
#include "Audacity.h"
#include "EnvelopeEditor.h"
#include "Experimental.h"
#include <wx/dc.h>
#include <wx/event.h>

216
src/Experimental.cmake

@ -0,0 +1,216 @@
#[[
Audacity: A Digital Audio Editor
Experimental.cmake
Dominic Mazzoni
James Crook
Used at configuration time to generate compiler options that enable or disable
experimental features.
When the features become mainstream the options will then be retired.
JKC: This file solves a problem of how to avoid forking the
code base when working on NEW features e.g:
- Additional displays in Audacity
- Modular architecture.
Add options in here for the NEW features, and make your code
conditional on them with #ifdef.
For each name in the list, EXPERIMENTAL_{name} is the token to test with
#ifdef.
All the options are positive, i.e., when not commented out,
they enable the feature.
]]#
set( EXPERIMENTAL_OPTIONS_LIST
# ACH 08 Jan 2014
# EQ accelerated code
#EQ_SSE_THREADED
# LLL, 09 Nov 2013:
# Allow all WASAPI devices, not just loopback
FULL_WASAPI
# JKC (effect by Norm C, 02 Oct 2013)
SCIENCE_FILTERS
# JKC an experiement to work around bug 2709
# disabled.
#CEE_NUMBERS_OPTION
# LLL, 01 Oct 2013:
# NEW key assignment view for preferences
KEY_VIEW
# feature to link audio tracks to a label track
SYNC_LOCK
# DA: Enables dark audacity theme and customisations.
#DA
# Define this so that sync-lock tiles shine through spectrogram.
# The spectrogram pastes a bitmap over the tiles.
# This makes it use alpha blending, most transparent where least intense.
SPECTROGRAM_OVERLAY
# Define this so that sync-lock tiles shine through note/MIDI track.
# The note track then relies on the same code for drawing background as
# Wavetrack, and draws its notes and lines over the top.
NOTETRACK_OVERLAY
# Define this, and the option to zoom to half wave is added in the VZoom menu.
# Also we go to half wave on collapse, full wave on restore.
HALF_WAVE
# THEMING is mostly mainstream now.
# the define is still present to mark out old code before theming, that we might
# conceivably need.
# TODO: Agree on and then tidy this code.
THEMING
#August 2009 - Theming not locked down enough for a stable release.
# This turns on the Theme panel in Prefs dialog. It is independent of THEMING.
#THEME_PREFS
# This shows the zoom toggle button on the edit toolbar.
ZOOM_TOGGLE_BUTTON
#ROLL_UP_DIALOG
#RIGHT_ALIGNED_TEXTBOXES
#VOICE_DETECTION
# Effect categorisation. Adds support for arranging effects in categories
# and displaying those categories as submenus in the Effect menu.
# This was a 2008 GSoC project that was making good progress at the half-way point
# but then the student didn't contribute after that. It needs a bit of work to finish it off.
# As a minimum, if this is turned on for a release,
# it should have an easy mechanism to disable it at run-time, such as a menu item or a pref,
# preferrably disabled until other work is done. Martyn 22/12/2008.
#
# JKC Apr 2015, Menu item to manage effects.
EFFECT_MANAGEMENT
# Andreas Micheler, 20.Nov 2007:
# A spectrumLogF-like view mode with notes quantization.
# Just select the "Find Notes" checkbox in the spectrum prefs
# to activate it instead of the Spectrum log(f) mode.
#FIND_NOTES
# AM, 22.Nov 2007:
# A Frequency Grid for the Spectrum Log(f) & Find Notes modes
#FFT_Y_GRID
# Andy Coder, 03.Mar 2009:
# Allow keyboard seeking before initial playback position
#SEEK_BEHIND_CURSOR
# Paul Licameli (PRL) 5 Oct 2014
SPECTRAL_EDITING
# Paul Licameli (PRL) 29 Nov 2014
#IMPROVED_SEEKING
#MIDI_IN
# RBD, 1 Sep 2008
# Enables MIDI Output of NoteTrack (MIDI) data during playback
# USE_MIDI must be defined in order for MIDI_OUT to work
MIDI_OUT
# JKC, 17 Aug 2017
# Enables the MIDI note stretching feature, which currently
# a) Is broken on Linux (Bug 1646)
# b) Crashes with Sync-Lock (Bug 1719)
# c) Needs UI design review.
#MIDI_STRETCHING
# USE_MIDI must be defined in order for SCOREALIGN to work
#SCOREALIGN
#NOTEBOOK
#Automatically tries to find an acceptable input volume
#AUTOMATED_INPUT_LEVEL_ADJUSTMENT
# Module prefs provides a panel in prefs where users can choose which modules
# to enable.
MODULE_PREFS
# Define to allow realtime processing in Audacity effects that have been converted.
REALTIME_AUDACITY_EFFECTS
# Define to include the effects rack (such as it is).
#EFFECTS_RACK
# Define to make the meters look like a row of LEDs
#METER_LED_STYLE
# Define to enable the device change handler
#DEVICE_CHANGE_HANDLER
# Define for NEW noise reduction effect from Paul Licameli.
NOISE_REDUCTION
# Define to enable Nyquist audio clip boundary control (Steve Daulton Dec 2014)
NYQUIST_SPLIT_CONTROL
# Paul Licameli (PRL) 16 Apr 2015
# Support for scrubbing in the AudioIO engine, without calls to it
SCRUBBING_SUPPORT
# Paul Licameli (PRL) 24 May 2015
# Allow scrolling up to one half of a screenful beyond either end of the project,
# if you turn on the appropriate Tracks preference.
# This allows smooth-scrolling scrub to work more reasonably at the ends.
SCROLLING_LIMITS
# Paul Licameli (PRL) 28 May 2015
# Draw negative numbers on the time ruler in a different color, when
# scrolling past zero is enabled. Perhaps that lessens confusion.
TWO_TONE_TIME_RULER
#Define to include crash reporting, if available in wxWidgets build
#This flag is used only in CrashReport.h; elsewhere use HAS_CRASH_REPORT
CRASH_REPORT
# Paul Licameli (PRL) 31 May 2015
# Zero-padding factor for spectrograms can smooth the display of spectrograms by
# interpolating in frequency domain.
ZERO_PADDED_SPECTROGRAMS
# PRL 11 Jul 2017
# Highlight more things in TrackPanel when the mouse moves over them,
# using delibrately ugly pens and brushes until there is better cooperation
# with themes
#TRACK_PANEL_HIGHLIGHTING
# Paul Licameli (PRL) 28 Dec 2017
# Easy drag-and-drop to add Nyquist, LADSPA, and VST plug-ins
#DRAG_DROP_PLUG_INS
# PRL 5 Jan 2018
# Easy change of keystroke bindings for menu items
EASY_CHANGE_KEY_BINDINGS
# PRL 1 Jun 2018
PUNCH_AND_ROLL
# PRL 31 July 2018
DRAGGABLE_PLAY_HEAD
)
# Some more flags that depend on other configuration options
if( "SCRUBBING_SUPPORT" IN_LIST EXPERIMENTAL_OPTIONS_LIST )
list( APPEND EXPERIMENTAL_OPTIONS_LIST SCRUBBING_SCROLL_WHEEL )
endif()
# Now define the flags
list( TRANSFORM EXPERIMENTAL_OPTIONS_LIST PREPEND "EXPERIMENTAL_" )
add_compile_definitions( ${EXPERIMENTAL_OPTIONS_LIST} )

221
src/Experimental.h

@ -1,221 +0,0 @@
/**********************************************************************
Audacity: A Digital Audio Editor
Experimental.h
Dominic Mazzoni
James Crook
Used for #includes and #defines for experimental features.
When the features become mainstream the #include files will
move out of here and into the files which need them. The
#defines will then be retired.
JKC: This file solves a problem of how to avoid forking the
code base when working on NEW features e.g:
- Additional displays in Audacity
- Modular architecture.
Add #defines in here for the NEW features, and make your code
conditional on those #defines.
All the #defines are positive, i.e., when defined,
they enable the feature.
**********************************************************************/
#ifndef __EXPERIMENTAL__
#define __EXPERIMENTAL__
#ifndef __AUDACITY_H__
// Audacity.h is needed for the USE_* macros
#error Must include Audacity.h before Experimental.h
#endif
// ACH 08 Jan 2014
// EQ accelerated code
//#define EXPERIMENTAL_EQ_SSE_THREADED
// LLL, 09 Nov 2013:
// Allow all WASAPI devices, not just loopback
#define EXPERIMENTAL_FULL_WASAPI
// JKC (effect by Norm C, 02 Oct 2013)
#define EXPERIMENTAL_SCIENCE_FILTERS
// JKC an experiement to work around bug 2709
// disabled.
//define EXPERIMENTAL_CEE_NUMBERS_OPTION
// LLL, 01 Oct 2013:
// NEW key assignment view for preferences
#define EXPERIMENTAL_KEY_VIEW
// feature to link audio tracks to a label track
#define EXPERIMENTAL_SYNC_LOCK
// DA: Enables dark audacity theme and customisations.
//#define EXPERIMENTAL_DA
// Define this so that sync-lock tiles shine through spectrogram.
// The spectrogram pastes a bitmap over the tiles.
// This makes it use alpha blending, most transparent where least intense.
#define EXPERIMENTAL_SPECTROGRAM_OVERLAY
// Define this so that sync-lock tiles shine through note/MIDI track.
// The note track then relies on the same code for drawing background as
// Wavetrack, and draws its notes and lines over the top.
#define EXPERIMENTAL_NOTETRACK_OVERLAY
// Define this, and the option to zoom to half wave is added in the VZoom menu.
// Also we go to half wave on collapse, full wave on restore.
#define EXPERIMENTAL_HALF_WAVE
// EXPERIMENTAL_THEMING is mostly mainstream now.
// the define is still present to mark out old code before theming, that we might
// conceivably need.
// TODO: Agree on and then tidy this code.
#define EXPERIMENTAL_THEMING
//August 2009 - Theming not locked down enough for a stable release.
// This turns on the Theme panel in Prefs dialog. It is independent of EXPERIMENTAL_THEMING.
//#define EXPERIMENTAL_THEME_PREFS
// This shows the zoom toggle button on the edit toolbar.
#define EXPERIMENTAL_ZOOM_TOGGLE_BUTTON
//#define EXPERIMENTAL_ROLL_UP_DIALOG
//#define EXPERIMENTAL_RIGHT_ALIGNED_TEXTBOXES
//#define EXPERIMENTAL_VOICE_DETECTION
// Effect categorisation. Adds support for arranging effects in categories
// and displaying those categories as submenus in the Effect menu.
// This was a 2008 GSoC project that was making good progress at the half-way point
// but then the student didn't contribute after that. It needs a bit of work to finish it off.
// As a minimum, if this is turned on for a release,
// it should have an easy mechanism to disable it at run-time, such as a menu item or a pref,
// preferably disabled until other work is done. Martyn 22/12/2008.
//
// JKC Apr 2015, Menu item to manage effects.
#define EXPERIMENTAL_EFFECT_MANAGEMENT
// Andreas Micheler, 20.Nov 2007:
// A spectrumLogF-like view mode with notes quantization.
// Just select the "Find Notes" checkbox in the spectrum prefs
// to activate it instead of the Spectrum log(f) mode.
//#define EXPERIMENTAL_FIND_NOTES
// AM, 22.Nov 2007:
// A Frequency Grid for the Spectrum Log(f) & Find Notes modes
//#define EXPERIMENTAL_FFT_Y_GRID
// Andy Coder, 03.Mar 2009:
// Allow keyboard seeking before initial playback position
//#define EXPERIMENTAL_SEEK_BEHIND_CURSOR
// Paul Licameli (PRL) 5 Oct 2014
#define EXPERIMENTAL_SPECTRAL_EDITING
// Paul Licameli (PRL) 29 Nov 2014
// #define EXPERIMENTAL_IMPROVED_SEEKING
//#define EXPERIMENTAL_MIDI_IN
// RBD, 1 Sep 2008
// Enables MIDI Output of NoteTrack (MIDI) data during playback
// USE_MIDI must be defined in order for EXPERIMENTAL_MIDI_OUT to work
#ifdef USE_MIDI
#define EXPERIMENTAL_MIDI_OUT
#endif
// JKC, 17 Aug 2017
// Enables the MIDI note stretching feature, which currently
// a) Is broken on Linux (Bug 1646)
// b) Crashes with Sync-Lock (Bug 1719)
// c) Needs UI design review.
//#define EXPERIMENTAL_MIDI_STRETCHING
// USE_MIDI must be defined in order for EXPERIMENTAL_SCOREALIGN to work
//#define EXPERIMENTAL_SCOREALIGN
//#define EXPERIMENTAL_NOTEBOOK
#if USE_PORTMIXER
//Automatically tries to find an acceptable input volume
//#define EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
#endif
// Module prefs provides a panel in prefs where users can choose which modules
// to enable.
#define EXPERIMENTAL_MODULE_PREFS
// Define to allow realtime processing in Audacity effects that have been converted.
#define EXPERIMENTAL_REALTIME_AUDACITY_EFFECTS
// Define to include the effects rack (such as it is).
//#define EXPERIMENTAL_EFFECTS_RACK
// Define to make the meters look like a row of LEDs
//#define EXPERIMENTAL_METER_LED_STYLE
// Define to enable the device change handler
//#define EXPERIMENTAL_DEVICE_CHANGE_HANDLER
// Define for NEW noise reduction effect from Paul Licameli.
#define EXPERIMENTAL_NOISE_REDUCTION
// Define to enable Nyquist audio clip boundary control (Steve Daulton Dec 2014)
#define EXPERIMENTAL_NYQUIST_SPLIT_CONTROL
// Paul Licameli (PRL) 16 Apr 2015
// Support for scrubbing in the AudioIO engine, without calls to it
#define EXPERIMENTAL_SCRUBBING_SUPPORT
#ifdef EXPERIMENTAL_SCRUBBING_SUPPORT
// The following enables parts of the scrubbing user interface.
#define EXPERIMENTAL_SCRUBBING_SCROLL_WHEEL
#endif
// Paul Licameli (PRL) 24 May 2015
// Allow scrolling up to one half of a screenful beyond either end of the project,
// if you turn on the appropriate Tracks preference.
// This allows smooth-scrolling scrub to work more reasonably at the ends.
#define EXPERIMENTAL_SCROLLING_LIMITS
// Paul Licameli (PRL) 28 May 2015
// Draw negative numbers on the time ruler in a different color, when
// scrolling past zero is enabled. Perhaps that lessens confusion.
#define EXPERIMENTAL_TWO_TONE_TIME_RULER
// Define to include crash reporting, if available in wxWidgets build
// This flag is used only in CrashReport.h; elsewhere use HAS_CRASH_REPORT
#define EXPERIMENTAL_CRASH_REPORT
// Paul Licameli (PRL) 31 May 2015
// Zero-padding factor for spectrograms can smooth the display of spectrograms by
// interpolating in frequency domain.
#define EXPERIMENTAL_ZERO_PADDED_SPECTROGRAMS
// PRL 11 Jul 2017
// Highlight more things in TrackPanel when the mouse moves over them,
// using deliberately ugly pens and brushes until there is better cooperation
// with themes
//#define EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING
// Paul Licameli (PRL) 28 Dec 2017
// Easy drag-and-drop to add Nyquist, LADSPA, and VST plug-ins
// #define EXPERIMENTAL_DRAG_DROP_PLUG_INS
// PRL 5 Jan 2018
// Easy change of keystroke bindings for menu items
#define EXPERIMENTAL_EASY_CHANGE_KEY_BINDINGS
// PRL 1 Jun 2018
#define EXPERIMENTAL_PUNCH_AND_ROLL
// PRL 31 July 2018
#define EXPERIMENTAL_DRAGGABLE_PLAY_HEAD
#endif

2
src/FileNames.cpp

@ -23,7 +23,7 @@ used throughout Audacity into this one place.
#include "Audacity.h"
#include "FileNames.h"
#include "Experimental.h"
#include "MemoryX.h"

2
src/HelpText.cpp

@ -15,7 +15,7 @@
#include "Audacity.h" // for USE_* macros
#include "HelpText.h"
#include "Experimental.h"
#include <wx/string.h>
#include <wx/intl.h>

2
src/Internat.cpp

@ -22,7 +22,7 @@ and on Mac OS X for the filesystem.
#include "Internat.h"
#include "Experimental.h"
#include "MemoryX.h"
#include <wx/log.h>

3
src/Internat.h

@ -16,7 +16,6 @@
#include <wx/longlong.h>
#ifndef IN_RC
#include "audacity/Types.h"
class wxArrayString;
@ -102,8 +101,6 @@ extern AUDACITY_DLL_API const wxString& GetCustomSubstitution(const wxString& st
#define XPC(sing, plur, n, c) \
TranslatableString{ wxT(sing), {} }.Context(c).Plural<(n)>( wxT(plur) )
#endif
class Internat
{
public:

2
src/LabelTrack.cpp

@ -34,7 +34,7 @@ for drawing different aspects of the label and its text box.
#include "tracks/ui/TrackView.h"
#include "tracks/ui/TrackControls.h"
#include "Experimental.h"
#include <stdio.h>
#include <algorithm>

2
src/Menus.cpp

@ -28,7 +28,7 @@
#include "Audacity.h" // for USE_* macros
#include "Menus.h"
#include "Experimental.h"
#include <wx/frame.h>

2
src/MixerBoard.cpp

@ -12,7 +12,7 @@
#include "Audacity.h" // for USE_* macros
#include "MixerBoard.h"
#include "Experimental.h"
#include <cfloat>
#include <math.h>

2
src/MixerBoard.h

@ -9,7 +9,7 @@
**********************************************************************/
#include "Audacity.h" // for USE_* macros
#include "Experimental.h"
#ifndef __AUDACITY_MIXER_BOARD__
#define __AUDACITY_MIXER_BOARD__

2
src/ModuleManager.cpp

@ -22,7 +22,7 @@ i.e. an alternative to the usual interface, for Audacity.
#include "ModuleManager.h"
#include "audacity/ModuleInterface.h"
#include "Experimental.h"
#include <wx/dynlib.h>
#include <wx/log.h>

2
src/NoteTrack.cpp

@ -17,7 +17,7 @@
#include "Audacity.h" // for USE_* macros
#include "NoteTrack.h"
#include "Experimental.h"
#include <wx/wxcrtvararg.h>
#include <wx/dc.h>

2
src/NoteTrack.h

@ -13,7 +13,7 @@
#include "Audacity.h" // for USE_* macros
#include "Experimental.h"
#include <utility>
#include "Track.h"

2
src/PluginManager.cpp

@ -21,7 +21,7 @@ for shared and private configs - which need to move out.
#include "Audacity.h"
#include "PluginManager.h"
#include "Experimental.h"
#include <algorithm>

2
src/ProjectAudioManager.cpp

@ -11,7 +11,7 @@ Paul Licameli split from ProjectManager.cpp
#include "Audacity.h"
#include "ProjectAudioManager.h"
#include "Experimental.h"
#include <wx/frame.h>
#include <wx/statusbr.h>

2
src/ProjectFileManager.cpp

@ -10,8 +10,6 @@ Paul Licameli split from AudacityProject.cpp
#include "ProjectFileManager.h"
#include "Experimental.h"
#include <wx/crt.h> // for wxPrintf
#if defined(__WXGTK__)

2
src/ProjectManager.cpp

@ -10,7 +10,7 @@ Paul Licameli split from AudacityProject.cpp
#include "ProjectManager.h"
#include "Experimental.h"
#include "AdornedRulerPanel.h"
#include "AudioIO.h"

2
src/ProjectSelectionManager.cpp

@ -10,7 +10,7 @@ Paul Licameli split from ProjectManager.cpp
#include "ProjectSelectionManager.h"
#include "Experimental.h"
#include "Project.h"
#include "ProjectHistory.h"

2
src/ProjectSettings.cpp

@ -10,7 +10,7 @@ Paul Licameli split from AudacityProject.cpp
#include "ProjectSettings.h"
#include "Experimental.h"
#include "AudioIOBase.h"
#include "Project.h"

2
src/ProjectWindow.cpp

@ -10,7 +10,7 @@ Paul Licameli split from AudacityProject.cpp
#include "ProjectWindow.h"
#include "Experimental.h"
#include "AllThemeResources.h"
#include "Menus.h"

2
src/RealFFTf.cpp

@ -39,7 +39,7 @@
#include "Audacity.h"
#include "RealFFTf.h"
#include "Experimental.h"
#include <vector>
#include <stdlib.h>

2
src/RealFFTf.h

@ -3,7 +3,7 @@
#include "Audacity.h"
#include "Experimental.h"
#include "MemoryX.h"

2
src/RealFFTf48x.cpp

@ -57,7 +57,7 @@
#include "Audacity.h" // for USE_* macros
#include "RealFFTf48x.h"
#include "Experimental.h"
#ifdef EXPERIMENTAL_EQ_SSE_THREADED

2
src/SelectedRegion.cpp

@ -10,7 +10,7 @@ Paul Licameli
#include "SelectedRegion.h"
#include "Experimental.h"
#include "xml/XMLWriter.h"

2
src/SelectedRegion.h

@ -27,7 +27,7 @@
#include "Audacity.h"
#include "Experimental.h"
#include <wx/defs.h>
#include <wx/chartype.h> // for wxChar, a typedef

2
src/ShuttleGui.cpp

@ -96,7 +96,7 @@ for registering for changes.
#include "Audacity.h"
#include "ShuttleGui.h"
#include "Experimental.h"
#include "Prefs.h"
#include "ShuttlePrefs.h"

2
src/SplashDialog.cpp

@ -23,7 +23,7 @@ most commonly asked questions about Audacity.
#include "Audacity.h"
#include "SplashDialog.h"
#include "Experimental.h"
#include <wx/dialog.h>
#include <wx/frame.h>

2
src/Theme.cpp

@ -62,7 +62,7 @@ can't be.
#include "Audacity.h"
#include "Theme.h"
#include "Experimental.h"
#include <wx/wxprec.h>
#include <wx/dcclient.h>

2
src/TimeTrack.cpp

@ -16,7 +16,7 @@
#include "Audacity.h"
#include "TimeTrack.h"
#include "Experimental.h"
#include <cfloat>
#include <wx/wxcrtvararg.h>

2
src/Track.cpp

@ -25,7 +25,7 @@ and TimeTrack.
#include "Track.h"
#include "Experimental.h"
#include <algorithm>
#include <numeric>

2
src/Track.h

@ -14,7 +14,7 @@
#include "Audacity.h" // for USE_* macros
#include "Experimental.h"
#include <vector>
#include <list>

2
src/TrackArtist.cpp

@ -41,7 +41,7 @@ audio tracks.
#include "Audacity.h" // for USE_* macros and HAVE_ALLOCA_H
#include "TrackArtist.h"
#include "Experimental.h"
#include "AColor.h"
#include "AllThemeResources.h"

2
src/TrackArtist.h

@ -19,7 +19,7 @@
#define __AUDACITY_TRACKARTIST__
#include "Audacity.h" // for USE_* macros
#include "Experimental.h"
#include <wx/brush.h> // member variable
#include <wx/pen.h> // member variables

2
src/TrackInfo.cpp

@ -28,7 +28,7 @@ Paul Licameli split from TrackPanel.cpp
#include "Audacity.h"
#include "TrackInfo.h"
#include "Experimental.h"
#include <wx/dc.h>
#include <wx/frame.h>

2
src/TrackInfo.h

@ -12,7 +12,7 @@ Paul Licameli split from TrackPanel.cpp
#define __AUDACITY_TRACK_INFO__
#include "Audacity.h"
#include "Experimental.h"
#include <vector>

2
src/TrackPanel.cpp

@ -46,7 +46,7 @@ is time to refresh some aspect of the screen.
#include "Audacity.h" // for USE_* macros
#include "TrackPanel.h"
#include "Experimental.h"
#include <wx/setup.h> // for wxUSE_* macros

2
src/TrackPanel.h

@ -12,7 +12,7 @@
#define __AUDACITY_TRACK_PANEL__
#include "Audacity.h" // for USE_* macros
#include "Experimental.h"
#include <vector>

2
src/ViewInfo.cpp

@ -10,7 +10,7 @@ Paul Licameli
#include "ViewInfo.h"
#include "Experimental.h"
#include <algorithm>

2
src/WaveClip.cpp

@ -21,7 +21,7 @@
#include "WaveClip.h"
#include "Experimental.h"
#include <math.h>
#include <vector>

2
src/WaveTrack.cpp

@ -28,7 +28,7 @@ from the project that will own the track.
#include "WaveTrack.h"
#include "Experimental.h"
#include "WaveClip.h"

2
src/ZoomInfo.cpp

@ -11,7 +11,7 @@
#include "Audacity.h"
#include "ZoomInfo.h"
#include "Experimental.h"
#include "prefs/GUISettings.h"

2
src/commands/CommandManager.cpp