1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-20 14:47:49 +02:00

75 Commits

Author SHA1 Message Date
Paul Licameli
3f05063681 Split "Do" functions out of the "Set" functions for some Track settings 2018-02-21 19:20:55 -05:00
Paul Licameli
4ef8da8f16 Revert "Preliminaries to support better interaction of undo and recording"
This reverts commit 6e75ae58ac56d9c94af5a4ce97951f627808473a, reversing
changes made to 714d53e00f803643131bb775858ac930b39dd5b8.
2018-01-14 21:36:33 -05:00
Paul Licameli
8b60e7f02d Split "Do" functions out of the "Set" functions for some Track settings 2018-01-14 19:03:52 -05:00
Paul Licameli
cd06c04fa0 Use wxFprintf not fprintf and you don't need c_str 2017-12-16 11:54:18 -05:00
Paul Licameli
4a0fbf83af Bug1735 residual: paste into region starting < Note Track start...
... Note that the cases of end < start and end > start follow different paths.
2017-09-26 12:05:47 -04:00
Paul Licameli
cee28ab535 Bug1735 addendum: fix oddities pasting left of Note track offset...
... See comment http://bugzilla.audacityteam.org/show_bug.cgi?id=1735#c3
2017-09-08 11:29:21 -04:00
Paul Licameli
47552acfc3 Bug1735: crash pasting copied part of Note track starting at > 0...
... See also commit 76a9962a5e4901445ce9df290a8e623f7fb0ccec

What was done there for Cut, should have been done too for Copy.
2017-09-07 19:22:15 -04:00
Paul Licameli
76a9962a5e Bug1719: crash left-stretching one Midi track synced to another...
... Fixed by making the cutting of a Note track always have 0 offset; as is
also the case for cuttings of other types of tracks.
2017-08-17 19:08:13 -04:00
Paul Licameli
f0de38dec1 Scanned for bad naked new; found none; changed comments, used safenew 2017-07-23 09:35:01 -04:00
Paul Licameli
f725e937a4 Still better redrawing of resized Note tracks, still not perfect...
... The uses of GetPitchHeight(1) should be reexamined
2017-07-19 15:20:47 -04:00
Paul Licameli
8279adc797 Changing NoteTrack height, keep # of piano keys (roughly) constant...
This fix is imperfect, but quick and easy
2017-07-19 14:46:23 -04:00
Paul Licameli
207db5e547 Improved Note Track vertical ruler zooming...
... Make consistent zoom in and out limits for mouse picks and for scrollwheel

Make scrollwheel do in or out by a constant multiplier, analogously with wave
track

The Note track remembers a continuously varying key height, but rounds it off
whenever it draws
2017-07-19 14:28:17 -04:00
James Crook
60405eb7fe Theme Tweaks
- Highlighting of Buttons in TCP and Sliders
- No crinkly Help Icon anymore
- Invisible numbers in NoteTrack fixed
- Better visibility of label track dragger elements
- Theme rearranged more logically, and dead images culled
2017-07-19 15:27:00 +01:00
Pokechu22
62ebb2f95d Remove unused and unneeded MIDI methods and variables
The fields in AudioIO are simply unneeded (commented out, declared but never implemented, or otherwise unused).

mLastMidiPosition (in NoteTrack) looks like the vestiges of a far older attempt at MIDI playback; the field itself is completely unused though so it is safe to remove it.
2017-07-16 11:07:28 -04:00
Paul Licameli
44d6d5f427 Highlight MIDI channel buttons 2017-07-09 12:34:46 -04:00
Paul Licameli
2c1a16f593 Changed lifetime management of UIHandle objects, no singletons...
... Rather, construct them during hit tests (also capturing more state sooner
rather than at Click time, and adding some accessors for later use)

This also fixes bug 1677 by other means and avoids similar problems.

A cell may be implemented to re-use a previously hit handle object, not yet
clicked, in a later hit test, by remembering a weak pointer, but TrackPanel
holds the strong pointers that determine when the object is destroyed.

And the objects will surely be destroyed after drag-release, or ESC key.

For now they are also destroyed whenever not dragging, and hit-testing is
re-invoked; that will be changed later, so that the re-use mentioned above
becomes effective, but still they will be destroyed when the pointer moves
from one cell to another.
2017-07-09 07:23:28 -04:00
Pokechu22
b46abbec62 Keep the current note centered when holding control to zoom 2017-07-04 06:45:21 -04:00
Pokechu22
0e21143cee Implement scrolling for the note track vertical ruler
Command zooms in/out, and shift moves up and down.
2017-07-03 14:23:13 -04:00
Paul Licameli
329aa8393e Table includes draw function for Midi controls 2017-06-13 14:02:10 -04:00
Paul Licameli
f0c149b890 Default MIDI track height is enough to display velocity slider...
... It is computed from the layout table, and in fact comes to 158 pixels,
versus 150 for other tracks.
2017-06-06 22:39:30 -04:00
Paul Licameli
5395f253bf Reviewed use of Track::GetY; don't use in NoteTrack; fix off-by-1's 2017-06-04 00:15:29 -04:00
Paul Licameli
a8ac80eda9 Bug1651: NoteTrack sync-lock and crash fixes...
Simplify the logic of duplication of NoteTrack.  Duplicates are always in
serialized state.  Un-serialization can happen on demand in any of the
NoteTrack operations that require a defined sequence.

Changing the duration of the sequence after paste is needed,
as it was also needed, when I fixed Stretch at commit
90eb4ec142f7d575d0870dd9c755589bff520cbe.  I don't know if this should be
considered a bug in Allegro that we are compensating.
2017-05-25 08:08:31 -04:00
Paul Licameli
90eb4ec142 Make MIDI track stretch path-independent 2017-05-22 23:15:26 -04:00
Pokechu22
77db2e7113 Transpose notes even when channel isn't visible
As mentioned by PRL
(https://sourceforge.net/p/audacity/mailman/message/35763043/),
WarpAndTransposeNotes didn't transpose, but _did_ wrap, notes that were on
channels that were hidden.  This behavior is inconsistent with all other
operations, and thus has been changed to always transform and wrap
regardless of visibility.
2017-05-02 00:37:32 -04:00
Pokechu22
298bb3fde8 NoteTrack: Implement Silence and InsertSilence
Additionally, fix the UI portions of these, and fix Trim for note tracks
(the code already existed, but due to flags would not work).  As PRL
requested, this is gated only behind USE_MIDI.
2017-05-02 00:37:31 -04:00
Pokechu22
a76ad22c91 Fix midi channel toggling
This reintroduces the buttons to toggle display of individual midi
channels, and cleans up the code behind that feature.

This functionality has actually been present in production versions of
audacity for a while, at least for clicking.  However, the buttons
themselves were not drawn, making it exteremly painful (but possible) to
use.

As requested by PRL, this is always enabled if USE_MIDI is defined.
2017-05-02 00:37:31 -04:00
Paul Licameli
8bfe4cc685 Fix more cases of Wave and Note track editing wrongly throwing 2017-05-01 04:48:14 -04:00
Paul Licameli
b2b9708b29 Fix possible assertion violations for cut, paste, trim 2017-04-29 15:41:18 -04:00
James Crook
7f98672e22 MIDI_OUT on by default on windows.
The idea is to get SOME use and test of MIDI_OUT even though it does not compile on Linux yet.
2017-04-27 12:56:39 +01: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
e1473dfe76 void return, not boolean success, from some Track virtual functions...
... The return codes were mostly ignored anyway, and exceptions will be thrown
instead.

It seems there was also confusion whether the return values of Track::Paste
and Track::SyncLockAdjust were to indicate success or indicate whether there
was any change.  No matter now.
2017-03-31 18:26:52 -04:00
Paul Licameli
6b84dc1c1d Factory methods will return non-NULL or throw 2017-03-31 18:14:29 -04:00
Paul Licameli
f1b354b141 More pure virtuals in Track, supply Note and Time overrides 2017-03-31 18:03:37 -04:00
Paul Licameli
7bda40f656 Common functions read and write mute and solo in Wave and Note 2017-03-30 16:00:27 -04:00
Paul Licameli
d109142693 Make mute and solo of NoteTrack persistent, if EXPERIMENTAL_MIDI_OUT 2017-03-29 13:58:20 -04:00
Paul Licameli
c391a8f884 Define AudioTrack and PlayableTrack as common bases for Wave and Note 2017-03-29 13:27:22 -04:00
Paul Licameli
80984c9f1d From Pokechu22: Rename gain to velocity on note tracks
"Velocity" is the technical term, and it's the term that's used everywhere.
"Gain" was probably only used because "gain" is used on wave tracks; since
note tracks aren't wave tracks (and shouldn't be treated as them) the
corresponding variables should be named velocity.
2017-03-29 13:27:22 -04:00
Pokechu22
2d912f3c93 Replace assert calls with wxASSERT 2017-03-27 01:26:42 -04:00
Pokechu22
0ce9598274 Fix midi-related compile problems in AudioIO and NoteTrack
The compilation was broken in 67cec5a but fixed in ed8c7fd.  However, the warnings weren't fixed.  The same general sign-related changes from 67cec5a were applied, fixing several warnings.

This also changes the arguments for NoteTrack's label click handler, to match the ones found in TrackPanel.  That's needed to handle some other const-related changes.

Additionally, EXPERIMENTAL_MIDI_PLAYBACK was changed to EXPERIMENTAL_MIDI_OUT in the documentation, as that is the correct name.
2017-03-27 01:12:16 -04:00
Paul Licameli
b81cdee7e3 Comment where xml writing functions may throw 2017-03-18 11:45:05 -04:00
Paul Licameli
25619fb46e Don't create placeholder clips in Duplicate command ...
... when there is no clip at the right edge of the selection.
2017-03-17 17:52:39 -04:00
Paul Licameli
509f974dfb Consistently use delete[] not free for NoteTrack serialization...
... Because allocation is with new[], if you search for where it happens in
lib-src.
2017-03-17 17:52:33 -04:00
Paul Licameli
81285ee0c1 More const and override 2017-03-17 17:52:20 -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
fa0a603804 Fix crash when sync-lock adjusting a note track 2016-09-15 08:33:15 -04:00
Paul Licameli
d783762737 Remove unnecessary std::move in return statements...
... and comment where it is necessary.
2016-09-15 07:39:46 -04:00
Paul Licameli
46f38708ed Dir manager uses std::shared_ptr 2016-08-13 12:23:05 -04:00
Paul Licameli
a52f7f8410 new -> NEW in comments, so text search for naked new excludes them 2016-08-08 10:07:37 -04:00
Paul Licameli
20bee00115 Remove some naked new amd delete in: tracks and clips 2016-08-08 07:30:44 -04:00
Paul Licameli
3015a9c8d9 Track cut and copy functions return a unique_ptr argument...
... Because they are factory functions.
2016-03-26 11:50:13 -04:00