13
0
Commit Graph

11531 Commits

Author SHA1 Message Date
8018bed0de add an option to exclude unused Audio Sources when archiving the session 2016-09-23 20:34:28 +02:00
f7cb5b1a6b fix a typo.
Really a no-op, AudioSource::length() ignores the position, and
for regular regions > 0 is equivalent to != 0
2016-09-23 18:46:34 +02:00
nick_m
080e7755a6 Remove _midi_regions_use_bbt_beats from Session, _start_pulse and _length_pulse from MidiRegion.
- _start/length_beats are now quarter notes regardless
	  of loaded session version.

	- also restores note colour update
2016-09-23 03:39:05 +10:00
b475fda66e PortManager::silence() should not clear data in AsyncMIDIPorts
This data was generated asynchronously and is not required to be "silenced"
the way that session data would be. Compare also to the similar tests for
sync-related MIDI ports
2016-09-21 23:02:38 -05:00
c21332df71 gain controls are supposed to be "gain-like" 2016-09-21 17:18:48 -05:00
c80e8727df report archive encoding progress 2016-09-21 13:04:25 +02:00
aeb1c71211 Add option to flac encode audio when archiving 2016-09-21 04:05:45 +02:00
1acfb11cb6 add a static flag to force writing LV2 state
This is needed for save-as and archiving, LV2 state may not be saved
otherwise if lilv_state_equals() returns true.

Also if thestate is saved as part of save-as or archiving or
template, the state-version did increase.
Upcoming normal save will reference a plugin state that does not exist
in the current session bundle.
2016-09-21 03:45:57 +02:00
ad0aef7dce add API to change FileSource path in-place
This allows to retain IDs and References of a FileSource, while
changing the actual file under the hood (e.g. from .wav to .flac)
2016-09-21 03:42:06 +02:00
22e16b7904 add a SndFileSource c'tor to create .flac encoded file for archiving 2016-09-21 03:40:48 +02:00
7e09dc1aa6 fix LV2 State Flags for Atom:Path
state-restore does not set the same flag, so lilv_state_equals()
returns false even for identical states and a new state is saved regardless

actual fix also depends on http://dev.drobilla.net/ticket/1145
2016-09-21 03:34:43 +02:00
20ebf10ba3 initial support for archiving sessions 2016-09-20 19:52:56 +02:00
441eaebd92 Restore ARDOUR::MuteControl state, fixes bug #7025
This should be the final part of a fix for bug #7025, which means the id
property of PBD::Controllable is restored and a new id is not generated at
first save.

I'm assuming this was a typo, comparing with the wrong name meant the state of
the MuteControl was never being restored. This also fixes restoring bindings
associated MuteControl instances.
2016-09-20 15:52:31 +10:00
3797d8c2f1 Fully restore ARDOUR::SoloSafeControl state
This is part of a fix for bug #7025 which means the id property of
PBD::Controllable is restored and a new id is not generated at first save.
2016-09-20 15:52:31 +10:00
359e63fbe8 Fully restore ARDOUR::SoloIsolateControl state
This is part of a fix for bug #7025 which means the id property of
PBD::Controllable is restored and a new id is not generated at first save.
2016-09-20 15:52:30 +10:00
19831f068c Fully restore ARDOUR::SoloControl state
This is part of a fix for bug #7025 which means the id property of
PBD::Controllable is restored and a new id is not generated at first save.

This also fixes restoring bindings associated SoloControl instances, which is a
bit surprising hasn't been noticed/reported.
2016-09-20 15:51:16 +10:00
b6c80153c3 add API to create [tar.xz] archives 2016-09-19 11:33:07 +02:00
02b7db03bd PBD::canonical_path will no longer throw so change test 2016-09-19 15:55:39 +10:00
569167a603 Move PBD::canonical_path to pbd/file_utils.h/cc and reimplement for Windows
This fixes the libpbd testCanonicalPathUTF8 and libardour
open_session_utf8_path unit tests

You can now have Sessions with localized names containing characters that
aren't in the system codepage on Windows.

It also fixes the issue where a Session would not open when it was moved into a
path with characters that aren't in the system codepage.

The only use case for calling canonical_path/realpath on the session path
AFAICT is for resolving relative paths that are passed via the command
line/terminal. I'm doubtful that works correctly on Windows because of
character encoding issues with the current API we use for that(not glib), so it
is slightly ironic that this issue was caused by an incorrect implementation of
a function that is not really necessary on Windows at this point in time.
2016-09-19 14:47:52 +10:00
75ade6b2df Add test to create new Sessions with localized names and reopen them
This test is successful on Linux but fails on Windows currently because of the
incorrect realpath implementation for windows in pbd/path_expand.cc
2016-09-19 14:47:52 +10:00
1a0ac52021 Copy UTF-8 test strings from libpbd tests into libardour test utils
Ideally these would be shared.
2016-09-19 14:47:52 +10:00
9192a2e969 Add test for PBD::canonical_path on Windows using utf8 strings
This currently fails because the windows only realpath implementation in
pbd/pathexpand.cc, which is called from PBD::canonical_path to resolve the path
uses Glib::locale_from/to_utf8. As I demonstrated in the
testOpenFileUTF8Filename test case Glib::locale_from/to_utf8 are not the
correct functions to use for this use case as it converts to/from utf-8 to the
locale's current character encoding.  On Windows this is most often a single
byte encoding such as Windows-1252 and conversion will fail if the path
contains any characters that are not in system codepage.
2016-09-19 14:47:52 +10:00
aa77c2eb58 Give the Windows MMTimer test a better chance of passing
The default scheduling on windows seems fairly erratic or is at least in the
VM that I'm running these tests on, so increase the timing slack a bit so the
test has a better chance of passing. It is still quite easy for it to fail
though, especially if you for instance manipulate the terminal window somehow
while running the tests but it does not really matter in any case as this test
serves its purpose in testing the PBD::MMTimers API.
2016-09-19 14:47:52 +10:00
aca6e667a8 update a-plugins to use official lv2plug.in URI 2016-09-18 19:07:49 +02:00
e2b06156c9 add support for LV2 #coarseBlockLength and #enabled
this deprecated previously non-standard extensions
2016-09-18 19:06:59 +02:00
eaa1dacf5f ensure that Lua DSP scripts are configured (even with 0 channels)
This fixes an issue with dsp_configure not being when there are
only MIDI signals at the given insertion point.
2016-09-18 01:17:05 +02:00
ce16b5424f Fix crash when ExportDialog is hidden
The issue is that when ExportDialog is destroyed
ExportFileNotebook::FilePage::on_hide is called which in turn calls
ExportProfileManager::save_format_to_disk() in order to save changes to the
analysis and soundcloud upload checkboxes. This then causes the
ExportProfileManager::FormatListChanged signal to be emitted, which in all
other cases is emitted when the format list is modified so that the GUI can
rebuild the format selector menu in ExportFormatSelector::update_format_list
when a format is added or removed.

The problem when doing this in the destructor is that some of the widgets have
already been destroyed, specifically the issue was in
ExportFileNotebook::update_soundcloud_upload trying to access the
soundcloud_selector member that had already had its destructor called.

As it is not necessary to call this signal in the first place and it just
causes unnecessary GUI updates remove the signal emission.
2016-09-17 22:03:16 +10:00
ac4ad28b4f Fix indentation in ARDOUR::ExportProfileManager source file 2016-09-17 22:03:16 +10:00
6ad519ce8e VST threading: prevent concurrent effSetChunk and process()
This is a potential fix for unreliable preset load/restore.
(http://mixbus.harrisonconsoles.com/forum/thread-1970-post-21486.html#pid21486)

Since a Glib Mutex can't be copy-constructed an explicit copy c'tor
is needed.
2016-09-17 13:46:30 +02:00
a1fae47c15 NO-OP: whitespace 2016-09-16 22:38:14 +02:00
140c4bb115 re-do previous commit
* do not include _by_name() API. Port names are locale dependent
* proper whitespace (after comma, before bracket) and styleguide
2016-09-16 22:35:27 +02:00
2b8979647b Revert "Add convenience Lua bindings to access plugin controls"
This reverts commit faf4438646.
2016-09-16 22:31:43 +02:00
Thomas Brand
faf4438646 Add convenience Lua bindings to access plugin controls 2016-09-16 22:09:05 +02:00
8e36e9bf05 remove cruft - don't pollute global namespace
* remove unused functions
* don't globally export C functions that are only used locally
2016-09-16 22:05:43 +02:00
4042c234b1 Modify our MSVC project to use the newly introduced 'libarchive' library (libardour) 2016-09-15 14:46:33 +01:00
e9e412b989 Modify our MSVC project to use the newly introduced 'libarchive' library (libpbd) 2016-09-15 14:39:38 +01:00
9a0d4499f9 Fix passing ctrl-output data to lua inline display thread 2016-09-15 14:01:43 +02:00
ff53fa9806 Send/show error message if g_stat fails in Session::cleanup_sources
let the user/developer know if this does occur rather than just silently
skipping the file.

Fix some whitespace issues while we are changing indentation.
2016-09-15 21:27:55 +10:00
304b491a29 Use g_strerror() instead of ::strerror() in Session::cleanup_sources
The error is generated by a glib function so use the glib version of this
function(it also consistent with usage in the rest the file).
2016-09-15 21:27:55 +10:00
36d1d842df Use g_rename() instead of ::rename() in Session::cleanup_sources
The paths are in UTF-8 encoding and ::rename expects paths in the system
codepage encoding so ::rename will fail for any paths that contain characters
that aren't in the system codepage.

This fixes Flush Wastebasket on Windows where paths contain characters that
aren't in the system codepage(usually most non-ascii characters).
2016-09-15 21:27:55 +10:00
d36c41f128 Use g_strerror instead of strerror in ARDOUR::FileSource
For consistency when calling glib functions and to get UTF-8 strings for
display.
2016-09-15 21:27:55 +10:00
331bfef416 Use ::g_rename instead of ::rename in ARDOUR::FileSource class
The path is in UTF-8 encoding so use Glib functions to properly support paths
containing characters that aren't in the system codepage.

This fixes Clean-up Unused Sources on Windows where paths contain characters
that aren't in the system codepage(usually most non-ascii characters).
2016-09-15 21:27:55 +10:00
77bd398153 implement file-[un]archive progress report 2016-09-14 23:10:41 +02:00
b66d5e842b Add analyse and soundcloud-upload properties of ExportFormatSpecification to xml state 2016-09-14 20:36:03 +10:00
83b48f5cc4 Check a return value from 'g_stat()'
Some Mixbus users (on Windows) have reported seeing ludicrously high figures for the amount of disk space that'll be recovered if they choose to clean up unused sources. I can't see anything obviously wrong in Ardour's code - except for one situation where we don't check a return value after calling 'g_stat()'.

On Windows, the relevant path should be (hopefully!) in UTF8 format and the first thing that g_stat() does is to convert it to UTF16. If that conversion fails for some reason, g_stat() will return an error status and statbuf will be uninitialized - but at the moment, we're not checking this. As an experiment, let's check the returned value and find out if these user reports go away.

Unfortunately, if it does fix the problem then we've got an even bigger problem - because somehow, a Windows user can create source files with invalid names which can't be later deleted!!
2016-09-14 09:58:10 +01:00
Nathan Stewart
3b7cb8275a Fixes 7004 - Ardour crash on Just Quit when AudioEngine is stopped. AudioEngine::stop() if running() is not true and _backend->stop() is true, mutex was being unlocked without being locked. 2016-09-13 19:26:36 -05:00
f41bc70ee9 change all MIDI read-from-source to map all events into the loop-range for seamless looping (if using) 2016-09-13 14:11:29 -05:00
182e35235c debug output formatting 2016-09-13 14:11:29 -05:00
e942c389a7 do not call MidiRingBuffer::skip_to() when getting a MidiDiskstream's playback buffer, and do not use port offset to shift data in time either (it should be correct) 2016-09-13 14:11:29 -05:00
4fa0e3ee90 make MidiBuffer::read_from() use "dst_offset" correctly to alter the time of events read from the MidiBuffer 2016-09-13 14:11:29 -05:00