Audacity  2.2.0
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 // ACH 08 Jan 2014
34 // EQ accelerated code
35 //#define EXPERIMENTAL_EQ_SSE_THREADED
36 
37 // LLL, 09 Nov 2013:
38 // Allow all WASAPI devices, not just loopback
39 #define EXPERIMENTAL_FULL_WASAPI
40 
41 // JKC (effect by Norm C, 02 Oct 2013)
42 #define EXPERIMENTAL_SCIENCE_FILTERS
43 
44 // LLL, 01 Oct 2013:
45 // NEW key assignment view for preferences
46 #define EXPERIMENTAL_KEY_VIEW
47 
48 // feature to link audio tracks to a label track
49 #define EXPERIMENTAL_SYNC_LOCK
50 
51 // JKC: Enable to get extra buttons in the screenshot tools.
52 //#define EXPERIMENTAL_DOCS_AUTOMATION
53 // JKC: Enable to get experiemental code to move
54 // mod-script-pipe towards being mainstream.
55 //#define EXPERIMENTAL_AUTOMATION
56 
57 // DA: Enables dark audacity theme and customisations.
58 //#define EXPERIMENTAL_DA
59 
60 // These CFG macros allow easy distinction between Audacity and DA defaults.
61 #ifdef EXPERIMENTAL_DA
62 #define CFG_A( x )
63 #define CFG_DA( x ) x
64 #else
65 #define CFG_A( x ) x
66 #define CFG_DA( x )
67 #endif
68 
69 
70 // Define this so that sync-lock tiles shine through spectrogram.
71 // The spectrogram pastes a bitmap over the tiles.
72 // This makes it use alpha blending, most transparent where least intense.
73 #define EXPERIMENTAL_SPECTROGRAM_OVERLAY
74 
75 // Define this so that sync-lock tiles shine through note/MIDI track.
76 // The note track then relies on the same code for drawing background as
77 // Wavetrack, and draws its notes and lines over the top.
78 #define EXPERIMENTAL_NOTETRACK_OVERLAY
79 
80 // Define this, and the option to zoom to half wave is added in the VZoom menu.
81 // Also we go to half wave on collapse, full wave on restore.
82 #define EXPERIMENTAL_HALF_WAVE
83 
84 // EXPERIMENTAL_THEMING is mostly mainstream now.
85 // the define is still present to mark out old code before theming, that we might
86 // conceivably need.
87 // TODO: Agree on and then tidy this code.
88 #define EXPERIMENTAL_THEMING
89 
90 //August 2009 - Theming not locked down enough for a stable release.
91 // This turns on the Theme panel in Prefs dialog. It is independent of EXPERIMENTAL_THEMING.
92 //#define EXPERIMENTAL_THEME_PREFS
93 
94 //Next line enables Mic monitoring at times when it was previously off.
95 //More work is needed as after recording or playing it results in an
96 //unwanted record-cursor on the wave track.
97 //#define EXPERIMENTAL_EXTRA_MONITORING
98 
99 //#define EXPERIMENTAL_ROLL_UP_DIALOG
100 //#define EXPERIMENTAL_RIGHT_ALIGNED_TEXTBOXES
101 //#define EXPERIMENTAL_VOICE_DETECTION
102 
103 // Effect categorisation. Adds support for arranging effects in categories
104 // and displaying those categories as submenus in the Effect menu.
105 // This was a 2008 GSoC project that was making good progress at the half-way point
106 // but then the student didn't contribute after that. It needs a bit of work to finish it off.
107 // As a minimum, if this is turned on for a release,
108 // it should have an easy mechanism to disable it at run-time, such as a menu item or a pref,
109 // preferrably disabled until other work is done. Martyn 22/12/2008.
110 //
111 
112 // JKC Apr 2015, Menu item to manage effects.
113 #define EXPERIMENTAL_EFFECT_MANAGEMENT
114 
115 // Andreas Micheler, 20.Nov 2007:
116 // A spectrumLogF-like view mode with notes quantization.
117 // Just select the "Find Notes" checkbox in the spectrum prefs
118 // to activate it instead of the Spectrum log(f) mode.
119 //#define EXPERIMENTAL_FIND_NOTES
120 
121 // AM, 22.Nov 2007:
122 // A Frequency Grid for the Spectrum Log(f) & Find Notes modes
123 //#define EXPERIMENTAL_FFT_Y_GRID
124 
125 // Andy Coder, 03.Mar 2009:
126 // Allow keyboard seeking before initial playback position
127 //#define EXPERIMENTAL_SEEK_BEHIND_CURSOR
128 
129 // Michael Chinen, 08.Oct 2009
130 // Use on-demand importing for FLAC. Has issues with opening projects that
131 // have not been fully imported in builds without FLAC support, so disabled for
132 // 2.0 release
133 //#define EXPERIMENTAL_OD_FLAC
134 // similarly for FFmpeg:
135 // Won't build on Fedora 17 or Windows VC++, per http://bugzilla.audacityteam.org/show_bug.cgi?id=539.
136 //#define EXPERIMENTAL_OD_FFMPEG 1
137 
138 // Paul Licameli (PRL) 5 Oct 2014
139 #define EXPERIMENTAL_SPECTRAL_EDITING
140 
141 // Paul Licameli (PRL) 29 Nov 2014
142 // #define EXPERIMENTAL_IMPROVED_SEEKING
143 
144 #ifdef USE_MIDI
145 // RBD, 1 Sep 2008
146 // Enables MIDI Output of NoteTrack (MIDI) data during playback
147 // USE_MIDI must be defined in order for EXPERIMENTAL_MIDI_OUT to work
148 #define EXPERIMENTAL_MIDI_OUT
149 // JKC, 17 Aug 2017
150 // Enables the MIDI note stretching feature, which currently
151 // a) Is broken on Linux (Bug 1646)
152 // b) Crashes with Sync-Lock (Bug 1719)
153 // c) Needs UI design review.
154 //#define EXPERIMENTAL_MIDI_STRETCHING
155 #endif
156 
157 // USE_MIDI must be defined in order for EXPERIMENTAL_SCOREALIGN to work
158 #ifdef USE_MIDI
159 //#define EXPERIMENTAL_SCOREALIGN
160 #endif
161 
162 //If you want any of these files, ask JKC. They are not
163 //yet checked in to Audacity SVN as of 12-Feb-2010
164 #ifdef EXPERIMENTAL_NOTEBOOK
165  #include "widgets/GuiFactory.h"
166  #include "widgets/APanel.h"
167  extern void AddPages( AudacityProject * pProj, GuiFactory & Factory, wxNotebook * pNotebook );
168 #endif
169 
170 #ifdef EXPERIMENTAL_NYQUIST_INSPECTOR
171  #include "NyquistAdapter.h"
172 #endif
173 
174 #if USE_PORTMIXER
175  //Automatically tries to find an acceptable input volume
176  //#define EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
177 #endif
178 
179 // John (Thales) work to make the display show the result of the pan and gain sliders, rather than their input.
180 // First committed by Martyn, 30th May 2013.
181 //#define EXPERIMENTAL_OUTPUT_DISPLAY
182 
183 // Module prefs provides a panel in prefs where users can choose which modules
184 // to enable.
185 #define EXPERIMENTAL_MODULE_PREFS
186 
187 // Define to allow realtime processing in Audacity effects that have been converted.
188 #define EXPERIMENTAL_REALTIME_AUDACITY_EFFECTS
189 
190 // Define to include the effects rack (such as it is).
191 //#define EXPERIMENTAL_EFFECTS_RACK
192 
193 // Define to make the meters look like a row of LEDs
194 //#define EXPERIMENTAL_METER_LED_STYLE
195 
196 // Define to enable the device change handler
197 //#define EXPERIMENTAL_DEVICE_CHANGE_HANDLER
198 
199 // Define for NEW noise reduction effect from Paul Licameli.
200 #define EXPERIMENTAL_NOISE_REDUCTION
201 
202 // Define to enable Nyquist audio clip boundary control (Steve Daulton Dec 2014)
203 #define EXPERIMENTAL_NYQUIST_SPLIT_CONTROL
204 
205 // Paul Licameli (PRL) 16 Apr 2015
206 // Support for scrubbing in the AudioIO engine, without calls to it
207 #define EXPERIMENTAL_SCRUBBING_SUPPORT
208 #ifdef EXPERIMENTAL_SCRUBBING_SUPPORT
209  // The following enable parts of the scrubbing user interface.
210  #define EXPERIMENTAL_SCRUBBING_BASIC
211  #ifdef EXPERIMENTAL_SCRUBBING_BASIC
212  #define EXPERIMENTAL_SCRUBBING_SCROLL_WHEEL
213  #endif
214 #endif
215 
216 // Paul Licameli (PRL) 24 May 2015
217 // Allow scrolling up to one half of a screenful beyond either end of the project,
218 // if you turn on the appropriate Tracks preference.
219 // This allows smooth-scrolling scrub to work more reasonably at the ends.
220 #define EXPERIMENTAL_SCROLLING_LIMITS
221 
222 // Paul Licameli (PRL) 28 May 2015
223 // Draw negative numbers on the time ruler in a different color, when
224 // scrolling past zero is enabled. Perhaps that lessens confusion.
225 #define EXPERIMENTAL_TWO_TONE_TIME_RULER
226 
227 #ifndef IN_RC
228 // Define to include crash reporting
229 #include <wx/defs.h>
230 #define EXPERIMENTAL_CRASH_REPORT
231 #if !defined(wxUSE_DEBUGREPORT) || !wxUSE_DEBUGREPORT
232 #undef EXPERIMENTAL_CRASH_REPORT
233 #endif
234 #endif
235 
236 // Paul Licameli (PRL) 31 May 2015
237 // Zero-padding factor for spectrograms can smooth the display of spectrograms by
238 // interpolating in frequency domain.
239 #define EXPERIMENTAL_ZERO_PADDED_SPECTROGRAMS
240 
241 // PRL 11 Jul 2017
242 // Highlight more things in TrackPanel when the mouse moves over them,
243 // using delibrately ugly pens and brushes until there is better cooperation
244 // with themes
245 //#define EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING
246 
247 #endif
AudacityProject provides the main window, with tools and tracks contained within it.
Definition: Project.h:161