Commit graph

6739 commits

Author SHA1 Message Date
Paul Davis
a5a75d5e0d fixes to get MTC (and probably MIDI clock) slaving working again
incoming MIDI data has to be parsed EVERY process cycle, not just when Slave::speed_and_position() is called.
The private MIDI::Parser owned by the MTC and MClck slaves was irrelevant, since the port has its own.
See comments in midi_port.h on the strangled inheritance heirarchy.
2013-08-13 12:53:28 -04:00
Tim Mayberry
63745512bc Call setup_libpbd_enums in PBD::init for portability 2013-08-13 20:15:47 +10:00
Tim Mayberry
1db894f886 Call Gio::init from PBD::init instead of ARDOUR::init
PBD needs Gio for PBD::copy_file and perhaps others
2013-08-13 20:15:47 +10:00
Tim Mayberry
55c6d4f2be Call PBD::init in ARDOUR::init and PBD::cleanup in ARDOUR::cleanup 2013-08-13 20:15:47 +10:00
Tim Mayberry
29193c76cc Add PBD::init and PBD::cleanup
A bit of refactoring to move initialization of libpbd into libpbd
rather than rely on "client" code(ui,libardour,tests etc) to do it
2013-08-13 20:15:47 +10:00
Tim Mayberry
9d340af10d Prevent libardour from being initialized more than once
This is not thread safe of course, it is not intended to be.

This was implemented as at one stage ARDOUR::init was being called multiple
times in the testsuite which was causing a subtle bug that took some
time to track down.
2013-08-13 20:15:47 +10:00
Tim Mayberry
d51eba1162 Change ARDOUR::init return type to bool type for success/failure 2013-08-13 20:15:47 +10:00
Paul Davis
a5a3f713d5 assorted extra debug output for MTC 2013-08-12 05:40:11 -04:00
Robin Gareus
4c4376d5dd fix thinko in 5dee49e19 2013-08-11 17:26:34 +02:00
Robin Gareus
116694a2cb fix 5dee49e19 (32/64 bit unsigned int compatibility) 2013-08-11 17:19:04 +02:00
Robin Gareus
5dee49e194 make LV2 communication buffers independent from jack-midi buffer-size
fixes issues with plugin communication that are common with
jack1 use due to its very small midi-buffers.
2013-08-11 15:10:41 +02:00
Paul Davis
50bbf3f656 fix output latency option in jack command line 2013-08-10 09:25:18 -04:00
Paul Davis
9680c345c4 don't write a bogus jack cmdline ... leave the existing ~/.jackdrc file alone if an error creating the cmdline occurs 2013-08-09 18:35:07 -04:00
Paul Davis
862315ec2a actually write JACK command line out to ~/.jackdrc so that settings take effect 2013-08-09 18:11:04 -04:00
Paul Davis
4b9289e17e don't waste time with sending MTC or MMC after stop if we're disconnected from the engine.
Also, add note about threading oddities with send_mmc_locate() being called from ::non_realtime_stop() which gets
called from a *realtime* context.
2013-08-09 18:06:08 -04:00
Paul Davis
cec2a3da36 allow ardour to exit after JACK disconnects us 2013-08-09 16:57:23 -04:00
Paul Davis
f0fcda2044 Merge branch 'master' into audioengine 2013-08-09 16:29:23 -04:00
Paul Davis
8685d8eb47 remove use of jack_get_time() from ARDOUR::get_microseconds(), use clock_gettime() instead since this function is never used in reference to a backend clock 2013-08-09 15:40:46 -04:00
Paul Davis
ca76496ef3 more purging of JACK as an explicit name from libardour 2013-08-09 13:56:23 -04:00
Paul Davis
d0381b902c remove more naming that refers to JACK 2013-08-09 13:39:33 -04:00
Paul Davis
55e52bcbd5 remove another naming that refers to JACK 2013-08-09 13:38:09 -04:00
Paul Davis
8960ebcdf9 remove another naming that refers to JACK 2013-08-09 13:27:05 -04:00
Paul Davis
521f8eb776 more sensible ALSA device names now in use 2013-08-09 13:26:40 -04:00
John Emmas
8cd71108c1 Merge branch 'windows' of git.ardour.org:ardour/ardour into windows 2013-08-09 18:04:04 +01:00
Paul Davis
fc040a72e9 use original names for ARDOUR MIDI "persistent" ports (MMC, MTC, etc) 2013-08-09 13:03:57 -04:00
Paul Davis
5abeb799cf try new code from rui/qjackctl for names of ALSA PCM devices 2013-08-09 13:03:21 -04:00
John Emmas
5f703f25a9 'libs/ardour' - If the platform is Windows, prevent lengthy caching by flushing imported files on completion of the import 2013-08-09 17:56:14 +01:00
John Emmas
64cc518e72 'libs/ardour' - New files and changes needed for 'msvc_libardour' 2013-08-09 17:53:37 +01:00
John Emmas
dc62ef6123 'libs/ardour' - Correct an invalid buffer address (io.cc) 2013-08-09 17:48:15 +01:00
John Emmas
4a29f1957e 'libs/ardour' - Minor change to an included header file (audiofile_tagger.cc) 2013-08-09 17:46:51 +01:00
Paul Davis
a34d707175 split up session code that uses parts of the JACK API (timebase + session event handling) and connect it directly to the jack audiobackend
i've made the audiobackend call the session directly so that only one object (ARDOUR::Session) has a need for the JACK types
and only one .cc file (session_jack.cc) needs jack.h. having ARDOUR::AudioEngine act as an intermediary would be cleaner
conceptually but would end up causing two different ARDOUR objects to have jack types in their own API.
2013-08-09 12:15:37 -04:00
Paul Davis
c9f6b0dab5 the JACK audio backend shared object depends on libasound (ALSA) on linux, so it requires explicit linkage 2013-08-09 11:04:04 -04:00
Paul Davis
031675f795 changes to allow window branch to build on OS X 2013-08-09 09:17:03 -04:00
Paul Davis
fcb76c8c05 fix freewheeling 2013-08-08 22:12:52 -04:00
Paul Davis
3070cd723b fix crashes, clean up session code warmup and other details in audioengine 2013-08-08 19:32:56 -04:00
Paul Davis
111d35c9c7 add methods to queue full MTC and SPP messages, now that they are synchronous 2013-08-08 19:31:10 -04:00
Paul Davis
d90e2b4221 rationalize (a bit) engine start/stop/restart so that it is possible to start up, disconnect from JACK and then reconnect 2013-08-08 16:31:08 -04:00
Paul Davis
741154e691 debugging various canvas event issues 2013-08-08 15:26:42 -04:00
Robin Gareus
c779f7b1b5 fix compiler warning 2013-08-08 15:26:42 -04:00
Robin Gareus
7744037c86 Timecode: fix subframe rounding
if sub-frames are used, frames are rounded up for the later half of
a sub-frame.  e.g. @48KSPS, 25fps, 100 subframes per frame
audio-samples >=1910 already yield 00:00:00:01
2013-08-08 15:26:41 -04:00
Robin Gareus
fd6223854d fix no-roll LTC encoder, honor locates when transport is stopped 2013-08-08 15:26:41 -04:00
Robin Gareus
9ff32d1b52 make master-meter in toolbar optional 2013-08-08 15:26:41 -04:00
Robin Gareus
ee610da977 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-08 15:26:19 -04:00
Robin Gareus
35703cb3fc properly handle port removal in route.
bug:
 - add midi track
 - add additional midi port
 - remove additional midi port
 - press play
 -> crash

because..

ARDOUR::MidiTrack::roll's route_buffer still has 2 midi-channels. This is
because processor_max_streams was not updated (no plugins added/removed)
fill_buffers_with_input() eventually asserts when trying to get the 2nd
(nonexistant) midi port via ARDOUR::PortSet::nth_midi_port() in
 ARDOUR::PortSet::port().
2013-08-08 15:26:19 -04:00
Michael Fisher
5155a36002 Send and Read MIDI Positions the right way 2013-08-08 15:26:19 -04:00
Robin Gareus
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
Robin Gareus
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
Paul Davis
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