Audacity  3.0.3
Experimental.h
Go to the documentation of this file.
1 /**********************************************************************
2 
3  Audacity: A Digital Audio Editor
4 
5  Experimental.h
6 
7  Dominic Mazzoni
8  James Crook
9 
10  Used for #includes and #defines for experimental features.
11 
12  When the features become mainstream the #include files will
13  move out of here and into the files which need them. The
14  #defines will then be retired.
15 
16 
17 
18  JKC: This file solves a problem of how to avoid forking the
19  code base when working on NEW features e.g:
20  - Additional displays in Audacity
21  - Modular architecture.
22  Add #defines in here for the NEW features, and make your code
23  conditional on those #defines.
24 
25  All the #defines are positive, i.e., when defined,
26  they enable the feature.
27 
28 **********************************************************************/
29 
30 #ifndef __EXPERIMENTAL__
31 #define __EXPERIMENTAL__
32 
33 #ifndef __AUDACITY_H__
34 // Audacity.h is needed for the USE_* macros
35 #error Must include Audacity.h before Experimental.h
36 #endif
37 
38 // ACH 08 Jan 2014
39 // EQ accelerated code
40 //#define EXPERIMENTAL_EQ_SSE_THREADED
41 
42 // LLL, 09 Nov 2013:
43 // Allow all WASAPI devices, not just loopback
44 #define EXPERIMENTAL_FULL_WASAPI
45 
46 // JKC (effect by Norm C, 02 Oct 2013)
47 #define EXPERIMENTAL_SCIENCE_FILTERS
48 
49 // JKC an experiement to work around bug 2709
50 // disabled.
51 //define EXPERIMENTAL_CEE_NUMBERS_OPTION
52 
53 // LLL, 01 Oct 2013:
54 // NEW key assignment view for preferences
55 #define EXPERIMENTAL_KEY_VIEW
56 
57 // feature to link audio tracks to a label track
58 #define EXPERIMENTAL_SYNC_LOCK
59 
60 // DA: Enables dark audacity theme and customisations.
61 //#define EXPERIMENTAL_DA
62 
63 // These CFG macros allow easy distinction between Audacity and DA defaults.
64 #ifdef EXPERIMENTAL_DA
65 #define CFG_A( x )
66 #define CFG_DA( x ) x
67 #else
68 #define CFG_A( x ) x
69 #define CFG_DA( x )
70 #endif
71 
72 
73 // Define this so that sync-lock tiles shine through spectrogram.
74 // The spectrogram pastes a bitmap over the tiles.
75 // This makes it use alpha blending, most transparent where least intense.
76 #define EXPERIMENTAL_SPECTROGRAM_OVERLAY
77 
78 // Define this so that sync-lock tiles shine through note/MIDI track.
79 // The note track then relies on the same code for drawing background as
80 // Wavetrack, and draws its notes and lines over the top.
81 #define EXPERIMENTAL_NOTETRACK_OVERLAY
82 
83 // Define this, and the option to zoom to half wave is added in the VZoom menu.
84 // Also we go to half wave on collapse, full wave on restore.
85 #define EXPERIMENTAL_HALF_WAVE
86 
87 // EXPERIMENTAL_THEMING is mostly mainstream now.
88 // the define is still present to mark out old code before theming, that we might
89 // conceivably need.
90 // TODO: Agree on and then tidy this code.
91 #define EXPERIMENTAL_THEMING
92 
93 //August 2009 - Theming not locked down enough for a stable release.
94 // This turns on the Theme panel in Prefs dialog. It is independent of EXPERIMENTAL_THEMING.
95 //#define EXPERIMENTAL_THEME_PREFS
96 
97 // This shows the zoom toggle button on the edit toolbar.
98 #define EXPERIMENTAL_ZOOM_TOGGLE_BUTTON
99 
100 //#define EXPERIMENTAL_ROLL_UP_DIALOG
101 //#define EXPERIMENTAL_RIGHT_ALIGNED_TEXTBOXES
102 //#define EXPERIMENTAL_VOICE_DETECTION
103 
104 // Effect categorisation. Adds support for arranging effects in categories
105 // and displaying those categories as submenus in the Effect menu.
106 // This was a 2008 GSoC project that was making good progress at the half-way point
107 // but then the student didn't contribute after that. It needs a bit of work to finish it off.
108 // As a minimum, if this is turned on for a release,
109 // it should have an easy mechanism to disable it at run-time, such as a menu item or a pref,
110 // preferably disabled until other work is done. Martyn 22/12/2008.
111 //
112 
113 // JKC Apr 2015, Menu item to manage effects.
114 #define EXPERIMENTAL_EFFECT_MANAGEMENT
115 
116 // Andreas Micheler, 20.Nov 2007:
117 // A spectrumLogF-like view mode with notes quantization.
118 // Just select the "Find Notes" checkbox in the spectrum prefs
119 // to activate it instead of the Spectrum log(f) mode.
120 //#define EXPERIMENTAL_FIND_NOTES
121 
122 // AM, 22.Nov 2007:
123 // A Frequency Grid for the Spectrum Log(f) & Find Notes modes
124 //#define EXPERIMENTAL_FFT_Y_GRID
125 
126 // Andy Coder, 03.Mar 2009:
127 // Allow keyboard seeking before initial playback position
128 //#define EXPERIMENTAL_SEEK_BEHIND_CURSOR
129 
130 // Paul Licameli (PRL) 5 Oct 2014
131 #define EXPERIMENTAL_SPECTRAL_EDITING
132 
133 // Paul Licameli (PRL) 29 Nov 2014
134 // #define EXPERIMENTAL_IMPROVED_SEEKING
135 
136 //#define EXPERIMENTAL_MIDI_IN
137 
138 // RBD, 1 Sep 2008
139 // Enables MIDI Output of NoteTrack (MIDI) data during playback
140 // USE_MIDI must be defined in order for EXPERIMENTAL_MIDI_OUT to work
141 #ifdef USE_MIDI
142 #define EXPERIMENTAL_MIDI_OUT
143 #endif
144 // JKC, 17 Aug 2017
145 // Enables the MIDI note stretching feature, which currently
146 // a) Is broken on Linux (Bug 1646)
147 // b) Crashes with Sync-Lock (Bug 1719)
148 // c) Needs UI design review.
149 //#define EXPERIMENTAL_MIDI_STRETCHING
150 
151 // USE_MIDI must be defined in order for EXPERIMENTAL_SCOREALIGN to work
152 //#define EXPERIMENTAL_SCOREALIGN
153 
154 //If you want any of these files, ask JKC. They are not
155 //yet checked in to Audacity SVN as of 12-Feb-2010
156 #ifdef EXPERIMENTAL_NOTEBOOK
157  #include "widgets/GuiFactory.h"
158  #include "widgets/APanel.h"
159  extern void AddPages( AudacityProject * pProj, GuiFactory & Factory, wxNotebook * pNotebook );
160 #endif
161 
162 #ifdef EXPERIMENTAL_NYQUIST_INSPECTOR
163  #include "NyquistAdapter.h"
164 #endif
165 
166 #if USE_PORTMIXER
167  //Automatically tries to find an acceptable input volume
168  //#define EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
169 #endif
170 
171 // Module prefs provides a panel in prefs where users can choose which modules
172 // to enable.
173 #define EXPERIMENTAL_MODULE_PREFS
174 
175 // Define to allow realtime processing in Audacity effects that have been converted.
176 #define EXPERIMENTAL_REALTIME_AUDACITY_EFFECTS
177 
178 // Define to include the effects rack (such as it is).
179 //#define EXPERIMENTAL_EFFECTS_RACK
180 
181 // Define to make the meters look like a row of LEDs
182 //#define EXPERIMENTAL_METER_LED_STYLE
183 
184 // Define to enable the device change handler
185 //#define EXPERIMENTAL_DEVICE_CHANGE_HANDLER
186 
187 // Define for NEW noise reduction effect from Paul Licameli.
188 #define EXPERIMENTAL_NOISE_REDUCTION
189 
190 // Define to enable Nyquist audio clip boundary control (Steve Daulton Dec 2014)
191 #define EXPERIMENTAL_NYQUIST_SPLIT_CONTROL
192 
193 // Paul Licameli (PRL) 16 Apr 2015
194 // Support for scrubbing in the AudioIO engine, without calls to it
195 #define EXPERIMENTAL_SCRUBBING_SUPPORT
196 #ifdef EXPERIMENTAL_SCRUBBING_SUPPORT
197  // The following enable parts of the scrubbing user interface.
198  #define EXPERIMENTAL_SCRUBBING_BASIC
199  #ifdef EXPERIMENTAL_SCRUBBING_BASIC
200  #define EXPERIMENTAL_SCRUBBING_SCROLL_WHEEL
201  #endif
202 #endif
203 
204 // Paul Licameli (PRL) 24 May 2015
205 // Allow scrolling up to one half of a screenful beyond either end of the project,
206 // if you turn on the appropriate Tracks preference.
207 // This allows smooth-scrolling scrub to work more reasonably at the ends.
208 #define EXPERIMENTAL_SCROLLING_LIMITS
209 
210 // Paul Licameli (PRL) 28 May 2015
211 // Draw negative numbers on the time ruler in a different color, when
212 // scrolling past zero is enabled. Perhaps that lessens confusion.
213 #define EXPERIMENTAL_TWO_TONE_TIME_RULER
214 
215 #ifndef IN_RC
216  // Define to include crash reporting
217  #define EXPERIMENTAL_CRASH_REPORT
218  #ifdef EXPERIMENTAL_CRASH_REPORT
219  #include <wx/setup.h> // for wxUSE* macros
220  #if !defined(wxUSE_DEBUGREPORT) || !wxUSE_DEBUGREPORT
221  #undef EXPERIMENTAL_CRASH_REPORT
222  #endif
223  #endif
224 #endif
225 
226 // Paul Licameli (PRL) 31 May 2015
227 // Zero-padding factor for spectrograms can smooth the display of spectrograms by
228 // interpolating in frequency domain.
229 #define EXPERIMENTAL_ZERO_PADDED_SPECTROGRAMS
230 
231 // PRL 11 Jul 2017
232 // Highlight more things in TrackPanel when the mouse moves over them,
233 // using deliberately ugly pens and brushes until there is better cooperation
234 // with themes
235 //#define EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING
236 
237 // Paul Licameli (PRL) 28 Dec 2017
238 // Easy drag-and-drop to add Nyquist, LADSPA, and VST plug-ins
239 // #define EXPERIMENTAL_DRAG_DROP_PLUG_INS
240 
241 // PRL 5 Jan 2018
242 // Easy change of keystroke bindings for menu items
243 #define EXPERIMENTAL_EASY_CHANGE_KEY_BINDINGS
244 
245 // PRL 1 Jun 2018
246 #define EXPERIMENTAL_PUNCH_AND_ROLL
247 
248 // PRL 31 July 2018
249 #define EXPERIMENTAL_DRAGGABLE_PLAY_HEAD
250 
251 // Jonatã Bolzan Loss 31 Dec 2019
252 #define EXPERIMENTAL_TIMER_TOOLBAR
253 
254 #endif
AudacityProject
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Definition: Project.h:112