Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
* Reset default note range to 0..127 for step-entry and other users
* Allow to print label "C-<n>" on keyboard
* Fix 6 octave note range
* Save/load user settings in virtual-keyboard window
|
|
This breaks a potential recursion when set_active() is called
from activate_item(). See also 88fc22610
|
|
* fix key-range off-by-one 0..127
* allow to shift octave
* allow to configure note range
* highlight grand-piano range and keyboard-shortcut range
* proper piano layout (black key offsets)
* add support for DVORAK keyboard layout
(still incomplete: settings are not yet saved/restored,
_piano_key_velocity should become a HSliderController, ...)
|
|
|
|
|
|
This fixes an issue with scroll-wheel control which uses `get_active()`.
It work around an issue with gtkmm:
const MenuItem* get_active () const
void set_active (guint index)
and MenuList::activate_item() not emitting activate_item().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
reserved_io_names[] already uses a translatable string for this.
|
|
* allow gtk_pianokeyboard to respond to y-axis click position
and include MIDI velocity with note-on signal
* add configuration settings to virual-keyboard
min/max velocity, keyboard-layout
* add a CC7 controller knob
|
|
Ports owned by Ardour are already filtered out by
PortManager::get_known_midi_ports() ->
PortManager::fill_midi_port_info_locked()
This change is in preparation for allowing to expose Ardour's
"Virtual MIDI Keyboard" keyboard (which is owned by Ardour).
|
|
|
|
|
|
1) audio/MIDI setup was being shown unnecessarily
2) could crash if entire startup sequence passed without any dialogs being necessary
|
|
|
|
|
|
|
|
The GUI thread may modify fade-in/out while the butler-thread
reads audio.
e.g. select a Range and click delete.
---
Thread 0:: Dispatch queue: com.apple.main-thread
0 libsystem_pthread.dylib 0x00007fffd45924fc pthread_mutex_lock + 0
1 libglib-2.0.0.dylib 0x00000001085a9d2a g_mutex_lock + 26
2 libevoral.dylib 0x0000000107fd0a49 PBD::Signal0<void, PBD::OptionalLastValue<void> >::operator()() + 57
3 libevoral.dylib 0x0000000107fd486d Evoral::ControlList::clear() + 253
4 libardour.dylib 0x00000001072ef9a5 ARDOUR::AudioRegion::set_fade_out(ARDOUR::FadeShape, long long) + 309
5 libardour.dylib 0x00000001072f19ea ARDOUR::AudioRegion::recompute_at_end() + 122
6 libpbd.dylib 0x00000001082993ff PBD::Stateful::resume_property_changes() + 191
7 libardour.dylib 0x00000001076476af ARDOUR::Playlist::cut(long long, long long, bool) + 575
8 libardour.dylib 0x0000000107646b5b ARDOUR::Playlist::cut_copy(boost::shared_ptr<ARDOUR::Playlist> (ARDOUR::Playlist::*)(long long, long long, bool), std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 187
9 libardour.dylib 0x0000000107647461 ARDOUR::Playlist::cut(std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 33
10 Ardour.bin 0x00000001065f0fa0 RouteTimeAxisView::cut_copy_clear(Selection&, Editing::CutCopyOp) + 592
11 Ardour.bin 0x0000000106118a94 Editor::cut_copy_ranges(Editing::CutCopyOp) + 164
12 Ardour.bin 0x0000000106116053 Editor::cut_copy(Editing::CutCopyOp) + 1587
Thread 20 Crashed:
0 libardour.dylib 0x00000001072f4b19 ARDOUR::AudioRegion::body_range() const + 89
1 libardour.dylib 0x00000001072bd318 ARDOUR::AudioPlaylist::read(float*, float*, float*, long long, long long, unsigned int) + 1176
2 libardour.dylib 0x00000001072ac236 ARDOUR::AudioDiskstream::read(float*, float*, float*, long long&, long long, int, bool) + 854
3 libardour.dylib 0x00000001072abbb8 ARDOUR::AudioDiskstream::overwrite_existing_buffers() + 392
4 libardour.dylib 0x00000001077ef36a ARDOUR::Session::non_realtime_overwrite(int, bool&) + 186
5 libardour.dylib 0x00000001077ed7f0 ARDOUR::Session::butler_transport_work() + 1696
6 libardour.dylib 0x0000000107323425 ARDOUR::Butler::thread_work() + 149
7 libardour.dylib 0x000000010732334f ARDOUR::Butler::_thread_work(void*) + 95
|
|
Direct calls to back()->when or front()->when are not safe
when the list is concurrently modified, or empty.
|
|
|
|
|
|
ExportTimespanSelectorMultiple has one extra column at the start:
"selected". There are a total of 6 columns (0..5).
However ExportTimespanSelectorSingle lacks that column.
Selection is not needed and there are only 5 columns.
This lead to a copy/paste off-by one issue for
set_sort_column() w/ range_view.get_column(5) == NULL
when exporting ranges with a single range
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* use cached ambiguity information from backend
* combine extra info in single bracket
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|