13
0
Commit Graph

37566 Commits

Author SHA1 Message Date
7faa30f878
Luadoc: add special case for shared_ptr c'tor (4192710ac8) 2023-06-23 02:20:07 +02:00
124c57a850
Add missing Lua bindings 2023-06-23 01:35:19 +02:00
705321b015
Fix compilation with --luadoc 2023-06-23 00:49:58 +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
JungHee Lee
52d488e2ce Update ko.po 2023-06-22 15:49:13 +02:00
a996645ef1
Update plugin-pin dialog when route or plugin name changes 2023-06-22 15:28:37 +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
71a83ed199
Fix heap-use-after-free when toggling manual pin-control
When toggling "Manual Config", Route::customize_plugin_insert()
or Route::reset_plugin_insert() emits processors_changed.

This destroyed the widget from which the change was initiated,
in ppw.clear(), leading to a use-after-free in
ArdourButton::on_button_release_event(_GdkEventButton*) ../libs/widgets/ardour_button.cc:995

The PluginPinDialog does not need to refill the widget list
when manual config is toggled, only the PluginPinWidget itself
needs to updated.
2023-06-22 04:50:43 +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
92b86d8dd6
Prepare for systemic_hw_*_latency API removal
This API is not used by any backend anymore.
2023-06-21 23:58:46 +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
fd749173cf
Fix use-after free when deleting locations 2023-06-20 18:19:33 +02:00
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
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
8c513ceca7
LuaProc: expose sample-position of last beat 2023-06-19 05:12:47 +02:00
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
34789ff22f
LuaProc: add option to set time information 2023-06-18 22:39:45 +02:00
1b6ba4d71d
Improve error message 2023-06-18 16:24:33 +02:00
bb12ac8ec8
Add Lua bindings for pre-roll/count-in recording 2023-06-18 02:41:49 +02:00
311c1bff4e
EngineDialog: MIDI config is always directly apply-able
`can_change_systemic_latency_when_running()` is only relevant for
Audio. This allows to en/disable MIDI ports and set MIDI port
systemic latency with the PortAudio backend.
2023-06-18 02:41:06 +02:00
00b2f5696c
PortAudio: implement MIDI device config 2023-06-18 02:35:03 +02:00
2d5ac04ae1
pthread_setname_np is available with GNU/mingw 2023-06-17 23:49:47 +02:00
b55575d7c6
Hide snapped cursor when changing edit-point (#7966) 2023-06-17 23:49:42 +02:00
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
639696c1a8
ALSA: fix adding n_period playback latency
Use playback port, not capture port.
2023-06-17 00:53:22 +02:00
7b1da19581
Sort events when merging MIDI regions (#9313)
Sequence<Time>::append() expects events to be sorted.

Previously this only worked for non-overlapping region,
or if all events in the later region(s) are after than the
last even in any earlier region.
2023-06-16 21:31:07 +02:00
7dc9bf157b fix measure line drawing (convert to window coords for intersection check) 2023-06-16 09:16:53 -06:00
248e37ac0c canvas LineSet: fix rendering to get coordinates precisely correct 2023-06-15 20:10:32 -06:00
1251b90b66 midi notes: fix visual end point of notes
ArdourCanvas::Rectangle has exclusive end coordinates, so the - 1
is not necessary.
2023-06-15 20:10:32 -06:00
de334c14b1 drop use of Editor::sample_to_pixel_unrounded() in some cases
We want things rounded to the nearest pixel in these (and perhaps all) cases.
2023-06-15 20:10:32 -06:00
a7c21de229
Update Link to VST3 location spec 2023-06-16 01:38:59 +02:00
3e27df9040
Utils: Fix crash at exit due to engine destruction
Ardour::cleanup destroys the TransportMasterManager instance
which unregisters TransportMaster ports. This will crash
if the engine was already destroyed.

See also 7c7bf6c88b
2023-06-15 16:22:23 +02:00
73ed3bc7e0 midi copy drag: select all new notes after drag
Cut-n-paste worked before, but Primary-drag only selected the dragged note.

This also contains several code changes to use for (auto ...) syntax.
2023-06-14 21:42:23 -06:00
b516d6abf9
Add keyboard shortcut for delete-section 2023-06-14 20:10:33 +02:00
f602618170
Expose delete-section function
(insert-section still remains hidden, it inserts the length
of the selection at the edit-point, it should perhaps insert
at the start of the selection instead)
2023-06-14 19:43:58 +02:00
a2975bb4b7
Fix opaque MIDI region rendering
This issue was introduced in e79d8b00f9.
2023-06-14 19:42:00 +02:00
6319980746
Fix TempoDialog port-list when devices are hotplugged 2023-06-13 17:03:27 +02:00
7aad0bbe15
CoreMIDI: use dedicated packet buffer on stack 2023-06-13 16:50:53 +02:00
05c29e25f9 reorder tempo dialog contents, provide non-presented var to control focus behavior 2023-06-12 18:00:21 -06:00
bb97ade440 temporal: special case editing of the initial tempo (#9339) 2023-06-12 16:46:13 -06:00
d742e876d1 region/source lists: try to allow primary-(cxv) functionality when editing name/tag fields 2023-06-12 15:34:54 -06:00
a8fdf7315b keyboard: if a magic widget has focus, handle Primary-(x,c,v) specially
propagate first, so that the magic widget can handle things, then activate.

This fixes cut/copy/paste bindings within a "magic" widget.
2023-06-12 14:42:08 -06:00
66e714b476 fix crash when using -D accelerators 2023-06-12 14:41:41 -06:00
04b728fb38 MIDI: fix list editor display of note length (names) (#9371)
Triplets are still not handled well.
2023-06-12 14:01:06 -06:00
50232a23a7 temporal: hide superclock_t variant of TempoMap::metric_at()
This fixes several callsites that were passing samplepos_t to get a TempoMetric,
some of them somewhat significant (e.g. VST plugins that want tempo information).

Bad API design on my part, apologies.

This commit combines libs/ and gtk2_ardour because the new private status
of the ::metric_at() call would be a blocking point for git bisect
2023-06-12 12:36:16 -06:00
12c3daa46b JACK: fix reported tempo & meter when functioning as JACK timebase master
TempoMap::metric_at() has a superclock_t variant that was being called
with a samplepos_t value. Full check (and removal, hopefully) coming up.
2023-06-12 12:10:26 -06:00
Mathias Sterle
b6de118fd9
Add Roland SonicCell MIDNAM 2023-06-11 21:27:50 +02:00