Commit graph

16662 commits

Author SHA1 Message Date
Robin Gareus
d5a2f6b2e0
Add Lua binding to get a file's basename 2020-11-30 22:15:26 +01:00
Robin Gareus
b043336c86
Fix monitor-sends with templates
This fixes an issues with missing monitor-sends when creating
a session from a template with monitor-section, or when creating
tracks from a route-template.
2020-11-27 00:11:41 +01:00
Robin Gareus
a62fd0379e
Consolidate monitor-send setup 2020-11-26 23:58:15 +01:00
Robin Gareus
52f62f0c14
Possible fix for linking with new libdbus
libdbus_1_la-dbus-sysdeps-pthread.o): in function _dbus_platform_condvar_new':
undefined reference to pthread_condattr_setclock’
2020-11-26 00:50:56 +01:00
Robin Gareus
8d0a655608
VST3: cleanup, drop references (2/2) 2020-11-25 05:33:53 +01:00
Robin Gareus
3a74c5e602
VST3: add more debug messages 2020-11-25 02:20:37 +01:00
Robin Gareus
5e853d0977
VST3: fix plugin bus configuration
This fixes crashes when configuring some plugins that have more
input busses than output busses. e.g. TDR Nova.
2020-11-25 02:18:22 +01:00
Robin Gareus
ce43161d4e
WebSockets: log hostname and listen-port 2020-11-23 20:12:57 +01:00
Robin Gareus
80e3c191e4
Pulseaudio: allow steam being suspended during export
When exporting long sessions with freewheeling, pulseaudio
may meanwhile suspend the corked audio device. The "FAIL_ON_SUSPEND"
option then prevents ardour to uncork it after export, and the
audio-backend is halted.
2020-11-22 21:41:47 +01:00
Robin Gareus
da4d1cd779
Yet another export fix (amend a529122249) 2020-11-22 20:44:45 +01:00
Robin Gareus
ef8eb36189
Fix export (amend a529122249) 2020-11-22 20:20:05 +01:00
Robin Gareus
767d5f93ba
Fix segfault when plugin insantiation fails
*PluginInfo::load() eventually calls `plugin->set_info()`
which depends on a valid PluginPtr. The method needs to return
early if `plugin` is unset or null.
2020-11-21 22:28:48 +01:00
Robin Gareus
a529122249
Optimize stem and direct-out export 2020-11-20 20:14:52 +01:00
Robin Gareus
a1f40979bd
VST3: fix failed c'tor case
~VST3PI() may call terminate() w/o a VST3 component.
2020-11-20 19:48:39 +01:00
Robin Gareus
a329de9d2f
NO-OP: help out clang-analyzer 2020-11-20 19:42:33 +01:00
Robin Gareus
7d4cd5c76a
Fix C++11ism 2020-11-20 13:32:20 +01:00
Robin Gareus
6ca4980e71
FP8: Allow to sort plugin-params by priority 2020-11-20 06:04:32 +01:00
Robin Gareus
3ac7e11eea
Support lv2:port-props:displayPriority 2020-11-20 06:03:49 +01:00
Robin Gareus
7558c1316e
VST3: inform plugins about last bar 2020-11-20 02:07:49 +01:00
Robin Gareus
50d8eff0d6
Allow const tempo-map lookups 2020-11-20 02:07:37 +01:00
luna
8f00826803
Make sure VST3 projectTimeMusic is updated 2020-11-20 01:43:21 +01:00
Luciano Iam
9ee828b47b
WS: properly support MIDI strips 2020-11-19 17:03:36 +01:00
Porrumentzio
a8d924d9e1
Update and rework Basque translation 2020-11-19 16:48:58 +01:00
Hector Martin
4b9e46f11d Fix normalization in Temporal::Beats for times between -1 and 0 beats
Also fix normalization of times with negative beats and positive ticks
2020-11-18 13:40:31 -07:00
Robin Gareus
ff51e315e3
VST3: fix kMaxSendLevel, on Mixbus 15dB gain can be added 2020-11-17 14:54:31 +01:00
Robin Gareus
5a27cb9780
Fix copy/edit in 0d8f4eb95a 2020-11-17 03:16:30 +01:00
Robin Gareus
5fd2d6cc81
VST3: add debug message for preset/state restore 2020-11-17 02:44:11 +01:00
Robin Gareus
0d8f4eb95a
VST3: Fix uninitialized variable, likely fixes #8460 2020-11-17 02:43:55 +01:00
Robin Gareus
4a8e9f28f3
VST3: unconditionally set controller's component state
This synchronizes component and controller when loading presets
like the VST3 SDK does.
2020-11-17 00:56:54 +01:00
Robin Gareus
de76d583b4
Remove unused variable 2020-11-17 00:16:36 +01:00
Robin Gareus
f9e9c6248d
Initialize inline_ctrl variable, fix erratic inline ctrls 2020-11-16 18:27:09 +01:00
Robin Gareus
5950df2b74
VST3: fix duplicate plugin list (windows bundle vs dll) 2020-11-16 18:26:29 +01:00
Robin Gareus
f149a82688
Add support for RIFF and ID3v2 tags (wav, aiff) 2020-11-14 19:30:54 +01:00
Robin Gareus
a95d87ef6e
NO-OP: whitespace and private variable-name
This pipes export source-code though clang-format, and some
manual cleanup step.
2020-11-14 17:44:48 +01:00
Robin Gareus
fec37c58bd
Flush plugins from rt-thread, prevent concurrent processing
Route::realtime_handle_transport_stopped() does have insufficient
information (PostTransportLocate), so "flush" is called from
Route::non_realtime_transport_stop in the butler thread.

However plugin de/activate() must not be called concurrently with
processing. e.g. https://lv2plug.in/ns/lv2core explicitly states:

"Hosts MUST guarantee that: An Instantiation function for an instance
is never called concurrently with any other function for that instance."
2020-11-14 02:49:50 +01:00
Paul Davis
40edc10f4b update libs RU translation (Alexandre Prokoudine) 2020-11-13 13:17:30 -07:00
Paul Davis
5b182f65be transport: remove apparently unnecessary code related to locates with auto-play turned off 2020-11-12 18:54:44 -07:00
Paul Davis
8b048bb351 transport: use butler seek count, not PostTransportLocate to decide whether to call non_realtime_locate(), and update butler seek count at end 2020-11-12 18:54:44 -07:00
Paul Davis
ef4d825232 TransportFSM: set _last_locate when doing an interrupted locate 2020-11-12 18:54:44 -07:00
Paul Davis
ab6a1d062d add new butler seek counter 2020-11-12 18:54:44 -07:00
Robin Gareus
ee74a932c6
Zero length Events are illegal
This would later trigger an assert() in MidiRingBuffer<T>::read
when reading the status-byte, and cause undefined behavior down
in optimized builds.

It is unsure if this can happen, but it may explain
https://marcan.st/paste/LHDXNQ9x.txt
2020-11-12 16:51:48 +01:00
Robin Gareus
d3eab4e309
Prevent duplicate meters when importing tempo-map #8449
The file linked from the bug report has a meter-change
in the middle of a bar. Ardour maps this back to the previous
bar, which already has a meter-change. Session load fails with
  "Multiple meter definitions found at 473"

The tempo-map of the file ends like this:
```
  Meter 11/32 @227040 (beat 473)
  Meter 4 / 4 @227680 (beat 483.666667)
```
2020-11-11 18:48:51 +01:00
Robin Gareus
81862f8c30
Allow to move pulse stream #8467
This potentially breaks various assumptions (e.g. no resampling,
fixed buffersize) when the stream is moved to a different device.
Then again it's pulseaudio, which is unsuitable for pro-audio to
begin with.
2020-11-11 15:59:26 +01:00
Robin Gareus
ff7bd23661
NO-OP: comments 2020-11-10 19:31:25 +01:00
Robin Gareus
512b47c878
micro-optimization (skip atomic test) 2020-11-10 19:31:09 +01:00
Robin Gareus
01cdaa49b4
Fix gcc-4.x/C++98 builds (amend f87de76b9f)
This resolves error: invalid use of 'unary *' on pointer to member
error: 'volatile gint RCUManager<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::shared_ptr<ARDOUR::Port>, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::shared_ptr<ARDOUR::Port> > > > >::active_reads' is protected
2020-11-10 18:41:27 +01:00
Robin Gareus
b1846a578d
NO-OP: whitespace, doxygen formatting and naming 2020-11-10 17:05:22 +01:00
Hector Martin
f87de76b9f
RCU: Fix race condition between writer/reader
This uses an atomic counter and spins only on the writer side, which
preserves realtime behavior on the reader side. The spinning yields (by
using the same Boost function from Boost spinlocks) to be
scheduler-friendly.

Fixing this bug also lets us be able to confidently drop garbage early
in the writer if appropriate, so do that and avoid keeping dead wood if
possible.

This reverts commit f95439a502:
"add spinlock to RCU manager to protect concurrent reader() and update() calls"
2020-11-10 17:05:16 +01:00
Hector Martin
55c2c9db7e Add sanity assert in MidiBuffer::insert_event to check for overflow 2020-11-10 21:03:42 +09:00
Hector Martin
a568b3c7c2 Complain when MidiBuffer::merge_from fails due to buffer full
We were previously dropping MIDI data silently
2020-11-10 21:03:42 +09:00