Commit graph

85 commits

Author SHA1 Message Date
Hans Baier
4aa9d17ab1 * added midnam test file for xpath
* added to_string() to MIDI::Event
* added XMLNode::attribute_value for attribute nodes
* debugging output in MidiModel (incorrect rendering of Pitchbender events: Notes lost
* added xpath tests for midnam files


git-svn-id: svn://localhost/ardour2/branches/3.0@3406 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-23 10:36:51 +00:00
Hans Baier
5e856e94ac * fixed: wrong conversion from double for pitch bender in MidiModel::control_to_midi_event
git-svn-id: svn://localhost/ardour2/branches/3.0@3404 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-23 02:43:09 +00:00
Hans Baier
8c743c2c0c *fix the bugfix: Input and Output Ports exchanged in Track/Bus inspector
*increased buffer sizes to get rid of overruns (PitchBender still doesnt work though....)


git-svn-id: svn://localhost/ardour2/branches/3.0@3403 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-23 02:13:31 +00:00
David Robillard
54bec37b5a Fix corrupt MIDI file writing when meta events are present (fixes missing first note issue on some imported files).
Reduce number of buffer allocations on MIDI read/write.


git-svn-id: svn://localhost/ardour2/branches/3.0@3395 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-22 21:36:27 +00:00
David Robillard
975d410930 Fix MIDI selection/tool issues (issue #0002415 and other bugs).
Fix selection preservation across MIDI model editing commands (for both note moving and resizing).
Fix selection breakage introduced by old selection preservation stuff (fix zombie selection).


git-svn-id: svn://localhost/ardour2/branches/3.0@3381 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-22 01:02:04 +00:00
Hans Baier
7a9b4a0aa2 * bugfix: Inputs and Outputs swapped in the Track/Bus Inspector
* bugfix: control_to_midi_event has no effect
* typo (track/bus inspector)


git-svn-id: svn://localhost/ardour2/branches/3.0@3379 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-21 23:01:40 +00:00
David Robillard
873d884fb2 Separate audio and MIDI disk buffer size (and track read ahead) parameters.
Clean up and remove more unused stuff from MidiDiskstream.
Remove false assumptions that MIDI ring buffer space (bytes) corresponds to disk I/O chunk length (frames).


git-svn-id: svn://localhost/ardour2/branches/3.0@3375 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-21 07:45:45 +00:00
Hans Baier
415131ef53 * fix out of range MIDI event detection
git-svn-id: svn://localhost/ardour2/branches/3.0@3366 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-16 23:50:29 +00:00
David Robillard
415f80dc9f Fix out of range MIDI event error detection (duuuhhhhh).
git-svn-id: svn://localhost/ardour2/branches/3.0@3364 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-16 22:00:14 +00:00
David Robillard
cb94baf6f4 Fix invalid error message during MIDI recording (or files with stuck notes).
Handle stuck notes more gracefully in the view (probably should show up as a diamond though?).


git-svn-id: svn://localhost/ardour2/branches/3.0@3359 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-16 03:11:28 +00:00
David Robillard
f53baec2e4 Tidy up MIDI debugging output.
git-svn-id: svn://localhost/ardour2/branches/3.0@3358 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-16 02:50:19 +00:00
David Robillard
722b85e828 Fix crash on out of range MIDI events (though this shouldn't be possible at all....).
git-svn-id: svn://localhost/ardour2/branches/3.0@3357 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-16 02:35:37 +00:00
David Robillard
504a3d765f Re-comment-out MIDI iteration debug prints (oops).
git-svn-id: svn://localhost/ardour2/branches/3.0@3353 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-15 06:00:22 +00:00
David Robillard
e43da352cc Fix silly bugs introduced in previous commit.
git-svn-id: svn://localhost/ardour2/branches/3.0@3352 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-15 05:53:25 +00:00
David Robillard
05801cc3d6 Eliminate excessive allocation (for every event) during MidiModel iteration.
git-svn-id: svn://localhost/ardour2/branches/3.0@3351 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-15 05:00:28 +00:00
Hans Baier
a65044d097 * formatting
* fixed corruption bugs due to allocation hell of MidiModel::const_iterator::_event: Changed it into boost::shared_ptr
* fixed  MidiModel::const_iterator bugs: 
	-First note on lost, if an automation event comes first
	-corrupt MidiEvent compared to automation event if there are no notes in the region
* (hopefully) fixed possible race condition 
* fixed range check in MidiDiskstream::set_state for channel mask
* treating notes with duration 0 more gently in MidiRegionView (warning instead of assertion)


git-svn-id: svn://localhost/ardour2/branches/3.0@3345 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-13 18:40:10 +00:00
David Robillard
a25be81b5d Fix event allocation issues with MidiModel iteration.
git-svn-id: svn://localhost/ardour2/branches/3.0@3342 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-13 00:15:26 +00:00
David Robillard
bded96269f Remove junk from MidiModel::write_to
git-svn-id: svn://localhost/ardour2/branches/3.0@3341 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-12 23:34:35 +00:00
Hans Baier
277bfa35d5 * Quick Fix: assertion converted into warning in MidiModel::write_to
git-svn-id: svn://localhost/ardour2/branches/3.0@3337 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-12 11:42:41 +00:00
Hans Baier
d467245152 * fixed various event size bugs
git-svn-id: svn://localhost/ardour2/branches/3.0@3336 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-12 10:03:53 +00:00
David Robillard
8ca72c4eca Fix various MIDI corruption bugs.
Re-enable MIDI CC controller bars and other immediate output (hans commented out, tsk tsk).
Write channel mode as textual enumeration instead of magic number.
Better atomic (almost) channel mode switching on MIDI ring buffer (was a possible, if unlikely, source of corruption).
Handle some cases of broken MIDI, and oversized events, more gracefully.


git-svn-id: svn://localhost/ardour2/branches/3.0@3335 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-12 02:40:48 +00:00
Hans Baier
a76e2128ef * disabled some debugging output
* fixed (my) bugs in MidiRingBuffer: aborted reading on corrupted events and event does not match channel mask


git-svn-id: svn://localhost/ardour2/branches/3.0@3333 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-11 21:03:27 +00:00
Hans Baier
ddaaff4483 * Added a couple of guards to prevent MIDI::Events with NULL buffers to enter into ring buffers
git-svn-id: svn://localhost/ardour2/branches/3.0@3332 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-11 20:23:17 +00:00
Hans Baier
4e745fc17c * formatting/style guide
* bugfix: midi_util.h only considered channel events up to E0, but had to be EF
* bugfix: parameter.h operator == should also compare channel (drobilla, correct me if I am wrong)
* added some assert() guards


git-svn-id: svn://localhost/ardour2/branches/3.0@3330 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-09 16:10:36 +00:00
Hans Baier
8d44391f4b * adjusted formatting a bit to style guide
* fixed: velocity value left on canvas
* fixed: end-of-track problem still showed up sometimes
* enabled heaps of debugging output in order to debug MidiModel corruption 


git-svn-id: svn://localhost/ardour2/branches/3.0@3329 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-09 11:28:14 +00:00
Hans Baier
f651190162 * fixed some valgrind issues (uninitialized instance vars)
* Added preliminary support for program changes flags from automation lists


git-svn-id: svn://localhost/ardour2/branches/3.0@3327 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-08 09:53:19 +00:00
Hans Baier
a42913736a * fixed crash bug in MidiModel::const_iterator::operator=: copied iterator from other which becomes invalid because
the container the iterator points into is destroyed
* fixed conditional jump from uninitialised value in CanvasNote


git-svn-id: svn://localhost/ardour2/branches/3.0@3326 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-06 22:54:06 +00:00
Hans Baier
c415c44b9c * fixed crash bug in MidiModel::const_iterator::operator++
git-svn-id: svn://localhost/ardour2/branches/3.0@3325 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-06 21:31:49 +00:00
Hans Baier
98e653714e * enabled some debugging output :|
git-svn-id: svn://localhost/ardour2/branches/3.0@3321 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-06 10:49:16 +00:00
Hans Baier
cb88f8cce9 * fixed end of track at beginning-problem when writing MIDI files (also the EOT event was written multiple times)
git-svn-id: svn://localhost/ardour2/branches/3.0@3317 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-06 05:17:51 +00:00
David Robillard
e55e3fde7c Comment out excessive terminal output.
Write all events (not just notes) to SMF file from MidiModel
	(just use iterator instead of hand-hacked MidiModel::write_to).
Various MIDI bug fixes.


git-svn-id: svn://localhost/ardour2/branches/3.0@3312 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-03 21:55:43 +00:00
David Robillard
d2465f311f Fix midi_model.cc formatting.
Clear controller data (not just note data) in MidiModel::clear.


git-svn-id: svn://localhost/ardour2/branches/3.0@3311 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-03 18:14:35 +00:00
David Robillard
a7ec072ce4 Typo.
git-svn-id: svn://localhost/ardour2/branches/3.0@3310 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-03 07:26:16 +00:00
Hans Baier
b0d49651a7 * MidiModel::const_iterator::operator++: added AUTOMATION type
* automatable.cc/parameter.cc: Added friendly names for the new Midi parameter types
* fixed a failed assertion problem (note on channel != note off channel), but have no idea how :)
* changed lots of whitespace :|


git-svn-id: svn://localhost/ardour2/branches/3.0@3309 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-03 06:37:22 +00:00
David Robillard
fb1fbf71af Fix range problems for pitch wheel controller.
git-svn-id: svn://localhost/ardour2/branches/3.0@3308 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-02 21:34:00 +00:00
David Robillard
ab2af5d185 Fix several crashes on MIDI recording.
Fix MIDI CC iterator infinite looping.
Only allocate Text widget for MIDI events if necessary.


git-svn-id: svn://localhost/ardour2/branches/3.0@3307 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-02 20:57:27 +00:00
Hans Baier
0e394fb66b * removed old implementation for Program Changes from MidiModel
* Added Automation based implementation for Program Changes, Pitch Bender and Channel Aftertouch

git-svn-id: svn://localhost/ardour2/branches/3.0@3304 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-02 19:09:32 +00:00
Hans Baier
38eb5f4539 * renamed canvas-midi-event.* into canvas-note-event.*
* make MidiModel keep track of its CanvasProgramChange instances

git-svn-id: svn://localhost/ardour2/branches/3.0@3297 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-29 21:58:05 +00:00
Hans Baier
58e569c9e1 * Renamed CanvasMidiEvent into CanvasNoteEvent
* changed MidiModel::write_to to include note off handling *and* time sorting

git-svn-id: svn://localhost/ardour2/branches/3.0@3294 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-29 08:37:53 +00:00
Hans Baier
6d319e2132 * first prototype of program changes UI show up correctly (see http://www.flickr.com/photos/24012642@N02/2451596190/)
git-svn-id: svn://localhost/ardour2/branches/3.0@3293 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-29 07:28:24 +00:00
Hans Baier
0fc3087d7d * recording/playing/saving/loading program changes basically seems to work now
git-svn-id: svn://localhost/ardour2/branches/3.0@3288 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-26 00:12:54 +00:00
Hans Baier
d9de6f2c4c * preliminary impl for PGM Change support in MidiModel
git-svn-id: svn://localhost/ardour2/branches/3.0@3283 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-24 15:04:56 +00:00
Hans Baier
53f3b407bb * refactored MidiControlIterator to improve readability of code
* commented out crashing section (control iterator stuff in MidiModel::const_iterator::operator++)
* added midi_panic() on no_roll in midi tracks so that all notes stop when pressing stop
* mark midi model edited on all changes so that recorded tracks get saved


git-svn-id: svn://localhost/ardour2/branches/3.0@3281 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-23 02:15:57 +00:00
Hans Baier
0c66131fea * bugfix in midi editing: adding notes impossible after delete
git-svn-id: svn://localhost/ardour2/branches/3.0@3255 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-16 02:30:37 +00:00
Hans Baier
c4bdcb82af * fixed bug: crash because of invalidated iterator while removing midi notes from model
git-svn-id: svn://localhost/ardour2/branches/3.0@3253 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-15 23:00:06 +00:00
Hans Baier
aae8262a36 * persistent undo for MIDI edits works now
* fixed bug: dragging of notes beyond left region bounds made it disappear (unsigned int wrap around)

git-svn-id: svn://localhost/ardour2/branches/3.0@3249 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-11 15:49:52 +00:00
Hans Baier
9aa8af5a28 * refactored (un)marshalling of DeltaCommand into cleaner code using sigc
git-svn-id: svn://localhost/ardour2/branches/3.0@3245 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-10 07:30:10 +00:00
Hans Baier
1a0044b35d * implemented persistent undo for MidiModel::DeltaCommand. Deserializing works, but weirdly has no effect when undo/redo is applied in the editor
git-svn-id: svn://localhost/ardour2/branches/3.0@3240 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-09 15:33:01 +00:00
Hans Baier
f39606f985 * fixed bug: MIDI region did not sound if its position was less than its start offset
git-svn-id: svn://localhost/ardour2/branches/3.0@3239 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-08 23:57:59 +00:00
Hans Baier
fbfe9a7983 * implemented editing velocities (http://tracker.ardour.org/view.php?id=2148)
* added MIDI panic button (http://tracker.ardour.org/view.php?id=2118)
* bugfix: moving notes above midi 127 or below 0 does not wrap around anymore
* bugfix: deadlock on editing notes after playback (http://tracker.ardour.org/view.php?id=2140) due to unbalanced lock acquire/release
* bugfix: First note off lost in playback (http://tracker.ardour.org/view.php?id=2132)
* bugfix: Last note off lost in saving MIDI files (http://tracker.ardour.org/view.php?id=2132)
* bandaid fix for http://tracker.ardour.org/view.php?id=1985 (Cannot reopen session because jack ports are not unregistered on session close)
* bandaid fix: replaced conf.CheckPKGExists ('\"slv2 >= 0.6.0\"') by conf.CheckPKGExists ('slv2') in SConstruct, because the former would fail, 
  even if SLV 0.6.0 was installed
* added/enabled debugging output for debugging MIDI model (might be removed later)


git-svn-id: svn://localhost/ardour2/branches/3.0@3211 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-04-03 21:47:47 +00:00