otherwise it is possible to drag a note with a size large enough to
be considered valid and smaller than half the grid distance. These
get snapped to zero length and thus appear infinitely long in the view.
A second try at fixing #3159.
git-svn-id: svn://localhost/ardour2/branches/3.0@7151 d708f5d6-7413-0410-9779-e7cbd77b26cf
Make Sequence::read_lock const correct in the process (a read lock can be taken out on a const Sequence, but not a write lock).
git-svn-id: svn://localhost/ardour2/branches/3.0@5857 d708f5d6-7413-0410-9779-e7cbd77b26cf
* Install ardour3_ui_default.conf to system config dir
* Set -DDATA_DIR etc. defines to proper absolute paths
* Set default MIDI control port name to "control"
(it was "control" some places, "default" other, so the generic MIDI
control surface didn't work. The real problem here is probably that
the name is hardcoded in the surface code, ick)
* Install surfaces to correct system directory
* Generate and install ardour_system.rc
User POV:
* Installed versions not run from the source directory discover configuration
files and surfaces, and generally work
* Building and/or starting a fresh copy of ardour3 with no pre-existing
configuration will run an ardour with a single MIDI "control" port, which
you can plug a surface into and control MMC and controllers and such
(after turning on the generic MIDI surface, which IMO should be loaded
by default anyway, especially since it's no longer in a menu)
git-svn-id: svn://localhost/ardour2/branches/3.0@5833 d708f5d6-7413-0410-9779-e7cbd77b26cf
Vimmers, try let c_space_errors = 1 in your .vimrc to highlight this kind of stuff in red. I don't know the emacs equivalent...
git-svn-id: svn://localhost/ardour2/branches/3.0@5773 d708f5d6-7413-0410-9779-e7cbd77b26cf
Only show note velocity text when the user is actually editing velocity.
git-svn-id: svn://localhost/ardour2/branches/3.0@5047 d708f5d6-7413-0410-9779-e7cbd77b26cf
All #include statements that include a header that is a part of a library
bundled with ardour MUST use quotes, not angle brackets.
Do this:
#include "ardour/types.h"
NOT this:
#include <ardour/types.h>
Rationale:
This is best practice in general, to ensure we include the local version
and not the system version. That quotes mean "local" (in some sense)
and angle brackets mean "system" (in some sense) is a ubiquitous
convention and IIRC right in the C spec somewhere.
More pragmatically, this is required by (my) waf (stuff) for dependencies
to work correctly. That is:
!!! FAILURE TO DO THIS CAN RESULT IN BROKEN BUILDS !!!
Failure to comply is punishable by death by torture. :)
P.S. It's not that dramatic in all cases, but this (in combination with some
GCC flags specific to the include type) is the best way I have found to be
absolutely 100% positive the local ones are being used (and we definitely
want to be absolutely 100% positive on that one).
git-svn-id: svn://localhost/ardour2/branches/3.0@4655 d708f5d6-7413-0410-9779-e7cbd77b26cf
Update MIDI region length (actually and visually) when position changes.
git-svn-id: svn://localhost/ardour2/branches/3.0@4644 d708f5d6-7413-0410-9779-e7cbd77b26cf
Move time conversion into the region view rather than the source.
Adapt MIDI (including controllers) regions to the destination tempo when moved (e.g. dragging a region to a location with half the tempo will make the notes twice as long).
git-svn-id: svn://localhost/ardour2/branches/3.0@4635 d708f5d6-7413-0410-9779-e7cbd77b26cf
This has 3 main benefits:
- All conversion code is in one place (less duplication, potential bugs)
- The conversion method can be passed to things that are ignorant
of the actual time units involved, information required, etc.
(In the future it would be nice to have user selectable tempo/frame time)
- It should be relatively simple now to support tempo changes part-way
through a MIDI region (at least architecturally speaking)
git-svn-id: svn://localhost/ardour2/branches/3.0@4594 d708f5d6-7413-0410-9779-e7cbd77b26cf
The time stamp of an event is now always tempo, from file to model and
back again. Frame time is only relevant at playback or recording time,
in the audio thread (MidiModel and MidiBuffer).
I think perhaps we don't need to change the actual time from double (which is
convenient for math), it is the time base conversion that caused problems.
Using a correct equality comparison (i.e. not == which is not correct for
floating point) should probably make the undo issues go away, in 99.99% of
cases anyway.
There's almost certainly some regressions in here somewhere, but they do not
seem to be time related. The bugs I'm hitting in testing are old ones that
seem unrelated now, so it's checkpoint time.
This sets us up for fancy things like tempo map import and tempo/meter changes
halfway through MIDI regions, but for now it's still assumed that the tempo
at the start of the region is valid for the duration of the entire region.
git-svn-id: svn://localhost/ardour2/branches/3.0@4582 d708f5d6-7413-0410-9779-e7cbd77b26cf
- Don't play note a bajillion times when touch selecting
- Don't spawn a thread for each note off (schedule an idle handler instead)
- Play notes when rect selecting
git-svn-id: svn://localhost/ardour2/branches/3.0@4392 d708f5d6-7413-0410-9779-e7cbd77b26cf
Don't abuse/leak selection when editing velocity (fix editing velocity of a single note actually editing velocity of every note who's velocity had previously been edited).
Properly preserve selection for MIDI operations in general.
Less crap method of delineating scroll events to canvas items (no exhaustive type cases needed in editor_canvas_events.cc).
Fix silly comment style in midi_region_view.h (hans: please note this and follow in the future).
git-svn-id: svn://localhost/ardour2/branches/3.0@4343 d708f5d6-7413-0410-9779-e7cbd77b26cf
* implemented choosing patches with context menu on the program change flag
* added convenience method and a little refactoring in midi_patch_manager.h
Conflicts:
.cproject
build-tmp.sh
git-svn-id: svn://localhost/ardour2/branches/3.0@4338 d708f5d6-7413-0410-9779-e7cbd77b26cf
* commented out a crash line in ardour_ui2.cc (added a warning message).
(I thought, it may be fairly efficient to keep issues as code instead of putting
them in the tracker where hardly ever one would notice the needle in the haystack)
* forgot to clear two other collections on MidiPatchManager::refresh()
git-svn-id: svn://localhost/ardour2/branches/3.0@4312 d708f5d6-7413-0410-9779-e7cbd77b26cf
* created ArdourCanvas::CanvasFlag as a base class for flags
* removed obsolete cruft from midi_model
* made MidiTimeAxisView and MidiRegionView work together to display program changes as
names by means of MidiPatchManager
git-svn-id: svn://localhost/ardour2/branches/3.0@4307 d708f5d6-7413-0410-9779-e7cbd77b26cf
Only resize vertically (don't reaload model) on range changes.
Keep track of range in model while loading (writing to model), rather than double display MIDI regions to find out.
Don't go crazy and chew CPU blinking around and doing nothing on initial show of MIDI track context menu.
Change radio 'full range' and 'contents range' menu items to non-radio actions that just set the range appropriately.
Fix crashes on some esoteric case of control data I can't figure out, but fixed anyway, so I guess it all worked out well in the end for everybody.
git-svn-id: svn://localhost/ardour2/branches/3.0@3794 d708f5d6-7413-0410-9779-e7cbd77b26cf
Sane event type interface between evoral and libardour (no more shared magic numbers).
Cleanup Evoral::Sequence iterator, fix bugs, probably introduce new ones.
Move MIDI specific event functions to Evoral::MIDIEvent (is-a Evoral::Event).
git-svn-id: svn://localhost/ardour2/branches/3.0@3785 d708f5d6-7413-0410-9779-e7cbd77b26cf
Fix track y positioning and initial region size/location.
Fix automation click-to-add-points (i.e. points actually show up where you click).
Fancy whiz-bang dynamic resize 2.0 professional edition support for MIDI/CC/Automation tracks/regions.
git-svn-id: svn://localhost/ardour2/branches/3.0@3769 d708f5d6-7413-0410-9779-e7cbd77b26cf
Anything related to the storage of events/values over a range of time lives in evoral.
This includes MidiModel (Evoral::Sequence) and automation data (AutomationList (Evoral::ControlList),
Automatable (Evoral::ControlSet), etc).
libs/evoral synced with http://svn.drobilla.net/lad/trunk/evoral r1511.
git-svn-id: svn://localhost/ardour2/branches/3.0@3754 d708f5d6-7413-0410-9779-e7cbd77b26cf
Make copy and brush operations type generic (i.e. fix brushing for MIDI regions).
git-svn-id: svn://localhost/ardour2/branches/3.0@3724 d708f5d6-7413-0410-9779-e7cbd77b26cf
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
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
* 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
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
* 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
* 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
* 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
* 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
* make MidiModel keep track of its CanvasProgramChange instances
git-svn-id: svn://localhost/ardour2/branches/3.0@3297 d708f5d6-7413-0410-9779-e7cbd77b26cf
* 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
* Fixed crash bug when NoteMode = Percussive on MidiRegionView
* Fixed possible MemoryLeaks and added Signal in MidiMultipleChannelSelector
git-svn-id: svn://localhost/ardour2/branches/3.0@3263 d708f5d6-7413-0410-9779-e7cbd77b26cf
* 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
* fixed bug: after adding new notes, notes above/below region bounds appear
git-svn-id: svn://localhost/ardour2/branches/3.0@3237 d708f5d6-7413-0410-9779-e7cbd77b26cf
* bugfix: resizing notes not sample accurate
* bugfix: resizing notes broken due to region resizing patch
git-svn-id: svn://localhost/ardour2/branches/3.0@3221 d708f5d6-7413-0410-9779-e7cbd77b26cf
* Bugfix: resizing ends of MIDI tracks did not hide noted beyond region boundaries (in the moment only all notes with note_on >= region end are hidden, their note offs still may exceed region boundaries, but so much for now.....)
git-svn-id: svn://localhost/ardour2/branches/3.0@3219 d708f5d6-7413-0410-9779-e7cbd77b26cf
* 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
Fix several memory (valgrind) errors in a vain attempt to fix crash on session close.
git-svn-id: svn://localhost/ardour2/branches/3.0@3105 d708f5d6-7413-0410-9779-e7cbd77b26cf
Fix finding of keybindings file when running from source tree (via ardev/ardbg).
Fix clashing keybindings for zoom stuff.
Add note tool keybinding and menu entry.
git-svn-id: svn://localhost/ardour2/branches/3.0@3099 d708f5d6-7413-0410-9779-e7cbd77b26cf
Fix crash after recording long phrases of MIDI.
Fix MIDI looping (kinda).
Add note-off exposure to MidiModel::iterator.
Fix first-note-is-stuck-note problem.
Fix resolving long notes while recording.
Fix several other things I forget now. MIDI works pretty well.....
git-svn-id: svn://localhost/ardour2/trunk@2555 d708f5d6-7413-0410-9779-e7cbd77b26cf
Fix recording MIDI regions that start at t != 0.
Fix display of MIDI events in regions that start at t != 0.
Fix recording after relocating an already rec-armed MIDI track.
git-svn-id: svn://localhost/ardour2/trunk@2528 d708f5d6-7413-0410-9779-e7cbd77b26cf
Update note range dynamically while recording to fit incoming notes.
git-svn-id: svn://localhost/ardour2/trunk@2512 d708f5d6-7413-0410-9779-e7cbd77b26cf
Extremely broken in several ways.
This commit brought to you by the letters D, R, and my need to switch machines.
git-svn-id: svn://localhost/ardour2/trunk@2323 d708f5d6-7413-0410-9779-e7cbd77b26cf
Read from MidiRingbuffer directly into model, don't read MidiRingBuffer into a new midi buffer, then into the model.
Pass rec data to UI via model instead of a separate buffer.
Read MIDI CC data into MidiModel (though not actually used yet).
Made quantization toggle edited flag so model is saved.
git-svn-id: svn://localhost/ardour2/trunk@2308 d708f5d6-7413-0410-9779-e7cbd77b26cf
Seems to be a pretty random problem with note duration restoring though...
git-svn-id: svn://localhost/ardour2/trunk@2290 d708f5d6-7413-0410-9779-e7cbd77b26cf
When the moon is right.
Cosmic radiation may be a factor.
Prayer may not be an entirely bad idea, just in case.
git-svn-id: svn://localhost/ardour2/trunk@2283 d708f5d6-7413-0410-9779-e7cbd77b26cf
Fixed positioning of percussion hits.
Note row separator lines (ie a "piano roll".. if it counts as a piano roll without an actual piano on the side of it, anyway).
git-svn-id: svn://localhost/ardour2/trunk@2237 d708f5d6-7413-0410-9779-e7cbd77b26cf
Added creation of notes of arbitrary duration via right drag.
Removed a bunch of redundant height calculation, etc. stuff.
git-svn-id: svn://localhost/ardour2/trunk@2236 d708f5d6-7413-0410-9779-e7cbd77b26cf
Better vertical note snap, don't let the mouse drift away from the note on fast drags.
git-svn-id: svn://localhost/ardour2/trunk@2218 d708f5d6-7413-0410-9779-e7cbd77b26cf
Press delete on a single note to delete it.
Hold delete and mouse over a number of notes to delete them all in a single operation.
git-svn-id: svn://localhost/ardour2/trunk@2214 d708f5d6-7413-0410-9779-e7cbd77b26cf
Rewrote MidiEvent to be a well-behaved self-contained object that optionally owns it's buffer, has proper copying semantics, etc.
Fixed crazy bugs triggered by adding lots of events with varying times to a region.
Speed up initial session display significantly (don't redraw each MIDI region tons of times, though still happens more than once and can use fixing...).
git-svn-id: svn://localhost/ardour2/trunk@2213 d708f5d6-7413-0410-9779-e7cbd77b26cf
MIDI select rectangle.
Add notes on a proper click only (not mouse down).
Fix crash when dragging from region to outside region.
git-svn-id: svn://localhost/ardour2/trunk@2196 d708f5d6-7413-0410-9779-e7cbd77b26cf
Obey note mode on playback (note offs are not sent in Percussive mode).
Vary note colour/opacity with velocity (needs theization/tweaking, but hey, it's something).
git-svn-id: svn://localhost/ardour2/trunk@2184 d708f5d6-7413-0410-9779-e7cbd77b26cf
Note the diskstream chunk size affects reading of clicked-in, so you may need to seek away and back again to have new events read (this will be fixed).
git-svn-id: svn://localhost/ardour2/trunk@2183 d708f5d6-7413-0410-9779-e7cbd77b26cf
Formatting fixes for session.h (ie kill more of those damned 8 space expanded tabs).
git-svn-id: svn://localhost/ardour2/trunk@2135 d708f5d6-7413-0410-9779-e7cbd77b26cf
Added note pencil tool, mock note adding (notes can be added visually but don't yet play).
Reworked MidiModel to be notes w/ duration instead of realtime style MIDI events.
Moved layering (stacked/overlaid) from auto time axis down to route time axis since it applies
to MIDI tracks as well.
git-svn-id: svn://localhost/ardour2/trunk@2128 d708f5d6-7413-0410-9779-e7cbd77b26cf
Percussion tracks display diamonds.
Separated/fixed MIDI and audio mode menus.
CC automation modes: discrete, line.
Bar controllers follow setting (hard steps or line) on playback.
Sent CC data is always discrete (line not implemented yet).
Discrete tracks show no lines, and always show control points.
Separated ControlPoint from AutomationLine.
Added some basic information (range) to Parameter (to be fleshed out..).
git-svn-id: svn://localhost/ardour2/trunk@2123 d708f5d6-7413-0410-9779-e7cbd77b26cf
Fiddled with canvas theme a bit to make tempo more visible and probably annoy pure audio MIDI/tempo haters.
Fix track-specific-color display on mixer strips for MIDI tracks.
git-svn-id: svn://localhost/ardour2/trunk@2112 d708f5d6-7413-0410-9779-e7cbd77b26cf
Fix display/menu generation when adding a MIDI CC track.
Fix crash bug triggered by recording MIDI track with visible CC child track.
git-svn-id: svn://localhost/ardour2/trunk@2073 d708f5d6-7413-0410-9779-e7cbd77b26cf