13
0
Commit Graph

28406 Commits

Author SHA1 Message Date
b523583bb4
Virtual-Keyboard significant overhaul:
* 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, ...)
2019-10-21 05:42:05 +02:00
b96d8e7ffa Add support for single-fader MCU devices: XTouch One and RuCo. (needs testing) 2019-10-20 22:24:32 -05:00
92173ca118
Virtual-Keyboard: Fix use of scrollwheel on dropdowns 2019-10-20 21:22:38 +02:00
88fc226107
Add API to set select item from ArdourDropdown
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().
2019-10-20 21:21:57 +02:00
20daca9290
Virtual-Keyboard: save/restore state 2019-10-20 20:53:40 +02:00
9c00d6216a
Virtual-keyboard: add a pitch-bender 2019-10-20 18:29:23 +02:00
e63c2133e5
Virtual-keyboard: add CCs, bank/patch selector 2019-10-20 02:44:16 +02:00
ce13979175
Increase black key length 2019-10-20 02:44:16 +02:00
John Emmas
a81ad91294 Add/remove source(s) in our MSVC project (gtk2_ardour) 2019-10-19 16:05:42 +01:00
7e10eec3c2 Use conf.fatal for fatal configuration errors 2019-10-19 02:22:59 +02:00
84efcb2534 Fix Python3 incompatible syntax 2019-10-19 02:22:59 +02:00
a1d5499f40 Fix typo 2019-10-19 02:22:59 +02:00
699a47cc65
Fix typo in bc363f1258 2019-10-19 02:15:13 +02:00
bc363f1258
Special case "Virtual Keyboard" to be available as external input 2019-10-18 23:40:40 +02:00
c4d7870c68
Allow to translate "Virtual Keyboard"
reserved_io_names[] already uses a translatable string for this.
2019-10-18 23:40:23 +02:00
19e4f47b4b
Cont'd work on Virtual-keyboard
* 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
2019-10-18 22:56:46 +02:00
148a9682be
Remove redundant port-owner check
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).
2019-10-18 22:56:46 +02:00
f0d2327af0
Use AsyncMIDIPort API 2019-10-18 22:56:46 +02:00
eade673771
Expose virtual-keyboard port as async-port 2019-10-18 22:56:46 +02:00
0d86819a2b fix two thinkos with startup sequence
1) audio/MIDI setup was being shown unnecessarily
2) could crash if entire startup sequence passed without any dialogs being necessary
2019-10-18 00:07:31 -06:00
ebb89ba805
Super basic Virtual-Keyboard UI 2019-10-18 03:50:52 +02:00
f961fd4687
Add Virtual-Keyboard MIDI port 2019-10-18 03:42:41 +02:00
f4ebb5995d
NO-OP: indent, tabs/whitespace fixes 2019-10-18 03:41:45 +02:00
b4cbee724e
Fix a rare EventList race-condition/crash
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
2019-10-18 01:41:18 +02:00
88f9aaff7d
Add API to safely query timestamp of first/last control event
Direct calls to back()->when or front()->when are not safe
when the list is concurrently modified, or empty.
2019-10-18 01:37:56 +02:00
3ff1541825
Fix export w/o session-range (typo in 468731c14b) 2019-10-15 23:17:48 +02:00
6da5f96cf6
NO-OP: whitespace 2019-10-15 22:47:57 +02:00
4bf079810f
Fix crash for range-export and cleanup code
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
2019-10-15 22:45:28 +02:00
9fa7e919a7
Improve multi-channel instrument listing 2019-10-15 16:02:47 +02:00
4eef9c20b8
Remve unused header includes 2019-10-15 15:30:33 +02:00
7f4af33305
Use less-or-equal for configurable I/O chancount 2019-10-15 15:29:18 +02:00
32a97d242e
Fix typos in AU channel-count calc 2019-10-15 15:24:50 +02:00
7030ab064f
Show max # of output for re-configurable I/O plugins 2019-10-15 14:52:40 +02:00
bcd1391bf7
API to count max multi-channel plugin outputs 2019-10-15 14:48:32 +02:00
cbb116026d
Fix/amend previous commit 2019-10-15 14:20:52 +02:00
59d074bcfd
Disambiguate instrument plugin names:
* use cached ambiguity information from backend
* combine extra info in single bracket
2019-10-15 14:09:02 +02:00
0b377fc393
Detect plugin-name ambiguities 2019-10-15 14:04:26 +02:00
7e5120e7c9
NO-OP: indent, comments and consistency 2019-10-15 12:26:14 +02:00
7fb259ece2
Fix fan-out channel-assignment 2019-10-13 23:12:38 +02:00
d8198acede Show (# outs) in instrument-selector menu when the instrument is multi-out. 2019-10-13 13:27:07 -05:00
52eea55988
Remove unused API declaration (removed in 789f08891b) 2019-10-13 04:12:02 +02:00
c0866f54f3
Prototype categorized preset browser 2019-10-13 04:10:16 +02:00
ee51188617 remove Session::AudioMidiSetupRequired signal (no longer necessary) 2019-10-12 12:45:27 -06:00
44445ea309 remove Session::AudioMidiSetupRequired signal (no longer necessary) 2019-10-12 12:45:18 -06:00
bfb998ca0a remove Session::AudioMidiSetupRequired signal (no longer necessary) 2019-10-12 12:45:13 -06:00
b490115d5f reintroduce code that can automatically connect to JACK under the right conditions 2019-10-12 12:10:10 -06:00
e6901dca30 interface range generated by internal_to_interface() may not span 0..1, so remove asserts 2019-10-11 17:09:39 -06:00
5163393c11 add missing case 2019-10-11 17:03:50 -06:00
74454d1859 do not accidentally re-create splash 2019-10-11 14:44:30 -06:00
54acf6af6a enforce singleton nature of Splash a little more rigorously, and slightly rationalize it's use 2019-10-11 14:29:55 -06:00