Commit graph

197 commits

Author SHA1 Message Date
David Robillard
466500fdaf Channel-aware note recording in MidiModel (i.e. multi-channel note input doesn't cause stuck notes).
Fix MIDI regions randomly displaying 100% stuck notes (uninitialized MidiPlaylist::_note_mode).


git-svn-id: svn://localhost/ardour2/branches/3.0@3084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-02-18 23:30:27 +00:00
David Robillard
fbfb26b45c Preliminary (read: kludgey) MIDI import support.
Only really works when tracks contain only channel 1 data for now.


git-svn-id: svn://localhost/ardour2/branches/3.0@3083 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-02-18 19:45:52 +00:00
David Robillard
bb457bb960 Merge libs/ardour and gtk2_ardour with 2.0-ongoing R2837.
git-svn-id: svn://localhost/ardour2/trunk@2883 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-01-10 21:20:59 +00:00
David Robillard
14dcc3f017 Fix displaying of notes in auto-created MIDI region when it's the first region in the track.
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
2007-10-14 05:45:31 +00:00
David Robillard
49763a55c9 Fix several MIDI timestamp related problems:
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
2007-10-07 07:20:09 +00:00
David Robillard
c190aca4a0 Deep "automation regions" support.
Fix zoom/height/etc changing for automation region views.
Broke smooth automation region dragging (make omelette, break eggs, etc).


git-svn-id: svn://localhost/ardour2/trunk@2424 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-09-06 02:30:39 +00:00
David Robillard
056b2a59d5 Split MidiModel::Note out to ARDOUR::Note in it's own file (midi_model.h was getting fat).
Initial work on MidiModel iterator.


git-svn-id: svn://localhost/ardour2/trunk@2355 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-08-28 17:48:37 +00:00
David Robillard
f9a7388d7a Make SMFSource suck significantly less.
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
2007-08-16 01:25:58 +00:00
David Robillard
2f84a7792b Remove excessive SMF "Wrote EOT" printing.
Shave a few bytes off each ControlPoint if not used by a Curve (24 bytes on 64-bit).


git-svn-id: svn://localhost/ardour2/trunk@2294 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-08-13 20:27:38 +00:00
David Robillard
67a0d6b2d9 Fix (edited) MIDI saving restoring (restore note offs/durations correctly).
git-svn-id: svn://localhost/ardour2/trunk@2292 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-08-13 15:32:29 +00:00
David Robillard
5156998e6e Saving of edited MIDI data to disk (on session save).
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
2007-08-11 06:17:42 +00:00
David Robillard
861181d742 Fix MIDI file names on recording (don't write out a ton of useless empty .mid files).
Preliminary hooks for writing model to file (still does nothing).


git-svn-id: svn://localhost/ardour2/trunk@2289 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-08-11 00:22:57 +00:00
David Robillard
874f3bbf8b Fix note delete crash bug.
Fix midi recording crash bug.


git-svn-id: svn://localhost/ardour2/trunk@2216 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-08-01 23:18:56 +00:00
David Robillard
d7db3f757f Better MidiModel command framework, ready to go for all your canvas editing needs.
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
2007-08-01 20:50:09 +00:00
David Robillard
bb33e5d9f8 Get MidiRegionView's hands on MidiModel for editing operations to come.
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
2007-07-31 02:16:46 +00:00
David Robillard
6e167cb1a8 Playback from MIDI model, playback of clicked-in events.
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
2007-07-28 07:09:21 +00:00
David Robillard
823a1d36c1 Remove random access interface from MidiBuffer, towards killing fixed/limited event size assumption.
git-svn-id: svn://localhost/ardour2/trunk@2159 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-07-20 05:37:24 +00:00
David Robillard
f9717abf01 Fix absolutely atrocious memory leak on MIDI recording. I meeean... move along now, nothing to see here.
Fix SMFSource to realloc a scratch read buffer as necessary, removing upper limit on single raw event size.
Remove public exposure of MidiBuffer::max_event_size (though it still exists internally).
Fix crash bug on MIDI record completion (transport stop).


git-svn-id: svn://localhost/ardour2/trunk@2157 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-07-20 03:18:36 +00:00
David Robillard
6a4bd8e926 Added Note tool to Keymouse Actions menu and gave it a hotkey (n).
Removed excessive MIDI debug messages.
Fixed stuck note resolution bug, rewrote MidiModel "recording" stuff to be stronger, faster, better.
We have the technology.


git-svn-id: svn://localhost/ardour2/trunk@2156 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-07-20 01:56:19 +00:00
David Robillard
f542fa693c Midi pencil undo (not yet serializable).
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
2007-07-17 01:48:42 +00:00
David Robillard
332a3d9813 Selection of visible note range (full range vs fit contents, selectable from midi track menu).
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
2007-07-15 01:56:11 +00:00
David Robillard
49ee64ada7 Insert/Redirect refactoring, towards better MIDI support in mixer strip, and
http://ardour.org/node/1043 style things.


git-svn-id: svn://localhost/ardour2/trunk@2027 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-23 20:13:13 +00:00
David Robillard
13151b43f0 Redraw MIDI region views on zoom and track height changes.
Disable excessive/old debug prints.
Fix region view heights.


git-svn-id: svn://localhost/ardour2/trunk@1982 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-09 06:10:30 +00:00
David Robillard
7ff7f4013d Use double MIDI timestamps (towards tempo based time, and more-than-sample-accurate LV2 MIDI plugin application).
Eliminate double iteration over MIDIRingBuffer read to translate timestamps.


git-svn-id: svn://localhost/ardour2/trunk@1981 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-09 02:07:59 +00:00
David Robillard
0605f98fdc Fix time skew after MIDI recording (added missing conversion from delta time to audio frames).
Fix crash bug in MIDI recording.


git-svn-id: svn://localhost/ardour2/trunk@1980 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-08 23:03:32 +00:00
David Robillard
cc18cf3516 Write MIDI files to interchange/sessionname/midifiles (for real this time).
git-svn-id: svn://localhost/ardour2/trunk@1979 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-07 23:12:04 +00:00
David Robillard
9091ba932d Fixed MIDI crash bug.
Added some asserts to gtkmm2ext that hopefully may catch a bug I might have possibly seen once or twice, probably.
Fixed uninitialized value in time_axis_view.cc.


git-svn-id: svn://localhost/ardour2/trunk@1958 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-07 02:07:49 +00:00
David Robillard
ca40990444 Fix MIDI session path problems (thanks timbyr).
Fix conversion warnings in smf_source.cc. 


git-svn-id: svn://localhost/ardour2/trunk@1957 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-06 15:39:56 +00:00
David Robillard
7852cc219c Save MIDI files to interchange/sessionname/midifiles (instead of audiofiles).
Fix some uninitialized variables in Streamview.
Tempo-based SMF source (internally only).
Horrible crash on MIDI record finish.


git-svn-id: svn://localhost/ardour2/trunk@1955 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-05 16:39:23 +00:00
David Robillard
b0e91bfa08 Fix MIDI region loading.
Add model loading and destroying to SMFSource.
Load and display MIDI region data on session load.


git-svn-id: svn://localhost/ardour2/trunk@1947 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-03 20:06:01 +00:00
David Robillard
b32765571b Preliminary visible MIDI notes in MidiRegionView.
git-svn-id: svn://localhost/ardour2/trunk@1943 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-06-01 23:27:29 +00:00
David Robillard
0f2f4d8efc Rewrote MidiRingBuffer to more efficiently pack data (flat pack stamps, sizes, and event data into a single buffer).
Eliminate a double-copy on MIDI playback (MidiRingBuffer -> MidiBuffer).
Various MIDI diskstream/source/SMF fixes (only write when appropriate, handle transport locates, etc).
Fix MIDI rec region size/offset problems.
Code cleanups.


git-svn-id: svn://localhost/ardour2/trunk@1934 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-05-31 21:37:20 +00:00
Paul Davis
a8da89d745 optimize some performance bottlenecks; remove jack_nframes_t that crept back into the code
git-svn-id: svn://localhost/ardour2/branches/midi@1779 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-05-03 23:28:57 +00:00
David Robillard
532f6aad4a Merged with trunk R1283.
NOTE: Compiles, but broken (crash on adding MIDI track).


git-svn-id: svn://localhost/ardour2/branches/midi@1292 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-01-09 23:24:54 +00:00
David Robillard
af105afe6c Merged with trunk R1010
git-svn-id: svn://localhost/ardour2/branches/midi@1011 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-10-26 03:15:49 +00:00
David Robillard
7bd41538d9 Merged with trunk R920.
git-svn-id: svn://localhost/ardour2/branches/midi@921 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-09-19 03:29:16 +00:00
David Robillard
5169a66f35 Merged with trunk R874.
Commented out some overly verbose debug prints


git-svn-id: svn://localhost/ardour2/branches/midi@875 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-31 02:28:42 +00:00
David Robillard
5a40162026 - Fixed port adding/removing/connecting and related bugs with route signal path
- Minor MIDI bug fixes/cleanups


git-svn-id: svn://localhost/ardour2/branches/midi@874 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-31 01:06:37 +00:00
David Robillard
82232f06ba Merged with trunk R861
Possible new bugs - not very thoroughly tested, but at least functional at first glance


git-svn-id: svn://localhost/ardour2/branches/midi@870 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-29 21:21:48 +00:00
David Robillard
25d1670a61 Merged with trunk R846
Removed some overly verbose debug printing


git-svn-id: svn://localhost/ardour2/branches/midi@847 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-24 07:37:17 +00:00
David Robillard
ea71de2784 - Fixes for some recording bugs
- Working MIDI playback
- Various SMF fixes
- Loading of MIDI containing sessions w/o clobbering .mid files
- Varispeed MIDI fixes (still no reverse though)
- Fix for crazy rec-region sizes
- Throttled MIDI diskstream flush based on time passed (related to rec-region fix)
- Fixed playback of MIDI regions not positioned at origin (time stamp translation)
- Commented/removed old debug print statements (though some still remain)


git-svn-id: svn://localhost/ardour2/branches/midi@844 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-23 04:30:57 +00:00
David Robillard
50baf0382f Fixes for writing compliant SMF files
git-svn-id: svn://localhost/ardour2/branches/midi@843 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-22 03:02:38 +00:00
David Robillard
48a4dc072c Recording to SMF. Playback not quite working yet, just some buglets left to iron out.
git-svn-id: svn://localhost/ardour2/branches/midi@841 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-21 19:12:26 +00:00
David Robillard
5952c48a84 More solid "fake" recording and serialization
git-svn-id: svn://localhost/ardour2/branches/midi@825 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-14 23:29:01 +00:00
David Robillard
d752986314 - MIDI "recording" - rec region creation/drawing, actual MIDI region creation/view/pretty pictures/etc
- MIDI containing session saving and restoring (ie XML - Source, Region, Playlist; all but the actual .mid files)
- Numerous little fixes for audio specific stuff to accomplish the above
- Dirty hacks to accomplish the above
- Profit!!!


git-svn-id: svn://localhost/ardour2/branches/midi@821 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-14 08:44:14 +00:00
David Robillard
30c08ba655 - Changed IO's vector<Port*>'s to PortList
- Added new Port classes, code to drive them
- Added PortList, which is a filthy mess ATM (nevermind that, it's the interface that's important at this stage)
- Added ChanCount, though it isn't very thoroughly used yet.  That's the next step....
- Fixed a few bugs relating to loading sessions saved with trunk
- Fixed a few random other bugs

Slowly working towards type agnosticism while keeping all the former code/logic intact is the name of the game here

Warning:  Removing ports is currently (intentionally) broken due solely to laziness.


git-svn-id: svn://localhost/ardour2/branches/midi@786 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-08-11 03:24:57 +00:00
David Robillard
b7f3a63507 Actually added the code mentioned in my last commit. Whoops.
git-svn-id: svn://localhost/ardour2/branches/midi@643 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-06-26 20:29:45 +00:00