David Robillard [Fri, 21 Nov 2014 07:37:42 +0000 (02:37 -0500)]
Factor out copy-paste code to get grid type in beats defaulting to 1.
David Robillard [Thu, 20 Nov 2014 22:36:09 +0000 (17:36 -0500)]
Move time converters only to the region views that actually need them.
A step towards sorting out time issues more solidly, the time situation of MIDI
region views and automation region views is slightly different.
Robin Gareus [Fri, 21 Nov 2014 22:12:17 +0000 (23:12 +0100)]
add a variable to specify windows build concurrency
David Robillard [Thu, 20 Nov 2014 20:36:11 +0000 (15:36 -0500)]
Fix lost MIDI note offs and controllers.
Fix initial read of discrete MIDI controllers.
Fix spurious note offs when starting to play in the middle of a note.
Faster search for initial event when cached iterator is invalid.
So much for dropping the cached iterator. The iterator is responsible for
handling note offs, so that doesn't work. This design means we have some stuck
note issues at the source read level, but they should be taken care of by the
state tracker anyway.
David Robillard [Thu, 20 Nov 2014 20:32:06 +0000 (15:32 -0500)]
Reduce unnecessary non-const MIDI buffer access.
David Robillard [Thu, 20 Nov 2014 17:01:39 +0000 (12:01 -0500)]
Use memento_command_binder() to (probably) fix MSVC build and other things.
Remove ugly hack that does the same thing.
David Robillard [Thu, 20 Nov 2014 01:47:18 +0000 (20:47 -0500)]
Clean up some MIDI code.
David Robillard [Thu, 20 Nov 2014 01:46:03 +0000 (20:46 -0500)]
Remove unused variables.
Robin Gareus [Thu, 20 Nov 2014 01:46:30 +0000 (02:46 +0100)]
debug trace lost midi-messages
David Robillard [Thu, 20 Nov 2014 00:24:07 +0000 (19:24 -0500)]
Fix dropped MIDI events, especially with record enabled.
I am not precisely sure why the cached iterator was causing this problem, it
shouldn't be invalidated, and the times make sense. It may be some lock
related issue since the iterator holds a lock on the source.
In any case, this cached iterator was just to avoid repeated linear search of
the model, but since the model has a logarithmic search, instead just scrap all
this problematic persistent state and search for the appropriate start time
every read. No need to be careful about invalidating when anything changes.
Ben Loftis [Wed, 19 Nov 2014 23:27:13 +0000 (17:27 -0600)]
fix range selection of mixer strips; shift+selecting a single strip would select from there til the end
Robin Gareus [Wed, 19 Nov 2014 19:38:50 +0000 (20:38 +0100)]
some const'ness and hints for clang
Robin Gareus [Tue, 18 Nov 2014 22:39:35 +0000 (23:39 +0100)]
copy hotspots file when packaging windows cursors
Robin Gareus [Tue, 18 Nov 2014 22:39:00 +0000 (23:39 +0100)]
also load hotspot file (if it exists) for default cursors
Ben Loftis [Tue, 18 Nov 2014 23:04:23 +0000 (17:04 -0600)]
allow dummy backend for any product
Robin Gareus [Tue, 18 Nov 2014 21:32:06 +0000 (22:32 +0100)]
fix windows icon deply path
Robin Gareus [Tue, 18 Nov 2014 21:11:12 +0000 (22:11 +0100)]
drop hotspot info when changing cursors.
Robin Gareus [Tue, 18 Nov 2014 21:08:51 +0000 (22:08 +0100)]
deploy square cursors as default for windows
Robin Gareus [Tue, 18 Nov 2014 21:00:58 +0000 (22:00 +0100)]
add square cursors (for windows)
cursor icons squared with north-west gravity.
hotspots are identical to original icons.
otherwise gdkcursor-win32 creates square cursors with
center gravity and hotspot X/Y differs.
Robin Gareus [Tue, 18 Nov 2014 20:59:28 +0000 (21:59 +0100)]
tabs are tabs and spaces are spaces
see http://ardour.org/styleguide.html #26
Robin Gareus [Tue, 18 Nov 2014 20:59:04 +0000 (21:59 +0100)]
assert no null pointer dereference
Jeremy Carter [Sat, 15 Nov 2014 01:34:05 +0000 (20:34 -0500)]
Plugin Automation All: Fix bug where Switches weren't being changed.
David Robillard [Tue, 18 Nov 2014 07:52:56 +0000 (02:52 -0500)]
Make MIDI channel selector rows/col constraints actually do something.
Seems kind of pointless since it's always 4 anyway, but whatever.
David Robillard [Tue, 18 Nov 2014 07:37:30 +0000 (02:37 -0500)]
Avoid possible use of uninitialized values.
This could only happen with a broken widget, but it shuts up clang and doesn't
hurt.
David Robillard [Tue, 18 Nov 2014 07:36:28 +0000 (02:36 -0500)]
Remove obviously dead/redundant code.
David Robillard [Tue, 18 Nov 2014 07:35:35 +0000 (02:35 -0500)]
Clean up funny code and initialize variables.
David Robillard [Tue, 18 Nov 2014 07:34:18 +0000 (02:34 -0500)]
Constrain variable scopen and avoid uninitialized values existing at all.
Note: dead assignments trigger scan-build dead code warnings, which
initializations do not.
David Robillard [Tue, 18 Nov 2014 07:31:54 +0000 (02:31 -0500)]
Remove unused variable and redundant arithmetic.
David Robillard [Tue, 18 Nov 2014 07:29:50 +0000 (02:29 -0500)]
Gracefully avoid importing audio that somehow has 0 channels.
David Robillard [Tue, 18 Nov 2014 07:27:25 +0000 (02:27 -0500)]
Fix potential use of uninitialized value.
David Robillard [Tue, 18 Nov 2014 07:26:56 +0000 (02:26 -0500)]
Fix NULL pointer dereference on malformed Playlist XML.
David Robillard [Tue, 18 Nov 2014 07:26:37 +0000 (02:26 -0500)]
Avoid potential division by zero.
David Robillard [Tue, 18 Nov 2014 07:25:02 +0000 (02:25 -0500)]
Fix broken logic and possible NULL pointer dereference for Bundle XML.
David Robillard [Tue, 18 Nov 2014 07:23:49 +0000 (02:23 -0500)]
Fix incredibly unlikely NULL pointer dereference.
David Robillard [Tue, 18 Nov 2014 07:23:28 +0000 (02:23 -0500)]
Fix Region::verify_length() so it actually does something.
David Robillard [Tue, 18 Nov 2014 07:22:44 +0000 (02:22 -0500)]
Fix incredibly unlikely NULL pointer dereference.
David Robillard [Tue, 18 Nov 2014 07:22:06 +0000 (02:22 -0500)]
Fix zoom out limiting logic to actually limit minimum zoom.
David Robillard [Tue, 18 Nov 2014 07:20:38 +0000 (02:20 -0500)]
Fix mismatched note resize drag cursor and behaviour.
David Robillard [Tue, 18 Nov 2014 07:19:03 +0000 (02:19 -0500)]
Fix edit point selector on Mixbus.
Robin Gareus [Tue, 18 Nov 2014 05:15:22 +0000 (06:15 +0100)]
remove cruft
Robin Gareus [Tue, 18 Nov 2014 04:28:27 +0000 (05:28 +0100)]
Robin Gareus [Tue, 18 Nov 2014 03:46:37 +0000 (04:46 +0100)]
silence clang "dead assignment" warnings
Robin Gareus [Tue, 18 Nov 2014 02:49:20 +0000 (03:49 +0100)]
synchronize preferences and monitor-section
Robin Gareus [Tue, 18 Nov 2014 01:13:15 +0000 (02:13 +0100)]
files should have at least one channel.
Robin Gareus [Tue, 18 Nov 2014 01:09:09 +0000 (02:09 +0100)]
remove cruft (monitor section knobs are cairo now)
Robin Gareus [Tue, 18 Nov 2014 00:39:57 +0000 (01:39 +0100)]
NOOP, re-indent and remove trailing whitespace
Robin Gareus [Tue, 18 Nov 2014 00:09:18 +0000 (01:09 +0100)]
remove dead assignment
Robin Gareus [Tue, 18 Nov 2014 00:09:00 +0000 (01:09 +0100)]
remove superfluous if-branch (_session is checked a few lines above)
David Robillard [Tue, 18 Nov 2014 00:53:30 +0000 (19:53 -0500)]
Fix "maybe" rounding bug.
Introduced in
d63161426f256c293c92b73f1be4b375f962d298.
Robin Gareus [Mon, 17 Nov 2014 08:07:39 +0000 (09:07 +0100)]
waves/coreaudio PPC support
Robin Gareus [Mon, 17 Nov 2014 06:49:16 +0000 (07:49 +0100)]
OSX packaging:
* postfix DMG with "-dbg" if not optimized.
* strip binary and libs if optimized
Robin Gareus [Mon, 17 Nov 2014 05:41:01 +0000 (06:41 +0100)]
check alsa midi ringbuffer
David Robillard [Mon, 17 Nov 2014 05:13:53 +0000 (00:13 -0500)]
Fix visibility of MIDI controller automation tracks across saves.
Fix some inaccurate/misleading comments that led to said bug.
Gracefully handle the "impossible" case where we can't figure out a state ID
for an automation track, instead of crashing.
David Robillard [Mon, 17 Nov 2014 03:46:59 +0000 (22:46 -0500)]
Don't hide selected control points.
There was already code for this, but actually setting the corresponding
visibility flags seems to have been lost at some point.
David Robillard [Mon, 17 Nov 2014 03:35:37 +0000 (22:35 -0500)]
Support cut/copy/paste of MIDI notes and controllers at the same time.
David Robillard [Sun, 16 Nov 2014 22:04:27 +0000 (17:04 -0500)]
Support cut/copy/paste of several regions and lines at once.
The idea here is to do the reasonable thing, and copy objects of some
type (e.g. MIDI region, gain line) to tracks with a matching type. The user
can override this with a track selection, which will be used straight-up.
Lost: ability to copy/paste lines across types, e.g. gain to pan. This is
often questionable, but sometimes useful, so we will need to implement some
sort of "greedy mode" to make it possible. Implementation simple, but not sure
what to do. Perhaps this should only be possible if one automation track is
explicitly (i.e. via track selection) involved, and the types are at least
compatible-ish?
David Robillard [Sun, 16 Nov 2014 21:48:15 +0000 (16:48 -0500)]
Don't add spurious points when copy/pasting automation.
David Robillard [Sun, 16 Nov 2014 07:51:18 +0000 (02:51 -0500)]
Reset repeated paste state on cut/copy.
David Robillard [Sun, 16 Nov 2014 07:09:33 +0000 (02:09 -0500)]
Don't add origin value to MIDI controller regions on initial insert.
This should probably hijack the same modifier as the guard points and work the
same on all automation tracks, but I did it this way to not change behaviour of
track automation where a default is much more reasonable.
David Robillard [Sun, 16 Nov 2014 07:01:02 +0000 (02:01 -0500)]
Add "maybe" rounding modes for rounding only if necessary.
David Robillard [Sun, 16 Nov 2014 06:05:21 +0000 (01:05 -0500)]
Use an enum for RoundMode instead of magic numbers.
No functional changes in this one (for easier auditing), but towards having
round up/down only if necessary modes, rather than kludging around that
situation with a double round as we do currently.
David Robillard [Sun, 16 Nov 2014 03:42:51 +0000 (22:42 -0500)]
Make selected control points bright red rather than vice-versa.
David Robillard [Sat, 15 Nov 2014 23:53:53 +0000 (18:53 -0500)]
Make ControlList::paste const-correct.
David Robillard [Sat, 15 Nov 2014 21:32:08 +0000 (16:32 -0500)]
Use symbol for paste operation like everywhere else.
David Robillard [Sat, 15 Nov 2014 20:56:56 +0000 (15:56 -0500)]
Fix crash when splitting regions in internal edit mode.
Robin Gareus [Mon, 17 Nov 2014 03:05:00 +0000 (04:05 +0100)]
prevent segfault if in/out property is missing
Robin Gareus [Mon, 17 Nov 2014 02:58:05 +0000 (03:58 +0100)]
NULL pointer dereference?
Robin Gareus [Mon, 17 Nov 2014 02:49:19 +0000 (03:49 +0100)]
add some assert() messages.
as hints clang static analyzer "Called C++ object pointer is null"
Robin Gareus [Mon, 17 Nov 2014 02:28:33 +0000 (03:28 +0100)]
fix logic (and possible segfault if !editor)
Robin Gareus [Sat, 15 Nov 2014 18:41:00 +0000 (19:41 +0100)]
round control-scroll offsets towards zero
fixes MCU "Locate called for negative sample position"
Robin Gareus [Sat, 15 Nov 2014 18:27:17 +0000 (19:27 +0100)]
fix compilation with --no-nls
David Robillard [Sat, 15 Nov 2014 08:48:40 +0000 (03:48 -0500)]
Fix selection in automation regions (MIDI controllers).
We shouldn't have to manually drive the drag here, but if the ARV handler
returns false, the event doesn't propagate correctly for some reason and the
drag is not driven by the Editor.
David Robillard [Sat, 15 Nov 2014 07:58:39 +0000 (02:58 -0500)]
Fix entering/editing MIDI region "automation" (controllers).
Two issues:
1) AutomationRegionView not receiving events (CC breakage).
2) Entered values must be rounded to integer for MIDI controllers. This should
be done more generically with ParameterDescriptor for all controls (also
supporting boolean toggles and such), once ParameterDescriptor becomes more
pervasive and takes over Evoral::Parameter, but this will do for now.
David Robillard [Sat, 15 Nov 2014 07:04:28 +0000 (02:04 -0500)]
Fix MIDI region keyboard editing (add key handling to canvas).
David Robillard [Sat, 15 Nov 2014 07:03:40 +0000 (02:03 -0500)]
Only create MIDI regions on click when in draw mode.
It was much too easy to accidentally create MIDI regions in object mode. If
the user isn't in draw mode anyway, then even after creating a region, they
can't put notes in it, so I don't think we've lost any discoverability here.
David Robillard [Sat, 15 Nov 2014 04:53:59 +0000 (23:53 -0500)]
Fix crash when copying MIDI regions with midi-copy-is-fork is on (#6002).
David Robillard [Sat, 15 Nov 2014 02:19:09 +0000 (21:19 -0500)]
Fix out of order event errors on save with overlapping notes.
Another consequence of fuzzy Sequence timing, but if the difference is less
than a tick this should handle things correctly. If the difference is more
than a tick, something's wrong, and it might be okay to just bump forward
anyway, but I can't reproduce this and it could lead to corruption so I'm
leaving that case noisy.
David Robillard [Sat, 15 Nov 2014 01:04:09 +0000 (20:04 -0500)]
Implement "multi-paste" for notes, regions, and automation.
The idea here is that pasting several times to the same location doesn't make
sense. Instead, the paste is appended past the last paste, snapped to the
grid. This make it simple to replicate a given section a number of times,
simply by copying once and pasting several times.
This behaviour only appears when successive pastes are done to the same
location (whatever the edit point is). When the paste point changes, the
"multi-paste" state is reset.
Boots 'n cats 'n boots 'n cats.
David Robillard [Sat, 15 Nov 2014 00:21:29 +0000 (19:21 -0500)]
Fix missing return statement in deleted region scenario.
David Robillard [Fri, 14 Nov 2014 22:33:02 +0000 (17:33 -0500)]
Fix MIDI note cut/copy/paste.
Paul Davis [Fri, 14 Nov 2014 22:16:06 +0000 (17:16 -0500)]
add Jeremy Carter to the about authors list
Paul Davis [Fri, 14 Nov 2014 22:14:48 +0000 (17:14 -0500)]
fix up some suboptimal and crash-prone aspects of
7c263f3bc4f3bddd8094c9baecf584503012acc8 from Jeremy Carter
Jeremy Carter [Fri, 14 Nov 2014 20:35:19 +0000 (15:35 -0500)]
bcf2000: make play button toggle roll
Jeremy Carter [Fri, 14 Nov 2014 19:52:58 +0000 (14:52 -0500)]
Fix ChannelLeft command in
BCF2000 mackie profile
Jeremy Carter [Fri, 14 Nov 2014 18:34:15 +0000 (13:34 -0500)]
Merge remote-tracking branch 'upstream/master'
Robin Gareus [Fri, 14 Nov 2014 09:47:43 +0000 (10:47 +0100)]
add abort() to non-reached code
This cleans up a lot of false-positives in static analysis
and also helps compilers to optimize code paths in general.
(tagging the fatal stingstream operator as ‘noreturn’ is
far less trivial)
David Robillard [Fri, 14 Nov 2014 07:28:15 +0000 (02:28 -0500)]
Fix various sticky/broken cursor issues.
This still isn't quite right, but it's a lot less broken than before, at least.
Robin Gareus [Fri, 14 Nov 2014 07:16:25 +0000 (08:16 +0100)]
the return of the PPC nostalgia
David Robillard [Fri, 14 Nov 2014 05:33:05 +0000 (00:33 -0500)]
Fix wonky note length when create-dragging notes backwards.
Specifically, when pivoting from forwards to backwards (around the drag start
point), the note length was too long. Setting both the start and end x
coordinates of the rect every time to the right value does the right thing.
David Robillard [Fri, 14 Nov 2014 05:31:28 +0000 (00:31 -0500)]
Fix error when create-dragging note backwards past start of region (#5934).
David Robillard [Fri, 14 Nov 2014 04:33:11 +0000 (23:33 -0500)]
Don't make MIDI regions in note mode completely invisible.
This makes for extremely confusing behaviour, particularly when creating new
regions. This is still probably too transparent, IMO, but at least isn't
totally mysterious. "visible" is a bit of a misnomer in the code, now.
David Robillard [Fri, 14 Nov 2014 03:34:20 +0000 (22:34 -0500)]
Fix crashes on various MIDI editing operations.
Assertions assumed old strict ordering, no longer reflecting reality of fuzzy
time comparison (introduced in 86f1b8).
David Robillard [Fri, 14 Nov 2014 03:18:15 +0000 (22:18 -0500)]
Fix crash after deleting automation region views (#4718).
David Robillard [Fri, 14 Nov 2014 02:32:08 +0000 (21:32 -0500)]
Fix crash when deleting overlapped regions.
Use RegionSelection for MIDI regions as well, since the old dumb stub didn't do
some things correctly. There's probably no reason to have a separate class for
this at all, and some good ones for putting all regions in the same selection,
so we should probably do that. For now they are still separate in the
selection but use the same base class.
Robin Gareus [Thu, 13 Nov 2014 21:19:22 +0000 (22:19 +0100)]
yet another copy/paste typo :(
Robin Gareus [Thu, 13 Nov 2014 20:46:30 +0000 (21:46 +0100)]
Robin Gareus [Thu, 13 Nov 2014 20:35:36 +0000 (21:35 +0100)]
Linux-bundle: deploy all compiled backends
Robin Gareus [Thu, 13 Nov 2014 20:31:09 +0000 (21:31 +0100)]
auto-initialize weak-jack
(not needed with ardour - but keep code in sync with
https://github.com/x42/weakjack)
Robin Gareus [Thu, 13 Nov 2014 20:30:13 +0000 (21:30 +0100)]
prepare for JACK meta-data API
Robin Gareus [Thu, 13 Nov 2014 20:29:34 +0000 (21:29 +0100)]
make new jack thread API functions optional