13
0
Commit Graph

28242 Commits

Author SHA1 Message Date
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
da2d6312c4 call parent ::on_response() 2019-10-11 13:53:48 -06:00
789f08891b remove responsibility for starting AudioEngine from Session 2019-10-11 10:25:32 -06:00
1c672e5191 Theme-ing: Use sensible names instead of color 1..N
Colors are assigned one of 6 major groups:

*Alert colors: Typically mute/solo/feedback/selections etc ... these should follow Ardour convention, only the saturation should change with themes.

*BG colors (empty spaces...)

*Contrast colors: Should contrast nicely against BG. Typically clocks, markers, panners and such.

*Black/White/Grays:  you can expect these to work with "any" BG.  Good for borders, separators, etc.

*Meter colors:  Typically green->yellow->red or similar.  Should follow Ardour conventions.

*Widget colors:  slight variations of the BG color.  This is where the creative choices are made.

NOTE to theme-ers:  Widgets should choose one of the colors based on FUNCTION.  If you want a red widget, choose "widget red",  not "alert red" or "meter color9"
2019-10-11 10:32:47 -05:00
2981092d64 Add/rename source(s) in our MSVC project (gtk2_ardour) 2019-10-11 11:19:24 +01:00
89cab5802a goto preferred over reentrancy 2019-10-10 21:47:17 -06:00
aa2ea11a47 fix error in startup sequence when command line argument is given and pre-release dialog is shown 2019-10-10 21:37:50 -06:00
aaecba2116 move pre-release dialog into StartupFSM (and enlarge font sizing) 2019-10-10 21:24:52 -06:00
b3f2ed46b1 center all(?) early-startup dialogs 2019-10-10 19:54:33 -06:00
7238c7fdc6 fix up handling of audio/MIDI setup dialog and remove debug output 2019-10-10 16:52:00 -06:00
3294f193fd make error message very slightly more indicative of what might be happening when audioengine backend fails to start 2019-10-10 16:52:00 -06:00
03a248d517 make EngineDialog behavior more appropriate for use in both startup and non-startup conditions 2019-10-10 16:52:00 -06:00
20b38ad8ea changes to get startupFSM working (more) correctly 2019-10-10 16:52:00 -06:00
745d138b64 remove unused label and simplify return value/return path 2019-10-10 16:52:00 -06:00
3b1ec8a43b NOOP: move brace 2019-10-10 16:52:00 -06:00