Commit graph

40987 commits

Author SHA1 Message Date
Robin Gareus
6609ea1564
Micro-step toward unified FFT API 2025-03-31 20:20:09 +02:00
Robin Gareus
34f0ed991f
Include JAPA - Perceptual Analyzer DSP
Fons, how many bottles of red wine is this going to cost me?
2025-03-31 20:20:09 +02:00
Robin Gareus
2139349468
Use global FFT planner lock in GUI
This *should* not be needed since the GUI is single
threaded, but it doesn't hurt, just in case some
someday someone uses a background thread :)
2025-03-31 20:20:09 +02:00
Robin Gareus
9f9c775830
Use global lock to prevent concurrent FFT plan calls
Depending on fftw version, compile-flags and availability of
`fftwf_make_planner_thread_safe`  fftw_plan_* may not be
called concurrently (fftw internally uses a static cache).
2025-03-31 20:20:05 +02:00
Robin Gareus
1c9cb5152d
Fix region-gain curve example script 2025-03-31 16:47:32 +02:00
Robin Gareus
1f27dc81f9
Properly create LuaWindow (always use Window Manger)
Previously directly using Luawindow::instance() was able
to create the window, bypassing the Window Manager, this resulted
in two issues, the first being rather significant:

* `LuaWindow::set_session()` was not called
* The Window was not maked as visible in the Window menu
2025-03-29 01:52:53 +01:00
Robin Gareus
b98884a54c
Cancel audio peak analysis when destroying AudioRegionEditor
This speeds up selection changes when the Region Properties
are show in the bottom attachment and long regions are
selected.

The RegionEditor is destroyed when selection changes and has/had
to wait for the peak analysis thread to complete.
2025-03-27 17:21:52 +01:00
Paul Davis
8b389ee829 amend 365e3ef8e2 to be "more right"
NoteBase-derived note objects must delete their children, because
often they are deleted long before the parent (group) is. However,
in MidiView::clear_events() we used to call _note_group->clear (true)
first, which would delete the canvas items owned by these objects,
without them knowing about it. This made it dangerous for them
to delete those same items in their destructors.

This reverses the ordering so that NoteBase objects are deleted first
(along with their canvas items) and after that we clear _note_group
which will address any danging canvas items created there that are
not owned by a NoteBase-derived object
2025-03-25 14:49:49 -06:00
Paul Davis
ca96e004bf more robustification of Pianoroll::maybe_update() 2025-03-25 14:28:45 -06:00
Paul Davis
8f2dd46b40 fix menu definition file (again) 2025-03-25 14:10:49 -06:00
Paul Davis
78fea874f4 add action groups to ardour.menus.in for all relevant actions from Editing::register_common_actions() 2025-03-25 12:34:48 -06:00
Paul Davis
e4f6eb9190 remove debug output 2025-03-25 12:34:25 -06:00
Paul Davis
98428dfcad make Pianoroll::maybe_update() a bit more robust 2025-03-25 12:25:24 -06:00
Paul Davis
4ab6da354e ensure that the global Edit menu references the correct undo/redo actions 2025-03-25 12:25:08 -06:00
Paul Davis
f82a9bbdc3 YTK: fix non-namespaced handling of action names in GtkUIManager
GTK+ 2.x only looked up action *names* and ignored the namespacing offered by
action groups. This means that if there are two actions in different groups
with the same name, GtkUIManager may not find the one intended when it is
referenced in a menus definition file.

This commit changes that - if the action name contains a '/' character it is
assumed to contain both the action group name and the action name, and it will
only look for the action within the named group.
2025-03-25 12:22:32 -06:00
Paul Davis
f5d941f575 move playhead during (MIDI) clip recording 2025-03-25 11:17:05 -06:00
Paul Davis
535934dee9 manually revert 119166a17f with a tweak 2025-03-25 11:17:05 -06:00
Paul Davis
65db08ac2b remove debug output 2025-03-25 11:17:05 -06:00
Paul Davis
b5f41f445e disconnect from pianoroll update callback/connection when session is deleted 2025-03-25 11:17:05 -06:00
Robin Gareus
2a7129ef64
Update Luabindings for marker flags 2025-03-24 20:54:44 +01:00
Paul Davis
885a318299 after recording into a trigger slot, revert the box to playback mode 2025-03-24 11:51:52 -06:00
Paul Davis
ed0c55afb7 NOOP: whitespace/line removal 2025-03-24 11:43:33 -06:00
Paul Davis
dd1e1b16cc remove unused variable 2025-03-24 11:43:33 -06:00
Paul Davis
69174beb7b NOOP: add space before parens 2025-03-24 11:43:32 -06:00
Paul Davis
0a33701089 midiview: some more auto-fication 2025-03-24 11:43:32 -06:00
Paul Davis
e243f17eb1 pianoroll: hide trim handles when region is reset 2025-03-24 11:43:32 -06:00
Paul Davis
365e3ef8e2 midiview: correctly manage NoteBase lifetimes
MidiView::clear_events() deleted the canvas items corresponding to Notes/Hits,
but did not delete the owner NoteBase objects.
2025-03-24 11:43:32 -06:00
Paul Davis
119166a17f triggerbox: do not signal Captured() on every process cycle (for MIDI) 2025-03-24 11:43:32 -06:00
Paul Davis
2db8214aa3 clear previous region when switching to an empty slot in a cue-pianoroll 2025-03-24 11:43:32 -06:00
Robin Gareus
7c31e558a5
Fix duplicate MIDI Clock messages
Notably during realtime export an explicit flush of async
MIDI ports will duplicate port buffer content.

AsyncMIDIPort::cycle_end () calls `flush_output_fifo`,
and `flush_buffers` is called from PortManager::cycle_end.
2025-03-23 16:57:46 +01:00
Paul Davis
f41ca91cd4 put a bang button on a cue pianoroll editor 2025-03-22 19:49:39 -06:00
Paul Davis
91f9561958 no track record enable if triggerbox is rec-enabled 2025-03-22 15:38:59 -06:00
Paul Davis
8af45b0988 do not arm track record when arm slot record from pianoroll 2025-03-22 08:56:22 -06:00
Paul Davis
b2d011442a no slot rec-enabling if the track is rec-enabled 2025-03-21 22:54:25 -06:00
Paul Davis
1e7480665c tweaks to pianoroll GUI to control capture length and avoid track rec-enabling
Tracks cannot be rec-enabled at the same as clips/slots/cues/triggers are rec-enabled. This means
that the "rec-enable" button in a TriggerStrip should not be setting track record enabled
status. Instead, it is a GUI-only button that causes a redraw with the appropriate slot
icons (play, record)

Still a bit of work to be done here but functional again and avoids an assert() failure
2025-03-21 20:55:36 -06:00
Paul Davis
bb2812f272 a variety of fixes for MIDI clip recording, and extended API to specify capture period 2025-03-21 20:55:36 -06:00
Robin Gareus
62d47d63a6
Hide irrelevant gtk messages from casual users 2025-03-21 23:16:18 +01:00
Paul Davis
5c3bcd608f NO-OP: add some helpful comments 2025-03-20 21:44:52 -06:00
Paul Davis
51dbe70b44 no more trim cursor in drae mode in the pianoroll
For some reason, we allow users to trim notes on the timeline when in
draw mode. Not sure why. We don't allow this in pianorolls, so make
sure the cursors don't suggest otherwise
2025-03-20 14:14:08 -06:00
Paul Davis
1b9a69c90f hack to hide some geometric oddity in pianorolls
the automation group rectangle, when set to use COORD_MAX as the rightmost x-coordinate
ends up sloping. use a very large number instead.

this ought to get fixed when it can be understood
2025-03-20 13:20:31 -06:00
Paul Davis
a8914cbb61 more logic improvements for managing active/visible state of pianoroll automation 2025-03-20 11:39:39 -06:00
Paul Davis
1911899d15 remove last of the remnants of "ardour-bindings" strings (library edition) 2025-03-19 20:19:24 -06:00
Paul Davis
d07710e847 remove last of the remnants of "ardour-bindings" strings 2025-03-19 20:19:08 -06:00
Paul Davis
9ef8d99892 bring order to the chaos of pianoroll automation visibility/editing 2025-03-19 20:18:52 -06:00
Paul Davis
05b8c6d2d3 some potential fixes for wierd note split/join behavior
the split_info for a MidiView would stick around across note selection
operations that really should act as a "boundary" or end of the
split op. This commit ends the split op any time selection is cleared
or notes are added to the selection (except when in the middle of a split
2025-03-19 17:34:33 -06:00
Robin Gareus
4bdd979df6
Fix index out of bounds when creating group (peek color) 2025-03-18 19:55:30 +01:00
Robin Gareus
7fcc048583
Show LAN button on master-bus (regardless of show_all) 2025-03-17 17:28:34 +01:00
Paul Davis
e8d4f5e06d when a pianoroll shows an empty MIDI model, use the user prefs for the note range 2025-03-17 10:12:42 -06:00
Paul Davis
ef8f2579c1 if showing an empty model in a pianoroll, set the visible channel to 1 2025-03-17 10:00:44 -06:00
Paul Davis
dd3683bc06 fix another #warning from the pianorule refactoring
There is one single place in AutomationLine code where we need to callback
to its AutomationTimeAxisView, if it is part of one, regarding automation
state. This permits that to happen
2025-03-16 15:43:11 -06:00