Commit graph

787 commits

Author SHA1 Message Date
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
Paul Davis
e8427ee2cb GUI does an even stronger check on no undo/redo while recording 2016-08-17 19:22:26 -04:00
nick_m
a7032917b1 Remove assumption that the meter starts at frame 0 in Editor::apply_midi_note_edit_op_to_region(). 2016-08-14 04:49:37 +10:00
Nathan Stewart
5b4584ad94 Add "Marker Toggle" #5193 2016-08-13 16:07:16 +02:00
Robin Gareus
836693036a add RMS region normalization option 2016-08-13 14:50:59 +02:00
Paul Davis
6a4fb58384 fix thinko that causes near duplicate menu items in group context menu when not in group tabs 2016-08-08 23:36:33 +02:00
Robin Gareus
ac8f4baa00 add some flush_pending timeouts 2016-07-25 14:51:23 +02:00
Paul Davis
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
Paul Davis
fc06525bb2 two more places where the user can explicitly set the session end now also make the end non-free 2016-07-12 12:31:02 -04:00
Paul Davis
774ad0752a GUI side of : once the user has explicitly set the session range end, playlist/range changes do not move it.
The user may drag the marker, edit in the Location UI, or use nudge, to set the end
2016-07-12 11:19:49 -04:00
Robin Gareus
140258d8ab remove reference "const int32_t&" -> const int32_t"
this simplifies lua-bindings and also let's the compiler worry about
constant primitive types.
2016-07-10 15:30:41 +02:00
nick_m
0bdbe56cf1 Stop passing references to things that may disappear when a metric section is replaced. 2016-07-10 02:18:37 +10:00
nick_m
93c24e4433 Paste uses exact beats. rework _start_beats calculation in copy-with-offset ctor. 2016-07-10 02:18:36 +10:00
nick_m
94e0a15325 Exact beat - provide audio->music mapping for region split.
- for those not in the know, this series provides a way to
	  remove the temporal distortion introduced when using an
	  audio frame-based gui for music-locked objects.

	  In short, the gui uses an audio frame representation to move
	  objects. It displays the object using frame_at_beat(), quantizing
	  the time value to audio frames. This is fine until the user selects
	  that frame but expects it to be interpreted as a beat.
	  Thus beat_at_frame() would not produce the user-expected beat
	  (temporal quantization error of up to 0.5 audio samples).
	  This is one method of mapping audio time to music time accurately.
2016-07-10 02:18:36 +10:00
Paul Davis
f1d9dbf359 fix behaviour of select_(next|prev)_route() in editor, when VCAs are present. 2016-06-10 13:57:19 -04:00
Paul Davis
6baac7d46f various safety checks for the result of dynamic_cast-ing a TimeAxisView to RouteTimeAxisView
Now that we have VCATimeAxisView, this needed to be done, but it also potentially applied with automation
2016-06-02 08:42:58 -04:00
Paul Davis
d30266dfc3 use new record safe control in GUI 2016-05-31 15:30:45 -04:00
Paul Davis
e0ff70cf86 first vaguely working version using PresentationInfo
remote control ID and "order keys" have been removed.
2016-05-31 15:30:42 -04:00
Paul Davis
653ae4acd6 universal change in the design of the way Route/Track controls are designed and used. The controls now own their own state, rather than proxy for state in their owners.
Massive changes all over the code to accomodate this. Many things are not finished. Consider this a backup safety commit
2016-05-31 15:30:40 -04:00
nick_m
aad7b129b6 Tempo ramps - rename meter/tempo_section_at() -> meter/tempo_section_at_frame() 2016-05-27 23:38:18 +10:00
nick_m
baf8f37967 Tempo ramps - rename meter_at() -> meter_at_frame() & make the ticker slightly more efficient. 2016-05-27 23:38:17 +10:00
nick_m
074db3b861 Tempo ramps - more code consolidation wrt add meter/tempo. 2016-05-27 23:38:16 +10:00
nick_m
2d3d7a5355 Tempo ramps - fix ambiguous api, fix flickering tempo curves. 2016-05-27 23:38:16 +10:00
nick_m
618a391346 Preformance - reinstate EditorRegions::freeze_tree_model (). 2016-05-27 23:38:14 +10:00
nick_m
a53d94c3d0 Perfornamce - remove dubious optimisation. 2016-05-27 23:38:13 +10:00
nick_m
58d4889ad3 Tempo ramps - music-locked meters now use beats rather than pulses as their reference.
- fixes many problems with a non-zero audio-locked first meter.
2016-05-27 23:38:12 +10:00
nick_m
a2495cdff3 Tempo ramps - fix more namespace confusion 2016-05-27 23:38:10 +10:00
nick_m
5c6e18e6a0 Tempo ramps - remove the concept of bars from tempo sections.
- this helps where tempo and meter have a somewhat circular
	  dependency.

MetricSection now has a musical position expressed in beats (a double).
MeterSection still has a bbt, but it really isn't needed as we have
enough information to discover the number of bars at a given beat without it.
TempoSection now has a hack to enable loading of legacy sessions, which will
ultimately be a lot cleaner than the current code.

Removing bars from tempo sections also allows us to place them
at arbitrary frames (implemented here).
2016-05-27 23:38:09 +10:00
nick_m
7898435d3f Tempo ramps - define_one_bar() delivers constant tempo.
- also some renaming and code review
2016-05-27 23:38:09 +10:00
nick_m
7fc3b0c34c Initial stab at tempo ramps.
Replaces the list of points in TempoMap with TempoSection functions, which
compute tempo-at or tick-at time relative to tempo section start.
TempoMap consults them additively to determine things like bbt_time(),
frame_time() get_grid() etc.
This has a marked effect on scrolling speed along with the code simplification
in the places it has been attempted.

Several things are broken here.
Currently every ramp except the last one is an exponential ramp. this may
be simple to fix :).
Mouse-over midi grid doesn't match mouse click grid. should also be simple.

Many things seem to work, but their accuracy should be in question until
each area has been addressed.
2016-05-27 23:38:09 +10:00
Robin Gareus
2074dbdbe2 freeze thread is not detached and needs to be joined 2016-05-24 03:33:11 +02:00
Paul Davis
a232673454 make boost shared_ptr debugging a little easier to turn on/off 2016-05-07 13:36:04 -04:00
Robin Gareus
f148d70d41 batch remove tracks 2016-05-03 14:27:57 +02:00
Robin Gareus
8fe2a308a5 GUI updates for transient rework 2016-05-01 02:02:25 +02:00