2066b6b33a
websockets: require Windows7 (with pollfd)
2021-10-13 21:40:39 +02:00
2e0a069c51
WebSockets: use v7 tempo-map correctly
2021-10-12 15:32:41 +02:00
9e763c2672
remove all dangling event-loop-precall code
2021-10-11 17:48:53 -06:00
9adc336d50
control surfaces: fix BasicUI::jump_by_bars() to use tempo map correctly
2021-10-11 17:48:53 -06:00
52decdd1b4
push2: prevent crash caused by missing per-thread tempo map ptr
2021-10-09 11:47:13 -06:00
3475350d7c
push2: session button should be lit
2021-10-09 11:46:53 -06:00
ed3d374f47
Fix --no-nls compilation 1/2 -- #8802
...
pbd/i18n.h MUST NEVER be included from header files and always be
the last include. This is because `_` is declared other headers
notably boost and some apple headers.
leading to issues like
../libs/pbd/gettext.h:58:27: error: expected unqualified-id before ‘const’
58 | # define gettext(Msgid) ((const char *) (Msgid))
2021-09-27 16:28:44 +02:00
b3fff25d5c
Fix --maschine builds (pure virtual)
2021-08-13 21:53:18 +02:00
c0425ba70f
canvas: items should not add child bboxes in their ::compute_bounding_box() method, Item::bounding_box() does that
2021-08-13 12:51:37 -06:00
8bada4b5e1
remove public ::bbt_at (INTEGER) methods, because of superclock_t/samplepos_t confusion
...
libtemporal still needs ::bbt_at (superclock_t) fairly often so retain it as a private method, but public
interfaces take either Beats or timepos_t
2021-08-13 12:51:35 -06:00
3702da5488
fix up osc support after rebase/merge conflicts
2021-08-13 12:51:33 -06:00
364fffd458
temporal: TempoMap::Changed is now a static member named TempoMap::MapChanged
2021-08-13 12:51:32 -06:00
c64db47b37
use new libtemporal sample rate mechanism (libs edition)
2021-08-13 12:51:31 -06:00
bed76798f3
manual fixups after rebase against master (general libs edition)
2021-08-13 12:51:31 -06:00
11af6253f5
mackie: NOOP: fix whitespace
2021-08-13 12:51:31 -06:00
b866335d8f
add glib event loop callback to Generic MIDI surface support
2021-08-13 12:51:30 -06:00
ce7ea4ec36
Use glib event callback in Mackie Control support to set thread-local variables
2021-08-13 12:51:30 -06:00
79763893b3
remove/hide Session::tempo_map() and use TempoMap::use() instead (thread local shared ptr)
2021-08-13 12:51:30 -06:00
f67029bd02
random commit to facilitate trivial move of work from laptop back to main system
2021-08-13 12:51:29 -06:00
086e48796c
surfaces: first round of conversion to use timeline types
2021-08-13 12:51:29 -06:00
f4490f54c5
change Timecode::BBT_Time to use Temporal namespace, plus a couple of other minor changes to enable compilation
...
This still uses the tempo map object in libs/ardour, not the new one in libs/temporal, and isn't likely to be functional
(though it could be)
2021-08-13 12:51:28 -06:00
60f3985957
replace push2 call to Canvas::Box::pack_start() with Canvas::Box::add() which is equivalent
...
::pack_start() was removed
2021-08-13 12:51:26 -06:00
210702481b
add required virtual method to Push2Canvas
2021-08-13 12:51:26 -06:00
9e5354a65e
tweak a minor issue with canvas API
2021-08-13 12:51:26 -06:00
bd008fb87c
Mackie Control: Fix logic in timecode display update
...
Old and new strings are compared before sending to keep traffic down. To
ensure that we send all the required characters be sure to init the last
value to characters that are never going to appear in a real string.
Space is a bad choice since it is a valid character. Use NUL instead.
2021-08-10 16:20:36 -05:00
4001fc2cff
Mackie Control: Use space as replacement for invaild characters on TC disp
2021-08-10 16:17:11 -05:00
563309f6d1
Mackie Control: Fix one off error in timecode display that broke spaces
...
Ignored spaces and allowed character 0x60 which is not valid on the display
2021-08-10 16:16:08 -05:00
8cf7204917
Mackie Control: Use selected device's info when building the Keys dialog
...
The device info file allows key names and values to be configured in each
device file. Use that information when building the Functions Keys tab in
the Mackie protocol setup dialog.
2021-08-06 12:18:24 -05:00
c1dddb1b25
Mackie Control: Be consistent and take the surfaces lock when iterating.
...
Some places in the code take the lock, others don't. This makes everyone
take the lock.
2021-08-03 16:26:26 -05:00
a84543bcc7
Mackie Control: Don't crash when the master is on the right
...
While surfaces are being created it is possible to have surfaces, but
not have a master surface yet. This happens when the config calls
for extenders to the left of the master section. Don't assume that
if we have surfaces, the master surface is available.
2021-08-03 16:26:26 -05:00
454b330950
Mackie Control: Hold the surfaces lock while resetting the master_surface
2021-08-03 16:26:26 -05:00
193cebc912
US2400: build-fix: need some IFDEFs for Mixbus.
2021-08-03 10:58:30 -05:00
521117054e
US2400: Fix order of mixbuses in Flip mode (Mixbus only)
2021-08-03 10:38:19 -05:00
398a1efbd5
US2400: Fix send levels from joystick ("surround pan" on mixbuses 11,12) (Mixbus32C only)
2021-08-03 10:38:18 -05:00
0b5ab1b570
US2400: Fix direction of pan knob LEDs
2021-08-03 10:38:18 -05:00
a22fe3cdc8
Amend 285bb4ac7f
: remove incomplete code
2021-07-19 20:32:11 -05:00
285bb4ac7f
Mackie Control : Improve debug trace output by skipping meter write output
2021-07-19 12:25:27 -05:00
581589f080
Mackie Control: Don't call port write directly since it bypasses active chk
...
This keeps the master fader from sending midi output before everything
is initialized.
2021-07-19 12:24:36 -05:00
3114ef4de2
Default_Play_Speed: prep work (libardour)
...
* remove unused variables in session.h
* move default play speed (varispeed(sic)) into fsm
* request_transport_speed should -never- set the default_play_speed
2021-07-03 19:06:02 +02:00
45f9b45bff
Mackie Control Surface: Improved support for iCON QCon Pro X
...
Support the second LCD on the Pro X and use it for channel strip labels.
Support the stereo master meters on the Pro X
2021-07-02 16:00:51 -05:00
7a5ccdd3c3
Mackie Control Surface: Move meter deflection calc to a function.
2021-07-02 15:56:11 -05:00
e94239cc92
Mackie Control Surface: Update the meters even when the transport is stopped
2021-07-02 15:53:20 -05:00
41ac0cb753
Mackie Control Surface: Correctly handle the Monitor section being removed.
...
Adding a Monitor section updated the surface but removing one did not.
2021-07-02 15:51:53 -05:00
c63918ec68
Clear Mackie Control surfaces once connected.
...
This gets the surface in a known state. Otherwise a previous application
or run of ardour may have left LEDs on that are not being used.
2021-07-02 15:43:37 -05:00
b35a8f6626
Fix Wsign-compare, consistently use microseconds_t
2021-06-29 02:04:02 +02:00
b20a541d7e
change PBD::microseconds_t to a signed type and check for -1 in TimingStats::update
...
This may help a Windows issue with the return value of QueryPerformanceCounter
2021-06-28 14:47:48 -06:00
b58dfc7f0f
Resolve microseconds_t ambiguity 1/2
...
This resolves a PBD vs ARDOUR namespace error for some compilers:
```
error: reference to 'microseconds_t' is ambiguous
libs/pbd/pbd/microseconds.h:29:19: error: candidates are: typedef uint64_t PBD::microseconds_t
libs/ardour/ardour/types.h:81:29: error: typedef PBD::microseconds_t ARDOUR::microseconds_t
```
2021-06-27 17:33:05 +02:00
9cbaa31c7e
libs fix for get_microseconds() move to libpbd
2021-06-26 18:27:39 -06:00
83b9ab1bee
Temporarily revert ongoing varispeed development
...
This reverts bf88f3fe64
until 35813db0f4
in order to move development into a branch, until after the
upcoming 6.8 release
2021-06-26 18:58:24 +02:00
006055a2ff
Default_Play_Speed: prep work (libardour)
...
* remove unused variables in session.h
* move default play speed (varispeed(sic)) into fsm
* request_transport_speed should -never- set the default_play_speed
2021-06-25 11:51:34 -05:00
db1821a363
Fix crash when removing plugin with mapped controllable #8756
...
MidiControlUI drops the reference to a given controllable in
its own thread. This can happen after the plugin is already
destroyed (even though the PBD::Controllable still exists).
2021-06-21 05:27:11 +02:00
e7466bddbc
Push2: Clean up forward declarations
2021-06-18 13:53:53 -04:00
cc6b58ef00
Fix Windows builds (pthread handle abstraction)
2021-06-17 13:32:10 +02:00
f85bbaa97d
Fix C++11ism
2021-06-16 03:03:26 +02:00
Luciano Iam
04104b68a6
WebSockets: fix surface build for older systems
2021-06-14 14:50:48 +02:00
Luciano Iam
5fffe985bb
WebSockets: update some source headers
2021-06-14 14:45:51 +02:00
Luciano Iam
6cc59ad8e6
WebSockets: update some comments in source
...
Based on feedback from libwebsockets author
https://github.com/warmcat/libwebsockets/issues/2322#issuecomment-860572124
2021-06-14 12:25:29 +02:00
Luciano Iam
f1d7e1759a
WebSockets: repeat 8baf275 for JS files
...
Like ec131fc
does
2021-06-14 10:25:45 +02:00
Luciano Iam
ebee3a8010
WebSockets: remove unnecessary code
...
Leftovers from copy and pasting from test_ui.cc
2021-06-14 10:02:25 +02:00
Luciano Iam
cb73eb350d
WebSockets: less invasive version of 5407232
...
There is no need to connect signals twice, can connect them directly to the
helper UI loop and skip the surface loop. Then let the server decide if it is
necessary to call lws_cancel_service() or not.
Also rename WebsocketsServer::should_request_write() to read_blocks_event_loop()
it makes more sense for the caller now on-demand write logic is completely
implemented by the server class.
2021-06-14 10:02:25 +02:00
Luciano Iam
e3569b6469
WebSockets: notify server there are pending client updates
...
This is an update to the surface ArdourFeedback class that is needed to support
the new event loop integration method.
The various session event callbacks cannot be queued in the surface event loop
because that would create a delay between the time such events are fired and
the time for writing to clients arrive, due to lws_service() blocking while
it waits to read. To solve this issue a helper AbstractUI is created for
catching events as soon as possible and issuing a call to lws_cancel_service().
See WebsocketsServer::glib_idle_callback()
2021-06-13 22:00:29 +02:00
Luciano Iam
b3661af92a
WebSockets: additional method for event loop integration
...
Some distro repositories offer versions of libwebsockets that have not been
compiled with LWS_WITH_GLIB or LWS_WITH_EXTERNAL_POLL enabled. For such cases
a different event loop integration method is needed.
True for Ubuntu 20.04 as of Jun '21
2021-06-13 22:00:29 +02:00
Luciano Iam
5f504f23ac
WebSockets: reduce server log verbosity
2021-06-13 22:00:28 +02:00
Luciano Iam
373d905a93
Update websockets surface author email in source files
2021-06-13 22:00:28 +02:00
Luciano Iam
12a7480ea3
Move #include inside header guard
2021-06-13 22:00:28 +02:00
b75a37abdb
fix arguemnts to transport call in shared control surface code for transport_play()
2021-06-08 08:32:19 -06:00
74e21e942e
Remove unused variables (Wunused-variable)
2021-05-30 20:09:35 -04:00
1b4aaea92a
Remove unused private fields (Wunused-private-field)
2021-05-30 20:09:35 -04:00
2e501fd77a
ensure the BasicUI implementation of rewind/ffwd is the same as the ARDOUR_UI one
2021-05-19 18:32:00 -06:00
a5a2f111ee
Remove debug line
2021-05-18 14:32:38 -07:00
0130f19e26
Fix positions before start and after end
2021-05-18 14:27:20 -07:00
f9557d0d04
Remove unused code
2021-05-17 13:50:18 -07:00
ab7c6e74e0
OSC, update marks list better.
2021-05-17 13:34:19 -07:00
Tobias Kannenberg
e4a6e981d9
fix OSC "/marker" feedback
2021-05-17 13:31:03 -07:00
3a3fcd0d2d
Don't crash if master fader is not avaliable.
...
If the wrong device profile is selected (ex Xtouch One) but another device
is connected (Xtouch), it is possible to have a master fader on the
device, but not in the code. This would then cause a crash when the
master fader was touched.
This just protects from a wrong configuration.
2021-05-13 12:08:09 -05:00
0fc50b9bf2
Mackie Control: set select state correctly during initial setup
2021-05-11 15:55:04 -06:00
57b3df8b22
copy over (boo!) transport control changes to BasicUI (control surfaces)
2021-05-08 09:20:21 -06:00
4d815554dd
Various Control Surfaces: Fix one off in calculation of fader position
...
MIDI pitch bend holds 14 bits (16384) which gives values of 0 to 16383.
2021-05-07 18:02:44 -05:00
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
273049a5a1
Mackie Control: if master surface has a jog wheel *and* a scrub button, button toggles between scroll and shuttle behavior
2021-05-04 21:30:22 -06:00
1757cfb8ef
use rewind/ffwd option to alter behavior of control surface rewind/ffwd buttons
...
This does not affect GUI equivalents (yet)
2021-05-04 20:52:01 -06:00
cd4aaa808e
use button_varispeed() in BasicUI::rewind() and BasicUI::ffwd()
2021-05-04 16:38:28 -06:00
009e971bfb
correct the implementation of BasicUI::button_varispeed() to provide incremental speed shifting (by semitones) in both directions
2021-05-04 16:38:02 -06:00
fbd1221833
move FaderPort8 method "button_varispeed()" into BasicUI for more general use
2021-05-04 16:10:24 -06:00
8e868fc743
remove unnecessary 2nd argument from Session::request_locate() calls (default value is identical) (surfaces edition)
2021-05-03 17:40:41 -06:00
f94aec5a59
fix/improve BasicUI's methods for rewind/ffwd/play (used by various surfaces)
2021-04-19 16:14:09 -06:00
48e5607f7c
use Session::request_roll() instead of request_transport_speed (1.0, ...)
2021-04-19 16:14:08 -06:00
52b7e68102
use new Session transport API calls in GUI
2021-04-19 16:14:08 -06:00
e0a6aba28d
Ignore saved port-name when loading ctrl-surface state
...
In some cases old and/or conflicting port names were saved
with the session (e.g. "Faderport" for FP1,8). Loading old sessions
then merges this state into the config, which could lead to
port-registration failure when the surfaces was enabled.
2021-04-17 02:07:09 +02:00
c212909282
Ctrl-surface: do not name single-channel bundle ports
...
Follow Session::setup_bundles() lead for single channel
MIDI bundles. This cleans-up the port-matrix display and
removes redundant names. The underlying engine port-name
is not of interest to the user.
2021-04-17 00:43:20 +02:00
72db091619
Fix crash at exit with classic Faderport
...
FaderPort::~FaderPort () can be called while
FaderPort::map_gain() is called from FaderPort::periodic()
```
Thread 71 Crashed:
0 libardour_faderport.dylib 0x0000000110539c3a ArdourSurface::FaderPort::map_gain() + 138
1 libardour_faderport.dylib 0x000000011053996d ArdourSurface::FaderPort::periodic() + 109
2 libglibmm-2.4.1.dylib 0x000000010bf21da8 Glib::TimeoutSource::dispatch(sigc::slot_base*) + 56
3 libglibmm-2.4.1.dylib 0x000000010bf20c97 Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) + 39
4 libglib-2.0.0.dylib 0x000000010c012496 g_main_context_dispatch + 326
5 libglib-2.0.0.dylib 0x000000010c01281a g_main_context_iterate + 474
6 libglib-2.0.0.dylib 0x000000010c012b3f g_main_loop_run + 191
7 libpbd.dylib 0x000000010bcee42e BaseUI::main_thread() + 254
8 libglibmm-2.4.1.dylib 0x000000010bf16373 (anonymous namespace)::call_thread_entry_slot(void*) + 35
9 libglib-2.0.0.dylib 0x000000010c03dd0a g_thread_proxy + 90
10 libsystem_pthread.dylib 0x00007fff759e42eb _pthread_body + 126
11 libsystem_pthread.dylib 0x00007fff759e7249 _pthread_start + 66
12 libsystem_pthread.dylib 0x00007fff759e340d thread_start + 13
```
While the GUI thread has already closed the MIDI ports in ~FaderPort
and proceeded to take down the FP GUI.
```
Thread 0:: Dispatch queue: com.apple.main-thread
47 libgtkmm-2.4.1.dylib 0x000000010ca69a56 Gtk::ComboBox::~ComboBox() + 22
48 libardour_faderport.dylib 0x000000011055a6e5 ArdourSurface::FPGUI::~FPGUI() + 149
49 libardour_faderport.dylib 0x000000011055a8b5 ArdourSurface::FPGUI::~FPGUI() + 21
50 libardour_faderport.dylib 0x0000000110551396 ArdourSurface::FaderPort::tear_down_gui() + 70
51 libardour_faderport.dylib 0x0000000110536507 ArdourSurface::FaderPort::~FaderPort() + 535
52 libardour_faderport.dylib 0x0000000110536b9e ArdourSurface::FaderPort::~FaderPort() + 14
53 libardour.dylib 0x000000010ac13f08 ARDOUR::ControlProtocolManager::drop_protocols() + 168
54 libardour.dylib 0x000000010b0ba7e4 ARDOUR::Session::destroy() + 212
55 libardour.dylib 0x000000010b0bbe01 ARDOUR::Session::~Session() + 113
56 libardour.dylib 0x000000010b0bdb5e ARDOUR::Session::~Session() + 14
2021-04-07 02:25:52 +02:00
Daniel Ceregatti
362b9cb4fa
Maschine Mikro MK2 support
2021-04-01 20:07:55 +02:00
c96462f7bb
maschine2: gtk is an indirect dependency of libgtkmm2ext
2021-03-26 18:44:20 +01:00
345726e223
Get NI maschine surface to compile again
2021-03-26 01:16:30 +01:00
b064b3c136
OSC: fix some compiler warnings
2021-02-28 20:01:06 +01:00
0c3eaf188b
OSC: liblo compatibility fix
...
see also 770fd1519c
2021-02-28 20:00:04 +01:00
770fd1519c
Liblo compat fix
...
Upstream liblo changed the opaque type `lo_message` from void*
to a custom struct {}.
2c1ef1c682
/
2021-02-28 02:25:02 +01:00
John Emmas
d2cb383965
MSVC changes to support the new code modules (Tabbable API stuff)
2021-02-24 14:32:23 +00:00
07c16d38a2
control surfaces: make methods used for transport control (BasicUI) do the right thing w.r.t. default speed
2021-02-12 09:36:52 -07:00
acfa04d700
Update Ctrl-surface MIDI port list when ports change
...
This is a better variant of bbb6851468
, directly using
the GUI context without indirection.
2021-02-04 06:19:37 +01:00
cd524f70dc
OSC, strip and select share all main strip functions
...
Allow blocking strip commands for master or monitor
2021-01-23 21:18:32 -08:00
a9f0f771c1
Reuse the same code for strip and select
...
Combine Maser and Monitor to reuse code
Started adding query functionality
Added query functionality to all touchosc fixed commands
2021-01-23 21:17:46 -08:00
eed07770e1
Fix Faderport1 port-connection (amend bbb68514
)
2021-01-22 18:46:17 +01:00
8386874a03
OSC: Allow to specify marker name #8543
...
Patch from atsampson
2021-01-18 23:36:35 +01:00
bbb6851468
Subscribe to pretty-port name changes (surfaces)
2021-01-18 03:18:20 +01:00
1737dc1869
Revert "Fix typo in OSC gain feedback message"
...
This was not a typo after all, but a way to show the gain in the
name-display, as per manual:
> In the case where Gainmode is set to position, the track name
> will show the dB value while values are changing.
This reverts commit 3290d66a43
.
2020-12-17 17:30:24 +01:00
3290d66a43
Fix typo in OSC gain feedback message
2020-12-17 00:58:28 +01:00
ce43161d4e
WebSockets: log hostname and listen-port
2020-11-23 20:12:57 +01:00
7d4cd5c76a
Fix C++11ism
2020-11-20 13:32:20 +01:00
6ca4980e71
FP8: Allow to sort plugin-params by priority
2020-11-20 06:04:32 +01:00
Luciano Iam
9ee828b47b
WS: properly support MIDI strips
2020-11-19 17:03:36 +01:00
ddcf3eb684
Generic Midi encoders fixed
2020-10-24 16:06:04 -07:00
a266a2d5b9
Use session API to set solo
...
This is required so that ::update_route_solo_state() is called
to propagate solo/mute state
2020-10-18 15:28:10 +02:00
72736289c8
NO-OP: rename API rename
...
CP selection API is now implemented as functions, not signals.
2020-10-18 14:47:05 +02:00
84bf97aa49
Update ControlProtocol API, use CoreSelection
...
* replace signal-emission with direct calls to CoreSelecton
using BaseUI's session pointer
* remove unused leftmost strip API
* use CoreSelection for first-selected strip
* Accessing CoreSelection does not modify the session
(allow access from const callbacks)
* replace static calls in P2 surface
This removes indirection and dependency on the GUI for
managing strip selection.
2020-10-18 14:44:38 +02:00
dcea35191c
Consolidate code: use API to print plugin-type 1/2
2020-09-15 16:03:33 +02:00
Luciano Iam
9c08c058a3
WS: crash bugfix related to missing strip panner
...
Surface made Ardour crash when a client connected
and some session track was not a VCA nor had a panner,
like MIDI strips.
2020-09-04 01:59:53 +02:00
63a117bf93
And another boost/C++11 fix
...
This fixes Undefined symbols:
"ArdourSurface::hash_value(ArdourSurface::NodeState const&)", referenced from:
boost::hash<ArdourSurface::NodeState>::operator()(ArdourSurface::NodeState const&) constin client.cc.1.o
boost::hash<ArdourSurface::NodeState>::operator()(ArdourSurface::NodeState const&) constin server.cc.1.o
2020-08-31 08:28:50 +02:00
a9c2350e87
Fix yet another C++11ism
2020-08-31 07:52:48 +02:00
39110463f3
Amend cdd48926d1
use ScopedConnectionList directly
2020-08-31 07:41:11 +02:00
cdd48926d1
Remove more libwebsocket C++11isms
...
* amend previous commit, fix runtime_error implementation
* Do not copy-construct classes that have a PBD::scoped connection list.
Replace std::map::emplace[C+11], an store shared pointers the std::map.
* Update ArdourMixerStrip is-a ScopedConnectionList (not has-a)
2020-08-30 22:57:43 +02:00
8eb4dcb675
Fix websocket C++11ism
2020-08-30 21:15:33 +02:00
af79240c81
Namespace libwebsocket surface classes
...
Using the global names-pace for classes named "Json", "TypedValue",
"ArdourTransport", "ArdourMixerPlugin" etc is not acceptable.
2020-08-30 21:15:07 +02:00
Luciano Iam
665e0686e5
WS: noop use a namespace for JSON utilities
...
Instead of a class with static methods
Also correct some whitespace to prevent triggering of OCD cycles
2020-08-30 19:29:28 +02:00
Luciano Iam
aa38491b7d
WS: move VCA detection to mixer strip interface
...
Expose the wrapped Stripable the least as possible
2020-08-30 19:29:28 +02:00
Luciano Iam
e510c0cb75
WS: consistent naming of strip/plugin/param identifiers
...
Rename all {object}_n variables and arguments to {object}_id
Parts of code were using the former convention, now use the latter everywhere
Another step towards supporting visual position agnostic identifiers in the future
2020-08-30 19:29:28 +02:00
Luciano Iam
c32a5917f3
WS: handle strips and plugins removal
2020-08-30 19:29:27 +02:00
Luciano Iam
a8f917e7e2
WS: prepare for handling object disconnections
...
Use maps instead of vectors for holding strips and plugins
This allows to deal with "holes" after objects are removed
Also paves the way for a future improved way of identifying
individual strips and plugins
2020-08-30 19:29:27 +02:00
Luciano Iam
7521d8ab6f
WS: add some meaningful error messages
2020-08-30 19:29:27 +02:00
Luciano Iam
3509fe1589
WS: use an object-oriented internal API for the mixer
...
- This allows to better handle strips & plugins connection lifecycles
- Coherent with the JS client design
2020-08-30 19:29:27 +02:00
Luciano Iam
4a4734fbb1
WebSockets: properly release strips and plugins when removed
...
This should fix some crashes reported by the beta testing team
2020-08-30 19:29:27 +02:00
87f7dcc5f6
OSC Panner feedback crash with no panner
...
both select and route feedback now test for both
route and panner (not VCA)
2020-08-29 17:08:56 -07:00
1cc9573dba
OSC toggle roll make return to zero optional
2020-08-20 16:26:07 -07:00
b8da1d0265
fix toggle_roll will only start but not stop PH
2020-08-20 16:26:07 -07:00
dfe2270c9f
Revert "WebSockets: properly release strips and plugins when removed"
...
This reverts commit f007ba6b46
.
2020-08-19 23:59:38 +02:00
Luciano Iam
f007ba6b46
WebSockets: properly release strips and plugins when removed
...
This should fix some crashes reported by the beta testing team
2020-08-19 19:01:18 +02:00
c8bc9a25b3
Added strip feedback for new automation states
...
for mute, trim and panner
2020-08-19 09:45:44 -07:00
5ce796f0b5
Added strip feedback for new automation states
...
for mute, trim and panner
2020-08-19 09:45:44 -07:00
ab0217f3a2
Added touch to more stripable controls
...
pan azimuth and width
mute and trim
2020-08-19 09:45:44 -07:00
d5016f80d3
Added automation control to the rest stripable controls
...
Pan azimuth
Pan Width
trim
mute
2020-08-19 09:45:44 -07:00
fcd347fe0c
Fix --no-nls, i18n include order in libs -- #8361
...
Ardour's "pbd/i18n.h" needs to be included last,
after any include that may indirectly pull in getext or libintl.
For that reason "pbd/i18n.h" must not be used in header files either.
2020-08-19 17:39:32 +02:00
7ab67c42dc
Fixes OSC panner issues: 8338 and 8246
...
8338 - crash with midi and no audio strip
detect no panner
8246 - send feedback of panner type
2020-08-12 08:08:39 -07:00
5c6e8954ed
Add pre/post fader to foldback send creation
...
add position param to send creation
default all to prefader as first step
2020-08-08 18:41:03 -07:00
Luciano Iam
e7e4fb3a81
WS: Use Ardour native scale for pan knobs
2020-07-21 06:49:28 +02:00
4717f7806d
issue 8186 strip controls reset then show on select
...
Causes motor controls to jiggle on all strips
when select changes. Fixed
2020-06-23 20:25:49 -07:00
32aa290578
issue 8243 select gets feedback past selected strips
...
make sure to drop old references when route is changed
2020-06-23 09:03:19 -07:00
399192da4c
OSC add width feedback to strips
...
Also detect panner type change
2020-06-22 23:29:11 -07:00
23feb0491e
Remove using std::min/max from header
2020-06-18 01:05:48 +02:00
ad234b1853
US2400: fix pan_azimuth direction by setting rotary flag
2020-06-18 00:19:29 +02:00
aa4d357201
CC121: fix pan_azimuth direction by setting rotary flag
2020-06-18 00:10:08 +02:00
Luciano Iam
8ff4bcfd68
WebSockets: improve JS client message handling code
2020-06-10 19:47:37 +02:00
Luciano Iam
a26a9018fd
WebSockets: code refactor
...
Terminology used by server and client was starting to diverge.
C++ classes ArdourStrips and ArdourGlobals classes have been
renamed to ArdourMixer and ArdourTransport respectively.
State node values for transport functionality have been simplified
and prefixed with 'transport_' to match what was done for strips.
2020-06-10 19:47:37 +02:00
Luciano Iam
ae4df127ad
WebSockets: implement a JavaScript object-oriented client API
...
Replace previous callback based basic client with an easier
to use object-oriented API that further abstracts the low level
details of the WebSockets Server surface messaging protocol.
All built-in web surface demos were updated to use the new API.
2020-06-10 19:47:37 +02:00
5296ed141f
Fix support for older libwebsocket versions
...
LWS_WITH_EXTERNAL_POLL a new optional define for libwebsocket 4.x.
Earlier versions always supported it, without the compile-time define.
This fixes support for libwesocket 2.x (Debian, Ubuntu), and 3.x.
Also for Windows, LWS_WITH_GLIB is not available.
2020-06-10 15:58:47 +02:00
72d45c154a
Do not allow ctrl chars in file (or session) names (1/2)
2020-06-09 20:30:51 +02:00
Peter Kovář
630a3d07d2
Added support for the original Contour Design ShuttlePRO
2020-06-09 17:29:01 +02:00
9398a6f60a
Fix generic MIDI encoder off by one
...
Increment for CC values > 0x40, decrement control for values <= 40.
- 0x41 increment by one
- 0x40 decrement by one
previously: 0x3f decremented by one, 0x3e by two, .. 0x00 by 64,
but 0x40 also by 64.
2020-06-06 17:10:31 +02:00
Luciano Iam
e253302c62
WebSockets: allow compilation with lws < 2.1.0
...
Old libwebsockets does not define lws_callback_http_dummy()
Conditionally use custom code instead
2020-05-28 18:56:21 +02:00
Luciano Iam
3840264edd
WebSockets: remove usage of lws constant LLL_USER
...
It is not available on lws 2 and really not needed
2020-05-28 18:56:21 +02:00
Luciano Iam
c3d72625cd
WebSockets: leverage LWS_WITH_GLIB
2020-05-28 18:56:21 +02:00
Luciano Iam
85d1aa30d5
WebSockets: comment out a lws_callback case that made clients hang
2020-05-28 18:56:21 +02:00
Luciano Iam
7554655616
WebSockets: improve libwebsockets 4 compatibility
...
After upgrading from lws 3 to 4 clients could still connect to the surface but no data was sent from the server.
2020-05-28 18:56:21 +02:00
Luciano Iam
6e5aeb57b3
WebSockets: fix LWS_WITH_EXTERNAL_POLL check
2020-05-28 18:56:20 +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
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
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
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
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
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
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
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
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
John Emmas
02473f058c
Add/remove source(s) in our MSVC project (ardour_mackie)
2020-04-08 11:34:54 +01: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
5d2bacd238
do not initialize shared_ptr<Subview> with 0
2020-04-07 18:37:18 -06:00
3f30a0ad39
more code rearrangement ... old gcc/mingw does not allow Enum::Value
2020-04-07 18:32:45 -06:00
595be0e5e9
try some rearrangement to fix old mingw builds
2020-04-07 18:15:51 -06:00
893e835dca
NOOP: whitespace
2020-04-07 18:15:51 -06:00
d045dae5ff
fix missing #include
2020-04-07 17:33:14 -06:00
33ae34124a
fix missing #include
2020-04-07 17:27:31 -06:00
e345f38c7b
fix missing #include
2020-04-07 17:22:55 -06: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
55854e3797
Add foldback busses to OSC GUI
2020-04-05 14:45:18 -07:00
df8c000810
OSC: support foldback busses
2020-04-05 14:10:50 -07:00
1607d6a6c1
Fix websocket to glib IO condition mapping
2020-03-26 16:04:17 +01:00
bf894d80fb
NO-OP: remove unused #includes
2020-03-21 19:46:38 +01:00
Nikolaus Gullotta
5dcac21092
Adhere to Ardour style guide - 810b2fb78d
2020-03-10 09:41:50 -05:00
Nikolaus Gullotta
810b2fb78d
Prevent double free of global observers
...
We accomplish this by explicitly setting the global_obs to NULL after
free'ing it. The crash that led to this fix can be replicated as such
$ sendosc localhost 3819 /set_surface i 8 i 159 i 8
$ sendosc localhost 3819 /set_surface i 0 i 0 i 0
$ sendosc localhost 3819 /set_surface i 0 i 0 i 0
In this example the observer is created, then free'd, and then free'd
*again* because the new observer was never made (sur->feedback[x]
checks fail)
2020-03-09 13:02:38 -05:00
1196eed89d
Remove Mixbus send special case
...
Mixbus v6 uses AutomationType BusSendLevel like other Sends,
however with different min/max range compared to default Ardour
Aux sends. Control surfaces should use interface/internal API.
2020-03-07 02:33:36 +01:00
9c97724fc9
Fix OSC endless loop for tracks with hidden plugins
2020-03-07 02:23:56 +01:00
4eba86b503
Fix libwebsockets compat
...
LWS_CALLBACK_HTTP_CONFIRM_UPGRADE is only available since v3.1.0
2020-02-27 23:58:00 +01:00
Luciano Iam
ef512d412d
Avoid occasional response delay when handling HTTP in the websockets surface
2020-02-27 03:42:54 +01:00
Luciano Iam
0921cf8939
Make previous commit 81ecc2b compatible with libwebsockets==2
2020-02-27 03:42:54 +01:00
Luciano Iam
ec8e0f8ee5
Gracefully reject HTTP requests reaching the websockets surface
2020-02-27 03:42:54 +01:00
61b6b740bc
Fix deadlock, shared_ptr d'tor called from ScopedConnectionList d'tor
...
See https://ardour.org/styleguide.html #10
https://pastebin.com/gJfrNhL2
2020-02-25 22:55:59 +01:00
1074c16299
Websockets: error on unhandled callbacks
...
This prevents unhandled http request from hogging the backend.
2020-02-24 22:06:15 +01:00
bd00db9e8b
Websockets: use established NDEBUG - see assert(3)
2020-02-24 22:06:15 +01:00
bf649cd68a
Fix another websocket surface crash when no panner is available
...
This amends 224be91211
2020-02-23 19:12:26 +01:00
8b092f8658
Websockets: use unique header guards
2020-02-23 16:21:55 +01:00
5e3480ba8f
NO-OP: Re-indent websockets code
...
"Always use Tabstops for block-indent (the code must be
formatted correctly with "[TAB] = N spaces" for any value of N).
Use space only for alignment." - https://ardour.org/styleguide.html
2020-02-23 16:21:55 +01:00
224be91211
Fix websockets surface crash when panner is not available
2020-02-23 16:21:55 +01:00
3e77680a57
surfaces transport hotfix: surfaces should query the transport state via BasicUI, when possible
2020-02-23 09:02:25 -06:00
276baee8ad
surfaces transport hotfix: BasicUI: prefer actual_speed() and transport_stopped_or_stopping() for current Transport FSM
2020-02-23 09:02:21 -06:00
8efb642c46
surfaces transport hotfix: actual_speed() is preferred over transport_speed() for current Transport FSM
2020-02-23 09:02:13 -06:00
7fdc35bb45
Fix Unix compile with older libwebsockets
...
Debian/Ubuntu still only ship libwebsockets 2.x.
Recent libWS abstracts the poll interface to be
compatible with Windows.
2020-02-22 23:27:08 +01:00
Luciano Iam
d7ef188aea
Prefix events with LWS_
2020-02-22 23:10:25 +01:00
Luciano Iam
5abce5aae5
Properly initialize IOCondition in events_to_ioc()
2020-02-22 23:10:25 +01:00
Luciano Iam
7f73cfb36e
Properly initialize lws config structs
2020-02-22 23:10:25 +01:00
Luciano Iam
047b05b860
Remove all initializer list usages
2020-02-22 23:10:24 +01:00
Luciano Iam
bb448080b6
Remove locally defined classes
2020-02-22 23:10:24 +01:00
Luciano Iam
d8d70adab8
Replace C++11 lambdas with functors
2020-02-22 23:10:24 +01:00
Luciano Iam
6e499e2cc5
Make code adhere to C++98 (WIP)
2020-02-22 23:10:24 +01:00
Luciano Iam
8db9755d1e
Add websockets surface module
2020-02-22 23:10:24 +01:00
57598acbcf
remove unused members
2020-02-20 12:53:57 -07:00