Commit graph

5296 commits

Author SHA1 Message Date
Paul Davis
07c63fb2d7 save and restore all ardour-owned MIDI ports
still need to check on MCU port status
2013-08-13 21:59:05 -04:00
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
Paul Davis
a5a3f713d5 assorted extra debug output for MTC 2013-08-12 05:40:11 -04: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
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
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
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
917aed0da0 add new files (code based on the old midi++ JACKMidiPort) 2013-08-08 09:10:11 -04:00
Paul Davis
1ab61b8564 major redesign of MIDI port heirarchy and management (part 2) 2013-08-07 22:22:11 -04:00
Paul Davis
83a0c30c24 major redesign of MIDI port heirarchy and management
basic, very flaky functionality is back. program unstable at present
2013-08-07 22:21:36 -04:00
Robin Gareus
a1370f83db fix compiler warning 2013-08-07 15:57:29 +02:00
Paul Davis
616f2a0370 fix conflicts after merge with master 2013-08-05 14:22:32 -04:00
Paul Davis
499b7fcfa9 document PortEngine API 2013-08-05 13:55:50 -04:00
Paul Davis
a5f69910e4 add notion of unavailable devices to ARDOUR::AudioBackend 2013-08-05 13:19:23 -04:00
Paul Davis
a66e3859e1 can now start JACK based on config dialog 2013-08-05 12:51:51 -04:00
Paul Davis
7218bd91de start work on the changes to EngineControl (dialog) to integrate with new backend design, and add "requires-driver" concept to AudioBackend to handle JACK specifically 2013-08-04 14:03:19 -04:00
Robin Gareus
f5c52f500a 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-04 16:22:00 +02:00
Robin Gareus
976fc86811 fix no-roll LTC encoder, honor locates when transport is stopped 2013-08-04 16:13:43 +02:00
Robin Gareus
efc46f1553 make master-meter in toolbar optional 2013-08-04 00:06:29 +02:00
Paul Davis
333a3c9d02 cleanup more dangling members of AudioEngine 2013-08-03 17:49:19 -04:00
Paul Davis
a64908af7f fix undeclared use of cerr 2013-08-03 17:47:26 -04:00
Paul Davis
1d50d041c9 fix problem with session exit caused by dangling unused members in AudioEngine 2013-08-03 16:45:07 -04:00
Paul Davis
f2ca3ecf0c add file 2013-08-03 16:44:13 -04:00
Paul Davis
c2e7c32c53 add tim's jack_utils code to rationalize setup of JACK config 2013-08-03 16:37:10 -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
Paul Davis
1c4d00e8b7 audioengine branch can now load and run at least one test session.
currently hard-coded to deal only with the situation where JACK is already running
2013-08-03 11:57:56 -04:00
Robin Gareus
b14d9a6451 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-03 13:44:37 +02:00
Robin Gareus
0eb5b7d1ab Merge branch 'midiclock' of https://github.com/axetota/ardour 2013-08-03 01:37:25 +02:00
Michael Fisher
e82574de05 Send and Read MIDI Positions the right way 2013-08-02 18:23:36 -05:00
Robin Gareus
99fb7346f0 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-03 00:51:08 +02:00
Robin Gareus
23eba1cc39 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-03 00:51:07 +02:00
Paul Davis
94f366190e fix typos in display of error message about an LV2 plugin preset 2013-08-02 12:50:52 -04:00
Michael Fisher
71c26e2820 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-02 12:01:47 -04:00
Michael Fisher
5143a42b31 Midi clock housekeeping 2013-08-02 08:59:32 -05:00