13
0
Commit Graph

37850 Commits

Author SHA1 Message Date
6743c09b4a change return type from ptr to reference for AutomationTimeAxis::base_item() 2023-07-09 17:37:22 -06:00
94f413c399 basic empty skeleton for automation draw drag 2023-07-09 16:33:16 -06:00
0c8fd48d6f velocity lane: appropriately hide automation controls until we have line automation 2023-07-08 17:18:14 -06:00
1c54f0e4c0 handle MidiVelocityAutomation in the event type map code 2023-07-08 16:36:50 -06:00
3b1d4d8fa6 midi: fix playback of notes the start at playhead position (#9398/#9410)
The diskreader uses the route's monitoring state when deciding whether or not
to fetch MIDI data for playback. Route::monitoring_state() would determine
whether or not we were already rolling to affect its return value. However,
using Session::transport_rolling() is affected by pre-roll and consequently
returns the wrong value during transport startup. Instead, we now use
::transport_state_rolling() which ignores preroll conditions. This leads to the
DR actually reading MIDI data from the initial playback position, which fixes
this issue.

Note that the bug only occured if the track or the session was rec-enabled. The
monitoring state value was always correct for non-rec-enabled conditions.
2023-07-08 15:25:32 -06:00
920a6a46c3
VST3: work around UADx crash when in mono configuration
When using a UADx plugin on a Mono track in Ardour, the plugin
is configured to be Mono. by calling `setBusArrangements`.
The call succeeds and querying the Bus layout via `getBusArrangement`
as suggested by https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IAudioProcessor.html#ad3bc7bac3fd3b194122669be2a1ecc42
confirms this. The plugin acknowledges the speaker layout
for both input and output (Vst::SpeakerArr::kMono = 0x80000)

```
  Input BusArrangements: 0 chan: 1 bits: 80000
  Output BusArrangements: 0 chan: 1 bits: 80000
```

but UADx plugins crash later during process() if any of the lower
bits are unset and the bus is enabled.

PS. The plugin does NOT crash as long as a lower bit
(Vst::SpeakerArr::kSpeakerL or ::kSpeakerR) remains set
in addition to kMono.
2023-07-07 21:32:59 +02:00
CardamomCake
4fc3bd88aa
Add MIDI map for Devine_Versakey 2023-07-06 23:54:38 +02:00
e23cfe2942
Add ACE Stereo Routing 2023-07-06 00:27:30 +02:00
2a1d4ffce9
Add note about LuaSignal for windows 2023-07-05 19:38:51 +02:00
883a83aca2
Fix windows builds (Lua signal bitset 9b8040a9f4) 2023-07-05 19:36:25 +02:00
d01dbcba83 Update minimp3
based on afb604c06b/minimp3.h
This reapplies be4bdb5365.
2023-07-05 18:05:33 +02:00
538bb73f99
Add example selection-changed Lua script 2023-07-04 21:21:07 +02:00
9b8040a9f4
Add Lua signal emitted when editor selection changed 2023-07-04 21:13:52 +02:00
efed61af44
Amend d899441df1, fix duplicate device map entries 2023-07-03 19:57:55 +02:00
b757dd9fd8
Vertically center markers
see also 64d633cd26
2023-07-03 18:35:56 +02:00
771cc4581e
LuaProc: use effective sample-rate, like other plugin instances 2023-07-03 00:31:21 +02:00
a36ddb72dd
Correctly set sample-rate of plugins when loading a different session
Directly loading a new session (Session > Recent) stops the engine
when the sample-rate mismatches. All is fine.

When closing a session (Session > Close), the engine is kept running.
Loading a different session with different sample-rate shows
the "SR mismatch" dialog. Reconfiguring the engine then does not call
`Session::immediately_post_engine` again.
2023-07-03 00:13:20 +02:00
7e121f4e13
Fix alloc-dealloc-mismatch (malloc vs operator delete) 2023-07-02 23:54:16 +02:00
168b67bd17
Allow to initiate Rubberband-drag on blank Trackview 2023-07-02 21:19:46 +02:00
1f4490fff9
Allow to select region-gain points via rubber-band drag 2023-07-02 20:47:41 +02:00
64d633cd26 amend/fix b490f7d2a1 to correctly (?) place marker text 2023-07-01 21:07:25 -06:00
3be6ae57ba gtkmm2ext: provide an additional ink extents method to get descender 2023-07-01 21:07:25 -06:00
d899441df1
ALSA: disambiguate multiple soundcards with the same name 2023-07-02 00:17:58 +02:00
d688af76c0 clean up mapping bar context menu, extend with clear tempos 2023-06-30 15:50:47 -06:00
20e1b6b287 temporal: add API to clear tempos in various ways 2023-06-30 15:50:25 -06:00
a8c2585cdc remove AudioEngine::destroy() calls from various test/util code
ARDOUR::cleanup() does this, and the engine must exist during port deregistration.
2023-06-30 12:58:43 -06:00
bfa13ad714 temporal: reference time for BBT_Argument is always superclocks (GUI) 2023-06-30 12:10:50 -06:00
3307dcfcb2 temporal: reference time for BBT_Argument is always superclocks 2023-06-30 12:10:50 -06:00
16c9d91641 temporal: remove impossible get_tempo_and_meter (..., bbt, ...) method 2023-06-30 12:10:50 -06:00
a591fb64a3 temporal: rework ::get_grid() to avoid get_tempo_and_meter (..., bbt, ...) 2023-06-30 12:10:50 -06:00
3513debba8 temporal: NO-OP (tiny variable rename) 2023-06-30 12:10:50 -06:00
d94382f8a3 another autofication 2023-06-30 12:10:50 -06:00
d0fe0993a7
LV2: allow to split cycles w/MIDI
See also 64e2f16e06
2023-06-30 17:46:05 +02:00
be3d3a6d00
LuaProc: allow plugin to prefer a regular block length
This equivalent to http://lv2plug.in/ns/ext/buf-size#coarseBlockLength
2023-06-30 17:21:49 +02:00
45b2791341
MidiStateTracker micro-optimization
This replaces 128 multiplications in each inner loop with
a single bit-shift.
2023-06-30 17:12:16 +02:00
b51cf0ed95
Plugin: fix additive note resolution
When stopping transport in the middle of a note, each plugin
will resolve the note, resulting in multiple duplicate note-off
events.
2023-06-30 17:12:16 +02:00
71d45286f4
LuaProc: sort MIDI events
This allows plugins to produce an unsorted list of events.
see also https://discourse.ardour.org/t/lua-arpeggiator-plugin-anyone/108862/64?u=x42
2023-06-30 17:12:16 +02:00
c5511040ec
MidiBuffer: allow for partial processing with offset
AudioBuffer::read_from() only replaces data within the given
range (offset .. n_samples + offset) leaving the rest of the
buffer untouched.

With in-place processing, where the same MIDI buffer is used
for input and output, each sub-cycle must only clear the
processed range, while leaving the rest of the buffer
untouched.
2023-06-30 17:12:16 +02:00
64e2f16e06
LV2: apply offset to MIDI events 2023-06-30 17:12:16 +02:00
8558b1f99e
AudioUnit: apply offset to MIDI events 2023-06-30 17:12:16 +02:00
c352347eaa
LuaProc: offset MIDI events when splitting cycles 2023-06-30 17:12:16 +02:00
9242e615ce
Plugin: track only events for current cycle 2023-06-30 17:12:15 +02:00
e756786a13 bbt markers: remove tempo&meter marker on deletion 2023-06-28 18:05:34 -06:00
ac491fce0e bbt markers: now have an (insensitive) tempo and meter marker visible
probably needs more work for event handling on the tempo and
meter markers.
2023-06-28 18:03:38 -06:00
b490f7d2a1 markers: fix position of BBT marker text (tiny tweak) 2023-06-28 18:03:38 -06:00
e6bed9330f
CoreMIDI: fix capture/playback alignment
MIDI playback used samples instead of usec.
MIDI capture used time-stamp from previous cycle.
buffer-size changes were not applied to MIDI port latency
2023-06-29 00:32:46 +02:00
bef4596dd1
NO-OP: whitespace 2023-06-29 00:32:46 +02:00
651dcbc96e
CoreAudio: Remove unused API 2023-06-29 00:32:46 +02:00
9a010404d1
CoreMIDI: Remove unused API 2023-06-29 00:32:43 +02:00
c53a476f15 allow drawing automation control points in mouse object mode
This is a tentative change and if it proves unwise we can back it out.
I just find it awkward to have to change modes to draw when it is
completely obvious whether I am drawing or not.
2023-06-28 13:44:59 -06:00