Commit graph

20396 commits

Author SHA1 Message Date
Robin Gareus
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
Robin Gareus
64e2f16e06
LV2: apply offset to MIDI events 2023-06-30 17:12:16 +02:00
Robin Gareus
8558b1f99e
AudioUnit: apply offset to MIDI events 2023-06-30 17:12:16 +02:00
Robin Gareus
c352347eaa
LuaProc: offset MIDI events when splitting cycles 2023-06-30 17:12:16 +02:00
Robin Gareus
9242e615ce
Plugin: track only events for current cycle 2023-06-30 17:12:15 +02:00
Robin Gareus
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
Robin Gareus
bef4596dd1
NO-OP: whitespace 2023-06-29 00:32:46 +02:00
Robin Gareus
651dcbc96e
CoreAudio: Remove unused API 2023-06-29 00:32:46 +02:00
Robin Gareus
9a010404d1
CoreMIDI: Remove unused API 2023-06-29 00:32:43 +02:00
Robin Gareus
ee0693d121
Properly clear preset-list (compare to invalidate_preset_cache) 2023-06-28 19:16:16 +02:00
Robin Gareus
fc08771651
LuaProc: implement factory presets 2023-06-28 19:10:34 +02:00
Paul Davis
b5c9c6a5c4 fix displayed name for velocity automation 2023-06-26 14:18:18 -06:00
Paul Davis
91500795d8 canvas: extend PolyItem API with ::add_point() 2023-06-26 14:18:18 -06:00
Paul Davis
8a204bcf51 lollis: draw stems in fill color (optionally) 2023-06-26 14:18:18 -06:00
Paul Davis
a6c1a3d9d0 lollis: potentially clip circle with a bounding parent 2023-06-26 14:18:18 -06:00
Paul Davis
96c9f2ee19 canvas: add velocity() method to Note 2023-06-26 14:18:18 -06:00
Paul Davis
279e648a43 canvas: ArdourCanvas::Lollipop to not (mis)use _position 2023-06-26 14:18:18 -06:00
Paul Davis
0a530d3c18 manual fixes following rebase on master 2023-06-26 14:18:17 -06:00
Paul Davis
a7af6fc6f8 lollipops: just directly set _position member 2023-06-26 14:18:17 -06:00
Paul Davis
1ad0894618 lollipops should render child items (currently none) 2023-06-26 14:18:17 -06:00
Paul Davis
51e7584dee another use of auto iterators 2023-06-26 14:18:17 -06:00
Paul Davis
cfbe6b6048 another use of auto iterators 2023-06-26 14:18:17 -06:00
Paul Davis
f7e97be115 canvas lollipops: object redesign and reimplementation 2023-06-26 14:18:17 -06:00
Paul Davis
0f611b4efa C++ auto iteration FTW 2023-06-26 14:18:17 -06:00
Paul Davis
7e4a3dce01 lollipop pixel pushing 2023-06-26 14:18:17 -06:00
Paul Davis
4bafadc419 steps to an ecology of lollipops 2023-06-26 14:18:17 -06:00
Paul Davis
0b050c47e4 build lollipops.cc 2023-06-26 14:18:17 -06:00
Paul Davis
187569dcbc new Lollipop canvas item 2023-06-26 14:18:17 -06:00
Paul Davis
18275922d3 return interpolation type for velocity 2023-06-26 14:18:17 -06:00
Paul Davis
1c1d73e47d describe velocity parameter and implement velocity control 2023-06-26 14:18:17 -06:00
Paul Davis
1d117aa372 give MIDI tracks a (n automatable) velocity control 2023-06-26 14:18:17 -06:00
Robin Gareus
25f5b275f4
Auto-connect metronome when using a device the first time 2023-06-26 21:46:24 +02:00
Robin Gareus
124c57a850
Add missing Lua bindings 2023-06-23 01:35:19 +02:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
6261bb3a40
Add dedicated RouteProcessorChange for manual pin config 2023-06-22 04:47:35 +02:00
Robin Gareus
ac801e8455
Improve port-connect error messages 2023-06-22 02:47:30 +02:00
Robin Gareus
a10e3edb53
Remove unused backend API 2023-06-21 23:59:49 +02:00
Robin Gareus
341cd455d8
CoreAudio: unconditionally apply device latency 2023-06-21 23:54:55 +02:00
Robin Gareus
877a2f3611
LuaProc: remove ill-defined bar time variable 2023-06-20 22:26:09 +02:00
Robin Gareus
fd749173cf
Fix use-after free when deleting locations 2023-06-20 18:19:33 +02:00
Robin Gareus
cd4fff863a
Dummy backend: add realtime option
On windows this is still limited by the timer resolution, but
it's a start. This is mainly intended to be used with NDI or
other external sources without actual audio hardware.
2023-06-20 01:36:44 +02:00
Robin Gareus
0dc1c3f008
LuaProc: refine time API
See https://discourse.ardour.org/t/lua-arpeggiator-plugin-anyone/108862/8
2023-06-19 22:07:53 +02:00
Robin Gareus
8c513ceca7
LuaProc: expose sample-position of last beat 2023-06-19 05:12:47 +02:00
Robin Gareus
ebcaffd19f
VST3, Lua: fix barPositionMusic
"last bar start position, in quarter notes", starts at zero
to match projectTimeMusic.
2023-06-18 23:00:42 +02:00
Robin Gareus
34789ff22f
LuaProc: add option to set time information 2023-06-18 22:39:45 +02:00
Robin Gareus
bb12ac8ec8
Add Lua bindings for pre-roll/count-in recording 2023-06-18 02:41:49 +02:00
Robin Gareus
00b2f5696c
PortAudio: implement MIDI device config 2023-06-18 02:35:03 +02:00
Robin Gareus
2d5ac04ae1
pthread_setname_np is available with GNU/mingw 2023-06-17 23:49:47 +02:00
Robin Gareus
9b797dc4c1
PortAudio: fix latency reporting, disable custom MIDI cfg
This correctly sets audio port I/O latency using the
portaudio API.

Per MIDI device port settings are not completely implemented.
En/disabling MIDI devices or setting custom MIDI port latency
is not functional as-is.
2023-06-17 05:49:11 +02:00