Commit graph

14333 commits

Author SHA1 Message Date
Paul Davis
dd4c788d3e add syntactic sugar for fetching toggle and radio actions 2018-12-06 22:12:34 -05:00
Paul Davis
eb48c14ec4 some ActionMap infrastructure to start removing ActionManager 2018-12-05 17:33:05 -05:00
Paul Davis
4d7e9d5706 add new variant of ActionMap::find_action()
This is more useful when replacing ActionManager::get_action
2018-12-05 17:33:05 -05:00
Robin Gareus
c2652437da
Skip silent sources on session-archive -- fixes #7699 2018-12-05 16:54:13 +01:00
Robin Gareus
863a6ade9e
Prevent endless read of silent files
This fixes issues with analysis and archiving that rely on a readable
to return 0.

Note however that createSilent() uses max_samplecnt (INT64_MAX) by
default. This relies on a region setting the length of its missing
source.
2018-12-05 16:04:29 +01:00
Robin Gareus
5f3672eef0
Use atomic read for an atomic variable
This probably no real world effect since there is a mutex in the
loop that acts as a memory barrier.
2018-12-04 22:12:43 +01:00
Robin Gareus
aa8128cdf5
Fix logic-error in d1cf2163: hide info for optimized builds 2018-12-04 17:06:13 +01:00
Robin Gareus
d1cf21634f
Special case Mixbus Chanstrip for load calculation
These processors don't have a UI, so their load stats are not easily
visible. The stats can still be queried via Lua API or DSP-load
overview window, so we retain this for debug builds.
2018-12-03 22:43:02 +01:00
Robin Gareus
b285559767
Consistent AU factory Preset IDs
Use AU's preset->presetNumber as identifier since std::map are sorted
this also indirectly sorts presets by preset-number. (user presets
start with a '/' and are listed first, sorted by name).

Since Presets are now identified by URI on session load (53a0199a0)
and AU user-presets can added/be removed (since ae4604a24b), simple
sequential numbering is no longer an option.
2018-12-03 20:45:06 +01:00
Robin Gareus
6877ac820b
Don't invalidate AU preset on load
This works around async parameter-changed signal emission when loading
an AU preset. A simple timeout is used to delay making the preset
as modified.
2018-12-02 02:04:21 +01:00
Robin Gareus
ae4604a24b
Implement AU plugin-preset removal 2018-12-02 01:37:33 +01:00
Robin Gareus
53a0199a06
Restore actual plugin-preset on session-load
This checks if the preset is actually available on the given system
and also sets the user-flag correctly.
2018-12-02 01:36:32 +01:00
Robin Gareus
3c7dea43af
Towards fixing AU preset invalidation
This is a step in the right direction: first load the preset and
only if preset-loading was successful mark it as loaded.

This still does not properly unset "parameter_changed_since_last_preset".
AU signals "kAudioUnitEvent_ParameterValueChange" later in the event-loop.
2018-12-02 00:26:57 +01:00
Robin Gareus
d53af10c92
AU: mark preset dirty when parameter changes 2018-12-01 05:36:33 +01:00
Robin Gareus
b66726fdc1
Fix AU preset handling
load_property_list() takes a file-path (not URI). Actually it's not
clear why we've ever used a `file:///` URI internally.
2018-12-01 05:33:26 +01:00
Robin Gareus
f443626daa
Fix a tiny memory leak, add_instant_xml() copies the node 2018-11-29 14:25:52 +01:00
Robin Gareus
fc24b9f0b7
Fix uninitialized variable 2018-11-29 02:10:08 +01:00
Robin Gareus
a22a501537
NO-OP: whitespace 2018-11-29 02:07:29 +01:00
Robin Gareus
1759d1c9c9
Fix a tiny memory-leak when calling vfork 2018-11-29 02:06:42 +01:00
Robin Gareus
6fc2804414
Disk I/O: only allocate midi-buffer if needed
This fixes a memory-leak (_midi_buf was allocated in DiskIOProc
but only delete in DiskReader). Also skip midi-refill early on
2018-11-29 02:05:26 +01:00
Robin Gareus
dfbda9e0f6
Fix a potential memory-corruption
Disk-writer run() can concurrently use the ringbuffer after it was
free()ed by the butler thread.
2018-11-28 21:41:30 +01:00
Robin Gareus
076e9fddd4
Remove ambiguous API implementation
* PortEngine::available() implementation
* AudioEngine::connected() wrapper

Eventually we may re-introduce PortEngine::available along
with a libardour internal port-engine.
2018-11-28 15:32:40 +01:00
Robin Gareus
81857a947c
Consolidate ambiguous engine API calls
available(), connected(), running() were ill-defined and
used interchangeably.
2018-11-28 15:24:47 +01:00
Robin Gareus
5531a440c9
Fix stuck connection block when template load fails.
Session::new_route_from_template() unconditionally calls
IO::disable_connecting(), and needs to be reverted likewise
(no RAII here).
2018-11-26 21:45:06 +01:00
Robin Gareus
dce81aecc5
Prevent deadlock when removing routes w/o engine 2018-11-26 03:31:02 +01:00
Robin Gareus
ae2a6175cc
Don't allow to add/remove monitor-section w/o engine
Adding/removing the Monitor section changes port-connections,
a port-engine is needed to establish connections.

Ideally we'd allow this and queue for connection changes. This
will however require deep changes.

Also toggling the monitor-section on/off/on w/o engine can later
result in failure to register ports. Due to lack of engine-signals
not all shared_ptr<> port references are dropped.
2018-11-26 03:15:14 +01:00
Robin Gareus
13c984c216
Fix various issues when the engine disconnects:
Previously Port::PortDrop was never handled.
The signal was disconnected directly when the connection
is re-used by Port::PortSignalDrop.

Ports::drop() was not called when the engine was stopped
or disconnected, and port-handles were not invalidated.

This lead to crashes whenever a port-related operation was performed
while the engine was stopped. e.g. adding/removing tracks or plugins
(latency recompute, notify port-engine) and various other operations.
2018-11-26 02:39:55 +01:00
Robin Gareus
cf98a75558
Do not allocate MIDI buffers for signal analysis
At this point in time MIDI buffers are vastly over-sized.
They include VST and LV2 event structure. This added about a MB per
plugin for no benefit.
2018-11-25 17:43:15 +01:00
Robin Gareus
5273c636ab
Fix Linux/PPC64 runtime
This fixes an error while loading shared libraries: libardour.so

  R_PPC64_ADDR32 reloc at 0x... for symbol `' out of range

Treating a local as an immediate value in asm code makes the library
non-relocatable.
2018-11-25 16:57:51 +01:00
Robin Gareus
3fd8dad9d6
Allow compilation with winpthreads -- closes #7691 2018-11-25 16:51:24 +01:00
Robin Gareus
01e0472481 Auditioner: check if removing synth succeeds
remove_processor() also calls drop_references, when successful.
2018-11-24 02:01:16 +01:00
Robin Gareus
948c5d0706 Handle some midnam edge-cases
Whitespace between XML nodes can result in "text" children.
Those need to be skipped in the patch-name list.
2018-11-23 22:43:26 +01:00
Robin Gareus
771ddcc86f NO-OP: whitespace and re-organization 2018-11-23 22:09:13 +01:00
Robin Gareus
2e3e183204 Load audition synth on demand
This saves some memory (gmsynth loads a 30MB soundfont), and also
re-initializes the synth every time to gm defaults in case some
.mid changes patches or parameters.
2018-11-23 22:00:04 +01:00
Robin Gareus
8c4c97d1e2 Update Fluidsynth to v2.0.2 2018-11-23 16:05:19 +01:00
John Emmas
afee22d5fa Add/remove source(s) in our MSVC project (audiographer) 2018-11-23 07:27:32 +00:00
John Emmas
b7317eb1b3 Add/remove source(s) in our MSVC project (libardour) 2018-11-23 07:25:54 +00:00
Robin Gareus
04fe6d6fb4 Amend prev. commit, actually remove (1.0 - x) as was documented 2018-11-22 21:05:03 +01:00
Robin Gareus
7ed37d67ff Backwards compatible sndfile support
SFC_SET_COMPRESSION_LEVEL was only added in 2012 and only available in
libsndfile 1.0.26 or later.
2018-11-22 20:36:41 +01:00
Robin Gareus
f795462100 Save LV2 Port Property values locally
This keeps track of lv2:Parameter properties modified with Port:Set,
currently file-paths.
2018-11-22 14:58:44 +01:00
Robin Gareus
9326ced760 Allow to revert export-format from disk
This allows to restore ProfileManager's ExportFormatSpec without
re-instantiating the ProfileManager.
2018-11-21 23:14:52 +01:00
Robin Gareus
3d366053e2 Set encoder quality for existing ExportFormatSpecs 2018-11-21 21:19:01 +01:00
Robin Gareus
d6a92dc521 Include session-metadata in external/ffmpeg export 2018-11-21 00:03:36 +01:00
Robin Gareus
d169864b5b Prepare session-metadata export to external command 2018-11-20 23:56:12 +01:00
Robin Gareus
7b709b3cea Implement vorbis encoder quality
This also prepares for codec-quality defaults, but
ExportFormatSpecification does not yet set those for previously unset
or new formats/presets.
2018-11-20 03:21:17 +01:00
Robin Gareus
27e0e78e1d Implement FFMPEG/MP3 export-format spec and profile 2018-11-20 00:21:01 +01:00
Robin Gareus
5fa05b403c Prepare export-format codec-quality setting 2018-11-19 22:26:16 +01:00
Robin Gareus
d18b247a05 Fix Windows and Mac Builds
* missing include for locale_to_utf8 (amend 4c6ff5f7e7)
* avoid void* arithemtic (amend 103ef2ba)
2018-11-19 12:54:07 +01:00
Robin Gareus
df72e1ba4f Initial backend support for external export encoder
This adds an experimental pipe to ffmpeg to encode mp3. Currently
quality is hardcoded and various aspects remain to be implemented.
However, it is sufficient for initial testing.
2018-11-19 05:21:17 +01:00
Robin Gareus
e4cbd5115e Add Pipe-to-command export backend
A first step towards allowing external encoders without intermediate
temporary file.
2018-11-19 03:30:40 +01:00