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