Commit graph

132 commits

Author SHA1 Message Date
Paul Davis
ca76496ef3 more purging of JACK as an explicit name from libardour 2013-08-09 13:56:23 -04:00
Robin Gareus
91e0e0f9f8 advance track's play-position even if processing is locked
fixes
  * http://tracker.ardour.org/view.php?id=5628
  * http://tracker.ardour.org/view.php?id=5561
2013-08-03 21:35:19 +02:00
Robin Gareus
00f26394a9 use dedicated buffers for route (and track)
"scratch buffers are by definition scratch and their contents are undefined at all times"
"silent buffers are by definition all-zero and should not be used for real data"

But track & route were using those for actual data; plugins (which may run
in the same thread and may get the same buffers) use them for scratch thereby
overwriting real data.

In particular get_silent_buffers() (used by LadspaPlugin::connect_and_run)
clears the buffer which can holds real data:
e.g. via  Route::passthru_silence() -> plugin1 -> plugin2 (clears output of plugin1)
2013-07-30 16:55:33 +02:00
Robin Gareus
cd28d62b26 fix compiler warnings. 2013-07-28 20:32:52 +02:00
Robin Gareus
132549c48a reset meters only when *really* necessary
..and continue to calculate fall-off in
audio-cycle (rather than UI thread)

TODO: check if this works properly when switching
between audio/midi meter modes on a midi-track.

One of the motivations to always reset meters when the
meter-point changes was to resolve peak-hold & fall-off
issues when a midi-meter replaces an audio-meter and vice
versa.
2013-07-25 10:53:11 +02:00
Robin Gareus
ec63180ef6 meter-state 17 and 49 + code-comment 2013-07-16 23:30:21 +02:00
Robin Gareus
f78d60a4a3 rework metering states 2, 6, 18 and 22 2013-07-16 22:43:23 +02:00
Robin Gareus
81412b95be revert functionality of f842e8af2 (meter display in DISK mode) 2013-07-16 21:18:52 +02:00
Robin Gareus
f842e8af23 yet another meter+monitoring detail:
"explicit Monitor DISK" + "Transport Stop" + "not track rec-en"
 -> meter is always zero
2013-07-16 20:37:30 +02:00
Robin Gareus
2231db91cd fix metering states 34, 38, 49, 50, 53 and 54
for state descriptions see
http://www.oofus.co.uk/ardour/Ardour3MonitorModesV3.pdf
2013-07-16 19:37:36 +02:00
Robin Gareus
c456166dd1 zero meters for inactive tracks 2013-07-16 19:36:57 +02:00
Robin Gareus
e9289a19c8 fix "monitor mode 11"
see http://www.oofus.co.uk/ardour/Ardour3MonitorModesV2.pdf
the overall logic can probably be simplified somewhat
track-rec-enable on -> always monitor input
2013-07-16 16:04:41 +02:00
Robin Gareus
9a25fcbfe1 fix input metering:
if meter==input, meter depends on In/Disk
see also 29108187ed
2013-07-16 15:25:23 +02:00
Robin Gareus
29108187ed fix metering when monitoring track input. (ran twice) 2013-07-07 04:16:54 +02:00
Paul Davis
757f223714 fix input metering when not rolling but using h/w monitoring: need to explicitly run meter in this case, since we are otherwise just passing silence 2013-03-30 00:14:33 -04:00
Paul Davis
4abbabdcf9 Squashed commit of the following:
commit fdbae82077db53add90df7448a06869dac89acc6
Author: Paul Davis <paul@linuxaudiosystems.com>
Date:   Wed Mar 27 21:45:28 2013 -0400

    mammoth changes in basic signal flow, total redesign of MIDI channel filtering and more.

commit 59343a8283698e02bc0f622313b29e98f449e4c8
Author: Paul Davis <paul@linuxaudiosystems.com>
Date:   Wed Mar 27 01:58:53 2013 -0400

    initial working version after changes to MIDI channel filtering. may affect metering input too. testing not yet finished

this commit merges many deep changes in ardour's internal architecture,
combined with a total redesign of how MIDI channel filtering works.

data in a track used to flow from JACK port buffers to diskstream's ringbuffers
and was then copied from the ringbuffers into a BufferSet for use during
Route::process_output_buffers(). The butler thread would handle the movement of
data between the ringbuffers and disk.

with this commit, data now flows from JACK port buffers into the BufferSet used
for Route processing, and is copied from the BufferSet into the diskstream's
ringbuffers (the butler thread continues to handle interactions with disk as
usual).

this change allowed a dramatic consolidation of code and simplification of most
aspects of Track/Route::roll() and Track/Route::no_roll(). in particular, see
Route::fill_buffers_with_input() which now concisely describes how we move data
from JACK port buffers into the BufferSet for all Route types (including Tracks).

this work was initially motivated by changing MIDI channel filtering so that we
can process capture and playback independently. there is now a very clean
pathway for this - see MidiTrack::roll() (NOTE: This needs implementing in the
no-roll case too - a TODO item).

the channel selector for MIDI tracks has been moved out of the track header and
is now accessible via the context menu. more work is likely here, to make it
(more) obvious to the user when filtering is going on.
2013-03-27 21:50:18 -04:00
Paul Davis
99c848455a prevent MIDI tracks from ever being in MonitoringSilence state, allows use of piano roll whether rolling or not
git-svn-id: svn://localhost/ardour2/branches/3.0@13679 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-19 01:20:37 +00:00
Paul Davis
3468797237 fix wierd rec-enable behaviour, at possible expense of adding more RT cost
git-svn-id: svn://localhost/ardour2/branches/3.0@13615 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-07 19:35:38 +00:00
Paul Davis
8ca9061b30 fix issues with rec-enabling being done in RT context by splitting it into two parts, an RT-safe and RT-unsafe part. along the way, remove "do not record plugins" option which is just so 1999 and creates problems for various (all?) plugin APIs
git-svn-id: svn://localhost/ardour2/branches/3.0@13613 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-07 15:48:38 +00:00
Paul Davis
02a98547f1 different version of previous commit that leaves previous semantics intact unless punch in/out are enabled
git-svn-id: svn://localhost/ardour2/branches/3.0@13200 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-09-27 14:11:01 +00:00
Paul Davis
f940452bc0 when deciding monitoring state, only consider the session to be in global record state if we are actively recording, not just if we are rec-enabled. this provides correct monitoring when punch in/out are enabled
git-svn-id: svn://localhost/ardour2/branches/3.0@13199 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-09-27 11:38:13 +00:00
Paul Davis
3cd8138a41 convert from Glib:: to Glib::Threads for all thread-related API
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25 17:48:55 +00:00
Paul Davis
0532e2063b dramatic overhaul of automation. too long to explain here. this work is not finished - write/touch passes do not correctly overwrite existing data because the semantics of ControlList::insert_iterator need clarification. more to follow
git-svn-id: svn://localhost/ardour2/branches/3.0@13038 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-13 21:05:45 +00:00
Carl Hetherington
0dc992bcf7 Don't rename playlists on rename track if the track has >1
playlist; hopefully helps with the confusion in mantis
#4977.


git-svn-id: svn://localhost/ardour2/branches/3.0@12990 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-05 00:02:13 +00:00
Carl Hetherington
e35a84a32b Revert erroneous commit 12922 and replace with a better fix
(should fix #4947, #4963, #4987).


git-svn-id: svn://localhost/ardour2/branches/3.0@12986 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-04 19:56:14 +00:00
Carl Hetherington
f2f35e50a0 Create diskstream before calling Route::set_state, the
set_state causes muted MIDI tracks to look up their
diskstream (#4947).


git-svn-id: svn://localhost/ardour2/branches/3.0@12922 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-25 12:39:25 +00:00
Carl Hetherington
add52f1c0e Remove believed-unnecessary and broken MIDI thru option;
should fix #4749.


git-svn-id: svn://localhost/ardour2/branches/3.0@12746 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-17 14:28:10 +00:00
Carl Hetherington
6930071cdb When we rename a track, only rename its playlist if it
has never contained any regions (#4759).


git-svn-id: svn://localhost/ardour2/branches/3.0@12525 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-01 15:19:30 +00:00
David Robillard
6fa6514cfd Remove over 500 unnecessary includes (including 54 of session.h).
It's slightly possible that this causes trivial build failures on different
configurations, but otherwise shouldn't cause any problems (i.e. no actual
changes other than include/naming/namespace stuff).  I deliberately avoided
removing libardour-config.h since this can mysteriously break things, though a
few of those do seem to be unnecessary.

This commit only targets includes of ardour/*.h.  There is also a very large
number of unnecessary includes of stuff in gtk2_ardour; tackling that should
also give a big improvement in build time when things are modified.


git-svn-id: svn://localhost/ardour2/branches/3.0@12420 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-24 06:09:29 +00:00
Carl Hetherington
55ed8756bb Break shared_ptr cycle between Track and its
RecEnableControl.


git-svn-id: svn://localhost/ardour2/branches/3.0@12039 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-19 23:31:00 +00:00
Paul Davis
0078582a5f MCP: work on rec-enable
git-svn-id: svn://localhost/ardour2/branches/3.0@11993 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-16 22:33:09 +00:00
Carl Hetherington
cc7d4db5fe Fix a few framecnt / framepos type confusions.
git-svn-id: svn://localhost/ardour2/branches/3.0@11975 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-14 22:04:51 +00:00
Paul Davis
13699251d9 convert rec-enable control for a Track from PBD::COntrollable to ARDOUR::AutomatioNControl, and use in MCP
git-svn-id: svn://localhost/ardour2/branches/3.0@11956 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-13 00:35:42 +00:00
Carl Hetherington
8cc2f19926 Remove unused parameter to Port::flush_buffers().
git-svn-id: svn://localhost/ardour2/branches/3.0@11906 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-11 16:27:05 +00:00
Carl Hetherington
c6396ca7ce Mark rec enable controllables as toggling.
git-svn-id: svn://localhost/ardour2/branches/3.0@11600 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-06 15:08:08 +00:00
Paul Davis
5558b3cf06 a grab bag of changes correcting and improving the way MIDI note on/off tracking is done. may/should fix a number of problem with spurious note-offs under a variety of circumstances
git-svn-id: svn://localhost/ardour2/branches/3.0@11074 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-26 17:01:31 +00:00
Carl Hetherington
bda0f938fb Tidy up monitoring slightly so that it matches oofus' truth
table for the various different states.  Should fix #4533.


git-svn-id: svn://localhost/ardour2/branches/3.0@11073 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-26 15:37:14 +00:00
Carl Hetherington
d8a9f64bbc Clarify ensure vs. request for JACK monitoring, naming-wise.
git-svn-id: svn://localhost/ardour2/branches/3.0@11064 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-23 01:11:46 +00:00
Carl Hetherington
d26260f51d Do some renaming in the ARDOUR::Port class tree.
git-svn-id: svn://localhost/ardour2/branches/3.0@11062 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-23 00:26:25 +00:00
Paul Davis
88d49cdb57 fix up mess with unassigned Playlist::orig_track_id
git-svn-id: svn://localhost/ardour2/branches/3.0@10998 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-13 16:52:33 +00:00
Carl Hetherington
ed360080d0 Sessions loaded from 2.X don't have a diskstream (yet)
in Track::set_state(); prevent a crash, at least; not
100% sure if the behaviour is right, though.


git-svn-id: svn://localhost/ardour2/branches/3.0@10975 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-11 14:14:17 +00:00
Paul Davis
d23a6de077 fix for most (all? we can dream ...) issues involved in #4399 (editing multiply-applies operations to playlists used more than once), and as a side-issue, fix playlist selection which broke when we hid Diskstreams inside Tracks by using orig_track_id() rather than orig_diskstream_id()
git-svn-id: svn://localhost/ardour2/branches/3.0@10968 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-10 19:20:15 +00:00
Carl Hetherington
6e2bd18905 Re-add code to support do-not-record-plugins (#4487).
git-svn-id: svn://localhost/ardour2/branches/3.0@10731 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-21 16:34:05 +00:00
Carl Hetherington
0c9c47086c Slightly unpleasant fix for creation of tracks from
templates; it would be nice if we could set things up using
the Route's logic for setting names of its children, rather
than repeating the same logic in XML-land (#4303).


git-svn-id: svn://localhost/ardour2/branches/3.0@10655 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-16 23:03:59 +00:00
Carl Hetherington
58dbe9ed13 Remove set_state / _set_state dance in Route hierarchy
that seems to have been a hangover from when _set_state
was called in constructors.


git-svn-id: svn://localhost/ardour2/branches/3.0@10654 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-16 22:26:49 +00:00
Carl Hetherington
5dba72c874 Take commit() out of process() in both types of
diskstream, and call commit() where appropriate.


git-svn-id: svn://localhost/ardour2/branches/3.0@10361 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-31 21:17:08 +00:00
Carl Hetherington
854851162b Save and restore _saved_meter_point; fixes #4195.
git-svn-id: svn://localhost/ardour2/branches/3.0@10304 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-24 22:54:30 +00:00
Carl Hetherington
60978b5bc4 Move some code up from {Midi,Audio}Track to Track.
git-svn-id: svn://localhost/ardour2/branches/3.0@10303 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-24 22:54:25 +00:00
Carl Hetherington
24056f055f Remove unused call_base parameter from Route::_set_state.
git-svn-id: svn://localhost/ardour2/branches/3.0@10302 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-24 22:53:09 +00:00
Carl Hetherington
75e6adcf03 Remove unused read/write data count code.
git-svn-id: svn://localhost/ardour2/branches/3.0@10300 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-24 20:45:29 +00:00