Commit Graph

90 Commits

Author SHA1 Message Date
Paul Davis
bbb0b78a50 fetch thread local tempo map in potential peak-building threads 2022-06-20 14:25:40 -06:00
Paul Davis
55752ed8b7 NOOP: blank line deletion 2022-04-05 20:52:10 -06:00
Paul Davis
bc38f8d424 MidiSource: change thread mutual exclusion object from Mutex to a RWLock
This allows two reader threads to proceed without blocking each other, as can
happen when the butler renders a MIDI track into an RT-safe buffer while the
GUI reads the same MidiModel/Source for visual display.
2022-04-05 20:52:09 -06:00
Paul Davis
1686db8b0c Change the type of reference held by a MidiModel to its MidiSource
This also requires a change in the type of reference held by
a MidiAutomationListBinder.

Both the MidiSource and MidiModel have a reference to each other, and it is
important that we avoid circular references to avoid problems with object
destruction. We had been accomplishing this by having the Model hold a
weak_ptr<MidiSource>. However, the lifetime of a MidiSource and its MidiModel
are coincident and there's really no need to use a smart ptr at all. A normal
reference is just fine. However, due to constructors that accept a serialized
state, we cannot use an actual reference (we cannot set the constructor in the
initializer list), so we use a bare ptr instead.

This forces a similar change in MidiAutomationListBinder, which also maintains
a reference to the Source. However, the only purpose of this object is to
ensure that if the Source is destroyed, relevant commands will be removed from
the undo/redo history, and so all that matters here is that the binder connects
to the Destroyed signal of the source, and arranges for its own destruction
when received.

Note that the previous construction of the binder, actually holding a
shared_ptr<MidiSource> would appear have prevented the Destroyed signal from
ever being emitted (from ~Destructible), and so this may also be a bug fix that
allows MidiSources to actually be deleted (the memory object, not the file).
2022-04-05 20:52:09 -06:00
Robin Gareus
75ec5ee87d Terminate Peak file threads at exit 2022-03-01 18:20:40 +01:00
Robin Gareus
183f00bbed NO-OP: cleanup and lang-format 2022-03-01 18:00:20 +01:00
Robin Gareus
24bbf403b9 Replace Glib::Threads with PBD::Thread (1/2) 2022-03-01 01:33:49 +01:00
Paul Davis
cdb1972928 continuing timeline type conversions 2021-08-13 12:51:29 -06:00
Paul Davis
eae9d276fe libardour: conversion to use timeline types (mega-commit) 2021-08-13 12:51:29 -06:00
Robin Gareus
cbbcdb4fe6 SourceFactory throw instead of returning nullptr #623 2021-07-10 17:46:57 +02:00
Marijn Kruisselbrink
0a54f96a44 Add M4A support to the audio import dialog using FFMPEG.
This uses the existing optional runtime ffmpeg dependency to add support
for m4a files (and in theory whatever other file formats ffmpeg
supports) to the import audio dialog.

The same functionality is mostly already available via Session -> Open
Video, with the "import audio only" selection (even though m4a isn't
currently included as one of the video formats, it still works). Having
this in the import audio dialog however seems much more user friendly.
2021-06-21 02:30:36 +02:00
Robin Gareus
5957e14259 Remove unused #include<> (2/2)
PBD::stacktrace() is not used nor needed by default.
It should be used sparingly.
2021-05-05 17:57:16 +02:00
Robin Gareus
c365c6cdb2 Set thread-names (libs) 2020-03-29 14:56:22 +02:00
Paul Davis
a4d7b45fe0 remove destructive/tape mode tracks 2020-03-17 16:31:49 -06:00
Robin Gareus
bcfe16610a Consolidate shared-ptr debugging 2020-02-25 22:23:30 +01:00
Robin Gareus
f845bef8c6 Update source-factory boost-debug 2020-02-25 02:34:04 +01:00
Robin Gareus
c7c40f6f3d Remove #ifdef'ed format-specific error-log messages
With inclusion of Mp3FileSource, this would get tricky.
On MacOS, the SndFileSource's sf_error_str message is never displayed,
anyway, also calling methods all handle failed-constructor.
So error-log is less important.
2019-12-07 15:38:53 +01:00
Robin Gareus
9040fd4670 Flatten nested try/catch clauses
This also consistently throws a failed_constructor() when instantiating
a CoreAudioSource fails, regardless of the actual exception
2019-12-07 15:38:48 +01:00
Robin Gareus
d0b6c437ce Implement mp3 import, using minimp3 2019-12-06 18:18:54 +01:00
Robin Gareus
227de8c1b0 Flatten nested try/catch clauses
This also consistently throws a failed_constructor() when instantiating
SoundFile fails, regardless of the actual exception
2019-12-06 18:16:10 +01:00
Robin Gareus
a22f918d9d Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Paul Davis
027d0efc2d catch various libsmf errors rethrown as exceptions 2018-07-05 13:45:17 -04:00
Paul Davis
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -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
a232673454 make boost shared_ptr debugging a little easier to turn on/off 2016-05-07 13:36:04 -04: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
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Paul Davis
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
Robin Gareus
4b20e719a8 prepare displaying peakfile queue-len 2015-09-15 17:50:27 +02:00
David Robillard
7eab4c6f33 Don't assume compiler can avoid copy to const ref. 2014-12-18 04:03:39 -05:00
David Robillard
a706755710 Fix various MIDI locking issues.
Attempt to make mistakes much less likely in the future by statically requiring
caller to pass scoped locks where necessary.
2014-12-17 16:07:29 -05:00
Paul Davis
b660bc8ae9 fix crash recovery: add new constructors to SndFileSource, AudioFileSource, add a new SourceFactory method and finally tweak
AudioDiskstream::use_pending_capture_data() to create both the required whole-file and the in-playlist regions
2014-06-10 10:09:26 -04:00
Paul Davis
f5276a104c add new SMFSource constructor to be used for existing-external files. Fixes #5919. Needs merging with CC 2014-04-28 10:37:17 -04:00
Robin Gareus
eb853b79c4 fix midi source factory -- load_model() uses shared_from_this() 2014-01-22 15:30:04 +01:00
Paul Davis
b691d4bf04 fix up some confusion with filesources' _origin and _file_is_new members. if _origin is set, it means that the file is "external" to the session (aka "embedded") and for some purposes this is more significant than _file_is_new. rename SourceFactory::createReadable() to ::createExternal() to more clearly indicate its purpose; remove never-supplied "origin" argument from SourceFactor::createWritable(). Fixes problems caused by 864ce8f0 2013-03-30 14:02:26 -04:00
Paul Davis
3cd8138a41 convert from Glib:: to Glib::Threads for all thread-related API
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25 17:48:55 +00:00
Carl Hetherington
d3bd0279ae Trim include.
git-svn-id: svn://localhost/ardour2/branches/3.0@10375 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-01 02:39:34 +00:00
Paul Davis
4aeebb914e changes for OS X support: change waf config define to COREAUDIO_SUPPORT, remove PluginInsert call to IO::PortCountChanged, remove use of explicit Carbon linkage, fix up AudioUnit internals to actually work (Cocoa GUIs still currently broken)
git-svn-id: svn://localhost/ardour2/branches/3.0@10224 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-18 15:08:42 +00:00
Paul Davis
7181a20dc6 don't double-load NestedSource nodes, which are listed both forthe parent/root region and all children; even better, don't list them twice anyway - just for the whole file parent/root region
git-svn-id: svn://localhost/ardour2/branches/3.0@9761 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-22 22:46:31 +00:00
David Robillard
a473d630eb Fix broken whitespace. I'd apologize for the compile times if it was my fault :D
git-svn-id: svn://localhost/ardour2/branches/3.0@9654 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-01 16:50:12 +00:00
Paul Davis
c3821a7816 totally untested initial code for MidiPlaylistSource, to provide for compound MIDI regions. putting it into SVN because my system might crash overnight :)
git-svn-id: svn://localhost/ardour2/branches/3.0@9626 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-29 01:54:19 +00:00
Paul Davis
d6be900da0 more combine/uncombine fixes including making uncombine push the compound region gain level into the constituents and doing the right thing when we uncombine in a playlist other than the one in which the compound region was created
git-svn-id: svn://localhost/ardour2/branches/3.0@9601 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-26 17:22:22 +00:00
Paul Davis
99aa8c6338 rename join regions op as combine regions; save and restore nested playlists, sources, regions; add undo/redo for combine; fixup peakfile use/discovery
git-svn-id: svn://localhost/ardour2/branches/3.0@9528 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-16 20:16:57 +00:00
Paul Davis
4b5bd4ca46 refactor playlist sources to allow for MIDI and upcoming work on save/restore
git-svn-id: svn://localhost/ardour2/branches/3.0@9521 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-16 15:49:26 +00:00
Paul Davis
0a9cef7720 very basic Join (regions) editing operation. not finished yet, no undoable, no sensible name for new region, etc. etc
git-svn-id: svn://localhost/ardour2/branches/3.0@9518 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-16 02:17:58 +00:00
Paul Davis
41b23ca647 initial volley of work for AudioPlaylistSource, the basic prototype for sources-that-are-nested
git-svn-id: svn://localhost/ardour2/branches/3.0@9507 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-13 19:55:39 +00:00
Carl Hetherington
9efd8e2e40 Add assert to make sure that we succeed in making a writable SMFSource.
git-svn-id: svn://localhost/ardour2/branches/3.0@8995 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-03-01 02:04:23 +00:00
Paul Davis
7cf4419d62 #ifdef-ize all/most uses of the boost debug hooks API
git-svn-id: svn://localhost/ardour2/branches/3.0@8823 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-02-10 18:33:43 +00:00
Carl Hetherington
7d4e03e28e Use a weak_ptr rather than a bald pointer for _midi_source in MidiModel.
git-svn-id: svn://localhost/ardour2/branches/3.0@8228 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-12-09 21:34:31 +00:00
Carl Hetherington
73192bc1a7 Remove all use of nframes_t.
git-svn-id: svn://localhost/ardour2/branches/3.0@8166 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-12-03 22:26:29 +00:00