Commit Graph

907 Commits

Author SHA1 Message Date
Paul Davis fe8c70e6fc remove debug output 2017-09-18 11:40:53 -04:00
Paul Davis e2f33cdc8b correctly create Tracks, not Busses 2017-09-18 11:40:53 -04:00
Paul Davis 361cab503b random changes required to get an audio track created and transport functional 2017-09-18 11:40:53 -04:00
Paul Davis 35c7274cc9 remove Diskstream from Track and derivatives; get ardour to actually startup 2017-09-18 11:40:53 -04:00
Paul Davis a4a87f56e9 mega-commit to save state of first "it compilesand links" state for separated disk i/o changes.
THIS WILL NOT RUN. THIS REQUIRES MANY CHANGES
2017-09-18 11:40:52 -04:00
Robin Gareus f15fc38bd8 Fix a tiny memory leak 2017-08-20 22:23:10 +02:00
Johannes Mueller bd4db1e151 Remove the template description XMLNode before saving the template
... to avoid that the new template description is concatenated to the old one.
2017-08-20 21:09:30 +02:00
Johannes Mueller ae51d5fd4e Let the user add a template description on saving session templates 2017-08-20 21:09:30 +02:00
Robin Gareus fb745cc5a8 Lua may call C++ functions with throw. Catch them 2017-08-19 01:06:44 +02:00
Robin Gareus 5f0279ab06 Catch some exceptions during session loading. 2017-08-17 19:28:14 +02:00
Robin Gareus 22055a07c0 Check major session file format version.
Don't allow to load sessions created with a newer version of Ardour
with an old one (no forward compatibility).
2017-08-17 18:32:49 +02:00
Robin Gareus 6ec133ebde Separate "add master bus" (and add Lua bindings)
This is in preparation for "advanced session setup" allow a SessionSetup
Lua script to create the master-bus.
2017-08-16 00:51:20 +02:00
Robin Gareus 1d8c7ef37a Clean up BusProfile:
* requested_physical_in/out was unused
 * input/output Autoconnect just overrides Preference/Config
   (can be done by a template script)
 * master_out_channels is kept for compatibility (allow to create
   new empty session)
2017-08-16 00:51:20 +02:00
Robin Gareus 1f5013b4a8 Distinguish error-messages.
The vast majority of errors reported by users as
  "Cannot configure audio/midi engine with session parameters"
have nothing to do with engine-parameters.
2017-06-27 20:28:45 +02:00
Robin Gareus de99d7c528 Allow saving state w/o backend
Connections are remembered by ARDOUR::Port to re-establish at load.
2017-06-25 22:03:42 +02:00
Robin Gareus cc7ff53e1f Create a deep-copy of MIDI sources when saving snapshots 2017-06-25 01:57:19 +02:00
Tim Mayberry 6d35b3c4e4 Remove locale_guard.h from ardour/ardour.h header
Add to source files that use LocaleGuard

Results in far less recompiling when pbd/locale_guard.h changes
2017-06-22 10:48:38 +10:00
Tim Mayberry 5c5cfac4a3 Remove LocaleGuard from Session::load_options
PBD::ConfigVariable uses PBD::to_string/string_to methods so this LocaleGuard
is no longer necessary.
2017-06-22 10:48:38 +10:00
Tim Mayberry def9e110b7 Update Session::writable() during Session::save_as() when switching to copy
Loading a read only Session then making a copy with Save As and switch was
not allowing new Session to be saved as writable state was not updated.

Resolves: #7352
2017-05-13 09:02:02 +10:00
Paul Davis 0c035778e1 libardour now has CoreSelection object to manage selection status of Stripables and AutomationControls 2017-05-05 18:56:25 +01:00
Robin Gareus 0d7e9987b3 fix/amend previous commit. 2017-05-04 23:06:52 +02:00
Robin Gareus 3af9fdad0a Don't save "end-is-free" with templates 2017-05-04 23:00:21 +02:00
Tim Mayberry 4b4d64dd7f Use a const iterator for sorted RouteList in Session::state 2017-04-26 17:36:58 +10:00
Tim Mayberry 3589740d69 Sort Route xml node order by PBD::ID instead of by PresentationInfo
This prevents the node order from changing when the display order of the Routes
changes, which helps to reduce the amount of Session file change.

This is useful for testing and if keeping sessions under version control.

Resolves: #7327
2017-04-26 17:36:58 +10:00
Tim Mayberry 384478a745 Use XMLNode::get_property in Session::restore_history
Avoid using std::stringstream due to potential future issues with C++ locale.

Also avoids potential NULL pointer dereferences.
2017-04-21 12:46:04 +10:00
Robin Gareus f913d5b9f6 NO-OP: whitespace 2017-04-20 23:47:39 +02:00
Tim Mayberry 23d8c41f01 Use XMLNode::get/set_property API in ARDOUR::Session class 2017-04-19 09:36:53 +10:00
Tim Mayberry 334ec95e43 Use ID::to_s() in libardour instead of ID::print() 2017-04-19 07:49:58 +10:00
Robin Gareus 5ebe6fcde8 Add option for record-only metronome. 2017-04-01 23:52:43 +02:00
Robin Gareus f2c0b0ee3f Add an API to query if the audible frame is latent pending a locate
eg. at the end of a loop, the session may already be playing the
beginning of the loop. The TransportLooped signal was emitted.
Yet due to playback latency, the audible frame is still at the end of
the loop.

To interpolate the playhead position the UI needs to be able to know:
Relying on the TransportLooped signal is not sufficient because it
does not take playback latency into account.
2017-03-31 14:01:50 +02:00
Robin Gareus 37bcbcad41 Optimize Session::set_dirty() 2017-03-12 02:36:33 +01:00
Robin Gareus cdc8807728 Prepare re-locating missing external files. 2017-02-22 10:51:08 +01:00
Robin Gareus 6616330531 NO-OP; whitespace 2017-02-22 10:47:59 +01:00
Paul Davis b572f1a617 fix save_as()' inadvertent marking a session as dirty during the process of saving state to disk 2017-02-09 12:40:59 +01:00
Paul Davis 3dbea92519 NO-OP: whitespace removal 2017-02-09 12:40:59 +01:00
Paul Davis 2f0dc08844 when adding a default start/end range to a Location while saving a template, do not mark the current session dirty 2017-02-09 12:40:59 +01:00
nick_m 7b9784fff4 mark session dirty when dragging tempo markers. 2017-01-27 03:05:32 +11:00
Robin Gareus 2dc392b517 update bbe62da55a - use last-modified-with, strip git-rev 2017-01-21 01:19:19 +01:00
Robin Gareus bbe62da55a Extract program version that a session was created with 2017-01-20 18:15:44 +01:00
Robin Gareus 4ee8a0e9fc Plug a memory leak (recent session list, session info) 2017-01-20 01:49:23 +01:00
Robin Gareus 88d797bd64 Prepare session-wide implicit monitoring overrides 2017-01-16 19:54:42 +01:00
Robin Gareus d0596d815f prototype track/bus sharing: state-export 2017-01-08 01:23:01 +01:00
Dobroslav Slavenskoj 5f0857620e Fixing LV2_SUPPORT #ifdefs 2017-01-05 09:24:40 +00:00
Robin Gareus 3afe3f32df Remove cruft (old MIDI feedback API) 2016-12-30 17:29:08 +01:00
nick_m d0580ecfbc allow all types of range location (loop, start, end etc.) to be glued to bars and beats. 2016-12-29 01:39:31 +11:00
Robin Gareus fe01666475 Normalize audio when archiving to fixed-point format. 2016-12-27 18:33:41 +01:00
Robin Gareus e1ca4b2887 Speed up recent session display (for many large sessions)
- don't parse XML into XMLTree
- only read the file, extract relevant elements
- don't read session-template contents, only test file
2016-12-08 10:36:12 +01:00
Robin Gareus 7f9befae2d Add Lua bindings to manage Groups 2016-12-05 23:49:19 +01:00
Robin Gareus a994fd30bd extend Mixbus' "Safe Mode" 2016-10-30 22:25:18 +01:00
Paul Davis 235c1f9adb infrastructure for save/restore of MIDI port user-provided information 2016-10-20 16:34:52 -04:00
Paul Davis f96b698234 infrastructure for MIDI-input-follows-selection 2016-10-19 17:49:35 -04:00
Robin Gareus eae567bd9e Allow opening sessions with files embedded from removable drives
Otherwise Windows shows a critical error for files embedded from
removable devices.
2016-10-13 02:07:34 +02:00
Kamil Rytarowski 5b1b3a76b5 Detect free space on NetBSD 2016-10-04 22:16:35 +02:00
Robin Gareus 75f9a7cf11 don't include session-search paths with templates 2016-09-30 00:11:24 +02:00
Paul Davis e25a4371cb output more stuff to the error channel if/when a session fails to load/be created 2016-09-28 11:28:45 -05:00
Robin Gareus 8018bed0de add an option to exclude unused Audio Sources when archiving the session 2016-09-23 20:34:28 +02:00
Robin Gareus 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
Robin Gareus c80e8727df report archive encoding progress 2016-09-21 13:04:25 +02:00
Robin Gareus aeb1c71211 Add option to flac encode audio when archiving 2016-09-21 04:05:45 +02:00
Robin Gareus 20ebf10ba3 initial support for archiving sessions 2016-09-20 19:52:56 +02:00
Tim Mayberry 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
Tim Mayberry 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
Tim Mayberry 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
John Emmas 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
nick_m ab21b241f7 Fix incorrect estimate of future revision. 2016-09-07 00:32:02 +10:00
nick_m 3f4d49fd2f Load midi region length and start correctly in sessions modified by v5.0 -> 5.3-41 2016-09-07 00:18:35 +10:00
Paul Davis 41cc35cf6e do not allow undo/redo while actively recording 2016-08-17 19:22:26 -04:00
Paul Davis cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
Paul Davis 472ef8c55c once the user has explicitly set the session range end, playlist/range changes do not move it.
The user may drag the marker, edit in the Location UI, or use nudge, to set the end
2016-07-12 11:19:49 -04:00
Paul Davis 54d5f36311 changes in logic used by source cleanup to avoid endless recursion in sessions with deeply nested/recursive compound regions.
This also fixes some potentially dangerous cleanup logic related to two sources with the same name (but different paths)
2016-06-28 15:05:56 -04:00
Robin Gareus 86763cba90 Enable build for FreeBSD (part 1/2)
Adopted from Michael Beer -- GH pull-request #232 with minor changes:

*   rebased on master,
*   removed trailing whitespace,
*   don't explicitly change saved configuration defaults (wscript)
*   moved sys/wait (WNOHANG) to header include
*   separate changes in GUI and lib
2016-06-26 16:43:07 +02:00
Paul Davis 49011ea146 noop: comment fix. 2016-06-10 13:57:19 -04:00
Paul Davis 3c0fd1a115 remove incorrect allocation of a second VCAManager in a session.
Fixes warning about a SessionHandleRef at session close
2016-06-06 16:15:25 -04:00
Robin Gareus 0531d0dd0c save version string with session for informational purposes 2016-06-01 22:43:40 +02:00
Paul Davis 28afaebdc4 fix SNAFU in which Stripable::rec_enable_control() was incorrectly defined as ::recenable_control()
Make Mackie support code use the Stripable to access the rec-enable control while we're here
2016-05-31 15:30:45 -04:00
Paul Davis d31527f2e6 improve/extend Session::controllable_by_descriptor() 2016-05-31 15:30:43 -04:00
Paul Davis 201c5825ac remove debug output 2016-05-31 15:30:42 -04:00
Paul Davis d5127001bb move ControllableDescriptor from libpbd to libardour; add support for describing VCAs 2016-05-31 15:30:42 -04:00
Paul Davis e0ff70cf86 first vaguely working version using PresentationInfo
remote control ID and "order keys" have been removed.
2016-05-31 15:30:42 -04:00
Paul Davis 1e9b2abe73 save and restore vca assignments 2016-05-31 15:30:41 -04:00
Paul Davis 5531c83496 change API of Controllable::Changed signal to include (from_self, GroupControlDisposition)
This allows the signal to convey more information, which may be required by some handlers of a control's Changed signal
2016-05-31 15:30:40 -04:00
Paul Davis c3afeab49c don't increment actual VCA counter when saving session state 2016-05-31 15:30:39 -04:00
Paul Davis 7b62e08233 add required header 2016-05-31 15:30:39 -04:00
Paul Davis 0dca11cb47 save+restore VCA counter value across instances 2016-05-31 15:30:39 -04:00
Paul Davis d2c405416c save/restore VCAManager state 2016-05-31 15:30:38 -04:00
Paul Davis c61a5cabc7 Session HAS-A VCAManager 2016-05-31 15:30:38 -04:00
nick_m 885f1fd684 Tempo ramps - update midi regions and locations when dragging tempo.
- also make locations and regions use a double beat rather than bbt for musical position.
2016-05-27 23:38:10 +10:00
Paul Davis a232673454 make boost shared_ptr debugging a little easier to turn on/off 2016-05-07 13:36:04 -04:00
Robin Gareus e59ab55831 a few strategic LocaleGuards..
..to prevent switching forth and back during  individual
::state(), ::set_state() when loading/saving the session or locating.
2016-05-07 17:16:59 +02:00
Robin Gareus a6e4494482 Revert "Add a global state localeguard (and one for route templates)"
This reverts commit 2b7a047e92.
2016-05-07 12:20:40 +02:00
Robin Gareus 6d343ba3c6 fix LocaleGuard contstructor (3dc77280) 2016-05-07 12:19:41 +02:00
Robin Gareus 2b7a047e92 Add a global state localeguard (and one for route templates) 2016-05-07 01:11:28 +02:00
Robin Gareus 3dc7728038 we always only use the "C" locale when saving. 2016-05-05 21:49:56 +02:00
Paul Davis 17ace643e4 OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one) 2016-05-04 23:09:45 -04:00
Robin Gareus e3607a4c8b plug some memory leaks in libardour 2016-04-24 14:43:18 +02:00
Robin Gareus b2149de37b add notification if Engine Rate changes and mismatches session's SR 2016-04-18 15:16:27 +02:00
Robin Gareus 888614b714 never ever change sample-rate saved with the session after creation. 2016-04-18 14:50:09 +02:00
Robin Gareus 29543a5dcd add a new counter (for sidechain numbering) 2016-04-12 13:49:50 +02:00
Robin Gareus 0e70b779b4 expose Undo Commands to Lua
Some trickery is needed here to manage object lifetimes and
multiple inheritance.
2016-04-10 01:45:41 +02:00
Robin Gareus 024cf58c05 improve elapsed time readability for large numbers. 2016-04-08 21:50:02 +02:00
Robin Gareus 94ebad3854 Profile Session::save_state 2016-04-08 21:45:32 +02:00
Robin Gareus f4553880f6 Implement Lua session-scripts 2016-02-23 15:41:21 +01:00
Paul Davis e9234c856a add syntax and scaffolding for MIDI binding maps to refer to selected tracks/busses.
THIS DOES NOT WORK YET. Selection information is not available in libardour at this time
2016-02-22 15:31:25 -05:00
Paul Davis 2cb3343eec when looking up controllables via descriptors (e.g. generic MIDI control) use the new "well-known" route controllables 2016-02-02 16:42:50 -05:00
Paul Davis fe3d85b204 Revert "mackie: still respond to route groups visibility changes"
This reverts commit a9ec547457.
2016-01-19 14:16:49 -05:00
Paul Davis a9ec547457 mackie: still respond to route groups visibility changes 2016-01-19 13:38:29 -05:00
Paul Davis 1948b50a68 working version of new gain control design 2016-01-18 12:11:08 -05:00
Robin Gareus d9eb5e00c5 cont'd work on plugin-state templates - #6709
Refactor and consolidate code and re-use it for session-templates.
This avoids recursive copying of the plugin-dir()
2015-12-19 14:46:15 +01:00
Paul Davis 41b2de41d6 change API for accessing session MIDI ports so that (1) boost::shared_ptr<> is used all the time (2) we avoid using multiple functions to return different subclass versions of some ports 2015-12-07 12:38:17 -05:00
Robin Gareus 4c04e8028a add API to read snapshot name from instant.xml 2015-11-20 03:22:41 +01:00
Robin Gareus c4084932fa remember in-use snapshot/session name in instant.xml 2015-11-20 03:22:41 +01:00
Tim Mayberry 689862cafb Decouple Session from MidiPatchManager and reduce parsing of midnam xml files
The MidiPatchManager only requires a reference to the session to get the path
to the Session midnam directory so change it so that the path is passed to
MidiPatchManager::add_search_path on Session construction and removed on
Session Destruction. This will also make it easier to test and reduce compile
times etc.

For the common case where the Session doesn't have a Session specific midnam
patch files directory(for instance a new session) it won't cause a refresh and
reparsing of all the midnam files. This saves about 2 seconds to load a Session
on my machine(fast machine with SSD), or about half the time spent in the
Session constructor for a new session.

There is still going to be that initial cost of parsing the midnam files when
the first session is created after starting Ardour. Options to remove that
would be to parse the files asynchronously and or use a faster xml
parser(eventually), neither of which seem worth doing at this stage.

This change will cause a performance regression for the uncommon case where a
Session with Session specific midnam files is unloaded and then another Session
with Session specific midnam files is loaded as it will cause the common midnam
files in midi_patch_path to be parsed twice(unload and load).
2015-10-22 11:51:03 -04:00
André Nusser 67f557b1f4 Add overwrite option to save_template. (default = false)
Before it could not overwrite.
2015-10-21 23:28:44 -04:00
Robin Gareus f53dc5945e extend session-save dirty-flag logic
Snapshot and continue working on current session incorrectly marks 
the session as clean.
2015-10-16 20:54:15 +02:00
Robin Gareus 2397429e99 use quotes for in-tree pbd/glib wrapper include 2015-10-05 22:15:18 +02:00
Robin Gareus dc36b063bf remove unused fstream includes 2015-10-05 22:15:18 +02:00
Paul Davis 297e80e020 attempt to stop transport, finish butler work, and close all files as part of Session > Cleanup 2015-10-04 14:18:04 -04:00
Paul Davis e63de172d5 NOOP: delete trailing whitespace 2015-10-04 14:18:04 -04:00
John Emmas c68736bc02 Change a few instances of 'stat()' to use 'g_stat()' (for UTF8 compatibility on Windows) 2015-10-04 14:18:54 +01:00
Robin Gareus fedec84d3b fix iterator after map::erase().
The iterator referring to the removed element is invalidated.
Other iterators remain valid.
2015-09-23 22:26:44 +02:00
Robin Gareus 7ac691ec82 use pbd's gstdio compatibility wrapper 2015-09-17 14:37:57 +02:00
Robin Gareus 04e7cfabbe prepare peak-file cleanup/recreate. 2015-09-15 14:44:05 +02:00
John Emmas 551e20b926 Remove ifstream / ofstream when accessing session template files (or creating a new session from a template file)
On Windows, the above classes don't support UTF-8 so let's get rid of them and use g_fopen / stringstream / fwrite() etc.
2015-09-15 13:17:22 +01:00
Robin Gareus cb6c975417 remove cruft 2015-09-12 17:55:04 +02:00
Robin Gareus 390ea007c5 rework peakfile handling:
- copy old peak-files to new (do not require re-calc)
- keep old peak-files (for now, backwards compat)
- fix cleanup-sources to remove *new* peak-file
- include channel-number in hash (like it was done before)

see also 624f76b

TODO: add Session > Cleanup > remove/re-create peaks
2015-09-10 00:55:58 +02:00
Mathias Buhr 624f76b229 Fixes case where audiofiles used wrong peakfiles 2015-09-03 09:54:23 +02:00
Tim Mayberry b4e13cbbb7 Add undo history related debug output for debugging Undo/Redo issues 2015-08-19 13:56:11 +10:00
Paul Davis b8b5d0b4c7 alternative fix for the same problem that 9e2048decf was addressing 2015-07-02 14:15:11 -04:00
Robin Gareus 9e2048decf Don’t use invalid iterator during cleanup. fixes #6403 2015-07-02 19:46:38 +02:00
Paul Davis 205f9bca96 push seek-after-state-loaded into butler thread, to avoid multiple threads doing disk i/o related stuff 2015-06-29 14:18:16 -04:00
Paul Davis 8e9bb12f92 no-op: fix whitespace/indentation 2015-06-29 14:18:15 -04:00
GZharun dd0a73e2d4 Fixed use case when session is being replaced with new session with the same name.
We should check session state file (*.ardour) presence to determine if the session is new for TracksLive as TracksLive has a use case which gives user a possibility to replace existing session by clicking on it's state file when new session is being created.
[To be Reviewed by] Paul Davis
2015-06-29 14:18:15 -04:00
Paul Davis 6bdac56998 some more information output to log during save-as, for debugging 2015-06-29 14:18:15 -04:00
Paul Davis 8ac5ef15f0 add more directory names to set managed via various APIs (automation, analysis, plugins, externals) 2015-06-29 14:18:14 -04:00
Paul Davis 68aab0153c rename Session::add_session_range_location() to ::set_session_range_location() 2015-06-29 14:18:14 -04:00
Paul Davis ab2e23db9a follow various events related to playhead priority (loop changes, parameter changes); remove debug output 2015-06-29 14:18:13 -04:00
Paul Davis e2a76746e6 fix accidentally deleted return value 2015-06-29 14:18:13 -04:00
Paul Davis 5927fb4997 fix timing of Butler mapping config parameters to avoid crash.
Amazing that this didn't show up on Linux at all, or on the first run after build. Computers ... sigh.

Conflicts:
	libs/ardour/butler.cc
2015-06-29 14:18:13 -04:00
Paul Davis 5f4f40205b clean up cherry-pick of varifill tweaks from Waves Tracks 2015-06-29 14:18:12 -04:00
Paul Davis ca09a4a355 more tweaks for varifill model, and avoid filling playback buffers during session loading
Conflicts:
	libs/ardour/diskstream.cc
	libs/ardour/session.cc
	libs/ardour/session_state.cc

Conflicts:
	libs/ardour/session.cc
2015-06-29 14:18:12 -04:00
Valeriy Kamyshniy 8505c16057 [Summary] Just adding comment for better code-maintaining. 2015-06-29 14:18:12 -04:00
Paul Davis f116455280 after changing session SR, reset all write sources to use new rate 2015-06-29 14:18:12 -04:00
Paul Davis 32224ee608 add in more Tracks-related auto-(re)connect changes 2015-06-29 14:18:11 -04:00
Paul Davis bebb03a0a4 add in more Tracks-related auto-(re)connect changes, all conditionalized by Profile 2015-06-29 14:18:11 -04:00
nikolay ed291ee8d0 [Summary] Changed function name update_route_active_state() on update_route_record_state()
[Reviewed] GZharun

Conflicts:
	libs/ardour/ardour/session.h
	libs/ardour/session.cc
	libs/ardour/session_state.cc
2015-06-29 14:18:10 -04:00
Paul Davis 4235367acd fixed previous commit from Tracks to work correctly in all cases 2015-06-29 14:18:10 -04:00
Valeriy Kamyshniy 07c81a763f [Summary] BUG FIXED: New name of a session saved with “save as”, was not stored in the session recent list.
[Reviewed] YPozdnyakov
2015-06-29 14:18:10 -04:00
Valeriy Kamyshniy 1f98535b52 [Summary] Adding informative message to failed file copy exception in Session::save_as.
[Review required] Paul Davis
2015-06-29 14:18:10 -04:00
Paul Davis 445d742af1 save recent templates analogously to recent sessions 2015-06-29 14:18:10 -04:00
Paul Davis 0365c5cc47 Tracks-specific handling of template dir 2015-06-29 14:18:10 -04:00
Paul Davis 893cb3460c fix cherry-pick logic failure with Session::save_template() - Tracks case already taken care of 2015-06-29 14:18:10 -04:00
Valeriy Kamyshniy 1acee68037 [Summary] a) On MAC OS, .DS_Store files are ignored when saving a session by “Save As”.
b) plugins folder is not created for Templates.

[Required review] Paul Davis, YPozdnyakov

Conflicts:
	libs/ardour/session_state.cc
2015-06-29 14:18:10 -04:00
Valeriy Kamyshniy 7c5d849247 [Summary] For tracks when saving templates, we need stored the Auto Loop Range and all MIDI markers. As well, just to follow canonical rule: dealing with a pointer (_location in Session::state) check it for NULL prior to any operation (s), accessing the pointer.
[Review required] YPozdnyakov, GZharun, Paul Davis
2015-06-29 14:18:10 -04:00
Paul Davis 2a1d0e20f0 emit SessionSaveUnderWay signal during template save 2015-06-29 14:18:10 -04:00
Paul Davis fba9bff5b0 improved error handling and checking for Session::save_template() 2015-06-29 14:18:10 -04:00
Paul Davis ec991ae047 expand comment 2015-06-02 12:27:39 -04:00
Paul Davis 59028b6c80 close all source files before renaming interchange tree in Session::rename() 2015-06-02 12:09:04 -04:00
Paul Davis 0412060b44 tweaks and improvements to Save-As
Always copy MIDI files, they are small and they get rewritten for lots of reasons, which can cause confusion
if the user elected to NOT "copy media" since the file ends up existing in both the new and old (but in use)
session.

Avoid copying analysis files on Windows, where for now the files contain illegal colon characters
2015-05-28 19:26:21 -04:00
Paul Davis 7f902ae1b6 some more information output to log during save-as, for debugging 2015-05-27 10:57:40 -04:00
Paul Davis e73b4e6f55 fix cleanup (code is self-evident). From Yevgeny @ waves 2015-05-14 07:01:01 -04:00
Paul Davis f082e45298 extend save-as API to allow for new empty sessions based on current 2015-05-07 22:35:35 -04:00
Paul Davis 0038820f47 copy contents of analysis, plugins, automation and externals folders during save-as 2015-05-07 17:10:14 -04:00
Paul Davis e902029b26 fix Session::rename() 2015-05-07 12:06:49 -04:00
Paul Davis 31acba8305 debugging rename/save-as 2015-05-05 21:30:00 -04:00
Robin Gareus 27dac7c31f Expose “/route/trim” midi binding. 2015-04-26 19:07:45 +02:00
Paul Davis 847c9de7be do not reset paths for sources that are still outside the session after save-as 2015-04-21 00:18:49 -04:00
Paul Davis ced4378d09 Merge branch 'master' into saveas
Conflicts:
	gtk2_ardour/ardour.menus.in
	libs/ardour/session_state.cc
2015-04-20 15:10:41 -04:00
Paul Davis 6dea7ebfb0 changes related to resetting source paths during save-as.
This does NOT work with MIDI files at present, because of SNAFU in SMF class, where end_write()
opens the file on its own, without _file_path being set. Needs some careful work, because basically
the SMF<=>SMFSource relationship is not tenable
2015-04-06 21:18:52 -04:00
Paul Davis b2da3bccc0 after save-as, if switching to new session, reset all track write sources to use new session path 2015-04-06 12:05:36 -04:00
Robin Gareus f0231766d7 session rename details:
* don’t allow to rename read-only sessions
* prevent periodic save (while rename is in progress)
* no renaming while actively recording (peak files
  among other things will mess things up)
2015-04-05 16:02:07 +02:00
Robin Gareus 4b485332ce fix renaming renamed session. 2015-04-05 16:01:08 +02:00
Robin Gareus 5694509bdf fix rename error message 2015-04-05 15:40:25 +02:00
Robin Gareus 1395125283 update peak filename when renaming session, fixes #5869 2015-04-05 14:55:19 +02:00
Paul Davis 73f967c330 delete tempo map at appropriate times 2015-04-01 10:58:56 -04:00
Robin Gareus db8406dc4a disk-space calc is windows (not MSVC) specific. 2015-03-10 00:21:37 +01:00
Ben Loftis 6cad07fc11 fix boot message always sticking on the last loaded route; it looked like an error 2015-02-10 14:43:16 -06:00
nick_m ff13ac8b4f Clean up Session's _current_trans when aborting a drag. 2015-02-05 23:32:57 +11:00
Paul Davis ab3ec791ea Add a new signal (not yet used) to initiate session saves; alter signal name for existing signal used to allow other objects to add XML state to session 2015-01-24 19:06:31 -05:00
Ben Loftis d2fa2450aa use C locale, because POSIX locale is not supported on windows, and operation is undefined. C works on all platforms 2015-01-19 07:29:25 -06:00
Paul Davis 7a0b0685c2 set failure message if new session folder cannot be created for any reason during save-as 2015-01-15 09:11:56 -05:00
Paul Davis 140778641c get Session::save_as() working much more correctly, and cleaner 2015-01-14 17:53:23 -05:00
Paul Davis 08d56360d6 first working version of save-as 2015-01-12 12:57:05 -05:00
Paul Davis c3725d0a7b add initial code (and stubs) for save-as related functionality 2015-01-11 12:15:14 -05:00
Ben Loftis 0fba29a67a tweak boot message so the final message makes more sense 2015-01-08 07:38:08 -06:00
Robin Gareus 6e3e1738dd removed hardcoded ".ardour" suffix 2015-01-05 17:48:42 +01:00
David Robillard 7eb4e5d22b Replace thinning static state with parameter. 2014-11-30 23:56:20 -05:00
Robin Gareus 37937d9c69 synchronize preferences and monitor-section 2014-11-18 03:49:20 +01:00
Paul Davis f900711136 port changes to ARDOUR::Location and ARDOUR::Locations APIs from Tracks to Ardour.
Fixes deadlocks caused by mutex on Locations list, and clarifies the purposes and uses of the class-level and
object-level change-related signals.
2014-10-24 12:18:46 -04:00
Paul Davis 679356c5ee fix delivery of MMC events under split process cycle conditions 2014-10-22 17:07:11 -04:00
Robin Gareus 472900f4ff cleanup unused nested regions:
This and two previous commits fixes #5979
2014-10-10 14:12:48 +02:00
Colin Fletcher 44f71ce599 Text tweaks and typo fixes 2014-10-02 18:03:19 +01:00
Robin Gareus 56f5bcffce copy plugin-state from template on session creation (amend 3353b48) 2014-09-28 19:25:40 +02:00
Robin Gareus 3353b48646 fix templates: copy plugin state 2014-09-28 18:24:08 +02:00
Paul Davis 3ec0f367c1 next (final?) part of handling missing MIDI files.
If an external-to-session file is missing, consider it a fatal error in session loading.
If an internal-to-session file is missing, just create a new MIDI source with the same path and ID, and use that instead.
2014-09-24 19:04:05 -04:00
Paul Davis cfc658de04 do not mark session dirty during loading process; sync with loaded locations state using standard method 2014-09-17 12:28:09 -04:00
Paul Davis b3c78e906c if a (file) source really cannot be found, differentiate between audio & MIDI.
For now, recovering from missing MIDI is a no-can-do situation (because MIDI is inherently data-editable).
2014-09-15 14:09:12 -04:00
Robin Gareus d421602c24 delete session XML object after loading and setting state. 2014-09-10 05:18:09 +02:00
Ben Loftis b128271f29 consistently use mixed-case labels 2014-08-01 14:31:18 -05:00
Paul Davis 1fd4d40dbb add mutex to prevent concurrent session state saves.
Why wasn't this done 10 years ago?
2014-07-09 10:18:28 -04:00
Paul Davis 7364ca213a do not attempt to save undo history if it is empty, and do not do any part of history save if we're not going to write a new file 2014-07-09 10:10:44 -04:00
Paul Davis fcabd5d8ee initial implementation of "bring all media into session folder". Incomplete but basically functional for audio files 2014-07-08 00:53:13 -04:00
Robin Gareus 7d13a49761 remove cruft.
periodic save is done with maybe_write_autosave()
2014-07-06 14:43:07 +02:00
Paul Davis 23e7cf1019 merge with master.
Manually resolved conflicts in import.cc and session.cc
2014-07-01 09:46:18 -04:00
Robin Gareus 8df35b35ba allow to load/save default session-properties 2014-06-29 16:11:46 +02:00
Robin Gareus ecd11253c1 add Session::StateProtector
temp. disable save during batch updates, save once at
the end.
2014-06-28 22:02:20 +02:00
Robin Gareus c0c68dbf4d consolidate session_dirs: use Searchpath instead of custom code 2014-06-28 22:02:20 +02:00
Tim Mayberry cb3a604936 Move functions in pbd/clear_dir.h/cc into pbd/file_utils.h/cc 2014-06-25 12:40:10 -04:00
Tim Mayberry 547689a055 Replace all use of PathScanner with equivalent functions from pbd/file_utils.h 2014-06-17 21:41:29 +10:00
Tim Mayberry 0e96d84079 Change PBD::PathScanner API to return results by value to avoid inadvertent memory leaks 2014-06-17 21:13:05 +10:00
Robin Gareus ca3c9cae6e basic integration of delaylines (still un-nused) 2014-06-11 17:14:18 +02:00
Paul Davis 74bc0c8468 substantive changes to the logic and safety for naming of (audio/MIDI) sources, especially when created via import 2014-06-02 11:20:37 -04:00
Paul Davis 2cf411e4be merge (squash) with scenechange topic branch to provide MIDI-driven scene change markers 2014-04-28 19:58:24 -04:00
Robin Gareus 5a3a8fc8f2 fix issue with duplicate entry in "Recent" menu after re-naming a session 2014-04-20 18:55:14 +02:00
John Emmas 5d9c2104d2 Oops - correct some typos in my previous commit
(accidentally used G_DIR_SEPARATOR instead of G_SEARCHPATH_SEPARATOR)
2014-04-11 15:36:04 +01:00
John Emmas d95de39339 Make sure we use the correct style of filepath separator on Windows
('libs/ardour/file_source.cc' still to be investigated)
2014-04-11 13:03:48 +01:00
Robin Gareus 903f1d7853 check if session dir is writable (needed for .bak files, undo, etc) 2014-03-21 16:10:29 +01:00
Paul Davis 9f98837255 more error messages if session renaming fails, and remove stupid use of RENAME macro and use ::g_rename() instead 2014-03-12 08:49:18 -04:00
Paul Davis 2a7ed69c28 merge with master, with minor conflict fixes 2014-02-07 19:00:44 -05:00
Paul Davis d47fe167e3 when cleaning up sources, do not remove "stub" sources from the source list, even though they do not exist on disk yet; remove some debug output 2014-02-07 17:38:42 -05:00
Paul Davis 60a9213035 fix utter confusion about session _path in new sessions.
Yikes!
2014-02-07 13:56:44 -05:00
Robin Gareus 7c69b0ab82 add debug-message to track down missing Sources 2014-02-05 18:49:32 +01:00
Paul Davis 550b991176 remove unnecessary recently-added include for realpath, which is not actively used 2013-12-05 17:39:41 -05:00
Paul Davis 3144a81acb additional header needed for mingw build to get realpath() 2013-12-05 14:49:03 -05:00
Tim Mayberry c3d2b1ea18 Use PBD::canonical_path instead of ::realpath
This is a previous change that seems to have been lost in master -> windows merge
2013-12-02 21:25:47 +10:00
Paul Davis d135c4dc3a fix merge conflicts with master 2013-10-23 08:47:57 -04:00
nick_m 5b62e88fbf Unify editor / mixer ordering. 2013-10-21 00:19:43 +11:00
Paul Davis c4b1a5504e fix missing Click outputs for new sessions 2013-10-18 15:28:10 -04:00
Paul Davis 2a6a16f980 merge with master, fixing conflicts in 3 wscript files 2013-10-09 14:00:42 -04:00
Paul Davis 82f0f3a9a7 fix up crash caused by changes in object creation order and setting the state of the click IO object 2013-10-02 16:17:22 -04:00
Paul Davis e43a8dac1c make information extraction from session file options list robust against some old badly formatted session files
Fixes crash experienced by GillesM, where a rogue XML entry caused a segfault
2013-09-25 17:59:10 -04:00
Paul Davis 4209e8a834 add new static functions to get SR and disk sample format from session XML 2013-09-23 21:35:51 -04:00
Paul Davis 20f28c82ec make session creation from a template work again 2013-09-22 11:19:34 -04:00
Paul Davis fb45fdc052 fix conflicts and merge with master 2013-09-16 22:11:06 -04:00
Paul Davis 39ee88b3f9 more session construction order changes, and removal of n_physical_{inputs,outputs} members which were (a) not initialized early enough (b) not used anywhere except monitor bus connection.
Things almost make sense now.
2013-09-16 12:08:19 -04:00
Paul Davis 31157cb343 fix ordering in session construction so that new sessions and existing ones both work 2013-09-16 09:57:22 -04:00
Paul Davis 60da662aff Merge branch 'master' into windows 2013-09-14 16:21:32 -04:00
Paul Davis 6b23417ae0 move creation of Graph till after we have the engine running, since we need access to the backend 2013-09-14 16:17:24 -04:00
Paul Davis 4861eca974 Merge branch 'master' into windows 2013-09-13 11:55:56 -04:00
Paul Davis 9af75b2ac9 reinstate unblocking-of-connections in session setup, accidentally dropped in reorganization work 2013-09-12 16:27:58 -04:00
Paul Davis bb826f4bee incomplete merge of master into windows (requires upcoming changes to master to be complete) 2013-09-12 11:28:50 -04:00
Paul Davis f85b362351 *maybe* fix issues with zombification during session loading 2013-09-11 16:33:40 -04:00
Paul Davis 7c719e441a fix handling of new session
defer save state till after everything done in post_engine_init() is complete.
2013-09-11 09:59:56 -04:00
Paul Davis 209e4bdcae many changes relating to session construction and audioengine interaction
every session member is now initialized using C++ constructor syntax

session construction reordered to clarify the split(s) between work
where the engine is not relevant and work where is it is. this
split is still not 100% obvious, but is enormously clearer than
previously.

if engine/backend are not running as session is created, and the SR
of the sample rate is known, attempt to force backend to that value.
2013-09-10 15:41:19 -04:00
Paul Davis 19d05fa436 start reordering of Session initialization
the goal is to allow a clear demarcation of where we need
the audioengine and have existing data parameters (e.g. sample rate)
for the session so that we can coerce the engine (if possible)
to match to session values.

also, to rationalize construction even more and use C++
constructor syntax as much as possible.
2013-09-09 22:40:54 -04:00
Tim Mayberry 8ddd12a60d Rename SearchPath class Searchpath
Windows headers define SearchPath which means we have to undefine it
where necessary. This is a pain and can be tricksy, so I feel renaming
the class slightly is the easiest solution.
2013-09-06 14:31:11 +10:00
Paul Davis 1c49138e00 move MidiPortManager from AudioEngine to Session
This makes the responsibilities and ownership of non-Route related MIDI ports
more clear, and removes a few wierd bits of code. It also ensures that open/close/open
on the same session will retain connections for those MIDI ports
2013-09-05 13:22:34 -04:00
John Emmas a64f7fe28c 'libs/ardour' - Minor changes to prevent MSVC from complaining about malformed comments 2013-09-05 10:07:57 +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 031675f795 changes to allow window branch to build on OS X 2013-08-09 09:17:03 -04:00