13
0
Commit Graph

16182 Commits

Author SHA1 Message Date
a0f05e6dda updated libardour czech translations from pavel frich 2020-05-05 08:48:39 -06:00
350051569f remove empty API and usage
This went away when we added RTMidiBuffer. Getting data from MIDI playlists is now
completed in one pass, without note trackers
2020-05-04 18:54:40 -06:00
9b070eefb1 fix note-tracking in Editor::write_one_track()
We need a MidiStateTracker to determine notes whose end is not reached
during the call to ::write_one_track(), so that we can resolve them
in the output (SMF) source. This required some changes to the ::export_stuff()
API for tracks.

In addition, we now take the source "lock" just once during ::write_one_track()
rather than every time we write. This isn't an integral part of the
note tracking, but fell out along the way.

Finally, note that although we use a vector to handle MIDI "sources" here,
it is expected that there is only 1 MIDI source at present. Leave vectors in
place since it is possible that ::write_one_track() could be modified
in the future to change that.
2020-05-04 18:48:17 -06:00
7644168536 add some (commented/ifdef'ed) debugging for RTMidiBuffer::read() 2020-05-04 18:48:17 -06:00
47e83d2799 no need for return value 2020-05-04 18:48:17 -06:00
3ac96d3b24 add explanatory comment 2020-05-04 18:48:17 -06:00
447b473a1d slight better warning/debug message for a stuck note to-be-deleted 2020-05-04 18:48:17 -06:00
520ccd8ff2 use RTMidiBuffer API correctly when reading for MidiTrack::export_stuff() 2020-05-04 18:48:17 -06:00
4508d5bab1
Set de-click reason monitor vs. start/stop.
Previously use-monitor-fades was unused in A6, and transition
between monitoring states used the use-transport-fades preference.
2020-05-04 21:51:53 +02:00
a6f95b21fc
Fix alignment and de-click when monitoring changes while playing
Previously it was possible that
 * declick_out = true,
 * target_gain == 0, cur_gain != 0 (fade out active)
 * speed != 0, disk_samples_to_consume > 0.

So the disk-reader advanced the playback_sample, but since
declick_out is active, the read from the ringbuffer was not committed.
2020-05-04 21:48:47 +02:00
27f26f5cfd
Cont'd work on ALSA nperiods (amend 2326fb163) 2020-05-03 00:19:56 +02:00
2326fb1638
ALSA: only read/clear user-requested nperiods before snd_pcm_start
This should fix excessive latency with the RayDay that
has a fixed buffersize of 16384 samples.
2020-05-01 23:17:31 +02:00
b258ad792e force provision of "menu-name" for all WindowProxy objects, and thus Tabbables
Actions for hide/show/attach/detach tabbables use hard-coded names which are not
translated. Using Tabbable/WindowProxy::name() to lookup the action will fail,
since the name can be translated. This changes just removes the option to not
provide a menu-name when creating these objects, and uses the name menu-name
when looking up an action by name
2020-05-01 14:33:47 -06:00
1e814d2573 remove debug output 2020-04-30 13:13:48 -06:00
106315071a update other .po files 2020-04-30 13:03:46 -06:00
b95cd280f1 use PROGRAM_NAME to name GUI thread 2020-04-30 11:03:49 -06:00
70da4ad893 fix 52b9066511 (incorrect logic). Restores audio playback from disk 2020-04-30 10:36:01 -06:00
68cb914959
Set Arodur's main thread name to include "Ardour"
This is helpful when debugging by PID (adevices.sh most notably),
just "gui" is not usually helpful.
2020-04-30 18:24:22 +02:00
8fa0049d28
ALSA: set start threshold to zero 2020-04-30 04:16:17 +02:00
11f68a02cd
Another step towards nperiod fixes for the RayDay 2020-04-30 02:05:14 +02:00
3a6a9cfa6c
Tweak ALSA nperiod setting, fallback to nearest
This is mainly for RME RayDAT that has a fixed buffersize of 16k:

  dev_name : hw:HDSPMxc2f6c5,0
  channels : 36
  min_rate : 32000
  max_rate : 192000
  min_bufz : 16384
  max_bufz : 16384
  min_nper : 4
  max_nper : 512

However nperiod configuration determines the effective latency
regardless.

This is similar to https://github.com/jackaudio/jack1/blob/master/drivers/alsa/alsa_driver.c#L476-L486
2020-04-29 23:56:24 +02:00
6eb48e40a0 do not set declick_amp's gain for declick out during export of MIDI-only tracks
When export is done, nothing a MIDI-only track will reduce the gain ("goto midi" inside
DiskReader::run() and the "declick-in-progress" state will be permanent
2020-04-29 15:36:07 -06:00
551be058f2
NO-OP: whitespace 2020-04-29 15:12:23 +02:00
John Emmas
6144de5bf0 Add/remove source(s) in our MSVC project (midi++2) 2020-04-29 10:20:34 +01:00
47bb331bfa
Allow to refresh ALSA device list - #8051 2020-04-29 02:19:38 +02:00
3d5ea7dfab
ALSA: set min/max sizes before the debug message 2020-04-29 01:16:23 +02:00
Hiroki Inagaki
cce6ac3e73
Update Japanese translation for 6.0 2020-04-28 21:29:04 +02:00
6224bf1e27
Revise French translation, part 7 -- #8035 2020-04-28 21:07:56 +02:00
7a1447b75e remove pointless libs/midi++2/midi++/event.h file
This was just a proxy for libs/evoral/evoral/Event.h. Note that the #define
that controlled allocation that was at the top of the removed header is
replicated in the Evoral header, so there are no semantic changes
2020-04-28 12:01:55 -06:00
d94a747180
Revise French translation, part 6 -- #8035 2020-04-28 18:05:11 +02:00
8e482ef0fb
Con't work on ALSA nperiod selection (see also d3d120fa) 2020-04-28 17:56:17 +02:00
d3d120fa28
Prepare to allow using ALSA backend with nperiods > 3
This will still need an update for Alsa_pcmi::set_hwpar() capture
channel (which is fixed at 2, unless FRAG_NEAR is used).
2020-04-28 03:28:34 +02:00
13ed8da2bc
Add flag to allow ALSA backend to fall back to nearest avail. nperiods 2020-04-28 02:51:20 +02:00
30a60f45df show MTC transport master latency when computed 2020-04-27 15:44:28 -06:00
2587ad6dc3
Ignore unconnected ports for latency-compensation
This fixed a false-positive "ambiguous latency" warning for
MIDI busses:

 MIDI track -midi-> MIDI Bus w/instrument -audio|midi-> master

The master-bus only has audio inputs, so the MIDI Bus'
MIDI out is left unconnected. Its latency does not matter,
it can float freely.

Previously it was assumed to be zero. So the MIDI Bus' input
playback latency range was [0, master-bus playback-latency].
2020-04-27 23:10:21 +02:00
c56e99cd09 nominal improvement for MTC master: use port latency to adjust sampletimes that MTC events "occured at" 2020-04-27 15:02:29 -06:00
24d3bf25a9
Don't call into engine for queued latency updates 2020-04-27 17:28:26 +02:00
09f9cd377d
Prevent excessive latency recomputations
Session::update_latency() may be called multiple times with
the process-lock being held.
2020-04-27 16:31:40 +02:00
d6242f35f5
Remove debug message 2020-04-27 16:26:36 +02:00
8aa4ae825d
Skip delayline updates if no change is required 2020-04-27 14:08:37 +02:00
1983f56592
Work around jack2's insane thread semantics
jack2 can process in parallel with calling a graph-order or
latency-callback, so Ardour takes a lock to update those in sync.

Yet jack2 can also block while port-registrations happen,
and concurrently emit latency-callback from another thread..
2020-04-27 04:10:18 +02:00
b0daa85bfb
Prevent race between adding ports and IO port-lookup 2020-04-26 22:17:18 +02:00
31c39ed869
Remove duplicate i/o latency calculation
Port and connection changes always imply a latency_callback from
the engine. Worst I/O latency is updated directly in
Session::update_latency() which is called from
AudioEngine::latency_callback.

Explicit subscriptions to route->output()->changed() is not needed
to update the worst I/O latency.

Only set_block_size() needs to to update the I/O latency when
the buffer-size changes.
2020-04-26 21:34:26 +02:00
842e841e0d
Remove common prefix for latency debugging
-DLatency now triggers all four:
  * LatencyCompensation (entry-points, overall flow)
  * LatencyIO (Port/IO query, set/get private/public)
  * LatencyDelayLine (Delaylines for internal sends and alignment)
  * LatencyRoute (route processor latency)
2020-04-26 21:25:07 +02:00
de819e579a
Fix a deadlock (process_lock vs _update_latency_lock)
The backend may call update_latency() while at the same time
the auto-connect-port calls set_worst_io_latencies().

The latter already holds the process-lock, so update_latency()
first needs to acquire it, as well. If one already holds the
_update_latency_lock, one must not ask for the process-lock.

---

Previously Ardour's connection manager first took the process_lock
and then waited to the _update_latency_lock.
Meanwhile jack calls latency_callback(), takes the
_update_latency_lock and waits for the process_lock.
Classic deadlock.
2020-04-26 20:25:31 +02:00
3785cbbf03
Cont'd work on delayline-config (amend b196cef2) 2020-04-26 05:55:43 +02:00
0067a4596d
Speed up loading sessions with synths
LV2 plugins may add a MIDNAM file when they're loaded.
This can be happen concurrently with the MidiPatchManager,
loading the system-wide patch files.

Session load should not be interrupted by the initial
background scan of patch files, which can take a very long time.
We need to allow update_custom_midnam() to grab the _lock.
2020-04-26 04:55:59 +02:00
02e5605cdd
NO-OP: reduce scope, return early 2020-04-25 18:24:42 +02:00
b9c29c478c
Remove unused signal 2020-04-25 17:53:49 +02:00
b196cef2c4
Prevent delay-line reconfiguration while processing
Various backends have different strategies for updating latencies,
and different thread semantics for latency update callbacks.

With jack2 it is possible that processing happens concurrently
while port latencies are being changed.

Ardour internal backends emit the latency callback from the
main process thread, serializing latency changes with processing.

Various user actions can also trigger latency changes. e.g.
with a stopped engine it is possible to re-order plugins.
2020-04-25 17:52:54 +02:00
e16ac09e54
Clean up 135814cf0, prefer PannableChanged signal
This allows to also catch cases when a panner-ui directly changes
set_linked_to_route() of the panner shell.
2020-04-25 16:26:37 +02:00
afc8dd9022 fix thinko in Session::should_ignore_transport_request() and drop out of external sync if command is allowed
The semantics are that if the user configures things to allow transport commands while
using a transport master, issuing such commands first stops using the master
2020-04-24 14:22:06 -06:00
58304b3a7e make Session::should_ignore_transport_request() non-const 2020-04-24 14:20:59 -06:00
12b48fff76 fix parentheses around expression that prevented port flags from being set for ltc slave 2020-04-24 11:51:45 -06:00
e6b12bd0aa ensure that when a Session emits Port::PortDrop, transport master ports are left in place 2020-04-24 11:50:43 -06:00
ea8d1d09d4
Fix MacOS builds (API change in 705ac7bfc5) 2020-04-24 07:06:40 +02:00
dbcbfd7b5b
Fix builds, missing include 2020-04-24 01:53:59 +02:00
2aa5e90290
Update Russian translation 2020-04-24 01:06:16 +02:00
135814cf0d
Expose pan-link via Send API, emit signal on change 2020-04-24 00:57:15 +02:00
e15b5c6e6b
Clean up Audition realtime_overwrite
Auditioner seek calls are explicitly handled by the butler,
and DR:overwrite_existing_buffers() is called explicitly
to read MIDI data for audition.

Session::non_realtime_overwrite is no longer required.

This reverts commit 6fbcf83779
and parts of 2d11667ce3.
2020-04-23 17:08:09 +02:00
54bc1018d5
Fix MIDI auditioning
The Auditioner is not part of the session route-list and the
auditioner route's I/O latency is never updated.
Session::process_audition() does not handle pre-roll either,
so it need to be zeroed, otherwise Route::roll skips samples.

This has lead to initial samples being skipped, IFF the
auditioner's output-port had non-zero latency.

Since private port-latencies are usually only set for routes
in the route-list, and _remaining_latency_preroll is reset
at transport-stop, this *usually* worked...

Last but not least, MIDI notes need to be resolved when seeking.
2020-04-23 05:23:31 +02:00
6fbcf83779
Don't add the Auditioner to the route-list
This fixes a bug introduce in 2d11667ce3. The Auditoner
was accidentally added to the shared_ptr<> referenced RouteList.
2020-04-23 04:58:51 +02:00
40eefeddd6
Micro optimization: cache output IO latency
IO::latency iterates over the port-set retrieving the
private_latency_range of each port. Since it can only change
when connections and latency changes, we can instead cache the value.

This is also in preparation to allow the auditioner to override it.
2020-04-23 04:56:45 +02:00
6b10987e4b
Fix Auditioner edge-case when synth cannot be loaded 2020-04-23 02:30:16 +02:00
c264ab6c95
Remove debug output 2020-04-23 02:29:45 +02:00
afad873a22
Fix parsing XML with blanks from memory
This is needed when the butler thread loads a plugin with
MIDNAM. xmlKeepBlanksDefault() setting is per thread.

see also df3a4ed9c6
2020-04-23 02:28:48 +02:00
705ac7bfc5
Prevent huge stack allocations for MIDNAM files
xmlParseMemory() uses a c-pointer char*.
Previously MIDNAM data on the heap were wrapped inside
a std::string only to be later accessed via c_str().
2020-04-23 02:25:38 +02:00
3d166c7789
Consolidate stack-size and priority of rt-threads 2020-04-23 01:28:58 +02:00
Luciano Iam
ea16fc51d3
WebSockets: fix guard header in json.h 2020-04-22 21:59:35 +02:00
Luciano Iam
dbb26daafa
WebSockets: also json-escape strings in state messages 2020-04-22 21:59:35 +02:00
Luciano Iam
946094b25c
WebSockets: also json-escape paths in manifests
Extends 3c423d9
2020-04-22 21:59:35 +02:00
Luciano Iam
c362605b49
WebSockets: add some TO DO comments 2020-04-22 21:59:35 +02:00
Luciano Iam
8b65b0a961
WebSockets: disable http caching if NDEBUG is set
This is useful while developing web surface javascript code
2020-04-22 21:59:35 +02:00
Luciano Iam
ff7b7fe6a7
WebSockets: fix a comment in server.cc 2020-04-22 21:59:34 +02:00
9a93583ef7 fully initialize SMF tempo information to default (4/4, 120bpm)
Leaving CPC and 32nd-per-quarter at -1 causes arithmetic errors later if the SMF
file doesn't contain an explicit time signature meta-event
2020-04-21 21:17:14 -06:00
2d11667ce3
Fix MIDI audition and audition seeking
DiskReader::seek() no longer fills MIDI buffers.
MIDI is now read into memory via DR:overwrite_existing_buffers()

There is still some edge-case remaining to be fixed. For
some reasons the synth does not receive initial patch/program
changes when starting auditioning.
2020-04-22 05:09:30 +02:00
d03a3903a0
Take lock to add/remove custom MIDNAMs
update_custom_midnam() is usually called from the GUI or butler
thread when a LV2 plugin is instantiated, or the plugin changes
its MIDNAM. It must be exclusive with load_midnams_in_thread()
and calls from MTAV to ::maybe_use().
2020-04-22 05:02:58 +02:00
Luciano Iam
80dc3a38e0 WebSockets: let clients know if a strip is a VCA
This allows to hide the panner for example
2020-04-21 16:20:24 +02:00
Luciano Iam
68463cb591 WebSockets: add checks for VCA stripables
Also include VCAs when sending strip descriptions
2020-04-21 15:53:27 +02:00
Luciano Iam
cc08a2d945 WebSockets: compatibility fixes for Windows
Escape path strings in surfaces.json
Default to index.html in mount points
2020-04-21 15:53:27 +02:00
05650a0156
Add Lua Bindings for Internal Sends 2020-04-21 15:34:20 +02:00
Fred Rech
1c7c0533c2
Revise French translation -- #8035 2020-04-20 23:55:39 +02:00
Luciano Iam
d5c2af1cfb
WebSockets: NOOP fix comment in manifest.cc 2020-04-20 22:59:17 +02:00
Luciano Iam
3c423d9265
WebSockets: json-escape user strings loaded from manifest.xml 2020-04-20 22:59:17 +02:00
Luciano Iam
4f2fdb10a3
WebSockets: send caching headers for static resources 2020-04-20 22:59:16 +02:00
Luciano Iam
7118eff7eb
WebSockets: transport surface implementation 2020-04-20 22:59:16 +02:00
Luciano Iam
dc97bf3ff0
WebSockets: output position time in seconds 2020-04-20 22:59:16 +02:00
Luciano Iam
bfbb15011c
WebSockets: add record state support to surface 2020-04-20 22:59:15 +02:00
Luciano Iam
5105219076
WebSockets: rename *_desc nodes to *_description 2020-04-20 22:59:15 +02:00
Luciano Iam
0e664b1556
WebSockets: add transport roll support to surface 2020-04-20 22:59:15 +02:00
Nils Philippsen
696096fcbd
Revise German translation
- add missing translations
- largely follow original message regarding punctuation, capitalization
  at the beginning of sentences, trailing white space
- fix typos and other obvious mistakes

Signed-off-by: Nils Philippsen <nils@tiptoe.de>
2020-04-20 19:14:37 +02:00
9a073c1fae
Fix MIDI meter reset 2020-04-20 18:38:13 +02:00
c2b25b453e
Emit signal when dropdown changes via scroll-wheel
This fixes Virtual-keyboard velocity selection when scrolling
to numbers that are not explicitly in the menu-list.

(hopefully this does not introduce some recursive signals
for other ArdourDropdowns, fingers crossed).
2020-04-20 00:36:37 +02:00
3f7de5ec8e
Do not add monitor-sends to foldback busses 2020-04-20 00:34:36 +02:00
498a58bd25
Fix restoring window visibility (Windows/Mac) #7976 2020-04-19 19:01:19 +02:00
93e98be6ab do not add unnamed sessions to the recent session list 2020-04-19 10:20:35 -06:00
e163e38c13
Shorten default export-preroll
Since 57118c2370, plugins are re-activated after every export.
So a silent pre no-roll is mainly useful for with realtime export,
and for some cases where a plugin does not correctly reset.

Note that for the first export, plugins are not currently flushed.
2020-04-19 18:02:25 +02:00
c32fef2660
WebSockets: hotfix crash when a session has VCAs
This eventually needs a better solution, special casing VCAs
on the top-level.
2020-04-19 15:44:39 +02:00
674554d978
Solo isolate foldback busses - #8020 2020-04-19 03:40:35 +02:00
9875a95829
RAII collect processor-change signals 2020-04-18 23:54:24 +02:00
b7c7c02680
Optimize realtime listen-position change 2020-04-18 23:19:58 +02:00
a90b0daadd
Support for lock-free AFL/PFL changes
Session::listen_position_changed() calls Route::listen_position_changed()
for every route in the session. Each call tool the process-lock
in turn.
2020-04-18 22:11:49 +02:00
a2f07f66a5
Consistent Lua script error and print() output 1/2 2020-04-18 18:16:12 +02:00
Julien '_FrnchFrgg_' RIVAUD
5766cf24aa Update French po files from code 2020-04-18 11:22:07 +02:00
fa8858b3e8 NOOP: newline removal 2020-04-17 12:40:28 -06:00
Luciano Iam
137042f80c
WebSockets: rename _lws_mnt_index to _lws_mnt_root
This mount point not only serves the index but everything that is under
/ , including the built-in surfaces directory
2020-04-17 20:15:10 +02:00
Luciano Iam
36a27b8a90
WebSockets: prevent crashes by validating inbound message addr and val sizes 2020-04-17 20:15:10 +02:00
Luciano Iam
50ba8dea96
WebSockets: improve JS client and demo
add methods to callback.js
automatically reconnect js client on disconnection
mixer-demo do not recreate UI on reconnection
NO-OP: indentation in message.js
make client JS reconnection optional
fix mixer-demo scrolling
minor JS client refactor
improve mixer-demo readability
2020-04-17 20:15:10 +02:00
Luciano Iam
612c71aa25
WebSockets: allow serving SVG files using libwebsockets < 3 2020-04-17 20:15:10 +02:00
70e27e0bf2 fix Beats::operator-() 2020-04-16 21:38:33 -06:00
ffd9aa2fc9 if the action associated with a binding is insensitive, do not activate it, and return false from Bindings::activate()
This allows "stacking" of bindings by desensitizing the actions associated with a "lower" level
of bindings at certain times (e.g. MIDI editing bindings thare are sensitized in the appropriate
editing modes
2020-04-16 17:48:12 -06:00
cc74c7b7ad
Fix two more typos 2020-04-17 00:02:38 +02:00
Edgar Aichinger
5fbce4b5db
Update German translation 2020-04-16 21:08:24 +02:00
eb06e67628
Update french translation #8016 2020-04-16 21:06:06 +02:00
bb62f7eaec
Plugin: bypass <> enabled mapping
LV2 uses "enabled": -1: inactive, 0: bypassed, 1:enabled
VST3 has "bypass: 0:active, 1: bypassed
2020-04-16 16:47:13 +02:00
2d4e125802
Prefer std::string for print_parameter API 2020-04-16 16:47:13 +02:00
daf9fe2550
Tweak engine startup, shorten initial silence timeout
see also 23baeee829
2020-04-16 16:47:08 +02:00
8ea608b3d9 fix plurals and other mistakes in error strings; switch to PBD::warning since these are not user errors nor fixable 2020-04-15 15:26:34 -06:00
895b9c2051
Fix PolyKeyPressure, consolidate AutomationType checks 2020-04-15 15:31:59 +02:00
984dc1694d
Allow MIDNAM lookup of valid channels for controllers 2020-04-15 01:51:04 +02:00
26bb781ecd
Fix disk-reader alignment when creating tracks while playing 2020-04-14 16:39:30 +02:00
daec036faa
NO-OP: whitespace 2020-04-14 04:01:36 +02:00
ea2bda6668
Fix playback alignment when adding/removing channels
The disk-reader assumes that all playback ringbuffers are in sync
and have the same fill_level.
2020-04-14 03:57:26 +02:00
Luciano Iam
30c8563a6d
WebSockets: rename send_index_* to send_availsurf_* to avoid confusion with a static index page 2020-04-13 16:29:38 +02:00
Luciano Iam
e7f22cf989
WebSockets: rename resource index.json to more meaningful surfaces.json 2020-04-13 16:29:38 +02:00
Luciano Iam
17cbd65603
WebSockets: rename all occurrences of 'disk path' to 'filesystem path' 2020-04-13 16:29:38 +02:00
Luciano Iam
1b4deb11ec
WebSockets: use canonical paths in index.json 2020-04-13 16:29:38 +02:00
Luciano Iam
46d39a9ee7
WebSockets: reject an empty ARDOUR_WEBSURFACES_PATH 2020-04-13 16:29:38 +02:00
Luciano Iam
b66b2858b1
WebSockets: add version field in manifests and update loader 2020-04-13 16:29:37 +02:00
Edgar Aichinger
70937dc1f9
Fix typos in preparation for translations 2020-04-13 16:10:13 +02:00
5a0e0a41e2 update all *.po files 2020-04-12 09:00:32 -06:00
2084a39168 some tweaks to Bindings API to allow ::is_bound() to indicate the action path for an existing binding
Plus some minor comment additions and cleanups
2020-04-12 08:57:59 -06:00
920a77f6af add debug trace to code that actually saves bindings to disk 2020-04-12 08:57:59 -06:00
bfe65ea1e4 improve understanding by using an actions label, not its path, in the bindings collision dialog 2020-04-12 08:57:59 -06:00
43d52fe41a
Forward disk-reader ConfigurationChanged signal 2020-04-12 13:41:39 +02:00
4ab299c540
Reduce redundant signal emission 2020-04-12 13:36:47 +02:00
fc34626e50
Fix loop range changes while playing - #8001
Since ead883302f, it is no longer possible to use a null
pointer SessionEvent::track as flag to indicate overriding all
buffers.
2020-04-12 13:35:21 +02:00
Luciano Iam
9aef431818
WebSockets: move diskPath property to surfaces group object 2020-04-11 22:30:41 +02:00
Luciano Iam
ad363d12a2
WebSockets: fix path field in index.json 2020-04-11 22:30:41 +02:00
Luciano Iam
e82171ea19
WebSockets: improve surface manifest format and loader 2020-04-11 22:30:40 +02:00
Luciano Iam
420137ea9d
WebSockets: always return -1 from send_index_body() unless there is a write error 2020-04-11 22:30:40 +02:00
Luciano Iam
ed427e5704
WebSockets: add useful comment on lws_write() 2020-04-11 22:30:40 +02:00
Luciano Iam
c477a81a7c
WebSockets: use lws_strncpy() when available 2020-04-11 22:30:40 +02:00
Luciano Iam
731ea79028
WebSockets: fix timeout when sending HTTP body 2020-04-11 22:30:33 +02:00
9e3efced72 remove debug output 2020-04-10 16:39:29 -06:00
a2737feae6 fix mistaken geometrical-math for xfaded loops 2020-04-10 16:07:42 -06:00
58672bcaa2
Sync reset meter, report zero until the meter is actually reset 2020-04-10 23:50:06 +02:00
24cce2e43d use cout not cerr for some temporary debugging messages 2020-04-10 15:30:26 -06:00
92b59c1df9 more debug info for DiskReader::maybe_xfade_loop() 2020-04-10 14:18:24 -06:00
8aae77b0eb somewhat change the condition used to identify when butler transport is done pre-export 2020-04-10 13:25:24 -06:00
b953490bac fix typo/thinko in code that checks for result of waiting for butler transport work 2020-04-10 13:24:55 -06:00
247bd4d3d9
NO-OP: whitespace 2020-04-10 18:32:18 +02:00
ede0fd3ddf
Remove hardcoded 2^15 cairo-boundary, prefer window-area 2020-04-10 18:28:26 +02:00
2177462b73
NO-OP: consistent function and variable naming 2020-04-10 18:06:42 +02:00
bc4de874dc
NO-OP: whitespace 2020-04-10 18:06:42 +02:00
9bbedcb781
Remove unused function
Cairo::curve_to renders cubic Bézier splines, those are not
generally useful in a DAW context.

Canvas::Curve implements centripetal catmull-rom spline drawing
which can be used for fades and automation interpolation.
2020-04-10 18:06:42 +02:00
7bb8ca1e76
Interpolate poly-line with view-point #6481 2020-04-10 18:06:41 +02:00
6cc1e5e75d
NO-OP: whitespace 2020-04-10 18:06:39 +02:00
1e996ca45f add port connect/add/remove callbacks to CoreAudio backend 2020-04-10 10:01:04 -06:00
2a80832243 add port connect/add/remove callbacks to the ALSA backend
This fixes issues with new ports not (always) appearing in port matrices (and presumably
elsewhere too)
2020-04-10 09:53:44 -06:00
b943cec756
ALSA: allow to select different I/O devices
This adds a basic support to use multiple sound-cards, currently
limited to two devices: In/Out with shared settings.

Advanced setups still have to resort to using the ARDOUR_ALSA_EXT
environment variable
2020-04-10 05:01:33 +02:00
e8efd45c05
Fix ALSA slave-device half-duplex mode 2020-04-10 05:01:30 +02:00
78b29c55d3
Hotfix more export woes, prevent possible endless loop
This apparently happens on some Windows systems when exporting
a range starting at 00:00:00:00

I'm still hoping there's a better fix for these race-condition
issues, perhaps by kicking the TFSM...
2020-04-10 03:29:16 +02:00
c33c988adc
Revert "Another attempt at fixing multi-range export"
This reverts commit c5332ddd00.
Apparently this is not needed 4f3a95a1da is sufficient.
2020-04-10 02:24:08 +02:00
62e2ec49ce
ALSA: ignore systemic MIDI latencies during measurement 2020-04-10 01:43:11 +02:00
5f1431aeda fix ArdourFader to use contrasting_text_color() for text, based on relevant bg color 2020-04-09 17:12:40 -06:00
69b4c5108b ALSA backend: fix incorrect pointer cast (fixes #7998) 2020-04-09 15:40:23 -06:00
230ef7596f websockets: shutdown UI event loop is server cannot start 2020-04-09 15:36:02 -06:00
661609f2c0 change default port for websockets surface 2020-04-09 15:26:13 -06:00
18daf2c9b2
C++98 compatibility 2020-04-09 22:43:24 +02:00
cd5eae3556 some potentially helpful but trivial comments 2020-04-09 14:01:47 -06:00
be023ef32d
Tweak websocket surface for use src-tree shared dir
When running from the src-tree, ardev_common.sh sets multiple
data-paths, to allow running ./ardev ./gtk2_ardour/ardev.
Pick the first one that contains a "web_surfaces" subfolder as
docroot.
2020-04-09 21:50:01 +02:00
61692ae1f8
Fix some Wunused-result 2020-04-09 21:26:12 +02:00
Luciano Iam
d694ee97c7
Update waf scripts 2020-04-09 20:56:46 +02:00
Luciano Iam
c946eb3132
Add classes for serving content over HTTP 2020-04-09 20:56:46 +02:00
Luciano Iam
40520a6dc6
Clean up and prepare for HTTP 2020-04-09 20:56:46 +02:00
Luciano Iam
3da0cf2a31
NO-OP update comments for header guard #endifs 2020-04-09 20:56:46 +02:00
c5332ddd00
Another attempt at fixing multi-range export
See also
  * 4f3a95a1da
  * cfd95340b1
  * 61e7f3176b
2020-04-09 20:25:25 +02:00
4f3a95a1da
Cont'd work on fixing export ranges
This picks up where cfd95340b1 left off.

The goal is to ensure that the butler has completed all
PostTransportStop related tasks and won't meddle with transport
after exporting has started.

Previously this could happen, because realtime_stop() queues
PostTransportStop and the butler is sommoned after every
export process cycle.

Since  61e7f3176b the butler keeps calling non_realtime_stop()
every time it is woken up, until TFSM comes around and unsets the
flag in the process callback.
2020-04-09 19:07:33 +02:00
70f13a3ff3 use RCU to manage JACK backend's container of ports 2020-04-08 19:56:33 -06:00
feff57d29a prefer initialization to assignment 2020-04-08 19:56:08 -06:00
20b4b4ea90 remove debug output 2020-04-08 18:43:20 -06:00
dd94d43c46 when renaming a port, remove the backend's port map entry based on the *old* name (not the new one) 2020-04-08 18:41:37 -06:00
3188fe00aa fix return value 2020-04-08 18:13:13 -06:00
57118c2370
Prevent FX from producing sound after export
This cuts reverb tails and synth sounds after export.
Disabling freewheeling, continues normal processing where
export left off. This previously kept notes ringing, or reverbs
audible.
2020-04-09 01:28:04 +02:00
a6afb31245
Safeguard against libaudiographer exceptions 2020-04-09 00:01:44 +02:00
b8ce25fdab
Fix export-alignment with JACK -- #7916 2020-04-09 00:01:44 +02:00
f32245c156 add required ::clear_ports() call to Dummy backend destructor 2020-04-08 14:55:31 -06:00
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
6a8863386a use an Unwinder to provde exception-safety 2020-04-08 00:28:30 -06:00
78a66b7180 improved port cleanup as backend is destroyed 2020-04-07 23:26:51 -06:00
ec9784764c better fix for port destruction 2020-04-07 23:21:48 -06:00
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
5b6e2b088e show ARDOUR::Port destructor with either DEBUG::Ports or DEBUG::Destruction 2020-04-07 23:20:15 -06:00
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
ede8b9995a fix another explicit return val for ::get_port_by_name() if JACK has died 2020-04-07 18:57:24 -06:00
2591c81c1a fix explicit return val for ::get_port_by_name() if JACK has died 2020-04-07 18:54:57 -06:00
0a8b670bd0 yet another attempted fix for older gcc/mingw 2020-04-07 18:47:51 -06:00
0c859316a3 another attempted fix for older gcc/mingw 2020-04-07 18:44:40 -06:00