Processor changes trigger configure_io() which resulted in a
call to reset_write_sources(), which is a disaster while recording.
This allows adding plugins while recording, and prevents adding
any plugins before the disk-writer that change the channel-count
while recording, or changing strict-i/o to the same effect.
This code only worked for port groups that themselves (the specific group
instance) listed their designations. This worked with LSP, which redundantly
duplicates the elements from the group's class for some reason, but not with
other plugins like MDA which simply refer to a standard group like
<http://lv2plug.in/ns/ext/port-groups#StereoGroup>.
This does require the specification data to be loaded from the LV2 path (maybe
why LSP does that?), but that's generally expected for anything LV2 to work.
Strumming now happens to notes that start at the same time, based on
note value. Additionally, rather than moving notes, the start times get
moved so that they end at the same time. Any notes that get cut down to
nothing (or less) are given a length of one tick while maintaining the
same end time.
* fix HTML </br> -> <br/>
* add a doctype (render in normal mode, not quiksmode)
* add CSS to match prior display from quicksmode
* add pagebreak before action-list
This fixes bug, when a button has both a controllable and
a toggle action assigned. Previously only the visual state
was updated. e.g. monitor section mute button.
When "cut all" was toggled (e.g. Control surface, or a Lua script:
`Session:monitor_out():monitor_control():set_cut_all(true)`,
The action state itself remained unchanged. Also the button
in the application remained unchanged since that button does
not :watch() the controllable.
This fixes a crash when removing and re-adding regionFX.
Removing all FX clears the _readcache BufferSet
(see AudioRegion::remove_plugin).
BufferSet::clear() calls _buffers.clear(); leading to a assert/crash
when adding a new regionFX plugin which calls BufferSet::ensure_buffers.
- Implement strum_notes functionality to apply progressive
timing offsets to selected MIDI notes
- Provides guitar-style strumming for creating realistic
note sequences
The feature applies 1/32 beat timing offsets progressively
to selected notes, creating a strummed effect where notes
play in sequence rather than simultaneously.
> 'TempoMapScope' defined as a struct here but previously declared
> as a class; this is valid, but may result in linker errors under
> the Microsoft C++ ABI [clang-diagnostic-mismatched-tags]
the addition of the current bank to the global strip position was just
causing the vpots to be off by the bank number, so past bank 1 the pots
were tied to the wrong plugins
GTK delivers both window and root coordinates as (0,0) for GDK_CROSSING_GTK_UNGRAB
modes. We need the real coordinates of the pointer to pick the right canvas item