Commit Graph

920 Commits

Author SHA1 Message Date
Paul Davis eaedcd79d4 fix a bunch of undo-able tempo map operations to use RCU 2021-08-13 12:51:32 -06:00
Paul Davis 75d6ea19c4 fix time/position used when applying MIDI ops 2021-08-13 12:51:32 -06:00
Paul Davis cce695d33a changes required by fixing ambiguities in timepos_t/timecnt_t API (GUI edition) 2021-08-13 12:51:31 -06:00
Paul Davis eec4addcd5 GUI side cleanup forced by explicit BBT_Offset (double) 2021-08-13 12:51:30 -06:00
Paul Davis 18d64f0402 change all Region::nt_*() methods to names without the nt_ prefix (GUI version) 2021-08-13 12:51:30 -06:00
Paul Davis 90553b315f fix up memento command use for tempo map undo/redo 2021-08-13 12:51:30 -06:00
Paul Davis 3c00fab75e remove/hide Session::tempo_map() and use TempoMap::use() instead (thread local shared ptr) (GUI edition) 2021-08-13 12:51:30 -06:00
Paul Davis f0d055ad4d more updates for new tempo map API 2021-08-13 12:51:30 -06:00
Paul Davis 7ef11dc698 continued work on using new tempo map API (before switch to RCU) 2021-08-13 12:51:30 -06:00
Paul Davis 749a49c278 incorporating new tempo map API 2021-08-13 12:51:29 -06:00
Paul Davis 5836a4f2b6 timeline types conversion for editor_ops.cc 2021-08-13 12:51:29 -06:00
Paul Davis 2a08e4bdaa continued work on timeline types conversion. in theory, just editor_ops.cc remains 2021-08-13 12:51:29 -06:00
Paul Davis 7433bc27e0 intermediate, unfinished snapshot of ongoing timeline types work on GTK GUI 2021-08-13 12:51:29 -06:00
Paul Davis 0a469527f1 updated Temporal::Beats ... GUI edition 2021-08-13 12:51:28 -06:00
Paul Davis 23aa663f9d when doing a ripple-all drag, move relevant markers during the drag too
Note that this is purely GUI-level: the ARDOUR::Locations are changed at the end of the drag
in Editor::ripple_marks()
2021-08-13 12:51:28 -06:00
Paul Davis ac1d5bac0a improve rippling of marks to include any in the gap between the primary-dragged region and the one before it 2021-08-13 12:51:27 -06:00
Paul Davis 1ccf272d58 ripple-all now moves markers too 2021-08-13 12:51:27 -06:00
Paul Davis 0b06c4dc2b manually fix rebase error 2021-08-13 12:51:27 -06:00
Paul Davis 636f1331e8 stop using ripple callback API, add Editor::should_ripple() and Editor::do_ripple() to manage rippling 2021-08-13 12:51:27 -06:00
Paul Davis e7595f2cd5 follow modified Playlist ripple callback API 2021-08-13 12:51:27 -06:00
Paul Davis 0e2bd5383c GUI changes to follow new Playlist::ripple() API
Current ripple callback does nothing at all
2021-08-13 12:51:27 -06:00
Paul Davis 301b2be5e3 fix clear region cue markers operation to only apply to cue markers within the selected region(s) 2021-08-03 10:19:54 -06:00
Robin Gareus f457225d08
Region loudness normalization GUI #8777 2021-07-20 04:53:57 +02:00
Paul Davis d9877d5c99 prevent add-location-at-playhead-cursor etc. from adding multiple marks at the same location 2021-07-15 09:03:16 -06:00
Ben Loftis 73b0a3fdb9
Layer Display: add explicit actions for stacked+overlaid 2021-07-03 19:06:04 +02:00
Ben Loftis d7bd87eb13
Playlist UI Tweaks: add an action to show playlist selector for selected track 2021-07-03 19:06:04 +02:00
Ben Loftis aaa96ff292
Default_Play_Speed: change some speeds from assuming "1.0" to "default_speed" (gtk part) 2021-07-03 19:06:03 +02:00
Ben Loftis a1257beb23
Default_Play_Speed: prep work (gtk2)
* request_transport_speed should -never- set default_play_speed
2021-07-03 19:06:02 +02:00
Paul Davis 1734fac410 Revert "Paste Mode: overwrite-paste, naive implementation using rec-mode (for testing)"
This reverts commit f4d4dddbeb.

Deferred until after Ardour 6.8
2021-07-01 18:28:04 -06:00
Robin Gareus 83b9ab1bee
Temporarily revert ongoing varispeed development
This reverts bf88f3fe64
until 35813db0f4

in order to move development into a branch, until after the
upcoming 6.8 release
2021-06-26 18:58:24 +02:00
Ben Loftis 3454a34ba4 Default_Play_Speed: change some speeds from assuming "1.0" to "default_speed" (gtk part) 2021-06-25 11:51:35 -05:00
Ben Loftis b4eba1a30b Default_Play_Speed: prep work (gtk2)
* request_transport_speed should -never- set default_play_speed
2021-06-25 11:51:34 -05:00
Ben Loftis f4d4dddbeb Paste Mode: overwrite-paste, naive implementation using rec-mode (for testing) 2021-06-08 08:33:48 -05:00
Paul Davis b17629bddf implement option to move markers during a "remove gaps" operation 2021-05-28 17:43:33 -06:00
Paul Davis 2cf0e94d16 code cleanup of Editor::remove_gaps() (removing functionality derived from copy-n-paste of insert-time) 2021-05-28 13:44:39 -06:00
Paul Davis bbcdd959bf dialog for remove gaps operation 2021-05-28 13:44:39 -06:00
Paul Davis d0f94dd63d add "remove gaps" editing operation
Like the libardour functionality it uses, this likely needs work to properly deal with the
intended cross-track workflow
2021-05-28 12:36:17 -06:00
Paul Davis cd7c10c902 implement working undo/redo for region/cue marker operations 2021-05-27 17:17:40 -06:00
Paul Davis 3bfb01a77b improved logic for Editor::add_region_marker() 2021-05-27 17:17:40 -06:00
Paul Davis c444a81f1a offer alternative region marker "promotion" method to CD marker (rather than just global marker) 2021-05-25 14:10:36 -06:00
Paul Davis 8774740e72 add action to "promote" region cue markers to global marks 2021-05-25 14:01:30 -06:00
Robin Gareus 445f9a51bf
Fix ripple undo/redo
Ripple edit undo/redo needs a "recursive diff" of all regions
in the playlist. To work properly owned changes have to be
cleared first, previously unrelated edits were be collected too.

This includes a more consistent version of
7a89d56009 using rdiff() instead of explicitly
saving region diffs.
2021-05-23 17:42:33 +02:00
Robin Gareus 31bbf03a67
NO-OP: always use braces (styleguide #4) 2021-05-23 17:37:28 +02:00
Ben Loftis 5fdbd71d89 Fix bounced file+region names: concatenating all the names was a bad idea. (gtk part) 2021-05-20 11:42:48 -05:00
Paul Davis 3047b25527 split out region marker actions to their own submenu; implement remove and clear all 2021-05-18 20:59:37 -06:00
Paul Davis bd2d8b8c87 tweak Editor remove-marker APIs to set state for removing region cue markers 2021-05-18 16:50:55 -06:00
Paul Davis 3713175bf1 allow user to set name for new region cue marker 2021-05-18 16:17:37 -06:00
Paul Davis f1390ca7f7 add (theoretical) undo-ability for region markers and use source API instead of region 2021-05-14 18:37:50 -06:00
Paul Davis a1c68460be add basic/initial code for action to add a region marker 2021-05-14 18:37:50 -06:00
Paul Davis 981fc6b3cd transition-to-roll should work whether rolling or stopped 2021-05-04 15:57:03 -06:00
Paul Davis 8c427279d9 transition-to-roll should not set the default transport speed 2021-05-04 15:37:04 -06:00
Paul Davis ac53a9bbf8 remove unnecessary 2nd argument from Session::request_locate() calls (default value is identical) 2021-05-03 17:40:41 -06:00
Robin Gareus 61885f0284
Explicitly set announce=false when creating regions (2/2)
This is in preparation for to improve consistency of
RegionFactory::create() default parameters (change
default to true).
2021-04-30 18:40:51 +02:00
Robin Gareus 2c64736604
Fix crash when consolidating range with automation
The undo command needs to be started before calling
playlist->add_region() because that may move automation
or include ripple changes. see the following backtrace:

```
UndoTransaction::add_command
ARDOUR::DiskReader::move_processor_automation
ARDOUR::Route::foreach_processor
ARDOUR::DiskReader::playlist_ranges_moved
ARDOUR::Playlist::flush_notifications
ARDOUR::Playlist::RegionWriteLock::~RegionWriteLock
ARDOUR::Playlist::add_region
Editor::bounce_range_selection
```

Except. it seems automation is moved incorrectly in this case..
2021-04-29 21:17:22 +02:00
Paul Davis 54c135c8b9 fix "trim to loop" region edit operation so that it applies to any region that intersects the loop, not just those spanning it 2021-04-25 09:42:06 -06:00
Paul Davis 52b7e68102 use new Session transport API calls in GUI 2021-04-19 16:14:08 -06:00
Robin Gareus ac5bca4a92
Clean up RouteUI header
* Consolidate access modifiers
* Remove all public member variables
* Only expose required functions, use private
  whenever possible
* Rename private members, prefix underscore
* Remove cruft
2021-03-27 17:44:34 +01:00
Robin Gareus 86a594fe90
Mitigate batch gain-changes #8576
This combines SessionEvent per playlist. Now per change
there are "only" two SessionEvent::Overwrite events
queued per playlist in the GUI thread for later processing
the Butler.

These are triggered by Playlist::ContentsChanged()
and Playlist::LayeringChanged(), both of which trigger
DiskIOProcessor::playlist_modified.

(Previously there used to be two per region)
2021-03-22 02:14:30 +01:00
Robin Gareus 3bda6020b9
Remove excess parentheses 2021-03-18 04:09:04 +01:00
Paul Davis 4abe3ade28 do not commit reversible commands when clearing locations if nothing was changed 2021-03-16 17:40:25 -06:00
Paul Davis bcb3e75cec GUI to remove xrun markers 2021-03-16 16:49:49 -06:00
Robin Gareus 33de08e9e7
Do not commit empty split undo transactions
When no region(s) are selected and none are under the edit-point,
only a selection change was committed as undo action.
2021-03-10 14:20:24 +01:00
Robin Gareus bdc1cdc15f
Fix crash when separating ranges with automation
playlist->partition() calls DiskReader::playlist_ranges_moved()
which may add Panner and Fader automation state changes.

The reversible command has to be started before calling
playlist->partition(). Simply collecting playlist->rdiff() after
the fact is not sufficient.
2021-03-10 13:55:32 +01:00
Robin Gareus 4769c387f3
Expose EditorCursor via public editor API
This is in preparation to subscribe to playhead cursor position
changes in the recorder-UI.

This change also clean up the API, replacing a public variable
with a const access method and follows #12 of
https://ardour.org/styleguide.html
2021-01-08 18:39:56 +01:00
Ben Loftis d0abe7e742 Consolidate action adds a whole-file region (for the Source list) AND a region on the timeline (just as if you recorded it) 2020-07-26 09:53:47 -05:00
Ben Loftis 80a7d32e07 Prompt user for name of Range and Region bounces (gtk part) 2020-07-26 09:53:47 -05:00
Paul Davis eaf88040cc NO-OP: add missing braces 2020-07-05 17:48:16 -06:00
Paul Davis ad6de3c233 when carrying out MIDI editing operations, be sure to act only once per Model when the selection involves non-forked copies
Still can fail if the non-forked copies have been modified enough, but user should not multi-select them in that instance
2020-07-02 23:15:10 -06:00
Paul Davis c82ca66fcc fix for #8112. No need to request transport roll before requesting loop play
And doing so confuses ardour
2020-05-16 09:31:43 -06:00
Johannes Mueller 1280360a65 Revert "Fix 8061 (partly): Don't scroll down if no further tracks to scroll to"
This reverts commit 81cbf36c56.

Limiting scrolling has other drawbacks. A proper fix for the redraw issue
has to be found.
2020-04-27 22:58:32 +02:00
Johannes Mueller 81cbf36c56 Fix 8061 (partly): Don't scroll down if no further tracks to scroll to
The issue remains if a track is selected by a "fit-selection" action second
last track covers the whole trackview. Then when scrolling one track up, the
huge track disappears and a smaller track follows, that covers a lot less
space.

-> Proper redraw of the track view is still needed.
2020-04-27 21:51:57 +02:00
Robin Gareus 485ac45477
Fix region boundary cache lookup segfault
When the cursor position is after the last item in the vector,
upper_bound returns the last given iterator, here:
`region_boundary_cache.end()`, which is invalid to dereference.

Furthermore prevent possible  duplicate prev/next pair at zero,
when using the video-timelime.
2020-04-22 22:37:43 +02:00
Robin Gareus 929754f48c
Prefer PBD::Unwinder to temporarily change a variable 2020-04-17 22:49:45 +02:00
Paul Davis e4e035c6e2 remove debug output 2020-04-16 17:48:12 -06:00
Paul Davis 65f7a6a938 changes to deal with region/note selection when changing into/out of internal edit mode
Also, activate MIDI editing actions so that they are effective in internal edit mode
2020-04-16 17:48:12 -06:00
Paul Davis 0ecf1e40ea add Editor-level action to toggle track layer display 2020-04-03 18:54:51 -06:00
Paul Davis 9ca9aa8ae1 add new Editor method to toggle all existing automation
Applies to selected tracks if non-empty; all tracks otherwise
2020-04-03 13:28:58 -06:00
Paul Davis 98884e9736 rename variable (frames -> samples) 2020-04-01 10:10:50 -06:00
Paul Davis b7e30cfc24 remove debug output 2020-03-30 17:37:10 -06:00
Paul Davis ff08fbb969 when build the region boundary cache, use the "end" of a region, not its "last sample"
It makes no sense to every align a region start/sync point during a drag or alignment operation
with the last sample of another region. It only makes sense to align with the position immediately
after the last sample of the other region (e.g. directly sequencing regions).
2020-03-30 17:25:07 -06:00
Paul Davis a4d7b45fe0 remove destructive/tape mode tracks 2020-03-17 16:31:49 -06:00
Robin Gareus d9836ec002
Update GUI: freeze operation error/warnings 2020-03-14 13:25:54 +01:00
Robin Gareus 8710a2d943
Dialog default to cancel (#7915)
There are various ways to cancel a dialog. Only checking for
RESPONSE_CANCEL is not sufficient. e.g. Esc causes a delete-event.

 * Gtk::RESPONSE_CLOSE
 * Gtk::RESPONSE_REJECT
 * Gtk::RESPONSE_DELETE_EVENT
 * Gtk::RESPONSE_CANCEL
 * Gtk::RESPONSE_NO

Among others this fixes "Clicking session > open,
then hitting ESC opens the currently selected folder and session"
2020-02-27 23:27:42 +01:00
Ben Loftis cf4d7387d2
Use a sensible min length for default session-duration
If the user tries to set the Start or End marker on an empty session,
apply some sensible defaults for the resulting session range.
2020-01-26 19:36:23 +01:00
Paul Davis 215d5d556f handle possible failure of a region rename 2020-01-23 14:25:38 -07:00
Ben Loftis c8faadee4b Fit Selection (Vertical): if we cant fit all selected tracks, report that to the user. But still fit what we can. 2020-01-23 14:11:18 -06:00
Paul Davis 47767738b9 rename DoTheRightThing to RollIfAppropriate 2020-01-18 08:49:18 -07:00
Paul Davis 3c00048b0c Session::request_locate() takes a tri-valued second argument for "roll-after-locate"
This allows callers to defer logic about auto-play/current rolling state and more to TransportFSM where it
can be cnentralized and is less ambiguous
2020-01-18 08:49:18 -07:00
Robin Gareus 2b55d6dce3
First batch of MessageDialog replacements 2019-12-14 23:44:01 +01:00
Robin Gareus ccefc64418
Reset paste-count, paste-offset on undo/redo
This fixes an workflow edge-case when undoing a paste in order
to paste at a different location on the same track or automation lane.
After undo, any accumulated paste-offset needs to be reset
2019-11-26 23:49:06 +01:00
Robin Gareus fb4cbb9f9e
Correctly handle Zoom > Edit-point > Mouse
Previously this failed if the event was initiated outside
of the canvas (e.g. Zoom buttons).

This also fixes a special case of Zooming to an edit-point at zero.
2019-09-17 17:18:29 +02:00
Robin Gareus e7637d7786
Fix mute toggle actions when mute is automated
Track menu, as well as mixer-shortcut to set/unset mute
of selected tracks needs to send a start_touch() event, otherwise
the change is not effective.
2019-09-03 22:01:35 +02:00
Nikolaus Gullotta f44a436f70
Move StripSilenceDialog XML to dedicated function
This moves the Session::add_extra_xml() call out of editor_ops.cc and
moves it to its own class method StripSilenceDialog::finished()
2019-08-30 14:44:50 -05:00
Nikolaus Gullotta d5988b232c Add settings retention to StripSilenceDialog
StripSilenceDialog will now retain its threshold, minimum length, and
fade length values from run to run.

This is done via Session::add_extra_xml() and recalled during the
construction of StripSilenceDialog via Session::extra_xml()
2019-08-30 12:40:28 -05:00
Robin Gareus 4050ca5633
Update GPL boilerplate and (C)
Copyright-holder and year information is extracted from git log.

git history begins in 2005. So (C) from 1998..2005 is lost. Also some
(C) assignment of commits where the committer didn't use --author.
2019-08-03 15:53:15 +02:00
Ben Loftis da3d8e5418 (Source List) Implement insert-region action... now uses the Source List. 2019-08-01 12:11:31 -05:00
Ben Loftis 50786b3e5c (Source List) Recover Regions feature: WIP 2019-08-01 12:11:31 -05:00
Ben Loftis c12a017728 (Source List) Region Tags (gtk2 part) 2019-08-01 12:11:31 -05:00
Robin Gareus b1587940e4
Fix crash when deleting selected region-view in ripple mode #7764
Changing the playlist (remove_region) invalidates selection and
unsets `clicked_regionview`. The region to operate on needs
to be stored for later use.
2019-05-27 14:10:59 +02:00
Robin Gareus 31815b5f26
NO-OP: whitespace
This fixes mostly <tab> after <space> and similar <tab> not used
for indenting as well as some related code alignment issues.
2019-04-13 17:57:46 +02:00
Robin Gareus c09c7bab52
Update GUI, use Session::playlists() getter (2/2) 2019-03-19 05:14:40 +01:00
Ben Loftis 66f73f40db Fix thinko: if the entered_regionview is already part of the selection, do not treat it as a special case when splitting. 2019-03-07 09:50:00 -06:00
Ben Loftis 3e442ae52b Session-range behavior (gtk2 part)
* Both the session-start and session-end point should follow the is-free option
  * Rename the end-is-free option to session-range-is-free, to reflect that change
  * This fixes the problem: recording before the start marker would move the Start,
    even if the user had already fixed the End marker.
2019-02-12 11:35:57 -06:00
Ben Loftis 22deebb42f Selection-after-split behavior (gtk2 part)
*  When splitting in MouseObject, entered_region should get priority over selected regions.
    This fixes the unexpected case where you try to split an unselected a region, but
       a)  nothing happens  OR
       b)  some other region (maybe off-screen) is split

*  Range mode now has its own option for splits, which can be:
     Clear:  the selection is cleared.
     Preserve:  the selection is left as-is. (default)
     Force:  all the regions that resulted from the split are selected (forcing a tool change).

*  Un-hid the additional config options to select only the regions BEFORE or AFTER a split.

*  Note:  splits made with Cut Tool should be unaffected by these changes.
2019-02-12 11:35:39 -06:00
Alex Pilon e7091cb2cd
Observe preference to prompt for names when adding range markers 2018-12-28 17:25:30 +01:00
Robin Gareus 245d48dbd0
NO-OP: Clarify function name 2018-11-28 15:16:25 +01:00
Robin Gareus f150f6c074
Use central method to check for engine where required
These are generally places where tracks/busses are created or port
connections change.
2018-11-28 00:01:50 +01:00
Robin Gareus 57d7b5de65
GUI limitation: Require engine to add/remove tracks/busses 2018-11-27 13:18:39 +01:00
Paul Davis 58e9bb0a14 move away from "sync source" concepts 2018-10-05 14:15:02 -04:00
Ben Loftis 35243c9b3e Fix weird behavior in playhead_x_to_grid: use return value from snap_to_grid. 2018-10-02 20:12:21 -05:00
Ben Loftis 2b95b5b8b3 More correct fix for 8bfbef4: the check was already there; just needed to set the dirty flag. 2018-10-02 09:41:04 -05:00
Ben Loftis 8bfbef4888 Fix deadlock when no region boundaries are selected in the Snap prefs. 2018-10-02 09:28:05 -05:00
Paul Davis 932eefad9f use new CoreSelection methods in editor and mixer 2018-08-24 14:04:18 -04:00
Ben Loftis 0883f02de9 new_grid: The Return of the snap_to_X functions.
We no longer assume that Snap always uses the visible ruler lines.
 If you want to snap to the grid, and ignore the users zoom scale, use SnapPref::SnapToGrid_Unscaled
 This fixes 2 (known) oversights: "snap region(s) to grid" and "regions whose start are left of the canvas edge".
2018-07-27 00:28:47 +02:00
Ben Loftis 7fbbfc0729 Allow snapping to the start of the video timeline. (should work, but needs testing on a machine with harvid). 2018-06-08 16:12:35 -05:00
Ben Loftis 41cf86cb9f Playhead to Grid: handle case where PH is rolling, and we are prevented from skipping backwards sensibly. 2018-05-17 15:01:09 -05:00
Ben Loftis c074c7ce52 playhead_X_to_grid: Handle the case of GridTypeNone 2018-05-08 09:03:20 -05:00
Ben Loftis a5d90c3d9d Arrow keys (playhead_x_to_grid()) should move the view along with it. This is more consistent with jog-wheel operation, which has proven to work nicely. 2018-05-08 08:45:22 -05:00
Paul Davis 5132a6c2eb fix undo/redo for duplicate-regions in ripple mode
Also fix duplicate of multiple regions in the same track, and change "gap" variable
name to "span" for greater clarity
2018-03-28 14:24:21 -04:00
Paul Davis 9840f84830 duplicate (regions) should honor ripple edit mode 2018-03-27 10:19:12 -04:00
Ben Loftis d88cdcc1bf Reinstate the ability to split regions while dragging playhead. I think this was unintentionally lost. 2018-02-27 13:08:40 -06:00
Ben Loftis fcabb27561 Remove some redundant calls to snap_to(). get_preferred_edit_position() already did it. 2018-02-27 08:55:17 -06:00
Ben Loftis 5d423e38d5 Should be able to Split in range mode, with a selected track. 2018-02-26 20:38:50 -06:00
Ben Loftis 292f998298 Fix bug: sequential pasting to the same time, but different tracks, would trigger paste offset. 2018-02-26 19:40:24 -06:00
Ben Loftis f64a39a07f Fixes for region_boundary_cache:
If no region-snaps are defined, bail out before generating cache.
 Avoid potential overflow at max_samplepos+1
 Snap should continue to work beyond the End marker.
2018-02-24 10:30:52 -06:00
Robin Gareus ceac42cc03 NO-OP: whitespace
- remove trailing whitespace
- remove space after opening brackets and before closing brackets
- add space around operators
- do not use '//' for multi-line comments, do not use "//" on line-start
  to comment-out code breaking indenting (-Wmisleading-indent)
- do add a single space after comment-start /*{SPACE}... or //{SPACE}...
- reserve duplicate whitespace "  " for alignment, remove other duplicate
  whitespace
- use established "TODO" and "XXX" (highlighted keywords)
- remove equal-sign series "====" (those indicate merge conflicts)
2018-02-24 13:55:20 +01:00
Ben Loftis 881c8eeca8 Tell the user why Insert/Remove Time failed, rather than fail silently. 2018-02-23 14:37:32 -06:00
Ben Loftis 0299229e41 SoloSelection: gui part. 2018-02-11 09:39:45 -06:00
Ben Loftis dc61256466 new_grid: Rewrite of Snap and Grid. (squashed commit)
Separate Snap from Grid.  Lots of naming changes.
Multiple simultaneous snap options allowed. Grid is one of the possible Snap options.
Grid uses the same data as the rulers.  Replace complicated tempo_lines with simple grid_lines.
The Grid is zoom-scale-sensitive along with the rulers.  If you are zoomed out, grid becomes coarser.
2018-02-09 09:59:39 -06:00
Robin Gareus ba2b136af2 NO-OP: whitespace 2017-12-12 00:13:12 +01:00
Ben Loftis aab02cac3d zoom-to-selection should clear the selection, afterwards. 2017-12-11 10:51:33 -06:00
Robin Gareus c591368133 Remove unreachable code.
if (working_on_selection) {
  ...
} else {
  if (working_on_selection) { .. never reached .. }
}

Found by PVS: https://www.viva64.com/en/b/0540/
2017-11-23 10:51:20 +01:00
Paul Davis 5f60ff212d remove unused variable 2017-10-26 15:41:01 -04:00
Paul Davis 7db12f6b12 convert codebase to use Temporal for various time types 2017-09-24 12:03:54 -04:00
Paul Davis 30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
Paul Davis e37558502e changes required to operate with the Evoral::Beats ticktime commit 2017-09-18 11:40:53 -04:00
Paul Davis f9e7ffc601 no more per-track varispeed 2017-09-18 11:40:53 -04:00
Ben Loftis 631629b8e7 Editor zoom: add zoom_to_extents() 2017-08-26 23:06:29 -05:00
Ben Loftis 1c145ccfc3 Editor zooming: Config preference to define how much zooming will be easily allowed beyond the session_ui_extents() 2017-08-26 22:44:58 -05:00
Ben Loftis 901432f030 Editor zooming: refactor zoom-limiting code into editor::session_gui_extents. 2017-08-26 22:44:58 -05:00
Robin Gareus ea5d75a05b Use new separate_by_channel API 2017-08-23 21:33:29 +02:00
Robin Gareus 9d1a793fec Mark session dirty after applying MIDI transform 2017-08-22 04:12:18 +02:00
Paul Davis 45eef0be1b slight tweak for more code consistency between ::toggle_solo() and ::toggle_mute() 2017-08-07 12:14:17 -04:00
Robin Gareus c7237a606a Improve Track > Toggle Solo/Mute, include VCAs 2017-08-07 16:29:08 +02:00
Robin Gareus 1cbbbf6aad Update Remove Track(s) dialog to include VCAs 2017-08-06 22:17:54 +02:00
Robin Gareus 0ae9cda51d Allow to select VCAs 2017-08-06 22:17:42 +02:00
Robin Gareus e91821bd76 Fix pasting automation at 0 2017-07-27 03:22:21 +02:00
Johannes Mueller 9bfe404b4e Fix #6280 – region (first_frame()==0) selectable with SnapRegionBoundary
Issue #6280 states that when selecting ranges using SnapToRegionBoundary it's
not possible to select regions with first_frame() == 0. This is because
Playlist::find_next_region() does not consider region boundaries == pos but
only > pos. Thus it never considers pos == 0 to be a region boundary.

This solution tries to be as little invasive as possible without changing the
semantics of PlayList::find_next_region(). Therefore position 0 is added to the
region boundary cache if there's a region starting at position 0 in any track.
2017-07-25 17:39:08 +02:00
nick_m 515cdb6b32 Rework region selection XML
Ensures that selection is restored in the same object type order
it was created in, which may some day make a difference.
2017-07-22 02:15:20 +10:00
nick_m 1d8548306b Cropping a single region to time selection works for multiple ranges
Should fix 7285.
2017-07-22 02:15:20 +10:00
nick_m c54978bd5c Add missing braces to Editor::cut_copy conditional 2017-07-22 02:15:20 +10:00
nick_m c9617b4b16 Editor::playhead_forward/backward_to_grid snaps even in magnetic mode 2017-07-22 02:15:20 +10:00
Ben Loftis 53fba8326c Rationalize Editor Zooming: make it harder for user to step into ridiculous zoom-out scales. 2017-07-19 15:37:59 -05:00
Robin Gareus 1f5ebc5485 Remove ArdourPrompter wrapper 2017-07-17 21:06:04 +02:00
Robin Gareus eb1e423b75 Remove <gtkmm.h> include from header files. 2017-07-17 21:06:04 +02:00
Robin Gareus f9e5e4360e Move more Gtkmm2ext widgets into libwidget 2017-07-17 21:06:04 +02:00
Robin Gareus 5c92613698 Separate Ardour UI widgets into dedicated library 2017-07-17 21:06:04 +02:00
Thomas Brand 63ea7b6516 NO-OP whitespace (updated GH PR #357) 2017-07-01 19:28:26 +02:00
Robin Gareus 555fcb89e5 GUI: prepare for API changes
remove use of
- unbound_min/max
- list->default_value and min/max_y
2017-06-21 18:12:16 +02:00
Robin Gareus d88da33949 NO-OP: whitespace 2017-06-17 04:36:50 +02:00
Robin Gareus dc3ae8d196 Add a "select topmost" track editor action 2017-04-29 12:38:53 +02:00
Tim Mayberry 1519565890 Fix crash when removing time from track with automation
Resolves : #7287
2017-03-10 22:59:58 +10:00
Tim Mayberry ddb4b8a7c3 Add reset region gain action for selected regions 2017-03-04 15:26:00 +10:00
Robin Gareus f0a3c84e8c Fix crash when inserting time with split intersected regions 2017-03-02 21:20:09 +01:00
nick_m 97c4c2a28c complete changes to tempo type.
- this implements in the intention behind the previous commit.
	  a tempo mark is constant until its end has been changed by a
	  shift-drag on the next marker.
2017-02-27 20:16:10 +01:00
nick_m ccb51a8ddb rework tempo editing.
most changes are due to a new design where tempo discontinuities at the
beginning of a ramped section may be set.
this allows easier mapping of live performance, especially in
the common case of a ramped ritard before the beginning of a new section.

feature summary:

holding constraint modifier (shift) while dragging the BBT ruler area
drags the tempo lines by changing the start tempo (as before)

holding copy modifier (control) while dragging the BBT ruler area
drags the tempo lines by changing the end tempo (ahem. not quite there)

dragging a tempo mark while holding constraint (shift) will change the
previous end tempo to match the marker position *worth trying*.

holding constraint and copy modifier (control + shift) while dragging
the BBT ruler area attempts to'pinch' or twist the surrounding tempi
sp that later ones are not repositioned (currently suffereng from
rounding errors)
2017-02-27 20:16:10 +01:00
nick_m b066ad3164 fix missing command in Editor::snap_regions_to_grid ()
- fixes 7246
2017-02-19 07:13:26 +11:00
Robin Gareus 65b38322db GUI action Transport/RecordCountIn 2017-02-13 23:01:11 +01:00
Paul Davis 675c59652c NO-OP: whitespace changes 2017-02-08 20:00:49 +01:00
Paul Davis b911303fdd improved fix for #7208, hopefully 2017-02-08 20:00:36 +01:00
John Emmas 70e4bb30a0 'CheckMenuItem' conflicts with an item already existing in MSVC 2017-02-04 16:14:55 +00:00
nick_m 52d3c2216d more inconsistent menu item fiddling. 2017-02-04 22:57:36 +11:00
nick_m 1cfa6bd69f more messing about with inconsistent menu state. 2017-02-04 22:57:36 +11:00
nick_m f336f4e6d1 allow "Glue to Bars & Beats" in region menu to be in an inconsistent state.
- toggling an inconsistent lock style sets all selected regions
	  to AudioTime
2017-02-04 22:57:36 +11:00
nick_m 59daffea1d rework snap
snap now fills in a struct (MusicFrame) which contins a snapped frame
along with a music divisor.
this gives useful information wrt magnetic snap which may or may not
have rounded to an exact musical position.

region position may now be set musically (using quarter notes for now).

this patch fixes several problems in the current code:

	- dragging a list of music-locked regions now maintains correct
	  musical offsets within the list.

	- splitting regions using magnetic snap works correctly (#7192)

	- cut drag should now work correctly with magnetic snap.

	- musical length of split midi regions is no longer frame based.
2017-02-04 22:57:36 +11:00
Paul Davis cc82fc675b remove editor/mixer selection change signals; make editor and mixer use PresentationInfo::Change more correctly; make Selection a bit smarter when setting track selection 2017-01-27 22:17:53 +01:00
Paul Davis 4333a80cb2 make undo/redo work for Regions > Edit > Close Gaps 2017-01-22 22:16:08 +01:00
Robin Gareus 425cdb7e48 GUI: use new preroll-rec + trim mode 2017-01-19 13:05:54 +01:00
Robin Gareus ebdf3de598 Remove rec-with-preroll, prepare for rework 2017-01-19 13:05:54 +01:00
Robin Gareus 22eae69078 Remove Editor API to calc preroll duration 2017-01-19 13:05:54 +01:00
Robin Gareus ef64c7ba19 Promote the preroll_seconds config option to include musical time:
Interpret negative preroll time as bars
2017-01-18 23:47:50 +01:00
Robin Gareus d650b3c292 prepare for musical-time preroll 2017-01-18 17:31:42 +01:00
Robin Gareus 645402bc42 Add GUI action to record with preroll 2017-01-18 15:16:05 +01:00
Ben Loftis 75c029f65f Support repeated jump-backward-to-mark while playing. 2017-01-12 11:51:43 -06:00
nick_m d0580ecfbc allow all types of range location (loop, start, end etc.) to be glued to bars and beats. 2016-12-29 01:39:31 +11:00
Ben Loftis 3e214eb4ea Tweak behavior of Play-With-Preroll action 2016-12-19 13:14:44 -06:00
Ben Loftis 628c99d555 Follow Edits => Follow Range
* "Follow Edits" button had several behaviors that confused users.
* "Follow Range" only has 2 behaviors:
** Click anywhere in Range mode (or Smart mode) to locate the playhead.
** When you select a Range, "Play" will play the selected range.
2016-12-19 13:14:44 -06:00
Tim Mayberry 89623923bd Change Zoom to Selection action (Z key) to zoom on both axes
Add Zoom to Selection (Horizontal) action to access previous behavior.

Remove Editor::temporal_zoom_region as it was duplicate code and broken for
both_axes

Should Resolve: #7112
2016-12-13 12:25:03 +10:00
Tim Mayberry 6b8cadef01 Don't move the Range Selection after performing Multi Duplicate
This is necessary for a single Duplicate so you can keep duplicating but it
doesn't make sense to move it for Multi Duplicate.
2016-12-06 14:06:18 +10:00
Robin Gareus 0d3c2a9dbf Speed up track deletion when Editor-Mixer is visible 2016-11-28 15:36:04 +01:00
Tim Mayberry 73f3e479d3 Make Cut mode respect snap modifer 2016-11-21 22:19:56 +10:00
Tim Mayberry 37a7d87786 Use the frame corresponding to the current mouse position when zoom dragging
Editor::mouse_frame only works within the track canvas. If a zoom drag is
initiated and the mouse cursor goes outside of the track canvas the zoom
position should still based on the current x position of the cursor.
2016-11-11 14:13:53 +10:00
Tim Mayberry 9485748e17 Change Editor temporal zoom methods to be able to use different scale for the zoom 2016-11-11 14:13:53 +10:00
Robin Gareus 9990da35d8 prevent crash during track-deletion (un-selecting deleted tracks) 2016-11-10 23:20:58 +01:00
Ben Loftis 9a9a9f9eac Track Add/Remove Time dialog improvements:
Add a clock to show the position of the edit, to remove ambiguity
 If a Range is selected, pre-fill the position and length clocks
 Clock format should default to the editor's secondary clock mode
2016-10-20 16:02:18 -05:00
Paul Davis 67540ad0f5 add explicit "duplicate-regions" action 2016-09-27 14:59:31 -05:00
Paul Davis 9c2a517cb0 don't get into nested run loops if quantize is reinvoked (e.g control surface) while already in progress 2016-09-27 14:59:31 -05:00
Paul Davis 3f95b5ac19 closing the normalize dialog should not run normalize (#7016) 2016-09-09 19:15:10 -04:00
Paul Davis 673e580726 fix WM close handling for session lock dialog (#7017) 2016-09-09 19:09:15 -04:00
Paul Davis 400f38c721 single action punch in
Consecutive execution (e.g. from a control surface button) engages punch in, then punch out, then clears both.
Patch by Nathan Stewart
2016-08-27 19:57:40 -04:00