Commit graph

148 commits

Author SHA1 Message Date
Mads Kiilerich
140670541f Use .inc.h for #include files that not are plain headers
Regular .h files *should* be self-contained and independent of previous
includes and guarded to only include once. Make it clear which files
that *doesn't* apply for at all.
2024-10-20 03:11:53 +02:00
Paul Davis
d7d208dc34 move RecordState enum from ARDOUR::Session to ARDOUR so we can use it in TriggerBox (libs) 2024-10-17 07:44:32 -06:00
Paul Davis
2f25592702 push2: add velocity sensitivity 2023-09-08 14:57:28 -06:00
Paul Davis
c4529f4654 NO-OP: variable name tweak 2023-08-30 16:06:13 -06:00
Paul Davis
baf307838c push2: change ordering within destructor to avoid event loop thread drawing-after-delete 2023-05-04 12:34:37 -06:00
Robin Gareus
336f51e1f0
Push2: implement MIDI port probing, auto-enable 2023-05-04 00:57:16 +02:00
Robin Gareus
65346496f5
Refactor Ctrl Surface API
* reserve "probe" to actually probe for devices
* use separate probe for libusb and MIDI port devices
* use "available" to check if surface can be used
* allow both methods to be NULL
* remove unused ControlProtocolDescriptor* argument

Most surface just return `true` for available.
2023-05-03 15:38:42 +02:00
Paul Davis
8629aea237 push2: shift held while using touch strip sends modulation, not pitch bend 2023-04-21 17:20:17 -06:00
Paul Davis
b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
Paul Davis
a130041547 use MIDISurface in original Faderport support, plus required changes in MIDISurface & Push 2 2022-11-16 08:37:57 -07:00
Paul Davis
e5bbccef28 various changes to get Push 2 surface support functional after inheriting from MIDISurface 2022-11-16 08:37:57 -07:00
Paul Davis
99712e7585 surfaces; convert push2 to inherit from MIDISurface 2022-11-16 08:37:57 -07:00
Paul Davis
2d4042abd7 push2: fix handling of pads-as-note-entry during selection changes 2022-09-03 16:46:41 -06:00
Paul Davis
96a9c1df7f push2: bug fixes for pad color mgmt and other fixes/improvements 2022-09-02 17:57:46 -06:00
Paul Davis
cbbc6f9b84 push2: use vector of pads rather than map when shutting down 2022-08-31 10:23:12 -06:00
Paul Davis
253dac007d push2: fully init and de-init buttons and pads at startup and shutdown 2022-08-31 10:22:24 -06:00
Paul Davis
678ed40bd3 push2: fix pad colors etc. after layout switches 2022-08-30 21:37:16 -06:00
Paul Davis
b98ec59ed8 push2: another bunch of Live-chasing functionality for trigger control 2022-08-28 18:58:50 -06:00
Paul Davis
06abdb4c4e push2: vector, not map 2022-08-27 16:03:01 -06:00
Paul Davis
6627d24c2b push2: add an (x,y) map for pads and use it 2022-08-27 15:53:03 -06:00
Paul Davis
8ed8895439 push2: launch clips with pads 2022-08-27 08:15:40 -06:00
Paul Davis
1ecdeb25a7 push2: an ever-growing array of cue-related support 2022-08-26 19:23:43 -06:00
Paul Davis
f835fb279a push2: don't like the clip button since it does nothing 2022-08-26 17:40:41 -06:00
Paul Davis
f57669fbde push2: rename things to match the rest of ardour, and use Session button not Clip
the clip button is intended to "look at" a single clip and edit it
2022-08-26 17:40:04 -06:00
Paul Davis
17b0764639 push2: clip view actually visible via button on surface 2022-08-26 16:39:36 -06:00
David Robillard
7883695ba9 Push2: Implement special "sequential" mode for in-key note grids
This makes "sequential" more or less mean an octave vertical interval,
but only for in-key mode.  For chromatic mode, "sequential" is still just a
naive wrap-around layout for every note.
2022-08-26 14:10:40 -06:00
David Robillard
a6cd0a3f6e Push2: Ensure every pad is set up once when the grid layout changes
This juggles the implementation slightly in a way that's more resilient to
mistakes: the representation of pads in the surfaces is always fully reset
before setting up the grid, and a state message is sent for every single pad
once after the scale algorithm sets things up.

This means that scale algorithms don't need to deal with hairy edge cases like
running off the end of the scale or the valid range of MIDI notes.
2022-08-26 14:10:40 -06:00
David Robillard
e4e874bed0 Push2: Add "fixed" and "rooted" note grid option 2022-08-26 14:10:40 -06:00
David Robillard
380a24b837 Push2: Remove debug printing 2022-08-26 14:10:40 -06:00
David Robillard
e93b7e2507 Push2: Add UI for changing the vertical interval 2022-08-26 14:10:40 -06:00
David Robillard
d5ca05edff Push2: Implement a vertical interval for "tuning" the pads
The implementation is generic, but the actual call is hardcoded to 4ths here.
UI to follow.
2022-08-26 14:10:40 -06:00
David Robillard
b35796af75 Push2: Factor out set_pad_note_kind()
Factors button details out of the scale algorithm, to make it more clear.
2022-08-26 14:10:40 -06:00
David Robillard
2af9c2180a Push2: Mostly fix scale menu text rendering (#8599)
"Mostly" because there are still some issues with horizontal overlap between
entries, but I think that's something that needs to be addressed separately.

Like earlier issues, this was caused by using a screen-derived or default
cairo/pango context.  I also tinkered with some constants to make things look
sensible to me, and hopefully everywhere since it should always look the same
with the context fix.
2022-08-26 14:10:40 -06:00
David Robillard
c4632da2e7 Push2: Drop "using namespace std"
No functional changes, just makes some more context explicit like the previous
commit.
2022-08-26 14:10:40 -06:00
David Robillard
61088a1a01 Push2: Use consistent naming convention for private member variables
No functional changes, just makes code easier to read.
2022-08-26 14:10:36 -06:00
luz paz
47c525315d Fix various typos
Found via `codespell -q 3 -S *.po,./.git,./share/patchfiles,./libs,./msvc_extra_headers,./share/web_surfaces,*.patch  -L ba,buss,busses,discreet,doubleclick,hsi,ontop,ro,scrollin,seh,siz,sord,sur,te,trough,ue`
2022-08-03 12:10:01 -06:00
Paul Davis
7bf89ce109 Constification: make Stateful::get_state() const, with all other required const-ness added (libs) 2022-04-06 21:56:59 -06:00
Paul Davis
3475350d7c push2: session button should be lit 2021-10-09 11:46:53 -06:00
Paul Davis
086e48796c surfaces: first round of conversion to use timeline types 2021-08-13 12:51:29 -06:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
bbb6851468
Subscribe to pretty-port name changes (surfaces) 2021-01-18 03:18:20 +01:00
Robin Gareus
365f6d6337
Update plugins/addons GPL boilerplate and (C) from git log 2019-08-03 15:53:18 +02:00
Paul Davis
6e419a961e use boost::shared_ptr<> to manage Button/Pad lifetimes in Push2 code 2018-09-02 13:23:57 -04:00
Robin Gareus
9f30d14906 P2: Fix check if ports exist 2018-08-30 22:28:31 +02:00
Paul Davis
b9c6ffac21 fix header order and space alignment 2017-09-24 12:57:27 -04:00
Paul Davis
7db12f6b12 convert codebase to use Temporal for various time types 2017-09-24 12:03:54 -04:00
Paul Davis
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
Paul Davis
483ad807ce fix crashing thinko in push2 code 2017-09-08 18:36:26 -04:00
Robin Gareus
2d60a69c2d Consolidate ctrl surface code 2017-08-05 01:28:11 +02:00