13
0
Commit Graph

5348 Commits

Author SHA1 Message Date
5e1cfcc7ed on session-load: skip output-change-handler until IOs are restored
fixes loading a session with tracks that have more input-ports
than output-ports.

the problem:

input -ports are added first, when added, IO::ensure_port() emits
IOChange::ConfigurationChanged which in turn triggers the route to
allocate corresponding output ports.

Due to this callback the output-ports were created before the actual
output-port-configuration and plugin-configuration from the
session-state was parsed and set.
2013-08-08 15:26:19 -04:00
f84504222e disallow invalid port-removal
do not allow port-removal if the port would be re-added immediately
after that again because the main-delivery actually needs it.

As a side effect this prevents this crash:

 * create a stereo-track, then remove one output
  -> unhandled exception "AudioEngine::PortRegistrationFailure&"

 The problem:
 - the port is removed from the RCU ports list,
   but Port::drop() (which calls jack_port_unregister) is only called
   from the Port's destructor at some later time.
   (because a reference to the port still exists elsewhere)
 - the jack-port is not yet removed.
 - meanwhile Delivery::configure_io comes along and notices that
   there are more audio-buffers than ports and tries to re-register the port.
 - but the port still exists in jack, so it fails and throws an exception
   ...which is not handled.
2013-08-08 15:26:19 -04:00
d7382d613c fix typos in display of error message about an LV2 plugin preset 2013-08-08 15:26:19 -04:00
Michael Fisher
71e2fbbcff Resolve duplicate symbol 'cocoa_open_uri' on OSX builds.
cocoa_open_uri.mm was being added to the source list
twice and also compiling twice. This patch enusres it is
only added once.
2013-08-08 15:26:19 -04:00
Michael Fisher
f4101b8c53 Midi clock housekeeping 2013-08-08 15:26:19 -04:00
Michael Fisher
f6ec3c42fc Make Session::send_song_position_pointer a no-op 2013-08-08 15:26:19 -04:00
Michael Fisher
ce85a4d847 Revamp clock processing so it uses an internal frame reference.
MidiClockTicker::Position managed by boost::scoped_ptr
2013-08-08 15:26:19 -04:00
Michael Fisher
46ee815459 WIP - Experimenting with an alternative clock generating algo
- Transport debug output (tracing where transport_frame
      is updated
2013-08-08 15:26:19 -04:00
Michael Fisher
d6480f15f9 - Send position data from internal position class
- Proper midi beat conversions for all time signatures
- Disable responding to Session::PositionChanged in place
  of Session::Located.
2013-08-08 15:26:18 -04:00
Michael Fisher
7d5102543c Test code removal... 2013-08-08 15:26:18 -04:00
Michael Fisher
0ed083730a MIDI Clock - Shuffling locate code (not actually used yet)
- Subscribe to Session::Locate to detect seeks
- Shuffle Mclk locating computations into a separate private class
2013-08-08 15:26:18 -04:00
Michael Fisher
9afb71eb5a Stop compiler warning about NSURL 2013-08-08 15:26:18 -04:00
9284835580 rework MIDI [processor|plugin] chain
* forward midi-data around plugins that have no MIDI-out
* allow to insert plugins with no MIDI-input at a point with one MIDI-channel

This works because excess ports (both plugin and route) remain
unconnected and use scratch-buffers.

Tested with LV2, LXVST and LADSPA.
(AU plugins with variable in/out retain the old behavior, no bypass)

fixes http://tracker.ardour.org/view.php?id=5630
2013-08-08 15:26:18 -04:00
36623b7b0a remove an identical odd namespacing typo 2013-08-08 15:26:18 -04:00
9376e436cd remove odd namespacing typo 2013-08-08 15:26:18 -04:00
3e411ec4f6 use zeroed scratch buffers for "silent" plugin runs
Plugins rewrite the buffer data in-place and some plugins
can produce output even when fed with silence.

Hence, during a PluginInsert::silence() run a plugin can
inject data into the "silent" buffers which causes side-effects.

Kudos to Chris 'oofus' Goddard for finding this issue.
2013-08-08 15:26:18 -04:00
6b02d50d5e clean up some valgrid "Uninitialised value was created by a heap allocation" wanings 2013-08-08 15:26:18 -04:00
cc6a31c972 fix typo in c212c16eb 2013-08-08 15:26:18 -04:00
69c6ef1aa1 initialize some uninitialized values 2013-08-08 15:26:18 -04:00
ddf6029c86 catch assert() 2013-08-08 15:26:18 -04:00
a7c80c808d LV2 - use scratch buffers to scratch :) 2013-08-08 15:26:18 -04:00
9a8deb6ab4 another amend to 00f26394a9 2013-08-08 15:26:18 -04:00
9ef2a89ccd fix stupid copy/paste error in 00f26394a9 2013-08-08 15:26:18 -04:00
b6b614acac minimize meter-peak re-draw area 2013-08-08 15:26:18 -04:00
becee15370 RMS meter: remove unused peak-detection 2013-08-08 15:26:18 -04:00
f6ac5cadea 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-08-08 15:26:17 -04:00
e92306459d Revert "fix issue with generator plugins and no-roll disk monitoring"
This reverts commit bd34ab04cd.
2013-08-08 15:26:17 -04:00
05ed31a980 fix issue with generator plugins and no-roll disk monitoring 2013-08-08 15:26:17 -04:00
Michael Fisher
406e69c57d Return an empty string instead of a bool 2013-08-08 15:26:17 -04:00
Michael Fisher
af148ff130 Cast param for std::time to a pointer of time_t
- bleeding clang (trunk 186535 v3.4) fails here
2013-08-08 15:26:17 -04:00
Michael Fisher
bfbc55a673 Proper OSX/CLANG/CXX11 support in stl_delete.h
- replaces fix in 066df0d218
- Check if _LIBCPP_VECTOR is defined for vector_delete.
  This is defined in libc++'s headers which Apple is using
  instead of libstdc++
2013-08-08 15:26:17 -04:00
Michael Fisher
14a7941b5d Housekeeping, code style 2013-08-08 15:26:17 -04:00
Michael Fisher
8541b81e31 Moving Mclk locating code to ticker.cc. Housekeeping 2013-08-08 15:26:17 -04:00
Michael Fisher
4f1085aa08 Add method to send a song position pointer message 2013-08-08 15:26:17 -04:00
c8a26faa97 use K-20 meter as default master bus 2013-08-08 15:26:17 -04:00
84f20367cc add option to resize meterbridge track-labels 2013-08-08 15:26:17 -04:00
5a187cb650 change default meter-fall-off to 13.3 dB/sec 2013-08-08 15:26:17 -04:00
82e1d9655f use 3px for peak-hold in LED mode -> display 2 bright lines 2013-08-08 15:26:16 -04:00
59a3b797d7 fix compiler warnings. 2013-08-08 15:26:16 -04:00
3098e5963c tweak meter-LED style 2013-08-08 15:26:01 -04:00
Edgar Aichinger
c5d930b6b8 update german translation for libardour
fixes x42's screwup with prev commit.
2013-08-08 15:26:01 -04:00
Edgar Aichinger
89cf7c1248 update german translation 2013-08-08 15:26:01 -04:00
ff9296e17c add dedicated line-up level for IEC1/DIN meter (15dbFS) 2013-08-08 15:26:01 -04:00
d4c864d803 make LED meter style optional 2013-08-08 15:26:01 -04:00
11c49ab8d1 cache shaded meter-background regardless of color
previously, shaded patterns were assumed to have different colors as well.
2013-08-08 15:26:01 -04:00
2bdd29d3ac fix meter background redraw issue #5601 2013-08-08 15:26:01 -04:00
12c9055659 [re]implement horizontal meter 2013-08-08 15:26:01 -04:00
26c4ae14cb Don't allow to deactivate meter.
before this change:

1) switch to 'custom' meter point,
2) deactivate meter processor.

-> meters does not run regardless of meter-point
-> meter can only be re-nabled in 'custom' mode
2013-08-08 15:25:40 -04:00
d327ab43cf 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-08-08 15:25:40 -04:00
d39d296ff8 fix compiler warning 2013-08-08 15:25:40 -04:00