Commit graph

115 commits

Author SHA1 Message Date
David Robillard
a8aae56d92 Handle edits while playing precisely.
This avoids stuck notes if active notes are edited, but without stopping all
active notes in the region on any edit as before.

This implementation injects note ons in places that aren't actually note
starts.  Depending on how percussive the instrument is, this may not be
desired.  In the future, an option for this would be an improvement, but there
are other places where "start notes in the middle" is a reasonable option.  I
think that should be handled universally if we're to do it at all, so not
considering it a part of this fix for now.
2015-03-05 17:30:31 -05:00
David Robillard
6fb4bd578e Don't allocate then discard notes on note off.
Silly to make a junk Note just to pass to append_note_off_unlocked, which just
uses the fields that are on the MIDIEvent anyway then throws it away.

Also explicitly dispatch to append_note_off_unlocked in the caller for note ons
with velocity 0 rather than make append_note_on_unlocked deal with it.
2015-02-19 18:38:30 -05:00
David Robillard
6a033a093b Remove unused ifdef gunk. 2015-02-19 18:38:30 -05:00
David Robillard
2a251b4570 MusicalTime => Beats. 2015-01-07 00:12:07 -05:00
David Robillard
97d344f740 Fix MIDI CC record/playback crash. 2014-12-30 14:45:11 -05:00
David Robillard
cf6e9d3412 Blind fix for MIDI iteration bug. 2014-12-29 15:12:10 -05:00
David Robillard
ad340333f4 Revert "Create discrete lists for recorded MIDI controls."
This broke saving/restoring interpolation style.

This reverts commit 07a381a8f5.
2014-12-05 00:03:47 -05:00
David Robillard
07a381a8f5 Create discrete lists for recorded MIDI controls. 2014-12-02 00:21:52 -05:00
David Robillard
767c0238a3 Replace half-baked param metadata with descriptor.
Among other things, this means that automation controls/lists have the actual
min/max/normal/toggled of parameters, and not those inferred from the Parameter
ID, which is not correct for things like plugin parameters.

Pushing things down to the Evoral::ParmeterDescriptor may be useful in the
future to have lists do smarter things based on parameter range, but currently
I have just pushed down the above-mentioned currently used attributes.
2014-12-01 23:35:24 -05:00
David Robillard
0ffeaa6d6a Remove braindead Parameter inheritance abuse. 2014-11-30 23:56:20 -05:00
David Robillard
c1cfa12d6e Wrap MusicalTime in a class.
This lets us get a more explicit handle on time conversions, and is the main
step towards using actual beat:tick time and getting away from floating point
precision problems.
2014-11-22 04:05:42 -05:00
David Robillard
4bc0d1c475 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.
2014-11-20 15:36:11 -05:00
Robin Gareus
6b3a8915f3 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)
2014-11-14 11:30:08 +01:00
David Robillard
8907477271 Fix crashes on various MIDI editing operations.
Assertions assumed old strict ordering, no longer reflecting reality of fuzzy
time comparison (introduced in 86f1b8).
2014-11-13 22:34:20 -05:00
John Emmas
bc34d6f731 'libs/evoral' - For each of the NNNN_lower_bound() functions (3 in total) add a non-const iterator to supplement the existing const_iterator 2013-07-23 07:56:30 +01:00
Michael R. Fisher
65eb0b845f Include evoral/Note.hpp before pbd/compose.h
- This workaround prevents a clang compiler error about template
  visibility
2013-07-15 22:57:34 -05:00
Paul Davis
f04c35cb1c reduce verbosity of DEBUG::Sequence traces 2013-05-02 10:11:31 -04:00
Paul Davis
86f1b8c71f major fixes for MIDI patch change and note undo/redo. Patch change handling was completely broken because of the use of absolute floating point comparisons for time comparison, and serialization/deserialization of patch change property changes was borked because of int/char conversions by stringstream. Note undo/redo would fail for note removal if a note had been moved and/or had its note number changed as the next operation after it was added, because time-based lookup would fail. Similar small changes made for sysex messages, which just needed the musical_time comparisons and nothing else 2013-03-29 11:52:25 -04:00
Hans Baier
e36c855464 issue 0005121: added comment to source. Sorry, last commit was for issue 0005121, not 0005120, copied from the wrong line :[
git-svn-id: svn://localhost/ardour2/branches/3.0@13252 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-12 06:04:06 +00:00
Hans Baier
2625fd9be8 fix issue 0005120: dont treat percussive mode differently than sustained mode except in GUI. Leaving out all note offs crashes LinuxSampler and totally drowns my Yamaha PSR-S900 by stealing all its available voices. Code is #ifdef-ed out until a more thorough discussion would conclude the removal of percussive mode from the MIDI model, which IMHO makes sense. I don't see any virtue in leaving out note offs since it only creates problems.
git-svn-id: svn://localhost/ardour2/branches/3.0@13251 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-12 05:58:47 +00:00
Hans Baier
97c23848d7 implement deleting of sysex events
git-svn-id: svn://localhost/ardour2/branches/3.0@13238 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-11 03:22:17 +00:00
Paul Davis
f97da74cf7 code motion to put Sequence::{add,append}_patch_changed_unlocked() next to each other as candidates for removal
git-svn-id: svn://localhost/ardour2/branches/3.0@13045 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-16 14:46:21 +00:00
Paul Davis
2449a787c5 fix a build issue in Evoral that was preventing Sequencer<T>::dump() from being available, and expose operator<< for Sequence<T>
git-svn-id: svn://localhost/ardour2/branches/3.0@11054 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-22 02:09:39 +00:00
David Robillard
efe14fbd52 Fix broken whitespace via merciless application of the emacs hammer.
git-svn-id: svn://localhost/ardour2/branches/3.0@10782 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-23 00:17:31 +00:00
Paul Davis
2929cd1c36 tweak debug output
git-svn-id: svn://localhost/ardour2/branches/3.0@10780 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-22 20:29:41 +00:00
David Robillard
18c2ee4a26 Remove dubious Evoral::Event methods that exposed non-const references to members.
git-svn-id: svn://localhost/ardour2/branches/3.0@10239 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-19 18:11:31 +00:00
Paul Davis
0938a42440 fixes for 98% of all the warnings/errors reported by OS X gcc on tiger
git-svn-id: svn://localhost/ardour2/branches/3.0@10179 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-30 17:55:14 +00:00
Paul Davis
a8449db466 finish the intention of the previous commit, correctly this time
git-svn-id: svn://localhost/ardour2/branches/3.0@9979 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-08-11 16:06:31 +00:00
Paul Davis
1f845c0e32 do not assert/abort out of data errors that may originate with external user-supplied data, and use PBD::error instead
git-svn-id: svn://localhost/ardour2/branches/3.0@9978 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-08-11 15:58:28 +00:00
Paul Davis
921358a5f3 remove remnant of MIDI I/O debugging
git-svn-id: svn://localhost/ardour2/branches/3.0@9937 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-26 16:24:41 +00:00
Paul Davis
c99738d88e try to fix data loss at end of a capture pass for MIDI - add a new virtual method to MidiSource that specifies what should be done with stuck notes, remove duplicate(i hope) _last_flush_frame from SMFSource that mirrored, more or less, MidiSource::_last_write_end; use new virtual method when stopping after capture.
git-svn-id: svn://localhost/ardour2/branches/3.0@9910 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-20 18:13:03 +00:00
Carl Hetherington
26666fce42 Remove an assert() that I can't see the value of, and which
trips when loading empty MIDI files (#4190).


git-svn-id: svn://localhost/ardour2/branches/3.0@9883 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-16 20:55:14 +00:00
Paul Davis
a5efa9a500 initial pass at session-renaming functionality
git-svn-id: svn://localhost/ardour2/branches/3.0@9876 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-14 17:41:06 +00:00
Paul Davis
160f1493fa more midi io debugging
git-svn-id: svn://localhost/ardour2/branches/3.0@9868 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-13 20:14:53 +00:00
Paul Davis
be614d0538 change default overlapping note strategy to "relax" (i.e. do nothing); fix crash when looping with MIDI data; add back note-off resolution at loop point (if it was actually there) so that notes are turned off (but don't forget Ye Olde Sustain Pedal/Controller) when looping; minor other non-functional tweaks
git-svn-id: svn://localhost/ardour2/branches/3.0@9753 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-21 21:29:22 +00:00
Carl Hetherington
819faa3b0b Remove unnecessary duplicate take of Sequence's read_lock.
git-svn-id: svn://localhost/ardour2/branches/3.0@9537 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-17 12:01:05 +00:00
Carl Hetherington
c86ccc7db2 Minor tidy-ups.
git-svn-id: svn://localhost/ardour2/branches/3.0@9536 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-17 12:00:10 +00:00
Carl Hetherington
47018e771d Fix erroneous masking when loading bank changes (part of #3916).
git-svn-id: svn://localhost/ardour2/branches/3.0@9359 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-16 15:10:25 +00:00
David Robillard
0906b39918 Fix my name :)
git-svn-id: svn://localhost/ardour2/branches/3.0@9302 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-06 15:00:16 +00:00
Carl Hetherington
64e43bf4b1 Fix crash with debug enabled.
git-svn-id: svn://localhost/ardour2/branches/3.0@8613 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-01-29 19:36:01 +00:00
Carl Hetherington
f8ebb4582d Unify program change and bank handling so that they are manipulated together.
git-svn-id: svn://localhost/ardour2/branches/3.0@8346 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-12-28 18:19:40 +00:00
Carl Hetherington
ad916f6241 Fix a few bad iterator accesses.
git-svn-id: svn://localhost/ardour2/branches/3.0@8231 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-12-09 21:35:33 +00:00
Carl Hetherington
56554af08f Revert previous ill-thought-out patch.
git-svn-id: svn://localhost/ardour2/branches/3.0@8213 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-12-07 19:55:43 +00:00
Carl Hetherington
f3fc6195bc Allow trim of midi regions to before the start of the source. Fixes #3156.
git-svn-id: svn://localhost/ardour2/branches/3.0@8212 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-12-07 19:16:23 +00:00
Paul Davis
b85b4d9e54 make ardour3 build and link on OS X (tiger, at least)
git-svn-id: svn://localhost/ardour2/branches/3.0@8018 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-11-13 05:14:48 +00:00
Carl Hetherington
f761f13f6b Don't cut output rate of non-interpolated controllers.
git-svn-id: svn://localhost/ardour2/branches/3.0@7852 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-09-28 18:47:24 +00:00
Carl Hetherington
42a23312a0 Slightly hacky but functional fix for large quantities of MIDI output when interpolating sharp changes in controller value. Fixes #3476.
git-svn-id: svn://localhost/ardour2/branches/3.0@7840 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-09-24 14:05:20 +00:00
Paul Davis
98d994f29c fix a variety of unused argument errors noted by gcc 4.3.2 on x86
git-svn-id: svn://localhost/ardour2/branches/3.0@7733 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-09-02 17:01:36 +00:00
Carl Hetherington
cdb3ade9ff Fix automation re-load.
git-svn-id: svn://localhost/ardour2/branches/3.0@7664 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-08-20 23:58:09 +00:00
Paul Davis
a4d9d09af5 forward port 2.X changes up to and including rev 6714
git-svn-id: svn://localhost/ardour2/branches/3.0@7635 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-08-16 19:58:34 +00:00