13
0
Commit Graph

5601 Commits

Author SHA1 Message Date
d2cdc7da64 add std:: to clarify use of llabs on OS X 2013-09-02 17:45:04 -04:00
a431e73ccd replace recently added attempt to use visibility macros with one based on gcc guidelines
I can see no reason to define the "C API Call Type", but perhaps it really is needed for some reason.

I have tested this on Linux only.
2013-09-02 16:41:56 -04:00
2f73855722 add visibility.h to provide generic DSO/DLL visibility macros for use with ardour "helper" and associated libs 2013-09-02 16:32:36 -04:00
c8de67d7a5 'libs/panners' - Streamline my previous API changes and include Tim's additions to support the GCC compiler 2013-09-02 16:54:17 +01:00
66292718a1 improve scroll and drag behaviour of volume-controller knob 2013-09-01 03:19:13 +02:00
dd0a1cd846 fix keyboard interaction with volume knobs (monitor section) 2013-08-31 20:37:02 +02:00
a6c85286fe 'libs/panners' - Add a conventional 'C' API call type to test building with MSVC 2013-08-31 16:19:36 +01:00
4a8cd4375d 'libs/panners' - A small test (before going too far) to see if these changes have any detrimental affect on the non-MSVC builds. 2013-08-30 19:51:45 +01:00
14f5557bec fix typo in IEC-meter 'weird-float' protection. 2013-08-29 18:46:03 +02:00
2172700144 protect meters against weird float values 2013-08-29 17:36:52 +02:00
03c26762e6 update external plugin UI handling
amend to 4cdb018 and 1d972d0

override ui_closed() behavior for lv2ui:external
Keep UI around and do not re-instantiate, but simply show it again.
(this is against the original specs but was agreed upon by various
authors and the previous behavior or Ardour.)

kx:external-ui are cleaned up after ui_closed().
2013-08-29 13:05:11 +02:00
4864833669 fix vari-speed phase (when used for calculation only)
and clarify an old comment.
2013-08-27 20:55:15 +02:00
909fcf4b2d 'libs/clearlooks-newer' - Clearlooks needs to be buildable as conventional 'C' but many 'C' compilers require that variables be declared at the top of each function. Move declarations as necessary to accommodate this. 2013-08-27 17:07:53 +01:00
060c56cc3f Minor tweaks to MSVC build (hopefully of little consequence) 2013-08-26 17:50:17 +01:00
9482702bdc 'libs/gtkmm2ext' - Compiler specific includes 2013-08-26 17:47:28 +01:00
316b72eb0e 'libs/gtkmm2ext' - Main body of changes required for building with MSVC (mostly #includes and casting) 2013-08-26 17:45:18 +01:00
c1a25550d1 'libs/gtkmm2ext' - Use 'std::vector' instead of dynamically sized arrays (required to be buildable with MSVC) 2013-08-26 17:28:03 +01:00
9a877a54e8 'libs/gtkmm2ext' - Remove "using namespace Gdk;" to avoid confusion (in 'fastmeter.cc') over whether we want namespace ::Cairo or namespace Gdk::Cairo 2013-08-26 15:43:20 +01:00
1d972d05c5 add LV2 support for kx:external-ui#
the ABI of http://kxstudio.sf.net/ns/lv2ext/external-ui# is identical to
http://lv2plug.in/ns/extensions/ui#external
It just adds a distinction between #Host and #Widget for cosmetic reasons.
Sadly some newer plugins are released with only support for kxstudio URI :(
2013-08-25 16:21:18 +02:00
b49f7ca38d fix compilation on linux 2013-08-24 12:27:40 -04:00
ee1b49f87e fix merge conflicts from master 2013-08-24 12:18:06 -04:00
1421a34e52 pot/po file updates caused by waf i18n 2013-08-24 11:46:45 -04:00
41f6f5574b fix confusion about whether flip_mode in the Mackie support code is a bool or an enum 2013-08-24 11:46:44 -04:00
Tim Blechmann
a5de2c1067 export: add support for CAF 2013-08-24 14:23:25 +02:00
3247c5a51c undo the hiding of SR-dependent LV2 ports 2013-08-22 17:46:19 -04:00
868112bece update czech translations from pavel fric, part 2 2013-08-15 14:55:57 -04:00
7fe7e7ad4b update czech translations from pavel fric 2013-08-15 14:55:10 -04:00
04bf9d1e95 fix newly-appearing crash-at-close caused by muddled thinking in pbd/pthread_utils
threads created with this code can now just return a value as they normally would, and the
infrastructure will ensure cleanup. there is no longer any reason to call pthread_exit_pbd()
and so that has been removed.
2013-08-15 11:44:47 -04:00
588cc3af74 check master sources when determining whether a region uses a source. should fix #5618 2013-08-15 11:43:37 -04:00
6bcdf4f0f1 fix merge issues with master 2013-08-14 13:10:59 -04:00
e711dfae12 remove misleading + incorrect documentation 2013-08-14 12:44:59 -04:00
2de09888b6 some const_cast<> additions for OS X where gcc believes that volatile int* means const int* 2013-08-14 12:40:49 -04:00
8d8770f4cc remove JACK midi system stuff from jack_utils, because we're not going to use it (for a while, at least) 2013-08-14 12:40:10 -04:00
7b34b6a3f6 provide clock_gettime() implementation for lovely OSX, which doesn't have it 2013-08-14 12:39:34 -04:00
dfac01bdd4 don't bother with old MIDI port data in ardour.rc
result: we lose connections to global MIDI ports in older sessions. may fix this in the future
2013-08-13 22:06:31 -04:00
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
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
63745512bc Call setup_libpbd_enums in PBD::init for portability 2013-08-13 20:15:47 +10:00
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
55c6d4f2be Call PBD::init in ARDOUR::init and PBD::cleanup in ARDOUR::cleanup 2013-08-13 20:15:47 +10:00
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
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
d51eba1162 Change ARDOUR::init return type to bool type for success/failure 2013-08-13 20:15:47 +10:00
a5a3f713d5 assorted extra debug output for MTC 2013-08-12 05:40:11 -04:00
4c4376d5dd fix thinko in 5dee49e19 2013-08-11 17:26:34 +02:00
116694a2cb fix 5dee49e19 (32/64 bit unsigned int compatibility) 2013-08-11 17:19:04 +02:00
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
50bbf3f656 fix output latency option in jack command line 2013-08-10 09:25:18 -04:00
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
862315ec2a actually write JACK command line out to ~/.jackdrc so that settings take effect 2013-08-09 18:11:04 -04:00
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
cec2a3da36 allow ardour to exit after JACK disconnects us 2013-08-09 16:57:23 -04:00
f0fcda2044 Merge branch 'master' into audioengine 2013-08-09 16:29:23 -04:00
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
ca76496ef3 more purging of JACK as an explicit name from libardour 2013-08-09 13:56:23 -04:00
d0381b902c remove more naming that refers to JACK 2013-08-09 13:39:33 -04:00
55e52bcbd5 remove another naming that refers to JACK 2013-08-09 13:38:09 -04:00
8960ebcdf9 remove another naming that refers to JACK 2013-08-09 13:27:05 -04:00
521f8eb776 more sensible ALSA device names now in use 2013-08-09 13:26:40 -04:00
8cd71108c1 Merge branch 'windows' of git.ardour.org:ardour/ardour into windows 2013-08-09 18:04:04 +01:00
fc040a72e9 use original names for ARDOUR MIDI "persistent" ports (MMC, MTC, etc) 2013-08-09 13:03:57 -04:00
5abeb799cf try new code from rui/qjackctl for names of ALSA PCM devices 2013-08-09 13:03:21 -04:00
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
64cc518e72 'libs/ardour' - New files and changes needed for 'msvc_libardour' 2013-08-09 17:53:37 +01:00
dc62ef6123 'libs/ardour' - Correct an invalid buffer address (io.cc) 2013-08-09 17:48:15 +01:00
4a29f1957e 'libs/ardour' - Minor change to an included header file (audiofile_tagger.cc) 2013-08-09 17:46:51 +01:00
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
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
031675f795 changes to allow window branch to build on OS X 2013-08-09 09:17:03 -04:00
fcb76c8c05 fix freewheeling 2013-08-08 22:12:52 -04:00
3070cd723b fix crashes, clean up session code warmup and other details in audioengine 2013-08-08 19:32:56 -04:00
111d35c9c7 add methods to queue full MTC and SPP messages, now that they are synchronous 2013-08-08 19:31:10 -04:00
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
917aed0da0 add new files (code based on the old midi++ JACKMidiPort) 2013-08-08 09:10:11 -04:00
1ab61b8564 major redesign of MIDI port heirarchy and management (part 2) 2013-08-07 22:22:11 -04:00
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
a1370f83db fix compiler warning 2013-08-07 15:57:29 +02:00
5e19f0a1ae use std::numeric_limits<float>::infinity() rather than INFINITY to try to get compilers to agree on the type 2013-08-07 08:40:21 -04:00
7169c77cfc Merge branch 'windows' of git.ardour.org:ardour/ardour into windows 2013-08-06 15:18:27 +01:00
ben
2732c64c07 fix taglib header paths so linked headers are not necessary 2013-08-06 08:50:26 -05:00
616f2a0370 fix conflicts after merge with master 2013-08-05 14:22:32 -04:00
499b7fcfa9 document PortEngine API 2013-08-05 13:55:50 -04:00
a5f69910e4 add notion of unavailable devices to ARDOUR::AudioBackend 2013-08-05 13:19:23 -04:00
a66e3859e1 can now start JACK based on config dialog 2013-08-05 12:51:51 -04:00
0dc8806ee4 'libs/ardour' - Platform specific changes and includes 2013-08-04 19:03:32 +01:00
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
d176cbc804 'libs/ardour' - Compiler specific includes and includes 2013-08-04 17:01:37 +01:00
490311bc08 'libs/ardour' - Main body of changes required for building with MSVC 2013-08-04 15:36:07 +01:00
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
07d94b9b48 'libs/ardour' - Use 'std::vector' instead of dynamically sized arrays (required to be buildable with MSVC) 2013-08-04 15:17:19 +01:00
976fc86811 fix no-roll LTC encoder, honor locates when transport is stopped 2013-08-04 16:13:43 +02:00
fa59391f6a 'libs/ardour' - Use 'const_iterator' where appropriate (required to be buildable with MSVC) 2013-08-04 15:06:10 +01:00
efc46f1553 make master-meter in toolbar optional 2013-08-04 00:06:29 +02:00
333a3c9d02 cleanup more dangling members of AudioEngine 2013-08-03 17:49:19 -04:00
a64908af7f fix undeclared use of cerr 2013-08-03 17:47:26 -04:00
1d50d041c9 fix problem with session exit caused by dangling unused members in AudioEngine 2013-08-03 16:45:07 -04:00
f2ca3ecf0c add file 2013-08-03 16:44:13 -04:00
c2e7c32c53 add tim's jack_utils code to rationalize setup of JACK config 2013-08-03 16:37:10 -04:00
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
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
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
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
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
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
aaabaf5d3c Merge branch 'master' into windows 2013-08-02 12:51:24 -04:00
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
Michael Fisher
7ad81b7b4f Make Session::send_song_position_pointer a no-op 2013-08-02 08:59:32 -05:00
Michael Fisher
5555f5ccf7 Revamp clock processing so it uses an internal frame reference.
MidiClockTicker::Position managed by boost::scoped_ptr
2013-08-02 08:59:32 -05:00
Michael Fisher
18490878b4 WIP - Experimenting with an alternative clock generating algo
- Transport debug output (tracing where transport_frame
      is updated
2013-08-02 08:59:32 -05:00
Michael Fisher
6ffdeaa9f8 - 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-02 08:59:32 -05:00
Michael Fisher
6088446d8f Test code removal... 2013-08-02 08:59:32 -05:00
Michael Fisher
b8964f7b1b 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-02 08:59:32 -05:00
Michael Fisher
d882b03f7d Stop compiler warning about NSURL 2013-08-02 08:59:32 -05:00
bfd50cdeb0 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-02 03:39:00 +02:00
df59a000b7 start code reorganization needed to deal with backend choices. compiles, links and runs as far as the startup screen now 2013-08-01 18:49:40 -04:00
682ebad62b full compilation and linking (coding not finished, will not run) 2013-08-01 14:43:12 -04:00
c98fcb62fb Merge branch 'master' into windows 2013-08-01 10:46:44 -04:00
28f3d76e7c remove an identical odd namespacing typo 2013-08-01 10:46:22 -04:00
bb8cb93789 Merge branch 'master' into windows 2013-08-01 10:44:58 -04:00
6a18103800 remove odd namespacing typo 2013-08-01 10:44:34 -04:00
6a436fd826 fix merge conflict from master 2013-07-31 20:11:15 -04:00
bb59def1ca fixes for windows branch build failures under linux. still does not build on linux, now due to taglib changes 2013-07-31 20:08:43 -04:00
b5239317d4 more stuff compiles 2013-07-31 19:47:20 -04:00
4dc74ae2ea 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-01 00:35:24 +02:00
7a02d9e08d clean up some valgrid "Uninitialised value was created by a heap allocation" wanings 2013-07-31 19:29:20 +02:00
98c6ca5abc Merge branch 'windows' of git.ardour.org:ardour/ardour into windows 2013-07-31 15:09:50 +01:00
ef0c4ed0e6 fix typo in c212c16eb 2013-07-31 15:24:46 +02:00
b5a2b4e84e initialize some uninitialized values 2013-07-31 15:22:51 +02:00
c212c16eb8 catch assert() 2013-07-31 15:17:22 +02:00
097d851730 LV2 - use scratch buffers to scratch :) 2013-07-31 14:45:02 +02:00
1c08b910f0 another amend to 00f26394a9 2013-07-31 14:21:40 +02:00
fbfa0acebe remove compile errors (still will not link and JACKPortEngine is not close to done) 2013-07-30 23:26:46 -04:00
e8dc221191 fix stupid copy/paste error in 00f26394a9 2013-07-31 02:00:31 +02:00
476da4f3df minimize meter-peak re-draw area 2013-07-31 01:59:50 +02:00
5e0c6af406 jack_audiobackend.cc finally compiles 2013-07-30 17:48:57 -04:00
ab7842edfd RMS meter: remove unused peak-detection 2013-07-30 20:22:31 +02:00
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
a9691abf3b small steps toward getting this all working - add new JackConnection object to share jack_client_t between AudioBackend and PortEngine 2013-07-29 23:41:41 -04:00
4af022c7f6 Revert "fix issue with generator plugins and no-roll disk monitoring"
This reverts commit bd34ab04cd.
2013-07-30 03:02:45 +02:00
bd34ab04cd fix issue with generator plugins and no-roll disk monitoring 2013-07-30 02:27:06 +02:00
47ec32fa15 Merge branch 'clang-rebased' of https://github.com/axetota/ardour 2013-07-29 16:03:50 -04:00
Michael Fisher
6fd7ec3fc9 Return an empty string instead of a bool 2013-07-29 14:43:12 -05:00
Michael Fisher
cdc9d95e92 Cast param for std::time to a pointer of time_t
- bleeding clang (trunk 186535 v3.4) fails here
2013-07-29 14:43:12 -05:00
Michael Fisher
a8456b3766 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-07-29 14:43:11 -05:00
Michael Fisher
c442fea139 Housekeeping, code style 2013-07-29 20:05:11 +02:00
Michael Fisher
d391989444 Moving Mclk locating code to ticker.cc. Housekeeping 2013-07-29 20:05:11 +02:00
Michael Fisher
3538fa8442 Add method to send a song position pointer message 2013-07-29 20:05:11 +02:00