Commit Graph

19678 Commits

Author SHA1 Message Date
375daf4810 libpbd: new threader Inflater and Downlaoder classes 2022-09-13 13:53:45 -06:00
2061c3780d FileArchive: minor fixes to get progress reporting working 2022-09-13 13:53:45 -06:00
be096edd8c
Use rubberband 3.0 API if available 2022-09-13 06:44:41 +02:00
46deb15d12
ALSA: request device to query its settings
Querying available buffersizes and sample-rates requires access
to the device. Almost all ALSA devices are limited to
a single user-space application so we unconditionally try
to request access to the device.
2022-09-12 16:34:25 +02:00
18474d89f8
SystemExec try SIGINT before SIGKILL
Even though SIGINT is intended to be sent from terminals only,
it is more successful at terminating various child processes than
closing stdin and sending SIGTERM.
2022-09-12 16:17:55 +02:00
f85b4fef15
Distinct stderr messages from ARD 2022-09-12 16:15:10 +02:00
ea335eedeb
Clarify library URL pref name (amend d4532973) 2022-09-12 01:31:49 +02:00
d453297381
Parameterize clip library URL
Also prefer http since our distributed builds may or may not
be able to find SSL certificates on a given target system.
2022-09-11 20:14:35 +02:00
38c5ae4237
Reread MIDI region when time-domain changes
This effectively triggers a Session::request_overwrite_buffer
via Playlist::notify_contents_changed when the time-domain of a
Region changes.

When the time domain of a MIDI region changes, Region boundaries
and events positions change ever so slightly. The playlist has
to be rendered again to take this into account.

When MIDI regions with different time-domains are layered, notes
may not be resolved in correct order. Previously changing time-domains
to address this did not result in the playlist being reread.
2022-09-11 00:57:12 +02:00
9cfcca8ba4 library downloading: various fixes to download process 2022-09-10 15:19:02 -06:00
16ef3dd6b1
Fix MR:render_range debug output (nutempo) 2022-09-10 18:19:58 +02:00
644136bca0
NO-OP: re-indent EventsSortByTimeAndType 2022-09-10 18:19:58 +02:00
c457dd2eac
Fix EventsSortByTimeAndType (type/event-type API mismatch)
Correct use would be
`parameter_is_midi (midi_parameter_type (ev->type()))`
However that only checks for control params. Note events
are excluded.
2022-09-10 18:19:58 +02:00
b67b18483c
Implement MIDI region automation (CC, PGM, PB) opaqueness
This adds a special case of "flush/resolve" to restore the
state of an upper layer opaque MIDI region while at the same time
resolving notes of a lower layer region.
2022-09-10 18:19:58 +02:00
5ad7361b28
MidiStateTracker::flush restore CC (bank) before PGM 2022-09-10 18:19:57 +02:00
John Emmas
5737468768 libardour: some new classes get used in gtk2_ardour (so need to get exported) 2022-09-10 11:39:53 +01:00
John Emmas
7418da4703 Add a missing #include
(needed for call to std::back_insert_iterator)
2022-09-10 10:20:37 +01:00
6f7188dc49
Add Lua bindings for MIDI channel mode/mask 2022-09-10 04:28:55 +02:00
edd7800009 remove unused variable 2022-09-09 16:32:42 -06:00
ed2a436f15 remove debug output from MidiSource:midi_read() 2022-09-09 16:32:42 -06:00
95eb936daf
Stop MIDI notes at opaque region bounds above a layered region 2022-09-09 22:27:59 +02:00
94637272e1
Mark MIDI regons as transparent by default, and convert old sessions 2022-09-09 19:07:49 +02:00
f3cb657179
Implement MIDI region opaqueness (part 1)
This honors transparent/opaque property of MIDI regions.
Previously all MIDI regions played as if they were unconditionally
transparent.

Further work is needed for backwards compatibility (and default
setting).
2022-09-09 18:37:34 +02:00
e62f1093ea
Add playlist APIs to find audible regions
This traverses the layered region stack at a given time,
taking both mute and transparency into account.
2022-09-09 17:31:20 +02:00
9781c1baca triggerbox: prevent downstream crashes if a tempo map or other change invalidates MidiTrigger iter
The iterator into the model can become incorrect in the sense that it is no longer the correct
next event to play. This can happen at least with a tempo map change, and possible under other
conditions. Catch this when it happens, and act as if we reached the end of the trigger
2022-09-09 09:21:43 -06:00
76f44c6025 library mgmt API tweaks 2022-09-08 18:19:20 -06:00
355685d8b9 2 second time out for library description fetch, to (maybe) avoid threading 2022-09-08 07:47:14 -06:00
57430f33c2
Fix file-archive, curl API 2022-09-08 15:46:06 +02:00
288c58c5de
Fix/add missing Lua enums 2022-09-08 05:34:05 +02:00
5579cf3289
Remove ancient unused check for FLAC/OGG support
Our build-systems do not even have sndfile-info, and we use
pkg-config now
2022-09-08 02:22:21 +02:00
73331ae46a libpbd: fix decl of remove_extra_whitespaces 2022-09-07 17:56:52 -06:00
ff2f8f4066 add copyright notices to new files 2022-09-07 17:14:32 -06:00
10ac1901dd push2: temporarily comment display of jump loop actions due to cairo oddity 2022-09-07 17:03:08 -06:00
fabd111b1f library downloading: continue to improve backend API and implementation 2022-09-07 17:03:08 -06:00
5563117a1b add remove_extra_whitespace() to libpbd 2022-09-07 17:03:08 -06:00
bd9fe31778 tweaks to library & downloader API 2022-09-07 17:03:08 -06:00
78d96ed0c6 library fetcher: API changes and implementation improvements including threaded download 2022-09-07 17:03:08 -06:00
d388a50579 loop libraries: tentative steps towards fetching and installing ardour.org loop libs 2022-09-07 17:03:08 -06:00
26b5700957 filearchive: extend API 2022-09-07 17:03:08 -06:00
2a7d528c5d
Update and consolidate gettext.h
This fixes compilation with --no-nls on modern systems
2022-09-07 00:09:54 +02:00
db5cb4ec94 Expose Send polarity_control directly 2022-09-04 20:14:09 +02:00
1eab84b7da push2: remove unconditional setting of canvas item names 2022-09-03 17:48:03 -06:00
4863e6b45e Fix mac and windows builds (resolve namespace ambiguities) 2022-09-04 01:37:48 +02:00
183604a66b Add polarity invert switch to sends
This allows to invert polarity of the signals of all channels on the
send path. There is intentionally no per channel control.

see https://discourse.ardour.org/t/send-phase-swtich/107564
2022-09-04 01:35:24 +02:00
44515cb513 Properly describe polarity invert controls 2022-09-04 01:35:24 +02:00
97540dafde push2: update cue layout when tracks are added 2022-09-03 16:46:41 -06:00
2d4042abd7 push2: fix handling of pads-as-note-entry during selection changes 2022-09-03 16:46:41 -06:00
b3b6e94297 push2: fix canvas level meter object so that it draws 2022-09-03 16:46:41 -06:00
b7d86cb118 push2: track mix layout needs to be setup even if not currently visible 2022-09-03 16:46:41 -06:00
f13c4d1264 canvas: NOOP - meter, whitespace adjustment 2022-09-03 16:46:41 -06:00
e5bf2b7ee8 canvas: style, using braces with conditional 2022-09-03 16:46:41 -06:00
2313e3d333 canvas: meter bounding box does not rely on being on a canvas 2022-09-03 16:46:41 -06:00
b2ce5f0616 canvas: do not strip layout-sensitivity when adding items to a container 2022-09-03 16:46:41 -06:00
384530984a canvas: make "debug_render" into a per-canvas member variable
This allows us to debug rendering in specific canvases, rather
than all of them.
2022-09-03 16:46:41 -06:00
36663210c9 canvas: improve debug trace output during Box::reposition_children() 2022-09-03 16:46:41 -06:00
9697187037 Fix erractic timecode detection when extracting LTC from video
Some music using square waves can inadvertently be interpreted as valid
LTC frame. However the encoded data is not a valid timecode, which can
lead huge A/V offsets, or other issues.
2022-09-03 21:39:26 +02:00
96a9c1df7f push2: bug fixes for pad color mgmt and other fixes/improvements 2022-09-02 17:57:46 -06:00
49e6066306 Fix mac and windows builds (resolve namespace ambiguities) 2022-09-02 12:44:44 +02:00
f8312cacc4 add back Rect -> ArdourCanvas::Rect define 2022-09-01 22:03:11 -06:00
55ff73a2ad fix clang/macos compilation 2022-09-01 16:23:12 -06:00
494aa8dba1 Remove unused URIDs
These also had the wrong case: case is relevant here, classes are uppercase,
other things (properties and instances) are lowercase.  However, they seem to
be entirely unused now, so simply remove them instead of fixing this.
2022-08-31 18:50:43 -04:00
d2fc142e21 infrastructure and implementation to allow "q" to drive quantize-selected-notes in midi edit mode 2022-08-31 13:53:55 -06:00
02b05f295a use selected (outline) color for MIDI note velocity bar (thanks, cooltehno, for the idea) 2022-08-31 13:53:43 -06:00
cbbc6f9b84 push2: use vector of pads rather than map when shutting down 2022-08-31 10:23:12 -06:00
253dac007d push2: fully init and de-init buttons and pads at startup and shutdown 2022-08-31 10:22:24 -06:00
681ca38848 push2: fix a couple of potential crashes 2022-08-31 10:11:02 -06:00
678ed40bd3 push2: fix pad colors etc. after layout switches 2022-08-30 21:37:16 -06:00
748fbf6fb1 push2: add follow action icons to display 2022-08-30 16:51:34 -06:00
6986c18163 push2: add clip names to display and slightly shift progress circle 2022-08-28 22:37:31 -06:00
b98ec59ed8 push2: another bunch of Live-chasing functionality for trigger control 2022-08-28 18:58:50 -06:00
406080f1b8 triggerbox: sort-of NOOP - fix null return object in ::get_next_trigger() 2022-08-28 18:58:12 -06:00
aef1adc6f0 triggerbox: implement TriggerBox::peek_next_trigger() 2022-08-28 18:57:39 -06:00
45144d841e triggerbox: add new "queued" property for Trigger and properly register it
Also register "currently_playing"
2022-08-28 18:56:56 -06:00
a06ed85269 push2: prep for triggerbox property changes 2022-08-27 21:21:22 -06:00
f6cfa3c3e1 push2: let's not crash 2022-08-27 16:25:09 -06:00
741ff552a0 push2: start tracking route properties in cue layout 2022-08-27 16:22:07 -06:00
06abdb4c4e push2: vector, not map 2022-08-27 16:03:01 -06:00
6627d24c2b push2: add an (x,y) map for pads and use it 2022-08-27 15:53:03 -06:00
a5dd6c1128 push2: lots more clip control functionality and display 2022-08-27 12:55:16 -06:00
a1f69ee63b canvas: tweaks to Arc canvas item
Cairo uses 0 degrees to mean "east", so the "top" or "north" of
a circle is actually -90 degrees
2022-08-27 12:54:43 -06:00
b10a99dcad push2: clip stop ala Live 2022-08-27 08:32:15 -06:00
19db8f9c68 control protocols: fix design of trigger unbang method 2022-08-27 08:32:03 -06:00
3cffca9178 control protocols: add trigger unbang method 2022-08-27 08:26:08 -06:00
8ed8895439 push2: launch clips with pads 2022-08-27 08:15:40 -06:00
26c48aae1b control protocols: add trigger bang method to BasicUI 2022-08-27 08:15:17 -06:00
092fdb5b46 push2: turn off scene buttons when appropriate 2022-08-26 19:31:15 -06:00
1ecdeb25a7 push2: an ever-growing array of cue-related support 2022-08-26 19:23:43 -06:00
f835fb279a push2: don't like the clip button since it does nothing 2022-08-26 17:40:41 -06:00
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
17b0764639 push2: clip view actually visible via button on surface 2022-08-26 16:39:36 -06:00
dd2442b0c2 push2: skeleton for new clip view layout 2022-08-26 16:15:32 -06:00
58d262384b fix error during rebase fixup 2022-08-26 14:49:29 -06:00
7670f87d0a Push2: Use condensed font to avoid overlap in scale menu 2022-08-26 14:10:40 -06:00
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
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
b6389bf274 Push2: Show both row and column interval explicitly in the same way
This hopefully makes the layout clearer to people who aren't familiar with what
all the settings mean.
2022-08-26 14:10:40 -06:00
e4e874bed0 Push2: Add "fixed" and "rooted" note grid option 2022-08-26 14:10:40 -06:00
ecd1a9660b Push2: Fix Db root button 2022-08-26 14:10:40 -06:00
380a24b837 Push2: Remove debug printing 2022-08-26 14:10:40 -06:00
e93b7e2507 Push2: Add UI for changing the vertical interval 2022-08-26 14:10:40 -06:00
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
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
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
2a31e0721d Push2: Invert splash screen
This looked janky and out of place to me, since everything else is on black and
the LCD doesn't seem to do light backgrounds very well in general.
2022-08-26 14:10:40 -06:00
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
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
6379c28b76 remove debug output 2022-08-25 15:15:52 -06:00
13d10582f0 fix behavior of Region::mid_thaw() to match pre-nutempo behavior
We no longer have a distinct "position" property, because the "length" property
defines both extent and position. But we must not call ::recompute_at_start()
when the position has not changed, so here we use Region::last_length() to
simulate the position property.
2022-08-25 15:15:52 -06:00
00a1b7cb24 fix assignment of Region::_last_length in Region::set_length_internal()
this member is always supposed to give the previous length (before
the most recent change to either extent or position)
2022-08-25 15:15:52 -06:00
decd6e6f70
Allow VCAs to control A/PFL 2022-08-24 19:34:00 +02:00
Edgar Aichinger
5a0cc53a94 add a few translations missing in previous commit 2022-08-23 17:01:21 +02:00
Edgar Aichinger
d0da24ae18 update german translation 2022-08-23 16:22:33 +02:00
58c2de2d71
Fix typo 2022-08-23 16:01:18 +02:00
027b6ee9cf Fix compilation with clang (vexing-parse) 2022-08-21 01:02:43 +02:00
ac27bbafcf midi combine: new region is same extent as the combined regions 2022-08-20 14:29:13 -06:00
ef34daedeb MIDI combine: extend new region end to next bar
Also remove debug output
2022-08-19 17:29:53 -06:00
Mads Kiilerich
9f69b8ccd9 tests: more helpful assertion failures from check_nodes
Tests would fail as:

  Test name: AutomationListPropertyTest::basicTest
  equality assertion failed
  - Expected: 4
  - Actual  : 5

It is slightly more informative when the size assertion is the last
check and it fails as:

  - Expected: state
  - Actual  : time-domain

The performance benefits from checking size first is not relevant.
2022-08-19 11:05:52 -06:00
Mads Kiilerich
58cc2aed87 tests: update automation list reference data
With this, all tests are passing for me.

While Ardour doesn't use TDD and has low test coverage, it is nice to
maintain that all active tests are passing.
2022-08-19 10:59:26 -06:00
Mads Kiilerich
3fa64af624 osc: fix warning message
Apparently just a missing update from copy-paste.
2022-08-19 10:58:41 -06:00
Mads Kiilerich
1f1565e08b surface faderport: drop old debug print
This showed up in test output, and was introduced 5 years ago in
ecc2348ecc .
2022-08-19 10:56:55 -06:00
dd455bdd97 use correct redirect for donate URL 2022-08-19 10:31:38 -06:00
2f7f313f6d MIDI combine (basically operational)
May need some tweaks to address notes that are cut off by the end of the region
2022-08-18 07:45:05 -06:00
ffc9239de5 ControlList: replace code use to interpolate MIDI CC curves
Original code is of questionable historical provenance, and
was needlessly (it seems) complexity. New code is relatively
simple arithmetic linear interpolation.
2022-08-17 20:55:17 -06:00
025dfa6062 tempo map: fix logic error in ::reset_starting_at() relating to tempo/bbt markers 2022-08-17 16:40:14 -06:00
b03e9b4c10 NOOP: add helpful explanatory comment 2022-08-12 09:21:23 -06:00
ce46b791ea
VST3 scan: don't clutter log with bus-info messages 2022-08-12 16:08:23 +02:00
839400f438
Fix peak-thread race on session-load
Session dirs must exist when loading Sources of a project.
SourceFactory::init() starts the PeakFileBuilder background thread
early on when libardour is initialized.
This thread [re-]creates missing peak files when Sources are
created or loaded. However AudioSource::prepare_for_peakfile_writes
assumes the peak/ folder exists. This may not be true, which lead to
"AudioSource: cannot open _peakpath [..] (No such file or directory)"
errors.

Also drop creation from Source::get_transients_path() as this
may be called concurrently from Analyser background threads.
2022-08-12 01:36:43 +02:00
610b5dddbf ControlList: GUARD_POINT_DELTA needs to take time domain into account 2022-08-11 15:26:42 -06:00
9327027d98
Revert "Ensure disk buffer refills happen in the right thread"
This reverts commit 96ebac646d.

There are some valid cases where refill is called from the GUI
thread. e.g adding tracks, or adding channels to an existing track.
2022-08-11 22:45:13 +02:00
96ebac646d
Ensure disk buffer refills happen in the right thread 2022-08-11 19:14:51 +02:00
63c068227f
Improve DR refill error messages to aid debugging 2022-08-11 19:14:51 +02:00
9453802248
Fix "when refilling, cannot write" disk-reader bug
This happened initially during session load.
The GUI thread performed a direct refill (blocking wait)

`Session::post_engine_init() -> Track::seek() -> DiskReader::seek() -> DiskReader::do_refill_with_alloc()`

while concurrently the butler thread does the same:

```
Session::butler_transport_work() -> Track::non_realtime_locate() -> Route::non_realtime_locate()
-> DiskIOProcessor::non_realtime_locate() -> DiskReader::seek() -> DiskReader::do_refill_with_alloc()
-> DiskReader::refill_audio()
```

We do not want the GUI to wait, so now we just request a locate
and let refill happen in the background.
2022-08-11 19:14:51 +02:00
27f4302a7d ardourfader: more complete support for explicit fg 2022-08-11 00:07:30 -06:00
aee41bfba6 ardourfader: basic use of explicit fg/bg color 2022-08-10 22:32:42 -06:00
a2e4897a49 move color utility functions from ARDOUR_UI_UTILS to Gtkmm2ext namespace (libs) 2022-08-10 21:11:46 -06:00
32c2ed3f21 ardourfader: further steps to per-fader colors 2022-08-10 18:26:49 -06:00
9459ca5583 ardourfader: beginning of per-fader color 2022-08-10 18:15:39 -06:00
e0d33bb726 cairowidget: add supplementary set_source_rgb_a() method that uses the uint32 Color type 2022-08-10 18:15:25 -06:00
cef86efe1b libs/ardour: allow creating region source markers while recording
Add a list of marker locations to the session, for the the UI to add the
current location to when "add-region-cue-marker" happens whilst recording.
On record-stop, create source markers at the locations in that list in all
newly-recorded audio regions.
2022-08-09 14:03:03 -06:00
f96946d566 remove more debugging output 2022-08-09 12:54:45 -06:00
5cc28b4024 remove debug output 2022-08-09 12:37:48 -06:00
1c59a2dff0 triggerbox/route: a cleaner method of ensuring trigger alignment
This change still runs the triggerbox during latency-preroll, but as with the disk reader,
the transport speed argument is set to zero. The triggerbox notices this and behaves
appropriately (I think !)
2022-08-09 12:33:37 -06:00
bedb94e534 triggerbox: do absolutely nothing if transport is moving backwards 2022-08-09 12:31:37 -06:00
dd5003eb1e triggerbox: must run when speed is zero
We only want to not run triggerbox during latency pre-roll
2022-08-09 09:29:46 -06:00
6ce804b4c9
Fix session-archives on macOS
When an archive are saved, a new folder in interchange/ is created,
named after the archive. However session-archive also retains files
in the session-folder that Ardour does not know about.

This can cause that the the original interchange folder is retained.
It will be empty with just the .DS_Store file in it. The result is
that the session may not load if there is an ambiguity.
2022-08-08 23:09:56 +02:00
f1226b6735
Fix session-archive, include Triggerbox Regions and Sources
This also consolidates code to collect used sources by checking
all playlists and all Triggerboxen, which have no playlists.
2022-08-08 23:03:53 +02:00
fab0cacb2c triggerbox: marginally more useful debugging output 2022-08-08 09:13:04 -06:00
34c6931807 triggerbox: fix up post-locate behavior following fix in Route 2022-08-08 09:13:04 -06:00
5eb4ea0148 NOOP: fix indentation 2022-08-08 09:13:04 -06:00
d65bc2a798 triggerbox: fix lack of alignment after a locate.
Triggerboxen were being executed during the latency preroll phase, which is
inappropriate. ::fast_forward() will prepare them to run at precisely the
correct time. So we add an explicit clause to avoid this.
2022-08-08 09:13:04 -06:00
20c942bb48
Fix endless loop when using "load session anyway"
Fixes a while-loop `break`, vs switch `break`.
2022-08-08 16:26:16 +02:00
a10f001c97
Sync session and engine settings after reconfiguration 2022-08-07 18:57:46 +02:00
06717e9f84
Set TempoMap after sample-rate (map uses engine-rate) 2022-08-07 18:03:03 +02:00
b6921d1b14
Fix resampler config variable name (trailing comma) 2022-08-07 01:35:48 +02:00
39513ac8ad
Cleanup session (drop references) when session-load fails 2022-08-06 22:38:10 +02:00
93e6f5a882
Prepare to allow engine reconfiguration when SR mismatches
Rather than fail to load the session or load with mismatching
sample-rate, this will allow a user to reconfigure the engine
and retry.
2022-08-06 22:32:02 +02:00
7ee4f116f2
Fix crash when load session w/o engine
1. Start Ardour, load a session.
2. Stop the engine
3. Session > Recent, pick a recent session
4. Engine dialog opens
5. Close engine dialog without starting the engine
6. Profit^WCrash
2022-08-06 22:09:22 +02:00
fc54e9c583
Don't crash if the click is missing (amend d5113e6e91) 2022-08-05 20:37:03 +02:00
774268ada8 triggerbox: fix use of cues container without checking for content (and drop goto) 2022-08-05 07:15:52 -06:00
c991016021
Consolidate plugin API to access parent insert
Previously this was special cased only for VST for callbacks
from the plugin (e.g. check pin connections), but it is generally
useful.
2022-08-05 01:17:59 +02:00
940c496f7b
ArdourKnob: allow annotation, faceplate 2022-08-05 01:10:42 +02:00
fa9d3b72f3
ArdourKnob: use ArdourCtrlBase 2022-08-05 01:10:39 +02:00
52f12cac8b
Separate ArdourKnob core functionality into abstract base class 2022-08-05 01:10:35 +02:00
db8262bd7b
Mackie Control: Use view names from Mackie spec and define them all 2022-08-05 00:50:27 +02:00
de0893cc8d
backport to Ardour: Don't set the MCU Click led state from the button
Allow the update process to get the correct state and update the LED.
2022-08-05 00:43:02 +02:00
d5113e6e91
Don't crash if the click is missing 2022-08-05 00:41:37 +02:00
d10557fc8c fix exception when loading a region whose length exceeds its source and the time domains do not match
See code comment for more info
2022-08-04 09:51:20 -06:00
32d99aa64f triggerbox: convert fast forward (and other) cerr output to DEBUG_TRACE 2022-08-03 17:15:58 -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
5a0019f9a6 canvas: comment out unimplemented method 2022-08-03 12:08:57 -06:00
luz paz
36226cfd0a Fix various typos in libs/canvas 2022-08-03 12:07:46 -06:00
dc5737a3bf replace INT32_MAX with CueRecord::stop_all (libs) 2022-08-03 11:42:51 -06:00
c25e96b545 triggerbox: rework fast_fwd code into a simpler design
Rather than start at zero, we now search backwards for the first relevant cue
before the locate position, making our task in ffwd'ing from there much simpler
since there are no other cues to consider
2022-08-03 11:00:37 -06:00
cc6a437faf temporal: fix a bug in BBT_Time::round_up_to_bar()
Also remove Meter:: versions of related methods, because they are not necessary. We
only need metrical information for operations like ::round_to_bar()
2022-08-03 10:59:29 -06:00
22faf6f426 fix transport-freeze in some cases of MIDI cue ffwding
* there are rare cases where a midi clip would not advance the ffwd position, looping endlessly
* this problem did not occur when the user chose an explicit Follow Length (different code path)
2022-08-01 14:52:16 -05:00
e04311b647
Work around cleanup unused regions removing trigger-regions
This workaround bypasses RegionMap and SessionPlaylist APIs
(region_use_count, destroy_region) which are not directly
applicable to Triggerboxes. There are likely various edge
cases until TriggerBoxes integrate with Session Playlist.

e.g. whole file regions generated for regions/source used by
triggerboxes are cleaned up.
2022-08-01 20:48:02 +02:00
bd6df4a40d
Fix session-archive of nested sources in unused regions
A compound region itself may be unused, but the nested source
it provides can be used in another region compound.

In this case the first, unused, region needs to be saved
to save the nested source.
2022-08-01 00:59:01 +02:00
371f386b8b improve comment accuracy 2022-07-29 14:04:28 -06:00
81f22662c0 some more logic changes to triggerbox fast forward to try to make it reliable 2022-07-29 14:04:28 -06:00
2471e90fae LV2 0.18.6 no longer provides a top-level lv2.h
Until it does, standardize on a single include path for lv2.h, even if this
path is the sort of thing that leads to CLAP
2022-07-29 08:51:49 -06:00
9d197c0702 fix copy-n-paste of audio region envelopes and other automation data
Constructing a playlist from another playlist plus an offset used the wrong
RegionFactory::create method. By failing to pass in the offset to the region
constructor, the newly created region gets its envelope (and possibly other
automation data) from the start of the existing region, not its own start.
2022-07-28 18:01:14 -06:00
96dc3cce88 use C++11 auto iterator syntax 2022-07-28 18:01:14 -06:00
48dbd5801a
Coreaudio: enable MIDI by default 2022-07-27 15:31:20 +02:00
8cf3ff37ed
Do not save EngineHints with session-archives
This will prevent a "Engine I/O device has changed" warning dialog
when the archive is opened later.
2022-07-27 01:08:01 +02:00
ae7b39022e triggerbox: improve fast forward behavior
There was a logic error previously which failed to consider follow actions (and follow count).
Now we find a relevant cue, and use follow actions and follow counts as we move forward
in time
2022-07-25 22:02:12 -06:00
b0b5ec1c89 non-compilable, non-functioning branch to make work on the road possible.
Laptop is already packed
2022-07-25 22:02:12 -06:00
191dbf7c34
Connect LV2 Atom ports for latency compute run
This fixes an issue with LV2 plugin that unconditionally
initialize LV2 Atom ports even if they are not connected.
eg. JUCE7 produces LV2s at the time of writing.
2022-07-24 17:38:53 +02:00
5f5f4599f2
Fix MIDISource event-interpolation state save
The actual goal here is to use direct InterpolationStyle serialization
in MidiSource (identical to AutomationList). enum_2_string()
does not work for Evoral types.

As side-effect virtual base-classes have been changed to pass
Parameters as const references
2022-07-22 03:38:41 +02:00
1b6e9fdaf8
Correctly save MidiSource Automation state 2022-07-22 03:38:37 +02:00
62aae6cffb
Consistently replace colons in IO/Port names
This fixes an issue when creating tracks or busses with a colon
in the name. Renaming those tracks later IO::set_name()
crashed in current_name.replace(std::string::npos,..).

`IO::build_legal_port_name` uses ";" instead of ":" while
`IO::set_name` replaced it with a "-".

Initially the IO name included the colon, so ports created
use a semicolon. But after renaming the IO, ::set_name() applies
the replacement and the IO's name is changed to include the "-".

This leads to a conflict with ports that already have the semicolon
in the port-name.
2022-07-20 18:50:29 +02:00
79f8606b2d
LV2: announce bufz:boundedBlockLength feature (#8942) 2022-07-18 15:42:44 +02:00
ef08c819da
Fix crash on port unregistration
pr->erase (*i); deletes the iterator, it cannot be safely
dereferenced again later.
2022-07-16 20:26:56 +02:00
b9419aa405 another attempt to catch details of a rare region-gain undo crash 2022-07-16 10:01:33 -05:00
1f65c66727
MCU: fix mixer-strip buttons (see also 0d9656ef82) 2022-07-15 23:46:28 +02:00
2de84c97d0
Fix Temporal::Range::squish reduced to samples
Loop Location start="a1665678660" end="b145920"
Loop-end (at 122BPM) is a2109859636
at 48kHz this is sample 1794098.32

Now play the loop and play sample 1794098 = a2109859248
Range::squish start: a1665678660 end: a2109859636 squish: a2109859248

squish() does nothing, since there are still 388 superclock-ticks
until the end of the loop.

However, DiskReader::get_midi_playback convertes the value back
to samples(), this leads to effective_start == loop_end;
resulting in an endless loop.

Thanks to MikeLupe to provide a session to reproduce this issue.
2022-07-15 19:54:21 +02:00
e1c6a19d06
Add a preference to set group-override behavior
So far group-override "inverts" group behavior. Disabled groups
(or group settings) are enabled and vice-versa.

When the setting is disabled, groups can only ever be disabled
(Controllable::NoGroup) and group-override will not enable them
(Controllable::InverseGroup).
2022-07-14 16:23:31 +02:00
e6570b2247
No longer save deprecated property
Now that the session-state version has changed, it is no longer
required.
2022-07-12 21:08:41 +02:00
b77eedf53e
Suggest WinMME as default (enable MIDI by default) 2022-07-11 21:45:55 +02:00
fe6aa0610c
ALSA: suggest ALSA Sequencer by default 2022-07-11 21:45:54 +02:00
82bdddb829 fix Follow-Count widget in clip properties GUI
* add follow_count to all_trigger_props so widget gets updated on selection
2022-07-08 11:10:46 -05:00