a49c961189
lppro: handle new slots and new routes and improve color display
2023-08-30 16:06:13 -06:00
5deea0c077
libpbd: change static trigger property change signal to take Trigger*
...
When we add a region to a slot, we create a new Trigger, set its region,
then arrange for an "atomic" swap with the existing Trigger. This
means that the property change signal is emitted on a Trigger that
does not yet exist inside a TriggerBox, and so cannot be found using
row/col or x,y coordinates. Pass a raw pointer instead (lifetime
management is not an issue ... or is it.
2023-08-30 16:06:13 -06:00
f3861a79b6
lppro: more work on displaying triggers, including return of the color map
2023-08-30 16:06:13 -06:00
f65e0b85a8
libpbd: add operator<< for PropertyChange
2023-08-30 16:06:13 -06:00
1ea104eac1
lppro: fix invalidators
2023-08-30 16:06:13 -06:00
5cfa881fa9
lppro: more state tracking, stop clip handling etc.
2023-08-30 16:06:13 -06:00
9fa2fccb5c
lppro: track trigger state changes
2023-08-30 16:06:13 -06:00
6cf7b89aaf
triggerbox: fix argument ordering error in static trigger property signal
2023-08-30 16:06:13 -06:00
fef1cfa83b
lppro: pads launch clips
2023-08-30 16:06:13 -06:00
c81027fc84
triggerbox: add static signals to allow an object to watch all trigger state changes
2023-08-30 16:06:13 -06:00
2f9fd8e288
launchpad pro: basics of pad/button handling, complete with cue launch and transport control
2023-08-30 16:06:13 -06:00
9438914aca
ctrl surfaces: fix logic error in toggle_roll() for surfaces
2023-08-30 16:06:13 -06:00
7406ad01bd
lppro: continuing adventures with shadow ports and pad maps
2023-08-30 16:06:13 -06:00
88a599816a
fix name of port bundle for MIDI surface shadow port
2023-08-30 16:06:13 -06:00
1d1ba186b9
lppro: reorder x,y <-> note to put upper left at 0,0
...
This seems like more work than it should be
2023-08-30 16:06:13 -06:00
8209cb0ab5
launchpad pro: remove color map; implement note/x,y mapping
2023-08-30 16:06:13 -06:00
860f354e98
continuing to try to debug LPP initialization in DAW mode
2023-08-30 16:06:13 -06:00
054a09b567
launchpad pro: full communication and note/pad mapping functional
2023-08-30 16:06:13 -06:00
af01a55e48
MIDISurface: minor tweaks to DEBUG_TRACE output
2023-08-30 16:06:13 -06:00
f8ed004be0
make MIDISurface::midi_input_handler() public
...
It needs to be public to bind it to a signal from a derived class.
Silly C++.
2023-08-30 16:06:13 -06:00
7130deafdf
fix AbstractUI redefine of DEBUG_TRACE to still use PBD::debug_print-ish stuff
2023-08-30 16:06:13 -06:00
37f859197b
use PBD::DEBUG::Threads as a toggle to show thread ID/name with debug output
2023-08-30 16:06:13 -06:00
a59c217205
extend PBD::Debug API to provide a method that doesn't send to debug Transmitter
2023-08-30 16:06:13 -06:00
36ada549b2
lppro: scroll text method (doesn't seem to work) and new sysex header vector
2023-08-30 16:06:13 -06:00
599998bd1f
midisurface: add a vector constructor for MidByteArry
...
plus a few minor code tweaks
2023-08-30 16:06:13 -06:00
7e0315bc5e
lppro: working mode setting and control
2023-08-30 16:06:13 -06:00
45e3408595
minor tweak to MIDISurface API
...
Allows connecting additional ports to our parsers
2023-08-30 16:06:13 -06:00
13508efef3
lpp: successfully enter programmer mode
2023-08-30 16:06:13 -06:00
b93385e9ae
lppro: steps to an ecology of ... no wait, just some stuff
2023-08-30 16:06:13 -06:00
9d153af72d
image for launchpad pro "gui"
2023-08-30 16:06:13 -06:00
c4529f4654
NO-OP: variable name tweak
2023-08-30 16:06:13 -06:00
3fa15d9162
skeleton for launchpad pro support
2023-08-30 16:06:13 -06:00
6c44dbf9d6
temporal: a guess at how to use BBT markers from within TempoMap::paste()
...
Basically, if the paste position is not zero and not on a bar line, we will a BBT marker there,
using the existing tempo & meter at that position before the paste.
If the end of the paste is not on a bar line, we will place a BBT marker there,
using the tempo & meter that existed before the paste.
TempoMap::paste() now also accepts an optional final argument that if provided is
used to name the BBT markers, if they are created
2023-08-30 15:21:55 -06:00
7aa1863c0f
somewhat working tempo map cut/copy/paste
2023-08-30 14:16:21 -06:00
a5055a2227
various changes related to tempo map copy/cut/paste section
...
Tempo map is currently still excluded from the editor operation
2023-08-30 14:16:21 -06:00
2e08ff01f5
temporal: add TempoMapCutBuffer::empty()
2023-08-30 14:16:21 -06:00
6b8c7292a5
Do not use session-range as implicit section
2023-08-29 00:29:06 +02:00
8c9b6812d7
fix crash during tempo mapping
...
Region _length values are not stashed during tempo mapping
if the region is already in the intermediate time domain, so do
not assert when they cannot be found at the end of the operation
2023-08-27 09:41:47 -06:00
8fd8eaa01d
UF8: parameterize the device name and pass to MackieControlProtocol
2023-08-26 17:34:04 -05:00
845600b261
fix off-by-one pixel error caused by using floor() instead of round()
2023-08-26 10:07:41 -06:00
46a916f0b4
Add method to query sections
2023-08-26 14:09:53 +02:00
6cf2659f8b
Add Location flags to define sections
2023-08-26 14:09:53 +02:00
32ef2d5a0f
temporal: add a music-time (BBT) point at the cut site
2023-08-25 17:39:00 -06:00
4d8ba938f1
temporal: during cut(), break out of loop once we pass the end time
2023-08-25 17:39:00 -06:00
848f74d803
MCU/UF8: Fix issue with windows build
...
Enable Surface, show GUI, disable surface. repeat.
Previously this cased a crash in glibmm:
The type name `glibmm__CustomBoxed_N13ArdourSurface6NS_UF86Button2IDE'
has been registered already.
2023-08-25 21:08:14 +02:00
c6b43155bc
gain-like automation controls need to use the right limits for group value setting
2023-08-25 12:23:44 -06:00
4f7bd872be
MCU/UF8: use dedicated ctrl-protocol
2023-08-25 18:12:35 +02:00
c0366a5f13
MCU/UF8: Continued work to special case Mackie surface
...
* Use dedicated port-names for UFx
* Do not show SSL-UFx device-info files in MCU
* Fix Window namespacing/missing symbols
* Address Windows ambiguous symbols (Button, Surface)
Those used to have a Mackie:: prefix, now they need
MACKIE_NAMESPACE
When re-opening the GUI, there is still a somewha mysterious warning:
```
glibmm-WARNING **: file value_custom.cc: (Glib::custom_boxed_type_register): The type name `glibmm__CustomBoxed_N13ArdourSurface6NS_UF86Button2IDE' has been registered already.
```
2023-08-25 18:09:27 +02:00
70a4f29c59
Fix location ripple when cutting locations
2023-08-25 04:01:58 +02:00
f38a984396
Fix deadlock when undoing Location removal
2023-08-25 03:36:04 +02:00
efcef70d9a
Ensure that fatal
does exit
...
Previously it was possible to just press "Esc" which closes the
dialog with Gtk::RESPONSE_DELETE_EVENT and Ardour continues
to run (and may or may not crash later).
2023-08-24 20:00:45 +02:00
ec365820d8
MCU/UF8: reuse and special-case Mackie ctrl surface for SSL-UF8
...
This adds a unique namespace to the MCU source code, so it can be
compiled multiple times resulting in different ctrl surfaces.
2023-08-24 19:19:10 +02:00
e3297a6a84
Fix MIDI deinterlace #9422
...
De-interlace works by first creating 16 SMF Sources, and then
only using sources that are actually required.
However SourceFactory::createWritable by default emits SourceCreated,
which added all the 16 Sources to the Session. Later adding only the
required Sources resulted in duplicate IDs.
2023-08-22 19:00:58 +02:00
dd4e5dfc96
Build-system: remove duplicate dis/en/able options
...
e.g. we had both --vst3 (default) and --no-vst3.
A user could specify both, which is confusing.
2023-08-21 19:25:26 +02:00
e9be3beb2a
add get/set state methods to TimeDomainProvider
...
These are not used yet, because only the Session really acts as a Provider
and it uses the Config::default_time_domain to serialize that state
2023-08-16 16:33:17 -06:00
0227eab138
remove unused source file
2023-08-16 12:33:09 -06:00
c5a0c0f6e0
remove some debug output
2023-08-16 09:33:16 -06:00
0e40f030ad
reversible domain swaps for Locations
2023-08-16 09:32:41 -06:00
06e9bf6ca4
domain swaps for MIDI CC and other controls
2023-08-16 09:06:10 -06:00
b240423e50
session: add API to get access to the current reversible command (if any)
2023-08-16 09:04:22 -06:00
f7fd015cb3
no, really, no Pitches handling (extends previous commit)
2023-08-15 11:29:52 -06:00
4246009864
no need for domain bouncing for "pitches" in a MIDI model
...
The Pitches representation is just an optimization in Evoral::Sequence, and just
represents note data differently
2023-08-15 11:25:54 -06:00
a50f38d164
domain bounce handling for sysex and patch changes
2023-08-15 10:27:21 -06:00
f92dcfa068
domain bouncing for Automatable/ControlLists
2023-08-15 08:34:42 -06:00
457b94ba65
fix computation of note length after tempo mapping
2023-08-15 00:04:19 -06:00
71d27e7d81
add a couple of #warnings
2023-08-14 23:42:08 -06:00
076cb86912
next iteration of changes to handle time domain bounces as undoable
2023-08-14 23:42:08 -06:00
fd5dfe27c5
region groups: some operations should implicitly group new regions
...
* imported regions
* newly-recorded regions
* regions that result from a Split or Separate
* pasted regions
2023-08-10 16:55:25 +02:00
d1ee95e886
region groups: use group-id instead of equivalent-region, when provided
2023-08-10 16:55:25 +02:00
8cd69a633b
region groups: save and restore the group-id counter for this session
2023-08-10 16:55:25 +02:00
1d5ec57794
region groups: define an API in region.h for grouped regions
2023-08-10 16:55:20 +02:00
92fbee6312
do not abort when handling a region whose length has the wrong time domain
2023-08-07 16:36:11 -06:00
e7c35cf601
API change for the start of making tempo mapping undoable
2023-08-07 16:33:16 -06:00
0223be5312
pbd: fairly unconscionable that Undo stuff in libpbd is not namespaced, so now it is
2023-08-07 16:33:16 -06:00
6b34578dfd
minor fix for previous commit (this change is still pending)
2023-08-07 16:33:16 -06:00
afe5331a0b
pbd: fairly unconscionable that Command in libpbd is not namespaced, so now it is
2023-08-07 16:33:16 -06:00
47a7a16c43
temporal: move another domain-swapping object to the right header
2023-08-07 16:33:16 -06:00
d87b10037b
temporal: new object to try to make domain swaps undo-able
2023-08-07 16:33:16 -06:00
52c8a23aff
Add Lua bindings to print plugin control outputs
2023-08-06 21:58:33 +02:00
d035cb0834
some minor cleanups after rebase against master
2023-08-02 17:21:56 -06:00
ada7fc16aa
temporal: another place to ensure that a BBT marker defines a beat position
2023-08-02 15:23:43 -06:00
ca348ce0d9
temporal: add TempoMap::replace_bartime()
2023-08-02 15:23:43 -06:00
206f7d3c40
fix compilation errors (last commit happened too early)
2023-08-02 15:23:43 -06:00
aa0e882c5f
regions: force position time domain when a region is added to a playlist
...
Q: why not length time domain also?
2023-08-02 15:23:43 -06:00
1fd5f0d9e9
regions: attempt to prevent accidental time domain changes to length or position
2023-08-02 15:23:43 -06:00
f1b8a98a62
remove debug output
2023-08-02 15:23:43 -06:00
638978c527
fix thinko with tracks-follow-session-time when creating stripable
2023-08-02 15:23:42 -06:00
3367c03353
use tracks-follow-session-time option
2023-08-02 15:23:42 -06:00
08683674ce
remove glue-new-regions-to-beats option, add new tracks follow session time option
2023-08-02 15:23:42 -06:00
3d64972ca2
libardour support for propagating track time domain changes into playlists and thence regions
2023-08-02 15:23:42 -06:00
7fe3becf2d
temporal: fix TimeDomainProvider::set_time_domain_parent() to unset have_domain
2023-08-02 15:23:42 -06:00
71953a9929
locations: ensure they follow session time when start/end is set
2023-08-02 15:23:42 -06:00
1b9f4999df
locations now follow session time domain, always (probably)
2023-08-02 15:23:42 -06:00
0c9bdd817d
temporal: fix TimeDomainProvider::set_time_domain()
2023-08-02 15:23:42 -06:00
4cdac29029
attempt to follow time domain changes in playlists when tracks change
2023-08-02 15:23:42 -06:00
1fce815e2d
temporal: expand TimeDomainProvider API
2023-08-02 15:22:52 -06:00
1a83860016
forward propagate session default time domain changes
2023-08-02 15:22:52 -06:00
df188996ec
session has a default time domain
2023-08-02 15:22:52 -06:00
c293876518
playlist IS-A TimeDomainProvider
...
It has Session as its initial time domain parent
2023-08-02 15:22:52 -06:00
3b565693c8
objects don't have a time domain, they have a time domain provider (libs)
2023-08-02 15:22:52 -06:00