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
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
ee0693d121
Properly clear preset-list (compare to invalidate_preset_cache)
2023-06-28 19:16:16 +02:00
fc08771651
LuaProc: implement factory presets
2023-06-28 19:10:34 +02:00
b5c9c6a5c4
fix displayed name for velocity automation
2023-06-26 14:18:18 -06:00
91500795d8
canvas: extend PolyItem API with ::add_point()
2023-06-26 14:18:18 -06:00
8a204bcf51
lollis: draw stems in fill color (optionally)
2023-06-26 14:18:18 -06:00
a6c1a3d9d0
lollis: potentially clip circle with a bounding parent
2023-06-26 14:18:18 -06:00
96c9f2ee19
canvas: add velocity() method to Note
2023-06-26 14:18:18 -06:00
279e648a43
canvas: ArdourCanvas::Lollipop to not (mis)use _position
2023-06-26 14:18:18 -06:00
0a530d3c18
manual fixes following rebase on master
2023-06-26 14:18:17 -06:00
a7af6fc6f8
lollipops: just directly set _position member
2023-06-26 14:18:17 -06:00
1ad0894618
lollipops should render child items (currently none)
2023-06-26 14:18:17 -06:00
51e7584dee
another use of auto iterators
2023-06-26 14:18:17 -06:00
cfbe6b6048
another use of auto iterators
2023-06-26 14:18:17 -06:00
f7e97be115
canvas lollipops: object redesign and reimplementation
2023-06-26 14:18:17 -06:00
0f611b4efa
C++ auto iteration FTW
2023-06-26 14:18:17 -06:00
7e4a3dce01
lollipop pixel pushing
2023-06-26 14:18:17 -06:00
4bafadc419
steps to an ecology of lollipops
2023-06-26 14:18:17 -06:00
0b050c47e4
build lollipops.cc
2023-06-26 14:18:17 -06:00
187569dcbc
new Lollipop canvas item
2023-06-26 14:18:17 -06:00
18275922d3
return interpolation type for velocity
2023-06-26 14:18:17 -06:00
1c1d73e47d
describe velocity parameter and implement velocity control
2023-06-26 14:18:17 -06:00
1d117aa372
give MIDI tracks a (n automatable) velocity control
2023-06-26 14:18:17 -06:00
25f5b275f4
Auto-connect metronome when using a device the first time
2023-06-26 21:46:24 +02:00
124c57a850
Add missing Lua bindings
2023-06-23 01:35:19 +02:00
ddb9484994
Safeguard against using RegionExport for default export
...
It is unclear how an existing ExportChannelConfiguration copy
can be reused in a different context, but apparently it can happen:
https://discourse.ardour.org/t/ardour-exports-flatline-wav-file-no-playhead-movement-through-file/108803/25
2023-06-22 23:34:15 +02:00
19c44fe814
Fix restoring metronome connections (duplicate IO set_state)
...
When a session is loaded, click_io->set_state is called twice.
setup_click() is called when the engine re/starts, and
possibly again from Session::set_state.
During session construction, Port connections are not directly
made. Port::set_state just creates a list, which is later
applied by Port::reconnect from Session::hookup_io.
However, the second call to IO::set_state() calls IO::ensure_ports
again. Since the port already exists, this calls
Port::disconnect_all (while holding the process lock).
Even though the port is not connected at this point in time,
this triggers a ARDOUR::PortManager::connect_callback which
is emitted from the Audioengine when the process-lock is released.
While IO::set_state() continues to set Port::state, and fill
the Port::_[ext_]connections lists, this data is invalidated
moments later when the engine resumes and ::connect_callback
calls ARDOUR::Port::port_connected_or_disconnected.
The solution is to simply not call Port::disconnect_all
if the connection is not yet made (Session::InitialConnecting)
2023-06-22 13:28:18 +02:00
6261bb3a40
Add dedicated RouteProcessorChange for manual pin config
2023-06-22 04:47:35 +02:00
ac801e8455
Improve port-connect error messages
2023-06-22 02:47:30 +02:00
a10e3edb53
Remove unused backend API
2023-06-21 23:59:49 +02:00
341cd455d8
CoreAudio: unconditionally apply device latency
2023-06-21 23:54:55 +02:00
877a2f3611
LuaProc: remove ill-defined bar time variable
2023-06-20 22:26:09 +02:00