Commit graph

19436 commits

Author SHA1 Message Date
David Robillard
7670f87d0a Push2: Use condensed font to avoid overlap in scale menu 2022-08-26 14:10:40 -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
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
David Robillard
e4e874bed0 Push2: Add "fixed" and "rooted" note grid option 2022-08-26 14:10:40 -06:00
David Robillard
ecd1a9660b Push2: Fix Db root button 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
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
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
Paul Davis
6379c28b76 remove debug output 2022-08-25 15:15:52 -06:00
Paul Davis
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
Paul Davis
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
Robin Gareus
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
Robin Gareus
58c2de2d71
Fix typo 2022-08-23 16:01:18 +02:00
Robin Gareus
027b6ee9cf Fix compilation with clang (vexing-parse) 2022-08-21 01:02:43 +02:00
Paul Davis
ac27bbafcf midi combine: new region is same extent as the combined regions 2022-08-20 14:29:13 -06:00
Paul Davis
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
Paul Davis
dd455bdd97 use correct redirect for donate URL 2022-08-19 10:31:38 -06:00
Paul Davis
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
Paul Davis
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
Paul Davis
025dfa6062 tempo map: fix logic error in ::reset_starting_at() relating to tempo/bbt markers 2022-08-17 16:40:14 -06:00
Paul Davis
b03e9b4c10 NOOP: add helpful explanatory comment 2022-08-12 09:21:23 -06:00
Robin Gareus
ce46b791ea
VST3 scan: don't clutter log with bus-info messages 2022-08-12 16:08:23 +02:00
Robin Gareus
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
Paul Davis
610b5dddbf ControlList: GUARD_POINT_DELTA needs to take time domain into account 2022-08-11 15:26:42 -06:00
Robin Gareus
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
Robin Gareus
96ebac646d
Ensure disk buffer refills happen in the right thread 2022-08-11 19:14:51 +02:00
Robin Gareus
63c068227f
Improve DR refill error messages to aid debugging 2022-08-11 19:14:51 +02:00
Robin Gareus
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
Paul Davis
27f4302a7d ardourfader: more complete support for explicit fg 2022-08-11 00:07:30 -06:00
Paul Davis
aee41bfba6 ardourfader: basic use of explicit fg/bg color 2022-08-10 22:32:42 -06:00
Paul Davis
a2e4897a49 move color utility functions from ARDOUR_UI_UTILS to Gtkmm2ext namespace (libs) 2022-08-10 21:11:46 -06:00
Paul Davis
32c2ed3f21 ardourfader: further steps to per-fader colors 2022-08-10 18:26:49 -06:00
Paul Davis
9459ca5583 ardourfader: beginning of per-fader color 2022-08-10 18:15:39 -06:00
Paul Davis
e0d33bb726 cairowidget: add supplementary set_source_rgb_a() method that uses the uint32 Color type 2022-08-10 18:15:25 -06:00
Colin Fletcher
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
Paul Davis
f96946d566 remove more debugging output 2022-08-09 12:54:45 -06:00
Paul Davis
5cc28b4024 remove debug output 2022-08-09 12:37:48 -06:00
Paul Davis
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