Commit graph

15844 commits

Author SHA1 Message Date
Robin Gareus
cfd95340b1
Fix exporting multiple range (MacOS)
The actual issue was introduced in 61e7f3176b:
Session::non_realtime_stop() no longer unsets PostTransportStop
(other changes from that commit are not relevant).

The real issue however is a race-condition.
So far this only seems to happen on MacOS, Coreaudio.

It seems that non_realtime_stop() is called in the butler-thread
after exporting has started, even though the butler has been
paused in wait_until_finished().

Perhaps Coreaudio thread switches causes TransportFSM to
reinitialize and scheduling the butler?

The use of `usleep()` makes this rather a workaround.
However it's sufficient for the coreaudio rt thread to run
at least once.
2020-04-08 15:59:30 +02:00
John Emmas
02473f058c Add/remove source(s) in our MSVC project (ardour_mackie) 2020-04-08 11:34:54 +01:00
Paul Davis
6a8863386a use an Unwinder to provde exception-safety 2020-04-08 00:28:30 -06:00
Paul Davis
78a66b7180 improved port cleanup as backend is destroyed 2020-04-07 23:26:51 -06:00
Paul Davis
ec9784764c better fix for port destruction 2020-04-07 23:21:48 -06:00
Paul Davis
09b51f3901 Revert "PortEngineSharedImpl callbacks should not be pure virtual"
This reverts commit a13ef36b3b.

A better fix is coming.
2020-04-07 23:21:06 -06:00
Paul Davis
5b6e2b088e show ARDOUR::Port destructor with either DEBUG::Ports or DEBUG::Destruction 2020-04-07 23:20:15 -06:00
Paul Davis
a13ef36b3b PortEngineSharedImpl callbacks should not be pure virtual
A port can callback from its destructor, which if occuring inside the backend destructor
would reach an already partially destructed backend.
2020-04-07 20:36:20 -06:00
Paul Davis
ede8b9995a fix another explicit return val for ::get_port_by_name() if JACK has died 2020-04-07 18:57:24 -06:00
Paul Davis
2591c81c1a fix explicit return val for ::get_port_by_name() if JACK has died 2020-04-07 18:54:57 -06:00
Paul Davis
0a8b670bd0 yet another attempted fix for older gcc/mingw 2020-04-07 18:47:51 -06:00
Paul Davis
0c859316a3 another attempted fix for older gcc/mingw 2020-04-07 18:44:40 -06:00
Paul Davis
5d2bacd238 do not initialize shared_ptr<Subview> with 0 2020-04-07 18:37:18 -06:00
Paul Davis
3f30a0ad39 more code rearrangement ... old gcc/mingw does not allow Enum::Value 2020-04-07 18:32:45 -06:00
Paul Davis
595be0e5e9 try some rearrangement to fix old mingw builds 2020-04-07 18:15:51 -06:00
Paul Davis
893e835dca NOOP: whitespace 2020-04-07 18:15:51 -06:00
Robin Gareus
8562582da2
Cont'd work on disk reader channel initialization
Amend 648beb94. If initial re-fill happens via override buffers,
the buffer may still be effectively empty.
2020-04-08 02:12:58 +02:00
Paul Davis
d045dae5ff fix missing #include 2020-04-07 17:33:14 -06:00
Paul Davis
33ae34124a fix missing #include 2020-04-07 17:27:31 -06:00
Paul Davis
e345f38c7b fix missing #include 2020-04-07 17:22:55 -06:00
Paul Davis
71e04c945f fix return value to be a legal null shared_ptr<PortPtr> 2020-04-07 17:18:10 -06:00
Paul Davis
92005cd992 fix 2 additional "resets" of shared_ptr<PortPtr> 2020-04-07 17:11:50 -06:00
Robin Gareus
648beb94a0
Fix false-positive under-run messages
Port (or Tracks) can be safely added during playback, however
the disk-reader's playback buffer is initially empty. This lead to
false-positive Underrun() signals when processing takes place
before or concurrently with re-filling the disk-buffer for the new
channels.

Now new empty buffers are ignored, and produce silence until the
initial refill is complete. There is however no per-channel
de-click in, yet.

This fixes: play some audio track, ctrl+drag a region to the
drop-zone, creating a new track while playing.
2020-04-08 01:09:40 +02:00
Paul Davis
e893c31701 "fix" some uses of foo<bar<>> by change the closing chars to "> >" (windows 2020-04-07 17:08:17 -06:00
Paul Davis
76245107c7 fix 2 additional "resets" of shared_ptr<PortPtr> 2020-04-07 17:02:08 -06:00
Paul Davis
260afe85ca fix "reset" of shared_ptr<PortPtr> 2020-04-07 16:57:49 -06:00
Paul Davis
32734ce53c fix portaudio backend to use shared_ptr 2020-04-07 16:00:22 -06:00
Robin Gareus
989e388cad
Add option to reset x-run count on record-start 2020-04-07 23:14:11 +02:00
Phil
69067b9d99 add plugin support for mackie units
Main features: Plugin (Select & Edit)

1.  Plugin Select: When a track is selected that has PluginInserts, pushing the "Plug-In" button on a mackie will list these across the strips. Clicking a vpot of a strip enables editing the parameters of this selected plugin.
2. Plugin Edit: When a Plugin is selected for editing, the input parameters of the plugin are shown across the channel strips and the vpot is assigned the corresponsing AutomationControl for the parameter.

Minor features

- When the number of plugins or the number of parameters exceeds the number of strips available on the surface, one can flip through "pages" of views using the Cursor Left and Right keys (this logic I took from http://www.emagic.de/media/support/content/manuals/LogicControl_en.pdf)
- When in the Plugin Select mode, rearranging the plugins in the mixer strip is reflected on the surface.
- When in Plugin Edit mode, rearranging the plugins in the mixer strip still retains the edit view of the selected plugin (rearranging does not take away the current subview)
 - When removing a plugin in the mixer strip, this is reflected in Plugin Select, while the view jumps to Pan/Surround (the None subview) when in Plugin Edit mode.
- Removing a track resets the subview to None
- When in a Subview that is track-specific (Track, EQ, Send, Plug-In, Inst), selecting a different track retains the subview but updates the channel displays and vpot assignments accordingly. When in Plugin Edit mode for track A, and track B is selected, it changes to Plugin Select mode for track B (if plugins are present).
2020-04-07 14:35:09 -06:00
Paul Davis
ff41232d16 fix CoreAudio backend to use shared_ptr 2020-04-07 13:52:35 -06:00
Paul Davis
d827f3fdae fix up shared_ptr<> use in JACK backend 2020-04-07 13:23:49 -06:00
Paul Davis
b9cb306e8b use shared_ptr to manage backend port lifetimes (Pulse,ALSA,Dummy,JACK)
JACK is not yet finished.

Changes also include minor reformatting and a spelling correction (latecies to latencies)
2020-04-07 13:23:49 -06:00
Robin Gareus
2377927fc1
NO-OP: whitespace 2020-04-07 16:20:53 +02:00
Robin Gareus
91a213427e
Remove unused variable 2020-04-07 16:05:47 +02:00
Robin Gareus
ebf26ddc9b
NO-OP: whitespace 2020-04-07 15:59:18 +02:00
Robin Gareus
4420f95026
Further tweak ambiguous latency check
Ignore latency of async ports (Virtual Keyboard in particular),
and only consider ardour's own ports.
2020-04-07 13:32:28 +02:00
Robin Gareus
1ee6b63299
Expose Port::flags() to Lua 2020-04-07 13:27:49 +02:00
Robin Gareus
5e2eb230bc
Fix typo in API name (1/2) 2020-04-07 04:07:31 +02:00
Robin Gareus
2932337a32
Fix ambiguous latency check
Only compare playback latency, delaylines in tracks do not
push back the capture latency to the source.
The delayline on tracks sits in between disk-writer and disk-reader,
delaying input to align with the disk-reader.

Furthermore tracks may be connected to different inputs,
even though those inputs are usually from the same hardware
device, capture latency of those ports can differ.
2020-04-07 04:06:02 +02:00
Robin Gareus
e95d33502f
NO-OP: whitespace 2020-04-07 04:02:52 +02:00
Robin Gareus
b5ca7d352a
Atomically reset peak meters #7465 2020-04-07 03:58:31 +02:00
Robin Gareus
f24cabe9e9
Fix rotary control knob mapping
This fixes an issue with Foldback strips pan controls being inverted.
2020-04-07 00:37:30 +02:00
Robin Gareus
aa2ddb5ea2
API change: LatencyUpdated(), indicate playback/capture 2020-04-07 00:10:29 +02:00
Robin Gareus
ad0c5f1a1c
NO-OP: whitespace 2020-04-06 23:45:36 +02:00
Robin Gareus
597837022a
Add method to check for ambiguous port latency 2020-04-06 23:45:20 +02:00
Len Ovens
55854e3797 Add foldback busses to OSC GUI 2020-04-05 14:45:18 -07:00
Len Ovens
df8c000810 OSC: support foldback busses 2020-04-05 14:10:50 -07:00
Johannes Mueller
3a2f0e40cf Fix crash when adding tracks from a5 route templates
Ardour5 route templates seem not to have a in the root node playlist
property. Ardour generally relies on that Track::playlist() always returns a
valid playlist. Thus we need to create a playlist even if we don't have a
playlist property in the route template's root node.
2020-04-05 19:07:28 +02:00
Johannes Mueller
c74cc2675e Extend FileArchive to import archive entries individually
This is needed primarily for a workaround for #7971. When importing a template
that has been exported on Ardour5 on MacOS we need to fix the paths of the
archive entries.

Later we can use this functionality also to handle imported templates if
templates with the same name already exist.

This commit only adds methods and members to FileArchive, it does not modify
anything to make regressions unlikely. This, however, leads to some duplicated
code. Eventually we should consolidate this a bit.
2020-04-05 16:34:48 +02:00
Robin Gareus
d0a116b2ae
Forward instrument MIDNAM changed signal 2020-04-04 01:48:30 +02:00