1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-17 16:40:07 +02:00

149 Commits

Author SHA1 Message Date
James Crook
42c52de7f1 Coloured clips basics
These basics add a colour index to each clip and track, and allow for a choice of four colours to be set from the track menu drop down.  The additional wave colours (red, green and black) are not currently configurable, and the colour index is not currently saved.
2017-11-04 17:47:02 +00:00
Paul Licameli
44a081c7a0 Fix pasting of envelope from expanded cutline 2017-06-26 10:23:34 -04:00
Darrell Walisser
29df7e1ce3 Speccache performance improvments
Resolve #191 issues

- Disable reassignment cache
- Free memory when reasonable
- Add assertion
- Remove unused variables
- Add some comments
2017-05-30 20:39:00 -04:00
Paul Licameli
4c80a074d3 Bug835(cut-then-paste should be no-op): Rewrite Envelope::Paste...
... Simplify.  Don't assume e->mOffset is zero.  Check consistency afterward.

Do not leave responsibility for simplification of discontinuities to higher
level code.

Allow real discontinuities at the end of the insertion; no more readjustment of
times of points.
2017-05-29 13:53:25 -04:00
Paul Licameli
58e7a94264 Envelope::Paste takes a time tolerance argument 2017-05-29 13:53:25 -04:00
Paul Licameli
bcc0bed29a Envelope::SetTrackLen adds a point only when none was present...
... And if points were present, keeps only the leftmost.
2017-05-25 08:15:45 -04:00
Paul Licameli
6c2c2733f9 More Envelope::GetValueRelative; add point for join only as needed 2017-05-25 08:15:45 -04:00
David Bailes
7900aa51ba Update for commands which interact with clips using the keyboard.
Changed the criterion for deciding when two clips are immediately next to each other, and made it into a function: WaveClip::SharesBoundaryWithNextClip.
2017-05-16 14:23:07 +01:00
Paul Licameli
327e5d8557 Correct envelope update for Join that includes a gap between clips 2017-05-09 09:22:07 -04:00
Paul Licameli
aba52bc79e Update envelope properly for TimeTrack and WaveTrack editing...
... Formerly this was done correctly only for cut and delete from WaveTrack,
paste into WaveTrack, and sync-lock adjustment of WaveTrack (either lengthening
or shortening).

Now also properly done for TimeTrack cut and paste, and also for:

Split cut
Split delete
Trim
2017-05-09 09:22:06 -04:00
Paul Licameli
d2acf1f3e5 Bug842: rescale clip offsets, envelope times when setting track rate 2017-05-07 11:12:24 -04:00
Paul Licameli
4be19128c0 Better constructors for Envelope 2017-05-07 11:00:55 -04:00
Paul Licameli
55439247ad All the catches are in place for BlockFile and other errors, now throw. 2017-04-03 23:32:40 -04:00
Paul Licameli
fc0f093db7 Sequence::Append* give strong guarantee 2017-04-02 21:33:23 -04:00
Paul Licameli
63cf80d244 Sequence::Delete gives strong guarantee 2017-04-02 21:33:23 -04:00
Paul Licameli
06f6953c91 Sequence::SetSamples, ::SetSilence give strong guarantee 2017-04-02 21:33:23 -04:00
Paul Licameli
73e61592aa Sequence::ConvertToSampleFormat gives strong guarantee 2017-04-02 21:33:23 -04:00
Paul Licameli
3c65731f38 Sequence::InsertSilence gives strong guarantee 2017-04-02 21:33:22 -04:00
Paul Licameli
160d846643 Sequence::Paste gives strong guarantee 2017-04-02 21:33:22 -04:00
Paul Licameli
6b0c5c096b WaveClip::Flush returns void, throws on error 2017-04-02 21:33:22 -04:00
Paul Licameli
5963f278f1 void returns from many WaveClip methods, comment safety guarantees 2017-04-02 12:49:47 -04:00
Paul Licameli
aa83c4cf29 Implement the more than weak guarantees needed for recording...
... in WaveClip and WaveTrack, to save as much recording as we can,
assuming the strong guarantees that Sequence will give.

Also comment that some other WaveTrack methods can give strong guarantee,
incidentally to making HandleClear give strong.
2017-04-02 12:46:47 -04:00
Paul Licameli
608dcc9b3f Reimplement prohibitions on moving clips by throwing exceptions...
... Also comment some strong and weak guarantees
2017-03-31 17:47:19 -04:00
Paul Licameli
d1cbac4181 more finally, more const, remove unused, fix warnings 2017-03-31 17:47:18 -04:00
Paul Licameli
38b8e57e4e Specify whether to throw on bad read in Mixer and WaveTrackCache...
... Do throw when exporting or mixing-and-rendering; don't if playing back or
drawing a spectrogram, but then just use zeroes.
2017-03-21 17:23:35 -04:00
Paul Licameli
39b8d99a56 WaveTrack::Get, WaveClip::GetSamples take a mayThrow=true argument...
... and pass non-default in all needed places.

Don't throw, don't put up error dialogs, in drawing or hit-test code.
2017-03-21 17:23:34 -04:00
Paul Licameli
70d9e4bdc7 GetMinMax, GetRMS functions take a mayThrow argument, return numbers 2017-03-21 14:19:02 -04:00
Paul Licameli
b81cdee7e3 Comment where xml writing functions may throw 2017-03-18 11:45:05 -04:00
Paul Licameli
58574f2f78 Redo type HFFT as a smart pointer, remove malloc and free 2017-03-17 17:52:51 -04:00
Paul Licameli
18be1bdad6 Remove naked new[] in: tracks 2017-03-17 17:52:47 -04:00
Paul Licameli
bb5dc07c51 Fix one scalar naked new that crept back in 2017-03-17 17:52:41 -04:00
Paul Licameli
b4734ff790 Duplicate command copies cutlines 2017-03-17 17:52:40 -04:00
Paul Licameli
934a505e1a Changes in WaveClip construction...
... Eliminate CreateFromCopy, add new one-step constructor instead.
It was wasteful to create a copy only to re-create the Sequence at once.

Sequence::Copy is a factory returning a unique_ptr.

Some error checks are removed, but there will be exceptions instead later.
2017-03-17 17:52:39 -04:00
Paul Licameli
65c722bfe5 Comment: resample, reformat of WaveClip needs no recursion for cutlines 2017-03-17 17:52:39 -04:00
Paul Licameli
87775d35e0 null pointer checks on all uses of WaveTrackCache::Get 2017-03-17 17:52:35 -04:00
Paul Licameli
8ddbc1d3d3 Assume number of spectrogram bins = 1/2 FFT window in fewer places...
... and that they have equal width on the linear scale
... also simplify the logic involving zero padding factor

This is more preparation for constant-q.
2017-03-17 17:52:28 -04:00
Paul Licameli
aa0d55ac83 Use enum class ProgressResult, don't interconvert with int or bool 2017-03-17 17:52:24 -04:00
Paul Licameli
81285ee0c1 More const and override 2017-03-17 17:52:20 -04:00
Paul Licameli
a9d33f87c4 Comments and minor off by one fixes for drawing wave clips...
... and rename two shadowing variables
2016-10-01 13:01:19 -04:00
Paul Licameli
921b769b52 Fix the previous fix! ... in copying of wave clip display caches. 2016-10-01 10:24:50 -04:00
Paul Licameli
a41eb4422c Fix mistake in partial reuse of caches for drawing wave & spectrum...
... But this mistake probably had no visible consequences, if total width
in pixes was unchanged.
2016-10-01 10:07:29 -04:00
Paul Licameli
f993f1eadf Regularize casts as (int), so they are easier to find and review 2016-09-20 08:42:11 -04:00
Paul Licameli
ad04187a41 Change sampleCount arguments, variables, return values to size_t...
... whenever they really describe the size of a buffer that fits in memory, or
of a block file (which is never now more than a megabyte and so could be fit in
memory all at once), or a part thereof.
2016-09-15 21:03:17 -04:00
Paul Licameli
078ff056e2 Make many conversions sampleCount->size_t are explicit and checked...
... with run-time assertions.

I examined each place and reasoned that the narrowing was safe, and commented
why so.

Again, there are places where the sampleCount variable will later be changed
to have a different type, and they are not changed here.
2016-09-15 21:02:32 -04:00
Paul Licameli
78be459fa1 Convert sampleCount <-> floating or -> long long explicitly ...
... A non-narrowing conversion out to long long is a necessity, but the
conversions to float and double are simply conveniences.

Conversion from floating is explicit, to avoid unintended consequences with
arithmetic operators, when later sampleCount ceases to be an alias for an
integral type.

Some conversions are not made explicit, where I expect to change the type of
the variable later to have mere size_t width.
2016-09-15 21:02:31 -04:00
Paul Licameli
ed21545c80 pixel column counts and sample window sizes use unsigned types 2016-09-11 20:28:13 -04:00
Paul Licameli
43b4d3cc99 travis 2016-09-07 13:38:39 -04:00
Paul Licameli
301fa337d5 Fix bug when expanding a cutline that contains another cutline...
... rare case, indeed.
2016-09-07 12:50:53 -04:00
Paul Licameli
919d77d176 More uses of min and max 2016-09-06 20:46:25 -04:00
Paul Licameli
c8e7372886 Rewrite Resample::Process to take and return size_t values 2016-09-06 12:39:58 -04:00