Commit graph

197 commits

Author SHA1 Message Date
Paul Davis
601dc846da fix assumption that Session::_mmc != 0
git-svn-id: svn://localhost/ardour2/branches/3.0@7349 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-07-01 15:03:49 +00:00
Carl Hetherington
c8e07653da Fix a couple of crashes on MIDI import.
git-svn-id: svn://localhost/ardour2/branches/3.0@7308 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-06-28 01:12:21 +00:00
Paul Davis
37978aa214 lots of details relating to MIDI file management; try to ignore ALSA sequencer MIDI ports named "Midi-Through"
git-svn-id: svn://localhost/ardour2/branches/3.0@7305 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-06-26 13:45:59 +00:00
Paul Davis
0cd3bd4f19 rationale pathways that add notes to Sequence<T> so that there is only final insertion step; when changing note properties that affect "indexing" within a Sequence<T> (i.e. via set<T,comparator> indexing/ordering/hashing), remove the note and add it back so that indexing stays consistent; fix marshalling of MidiModel::DiffCommand (boost::bind(&Object::method, reference_to_object) will COPY the reference, so use a pointer); fix MidiModel::find_note() to compare note properties not pointer addresses
git-svn-id: svn://localhost/ardour2/branches/3.0@7203 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-06-01 20:40:45 +00:00
Paul Davis
9b5f357490 make trimming in region name (colored) highlight work even in internal edit mode; change enter/leave handler to return true by default (MIGHT HAVE UNINTENDED EFFECTS on mouse response), thus avoiding multiple stacked canvas items fighting over enter/leave
git-svn-id: svn://localhost/ardour2/branches/3.0@7195 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-05-30 20:13:29 +00:00
Carl Hetherington
943edf1b5d Use debug macros for SMFSource.
git-svn-id: svn://localhost/ardour2/branches/3.0@7150 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-05-24 22:39:36 +00:00
Carl Hetherington
dd134d8afb Note the time of the last event that was read by read_unlocked, so that the current time can be reset on a subsequent call.
git-svn-id: svn://localhost/ardour2/branches/3.0@7148 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-05-24 15:42:27 +00:00
Carl Hetherington
f1114dedee Move FileManager code into libpbd. Use it for SMF read/write.
git-svn-id: svn://localhost/ardour2/branches/3.0@7108 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-05-16 20:54:50 +00:00
Paul Davis
acdc88f279 attempt to remove confusion and errors caused by unclear semantics of _is_embedded for FileSources; member renamed _within_session, and is now ALWAYS determined by the _path of the FileSource, never by the creator
git-svn-id: svn://localhost/ardour2/branches/3.0@6213 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-11-30 13:16:38 +00:00
David Robillard
7d9e782c3a Remove idiocy.
git-svn-id: svn://localhost/ardour2/branches/3.0@5930 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-26 21:38:09 +00:00
David Robillard
01b761bbaa Remove Session dependency from BeatsFramesConverter.
More constey TempoMap accessors.


git-svn-id: svn://localhost/ardour2/branches/3.0@5916 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-25 21:13:02 +00:00
Paul Davis
f8fe64a91e (FULL commit) start of a nominal debug tracing system, with 64 bits available for flags; track notes by region in MidiPlaylist, and resolve them if they are left hanging at region boundaries. note: MIDI playback is still not working 100% though its better now.
git-svn-id: svn://localhost/ardour2/branches/3.0@5903 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-24 13:26:56 +00:00
David Robillard
106b728d34 Fix crash on save of MIDI data.
git-svn-id: svn://localhost/ardour2/branches/3.0@5875 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-22 22:14:25 +00:00
David Robillard
78b00fa6dc Actually load MIDI data from disk on session load (kludgey, forces model to always be loaded, this needs fixing later).
Fix hilariously braindead non-lock in SMFSource::load_model.


git-svn-id: svn://localhost/ardour2/branches/3.0@5869 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-22 21:03:47 +00:00
David Robillard
11f448917f Fix deadlocks on MIDI record.
More locking than is strictly necessary, but the assertion in MidiModel::write_lock is a nice check, at least for now...


git-svn-id: svn://localhost/ardour2/branches/3.0@5868 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-22 20:37:24 +00:00
David Robillard
2c59ddede5 Fix MIDI rec regions.
git-svn-id: svn://localhost/ardour2/branches/3.0@5842 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-21 16:26:18 +00:00
David Robillard
af8c16cfe0 Disable excessive debug printing.
git-svn-id: svn://localhost/ardour2/branches/3.0@5834 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-21 00:00:56 +00:00
Paul Davis
539a692b0e track notes at the region level in MidiPlaylist; resolve them (deliver note offs) if a note spans the end of the region
git-svn-id: svn://localhost/ardour2/branches/3.0@5804 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-19 17:05:22 +00:00
Paul Davis
8713667ec1 rework Stateful::set_state() patch to avoid default version argument
git-svn-id: svn://localhost/ardour2/branches/3.0@5787 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-15 18:56:11 +00:00
Carl Hetherington
79f91c7a20 Part 1 of loading 2.X sessions; some things work, some things don't, hacks a-plenty.
LOADING 2.X SESSIONS WITH THIS COMMIT IN PLACE WILL (PROBABLY) CORRUPT THE .ardour FILE,
MAKING THE SESSION UNLOADABLE ON 2.X AND LOSING INFORMATION.

So don't do that unless you make a backup of the session file first.



git-svn-id: svn://localhost/ardour2/branches/3.0@5786 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-15 00:57:55 +00:00
David Robillard
bb9cc45cd2 Strip trailing whitespace and fix other whitespace errors (e.g. space/tab mixing). Whitespace changes only.
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
2009-10-14 16:10:01 +00:00
Paul Davis
ddf532a655 (full commit): fix MIDI playback by not writing into the playback buffer from MidiDiskStream::process() unless recording. This has a negative impact on "monitoring" MIDI, but that needs a different, somewhat more expansive solution anyway
git-svn-id: svn://localhost/ardour2/branches/3.0@5685 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-09-21 15:43:11 +00:00
Paul Davis
5cc5fb8de4 remove existing attempts at optimizing MIDI event reading, to try to fix bugs that may be connected with it
git-svn-id: svn://localhost/ardour2/branches/3.0@5667 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-09-16 17:53:04 +00:00
Paul Davis
fa4e858eb3 do not allow smf_source's reads to stomp on cached read_end position in parent class, which creates chaos by being out of sync with MidiSource::_model_iterator. this doesn't totally fix MIDI playback, but it helps
git-svn-id: svn://localhost/ardour2/branches/3.0@5665 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-09-16 01:08:51 +00:00
Paul Davis
bf0a99f0c0 fix up marshall/unmarshall of note data for MidiModel::DiffCommand
git-svn-id: svn://localhost/ardour2/branches/3.0@5662 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-09-14 16:01:32 +00:00
David Robillard
7183242b8c The great audio processing overhaul.
The vast majority of Route signal processing is now simply in the list of
processors.  There are definitely regressions here, but there's also
a lot of things fixed.  It's far too much work to let diverge anymore
regardless, so here it is.

The basic model is: A route has a fixed set of input channels (matching
its JACK input ports and diskstream).  The first processor takes this
as input.  The next processor is configured using the first processor's
output as input, and is allowed to choose whatever output it wants
given that input... and so on, and so on.  Finally, the last processor's
requested output is used to set up the panner and create whatever Jack
ports are needed to output the data.

All 'special' internal processors (meter, fader, amp, insert, send) are
currently transparent: they read any input, and return the same set
of channels back (unmodified, except for amp).

User visible changes:
 * LV2 Instrument support (tracks with both MIDI and audio channels)
 * MIDI in/out plugin support
 * Generic plugin replication (for MIDI plugins, MIDI/audio plugins)
 * Movable meter point

Known Bugs:
 * Things seem to get weird on loaded sessions
 * Output delivery is sketchy
 * 2.0 session loading was probably already broken...
   but it's definitely broken now :)

Please test this and file bugs if you have any time...



git-svn-id: svn://localhost/ardour2/branches/3.0@5055 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-05-07 06:30:50 +00:00
David Robillard
da8cf83b72 Shut up.
git-svn-id: svn://localhost/ardour2/branches/3.0@5040 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-05-04 20:00:18 +00:00
David Robillard
5385e93cc0 Rename 'position' parameter of MidiSource::midi_read to clearer 'source_start'.
git-svn-id: svn://localhost/ardour2/branches/3.0@5021 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-04-30 21:56:40 +00:00
David Robillard
d489a65dad Revert stupid r4975.
git-svn-id: svn://localhost/ardour2/branches/3.0@4984 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-04-16 14:34:56 +00:00
Hans Baier
ece2bacb2c SMFSource: enhanced debugging output to reveal more of the problem
git-svn-id: svn://localhost/ardour2/branches/3.0@4976 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-04-14 10:44:47 +00:00
Hans Baier
ad2757c84f SMFSource: code readability
git-svn-id: svn://localhost/ardour2/branches/3.0@4975 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-04-14 10:38:23 +00:00
Hans Baier
625c9ac228 SMFSource / MIDISource: more readable variable names in read/write(_unlocked), added debugging output to diagnose recording bug (MIDI recording stops receiving events after a short while)
git-svn-id: svn://localhost/ardour2/branches/3.0@4974 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-04-14 10:13:06 +00:00
David Robillard
03536cd399 Fix a bunch of warnings.
Clean up.


git-svn-id: svn://localhost/ardour2/branches/3.0@4668 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-26 00:58:35 +00:00
David Robillard
e0aaed6d65 *** NEW CODING POLICY ***
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
2009-02-25 18:26:51 +00:00
David Robillard
c9582da233 Make source length a dynamic thing.
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
2009-02-20 00:30:42 +00:00
David Robillard
8a28ea6154 Introduce new time for session-relative frame time, and make source interface capable of handling 64-bit long sessions.
sframes_t is "session frames".  The rules for time stamps are:
 - Anything relative to transport time, session position, etc, should be sframes_t
 - Anything relative to jack cycles, including the length thereof, should be nframes_t

To support sessions which exceed UINT32_MAX frames, we need to replace all the uses of
nframes_t for session time with sframes_t, and make sure the conversions are sound.
This does not depend on jack's nframes_t; that we are using the same type at all right now was an oops.

This is also be kinda nice for readability since the two different time bases have different types...


git-svn-id: svn://localhost/ardour2/branches/3.0@4636 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-19 05:45:11 +00:00
David Robillard
0f71728a92 Interpret tempo time based on read position (not source timeline position which is more or less meaningless).
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
2009-02-19 04:12:54 +00:00
David Robillard
022818b4a7 Fix the horrible mess that was anything related to sources and paths.
Most significant changes:

 - Factor out FileSource from AudioFileSource, use for SMFSource too
 - Explicitly pass embedded rather than mysterious name mangling or whatever
 - Destroy a ton of duplicated or very-nearly-duplicated code
 - Clean up and document all that weird source stuff in session.cc


git-svn-id: svn://localhost/ardour2/branches/3.0@4609 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-17 02:11:49 +00:00
David Robillard
900309993c Move duplicated AudioFileSource::Flags and SMFSource::Flags into Source.
Clean up source stuff.


git-svn-id: svn://localhost/ardour2/branches/3.0@4605 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-16 18:08:22 +00:00
David Robillard
458c588e2c Don't bind playlist_modified with a shared_ptr<Playlist> parameter.
Clean up.


git-svn-id: svn://localhost/ardour2/branches/3.0@4599 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-16 05:13:05 +00:00
David Robillard
5f7b4de024 Time unit translation for AutomationLine (correctly display MIDI controller data).
git-svn-id: svn://localhost/ardour2/branches/3.0@4597 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-16 04:46:45 +00:00
David Robillard
3963d2b0b2 Move all beats <-> frames time conversion into a single object that can be passed around.
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
2009-02-16 02:51:16 +00:00
David Robillard
72f2f6e47e Clean up fugly debug printing stuff.
git-svn-id: svn://localhost/ardour2/branches/3.0@4588 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-15 22:10:32 +00:00
David Robillard
3cfb9126af Fix crash on reading meta event.
git-svn-id: svn://localhost/ardour2/branches/3.0@4586 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-15 20:50:20 +00:00
David Robillard
166395c96b Fix genererally retarded and broken note range / diskstream display / etc. related things (correctly display region contents on initial session load).
git-svn-id: svn://localhost/ardour2/branches/3.0@4583 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-15 19:44:27 +00:00
David Robillard
ecaf107ed3 The Big Change: Store time in MidiModel as tempo time, not frame time.
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
2009-02-15 17:30:42 +00:00
David Robillard
4c9ec5c9c0 Commit of the century, right here.
git-svn-id: svn://localhost/ardour2/branches/3.0@4580 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-15 03:51:49 +00:00
David Robillard
0d7936d823 Cache file position in SMFSource::read_unlocked (i.e. don't seek to start and search every single time).
git-svn-id: svn://localhost/ardour2/branches/3.0@4573 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-15 02:09:58 +00:00
David Robillard
41ac4afff5 Clean up.
git-svn-id: svn://localhost/ardour2/branches/3.0@4572 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-15 01:53:06 +00:00
David Robillard
5d519f8bb1 De-templatify Evoral::SMF which has no concept of time other than SMF time.
git-svn-id: svn://localhost/ardour2/branches/3.0@4571 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-15 01:32:41 +00:00