Paul Licameli
94cf94718e
Redefine ODLocker as movable, and it may try-lock only.
2016-04-17 13:58:21 -04:00
Paul Licameli
f94b3b3afa
Add some const qualifiers to BlockFile methods
2016-04-10 21:05:20 -04:00
Paul Licameli
daf92c43f8
Sequence::Copy is a factory returning smart pointer. WaveClip stores it.
2016-04-10 20:47:45 -04:00
Paul Licameli
0c9deb398c
Fix mac build. No standard headers in Audacity.h.
2016-03-01 12:22:37 -05:00
Paul Licameli
48a5f55179
More const qualifiers, for copying of tracks, and replacing in lists of tracks
...
... (the tracks may be const, not the list, when replacing)
2016-02-27 17:30:30 -05:00
Paul Licameli
70c1d57591
More const qualifications, and mutables, for functions that draw tracks...
...
... The display related members that had to become mutable are probably
ones that don't belong in the track classes, ultimately.
2016-02-27 12:35:17 -05:00
Paul Licameli
9bf098c7d9
Sweep unnecessary wxString copies: rest
2016-02-23 02:15:56 -05:00
Paul Licameli
dbaa811577
Stack-allocate where possible! ...
...
... Removed many unnecessary naked news and deletes.
2016-02-17 18:15:57 -05:00
Paul Licameli
7c4c45a0d5
"new"->"NEW" in comments, easier to find remaining naked operator new
2016-02-14 18:52:41 -05:00
Paul Licameli
56e7653343
"delete"->"DELETE" in comments, easier to find remaining naked operator delete
2016-02-14 18:50:45 -05:00
Paul Licameli
daa7617e88
auto_ptr (deprecated) -> unique_ptr (preferred in C++11)
2016-02-13 12:00:28 -05:00
Paul Licameli
ca56876aaf
Various minor fixes in Sequence
2016-02-04 01:06:51 -05:00
Paul Licameli
51fbc697cf
One less indirection accessing Sequence::mBlock
2016-02-03 22:17:08 -05:00
Paul Licameli
5de27ac36f
One less indirection accessing InvalidRegion
2016-02-02 11:49:54 -05:00
Paul Licameli
321d5259a2
More uses of SampleBuffer, eliminating explicit DeleteSamples calls
2016-02-01 10:16:00 -05:00
Paul Licameli
9c483e2e86
Add (redundant) #include "Experimental.h" in all .cpp files using the symbols
2015-08-31 17:56:10 -04:00
Paul Licameli
7544a35a6e
Improve calculation of reassigned spectrogram at screen boundaries
2015-08-17 10:03:45 -04:00
Paul Licameli
9505278c44
Disable caching for reassigned spectrogram
2015-08-17 10:03:21 -04:00
Paul Licameli
84ee685ee9
reassignment, internals, implementing time correction, but -- ...
...
... it does not yet interact correctly with caching, so results may be
slightly wrong if you scroll the view by less than a screen.
2015-08-17 09:17:46 -04:00
Paul Licameli
7113d533fb
reassignment, internals, implementing frequency correction only
2015-08-17 09:17:45 -04:00
Paul Licameli
e4fe449021
more simplification of arguments
2015-08-16 21:14:41 -04:00
Paul Licameli
5aba06a8a2
simplify argument passing for drawing pitch views
2015-08-16 19:45:09 -04:00
Paul Licameli
f81231efae
Remove Sequence.h from other headers
2015-07-28 10:02:08 -04:00
Paul Licameli
d39eaa4e65
Remove WaveTrack.h from other headers
2015-07-28 10:02:05 -04:00
Paul Licameli
adb4a534e8
Pitch is no longer a special view type... && bug fixes 1040, 1041
...
... It is a choice of algorithm in spectrogram settings, and any frequency
scale may be chosen with it. Spectral selection works in it.
2015-07-27 23:01:20 -04:00
Paul Licameli
1dffeace93
Access SpectrogramSettings via WaveTrack, which may be nondefault (no UI yet)...
...
... and add accessors to SpectrogramSettings, and remove TrackArtist functions
for getting and setting the globals.
2015-07-26 21:10:16 -04:00
Paul Licameli
786c1da645
Move class SpectrogramSettings to its own file
2015-07-26 21:10:13 -04:00
Paul Licameli
8664c877ba
WaveDisplay may or may not manage its own memory.
2015-07-19 11:44:16 -04:00
Paul Licameli
c14b326913
Publicize class SpecCache. TrackArtist will re-use it.
2015-07-19 11:44:15 -04:00
Paul Licameli
35e0897bf7
Avoid needless mix/max/rms calculation when showing individual samples.
2015-07-19 11:43:55 -04:00
Paul Licameli
b25994a82d
Throw away EXPERIMENTAL_FFT_SKIP_POINTS...
...
... with James' consent.
2015-07-18 23:21:27 -04:00
Paul Licameli
97f06ec09c
Less shimmer and maybe less CPU in display updates for scroll-scrub, because...
...
... tolerant comparison of pps values allows more cache reuse and avoids the
changing alignment of pixels to samples that causes the "shimmery" update.
2015-06-11 10:26:38 -04:00
Paul Licameli
e8d676c961
fix compilation warning
2015-06-09 14:22:13 -04:00
Paul Licameli
bb42f6e7c0
More minor spectrogram drawing changes...
...
... Removed an unnecessary zero-filling, added comments, removed a duplication
with a loop.
2015-06-07 17:37:52 -04:00
Paul Licameli
976eb6164f
More reorganization of wave and spectrum caches, and performance...
...
Simplify the partial copying of wave and spectrum caches. Use memcpy for speed.
Don't memcpy out of the caches into temporary buffers for TrackArtist,
just pass
pointers.
More vectors in the cache classes, fewer deletes.
Pulled big loop, and its body, out of the spectrogram routine into functions.
2015-06-06 11:43:10 -04:00
Paul Licameli
1916bc3142
Fix compilation of some disabled experimental branches for spectrograms ...
...
... Not promising that they work, just compilation.
2015-06-04 11:30:08 -04:00
Paul Licameli
afa2fe9fb4
Keep FFT windows for Spectrograms in one place in SpectrogramSettings...
...
... not redundantly in each WaveClip.
2015-06-04 11:29:18 -04:00
Paul Licameli
952a22c8b1
Created a global structure to hold spectrogram preferences...
...
Don't read "/Spectrum/" preferences anywhere but in SpectrumPrefs.cpp.
Don't store global values in TrackArtist.
Possibly some day, there will be other instances of SpectrogramSettings so we
can have independent per-track settings.
2015-06-04 11:29:17 -04:00
Paul Licameli
38f24a42ef
Don't invalidate SpecCache for changes of min, max, gain or range...
...
... because those do not affect it. They only affect the SpecPxCache.
Did other things to that class: renamed fields, new constructors.
2015-06-04 11:29:16 -04:00
Paul Licameli
ba5738446c
Bug1009: Correct interaction of Zero Padding and Frequency Gain...
...
... also an excuse to pull out a function I will want to reuse in a later
project. The real fix was simply to use fftLen not windowSize.
2015-06-03 15:01:54 -04:00
Paul Licameli
8d5052bf4e
Avoid assertion violation while scrolling
2015-06-02 22:38:08 -04:00
unknown
29fb5a2ffe
Simplified passing of min/min/rmx/bl/where values for drawing waveforms
2015-06-01 22:58:18 -04:00
unknown
34b09053b4
Simplified some management of WaveClip caches
2015-06-01 22:58:17 -04:00
unknown
ee600ce30b
Functions for common parts of waveform and spectrogram display update
2015-06-01 22:58:11 -04:00
Paul Licameli
6a1227f039
zero-padding factor for spectrograms, internals
2015-05-31 16:43:09 -04:00
Paul Licameli
e6ccd51326
Use WaveTrackCache for spectrograms
...
Zooming-in of spectrograms (or other view changes that invalidate the
whole pixel cache of the WaveClip) used to do at least one opening and
closing of a block file for each column of pixels. With this change,
open each block file not more than once for each repopulation of the
cache.
Improved speed may be more noticeable on less powerful computers, or when
the audio file is in a slower storage device.
2015-05-26 20:02:38 -04:00
Paul-Licameli
da2b9e3233
Fix other assertion violations in wave clip cache code, and add comments.
...
Duplicate the assertion for the case of spectrograms.
2015-04-21 17:52:29 -04:00
Paul-Licameli
8bcec00e65
Rewrite Sequence::GetWaveDisplay
...
That is the function that computes the heights of dark and pale blue lines in
the waveform display.
It's not simple but now the flow of control is less strange and it is better
commented.
This doesn't fix or enhance anything, but it might find use later, such as in
a project to adapt the resolution of the display in reponse to slow scrolling
updates.
2015-04-21 11:11:20 -04:00
Paul-Licameli
46e937e3ea
Fix assertion violations from the previous change.
2015-04-17 18:21:43 -04:00
Paul-Licameli
cc2a26956a
Fix display caching for waveforms and spectrograms so smooth scrolling works
...
This will matter if the smooth-scrolling version of scrubbing is enabled
The problem was accumulation of roundoff errors when deciding which pixel
column data to copy from old caches to new caches, when the number of samples
scrolled was not an integer multiple of samples per pixel (itself, not always
an integer)
Thus repeated scrolling by small amounts caused the wave display or spectrogram
to creep relative to the time ruler!
2015-04-17 11:12:47 -04:00