Robin Gareus [Fri, 18 Oct 2019 21:40:40 +0000 (23:40 +0200)]
Special case "Virtual Keyboard" to be available as external input
Robin Gareus [Fri, 18 Oct 2019 21:40:23 +0000 (23:40 +0200)]
Allow to translate "Virtual Keyboard"
reserved_io_names[] already uses a translatable string for this.
Robin Gareus [Fri, 18 Oct 2019 15:26:25 +0000 (17:26 +0200)]
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
Robin Gareus [Fri, 18 Oct 2019 13:22:33 +0000 (15:22 +0200)]
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).
Robin Gareus [Fri, 18 Oct 2019 13:17:54 +0000 (15:17 +0200)]
Use AsyncMIDIPort API
Robin Gareus [Fri, 18 Oct 2019 13:16:43 +0000 (15:16 +0200)]
Expose virtual-keyboard port as async-port
Paul Davis [Fri, 18 Oct 2019 06:07:31 +0000 (00:07 -0600)]
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
Robin Gareus [Fri, 18 Oct 2019 01:50:52 +0000 (03:50 +0200)]
Super basic Virtual-Keyboard UI
Robin Gareus [Fri, 18 Oct 2019 01:42:41 +0000 (03:42 +0200)]
Add Virtual-Keyboard MIDI port
Robin Gareus [Fri, 18 Oct 2019 01:40:52 +0000 (03:40 +0200)]
NO-OP: indent, tabs/whitespace fixes
Robin Gareus [Thu, 17 Oct 2019 23:41:18 +0000 (01:41 +0200)]
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
Robin Gareus [Thu, 17 Oct 2019 23:37:56 +0000 (01:37 +0200)]
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.
Robin Gareus [Tue, 15 Oct 2019 21:17:48 +0000 (23:17 +0200)]
Fix export w/o session-range (typo in
468731c14b9b)
Robin Gareus [Tue, 15 Oct 2019 20:47:57 +0000 (22:47 +0200)]
NO-OP: whitespace
Robin Gareus [Tue, 15 Oct 2019 20:45:28 +0000 (22:45 +0200)]
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
Robin Gareus [Tue, 15 Oct 2019 14:02:47 +0000 (16:02 +0200)]
Improve multi-channel instrument listing
Robin Gareus [Tue, 15 Oct 2019 13:30:33 +0000 (15:30 +0200)]
Remve unused header includes
Robin Gareus [Tue, 15 Oct 2019 13:29:18 +0000 (15:29 +0200)]
Use less-or-equal for configurable I/O chancount
Robin Gareus [Tue, 15 Oct 2019 13:24:50 +0000 (15:24 +0200)]
Fix typos in AU channel-count calc
Robin Gareus [Tue, 15 Oct 2019 12:52:40 +0000 (14:52 +0200)]
Show max # of output for re-configurable I/O plugins
Robin Gareus [Tue, 15 Oct 2019 12:47:11 +0000 (14:47 +0200)]
API to count max multi-channel plugin outputs
Robin Gareus [Tue, 15 Oct 2019 12:20:52 +0000 (14:20 +0200)]
Fix/amend previous commit
Robin Gareus [Tue, 15 Oct 2019 12:09:02 +0000 (14:09 +0200)]
Disambiguate instrument plugin names:
* use cached ambiguity information from backend
* combine extra info in single bracket
Robin Gareus [Tue, 15 Oct 2019 12:04:26 +0000 (14:04 +0200)]
Detect plugin-name ambiguities
Robin Gareus [Tue, 15 Oct 2019 10:22:08 +0000 (12:22 +0200)]
NO-OP: indent, comments and consistency
Robin Gareus [Sun, 13 Oct 2019 21:12:15 +0000 (23:12 +0200)]
Fix fan-out channel-assignment
Ben Loftis [Sun, 13 Oct 2019 18:26:44 +0000 (13:26 -0500)]
Show (# outs) in instrument-selector menu when the instrument is multi-out.
Robin Gareus [Sun, 13 Oct 2019 02:12:02 +0000 (04:12 +0200)]
Remove unused API declaration (removed in
789f08891b)
Robin Gareus [Sun, 13 Oct 2019 02:09:35 +0000 (04:09 +0200)]
Prototype categorized preset browser
Paul Davis [Sat, 12 Oct 2019 18:45:27 +0000 (12:45 -0600)]
remove Session::AudioMidiSetupRequired signal (no longer necessary)
Paul Davis [Sat, 12 Oct 2019 18:45:18 +0000 (12:45 -0600)]
remove Session::AudioMidiSetupRequired signal (no longer necessary)
Paul Davis [Sat, 12 Oct 2019 18:45:13 +0000 (12:45 -0600)]
remove Session::AudioMidiSetupRequired signal (no longer necessary)
Paul Davis [Sat, 12 Oct 2019 18:10:10 +0000 (12:10 -0600)]
reintroduce code that can automatically connect to JACK under the right conditions
Paul Davis [Fri, 11 Oct 2019 23:09:39 +0000 (17:09 -0600)]
interface range generated by internal_to_interface() may not span 0..1, so remove asserts
Paul Davis [Fri, 11 Oct 2019 23:03:50 +0000 (17:03 -0600)]
add missing case
Paul Davis [Fri, 11 Oct 2019 20:44:30 +0000 (14:44 -0600)]
do not accidentally re-create splash
Paul Davis [Fri, 11 Oct 2019 20:29:55 +0000 (14:29 -0600)]
enforce singleton nature of Splash a little more rigorously, and slightly rationalize it's use
Paul Davis [Fri, 11 Oct 2019 19:53:48 +0000 (13:53 -0600)]
call parent ::on_response()
Paul Davis [Fri, 11 Oct 2019 16:25:08 +0000 (10:25 -0600)]
remove responsibility for starting AudioEngine from Session
Ben Loftis [Thu, 10 Oct 2019 23:24:57 +0000 (18:24 -0500)]
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"
John Emmas [Fri, 11 Oct 2019 10:19:24 +0000 (11:19 +0100)]
Add/rename source(s) in our MSVC project (gtk2_ardour)
Paul Davis [Fri, 11 Oct 2019 03:47:17 +0000 (21:47 -0600)]
goto preferred over reentrancy
Paul Davis [Fri, 11 Oct 2019 03:37:50 +0000 (21:37 -0600)]
fix error in startup sequence when command line argument is given and pre-release dialog is shown
Paul Davis [Fri, 11 Oct 2019 03:24:52 +0000 (21:24 -0600)]
move pre-release dialog into StartupFSM (and enlarge font sizing)
Paul Davis [Fri, 11 Oct 2019 01:54:33 +0000 (19:54 -0600)]
center all(?) early-startup dialogs
Paul Davis [Thu, 10 Oct 2019 22:51:51 +0000 (16:51 -0600)]
fix up handling of audio/MIDI setup dialog and remove debug output
Paul Davis [Thu, 10 Oct 2019 22:51:28 +0000 (16:51 -0600)]
make error message very slightly more indicative of what might be happening when audioengine backend fails to start
Paul Davis [Thu, 10 Oct 2019 22:50:57 +0000 (16:50 -0600)]
make EngineDialog behavior more appropriate for use in both startup and non-startup conditions
Paul Davis [Thu, 10 Oct 2019 21:25:30 +0000 (15:25 -0600)]
changes to get startupFSM working (more) correctly
Paul Davis [Thu, 10 Oct 2019 21:25:13 +0000 (15:25 -0600)]
remove unused label and simplify return value/return path
Paul Davis [Thu, 10 Oct 2019 21:24:49 +0000 (15:24 -0600)]
NOOP: move brace
Paul Davis [Thu, 10 Oct 2019 21:24:20 +0000 (15:24 -0600)]
make ARDOUR_UI::load_session_from_startup_fsm() return a value, and use it
Paul Davis [Thu, 10 Oct 2019 21:23:23 +0000 (15:23 -0600)]
fix decl of method with const arg
Paul Davis [Thu, 10 Oct 2019 21:22:44 +0000 (15:22 -0600)]
add StartupFSM::end() (empty for now) and remove unused states
Paul Davis [Thu, 10 Oct 2019 21:21:20 +0000 (15:21 -0600)]
use const argument when calling ::build_session()
Paul Davis [Thu, 10 Oct 2019 20:35:03 +0000 (14:35 -0600)]
remove unused assignment
Paul Davis [Thu, 10 Oct 2019 20:34:46 +0000 (14:34 -0600)]
remove two unused variables
Paul Davis [Thu, 10 Oct 2019 20:34:20 +0000 (14:34 -0600)]
make BusProfile argument to new Session constructor be const (and in associated call tree)
Paul Davis [Thu, 10 Oct 2019 02:53:03 +0000 (20:53 -0600)]
NSM startup needs to call a different method due to API changes
Paul Davis [Thu, 10 Oct 2019 02:52:46 +0000 (20:52 -0600)]
move copying demo sessions into NewUserWizard
Paul Davis [Thu, 10 Oct 2019 02:52:26 +0000 (20:52 -0600)]
changes to ARDOUR_UI to reflect new startupFSM and non-modal SessionDialog handling
Paul Davis [Thu, 10 Oct 2019 02:51:14 +0000 (20:51 -0600)]
modify API of SessionDialog to reflect that it is never used with command line parameters anymore
Paul Davis [Thu, 10 Oct 2019 02:50:34 +0000 (20:50 -0600)]
add initial version of StartupFSM along with its owners/users
Paul Davis [Thu, 10 Oct 2019 02:32:46 +0000 (20:32 -0600)]
remove unnecessary template methods (replicated in libs/gtkmm2ext/doi.h
Paul Davis [Wed, 9 Oct 2019 03:48:11 +0000 (21:48 -0600)]
add SessionDialog::clear_name()
Paul Davis [Wed, 9 Oct 2019 03:40:14 +0000 (21:40 -0600)]
change SessionDialog::meta_master_bus_profile() to be a static method
Paul Davis [Wed, 9 Oct 2019 03:30:00 +0000 (21:30 -0600)]
engine dialog should emit response and handle it, not just call its own response dialog
Paul Davis [Wed, 9 Oct 2019 03:29:47 +0000 (21:29 -0600)]
rename ArdourStartup to NewUserWizard and rename source file(s)
Paul Davis [Tue, 8 Oct 2019 17:39:16 +0000 (11:39 -0600)]
provide ArdourStartup with a Gtk::Dialog-like signal_response()
It is not a Dialog (instead, an Assistant which IS-A Window), but
we want to be able to interact with it as if it is.
Also remove unused singleton and session info cruft
Robin Gareus [Thu, 10 Oct 2019 22:13:07 +0000 (00:13 +0200)]
Show preset-browser button if annoted presets are available
Robin Gareus [Thu, 10 Oct 2019 22:03:41 +0000 (00:03 +0200)]
Add a plugin-preset browser window
Previously preset-browser was only used instead of "generic control"
display if a plugin does not have any controls (but presets).
This allows for showing a dedicated window..
Robin Gareus [Thu, 10 Oct 2019 21:59:55 +0000 (23:59 +0200)]
Preset-Browser: highlight only unmodified presets
Robin Gareus [Thu, 10 Oct 2019 21:59:05 +0000 (23:59 +0200)]
NO-OP: whitespace
Robin Gareus [Thu, 10 Oct 2019 21:58:49 +0000 (23:58 +0200)]
Add "List/Browse" vector icon
Robin Gareus [Thu, 10 Oct 2019 20:31:19 +0000 (22:31 +0200)]
Add API to check for plugin-presets with description
Paul Davis [Tue, 8 Oct 2019 02:49:53 +0000 (20:49 -0600)]
add constructor
Paul Davis [Tue, 8 Oct 2019 02:49:35 +0000 (20:49 -0600)]
fix compiler warning about possible buffer size issue
Robin Gareus [Mon, 7 Oct 2019 13:19:36 +0000 (15:19 +0200)]
Stem-export: pre-select selected tracks/busses
Robin Gareus [Mon, 7 Oct 2019 03:11:58 +0000 (05:11 +0200)]
Fix a translation issue (default value session-archive dropdown)
Robin Gareus [Mon, 7 Oct 2019 03:11:33 +0000 (05:11 +0200)]
Special case horizontal faders (pan to right)
Robin Gareus [Mon, 7 Oct 2019 03:07:55 +0000 (05:07 +0200)]
Invert Pan-Azimuth (up means left)
It's a well established convention that pan y-axis automation,
or vertical uses (top) +1 for left.
This special cases rotary knobs (and horizontal sliders) to retain
a clockwise movement (or movement to the right) for panning to the
right.
Robin Gareus [Sun, 6 Oct 2019 18:56:34 +0000 (20:56 +0200)]
Configure UI scale as first start step
This also includes some simple heuristic to guess initial scaling
depending on the largest screen's geometry.
Robin Gareus [Sun, 6 Oct 2019 16:39:53 +0000 (18:39 +0200)]
Cleanup unused includes
Paul Davis [Thu, 3 Oct 2019 23:23:57 +0000 (17:23 -0600)]
factor out NSM startup code
Paul Davis [Thu, 3 Oct 2019 00:00:59 +0000 (18:00 -0600)]
changes required to get build-stack to run on a Mojave VM.
Paul Davis [Sun, 29 Sep 2019 16:00:23 +0000 (10:00 -0600)]
remove all use of NO_PLUGIN_STATE #ifdef
We determined several years that we should never ever do this,
and changed the basis for the free/demo copy because of that.
Robin Gareus [Wed, 2 Oct 2019 21:14:58 +0000 (23:14 +0200)]
Prefer portable (MSVC?) getenv (amend
5ea54be)
Robin Gareus [Wed, 2 Oct 2019 20:55:55 +0000 (22:55 +0200)]
Allow ARDOUR_AVG_DSP_LOAD for non-debug builds
Robin Gareus [Wed, 2 Oct 2019 19:28:13 +0000 (21:28 +0200)]
Amend
903c3ec5a API rename
Robin Gareus [Wed, 2 Oct 2019 17:35:03 +0000 (19:35 +0200)]
Plugin type lookup does not change PI
Robin Gareus [Wed, 2 Oct 2019 17:29:52 +0000 (19:29 +0200)]
Remove unused API (and some MIXBUS specifics)
Robin Gareus [Tue, 1 Oct 2019 23:54:08 +0000 (01:54 +0200)]
Optimize default case: no delay
Robin Gareus [Tue, 1 Oct 2019 11:42:34 +0000 (13:42 +0200)]
Fix thinko in
cd5f70e69a (delayline buffer resize)
The delay-time itself can change arbitrarily, but the buffer-size
never shrinks.
If the buffersize grows it means that the new delay is longer than
the current one (or at least as large as any pending, not yet
active delay).
This is important for the mechanism that adjusts the read-pointer
to the new buffer-size.
Robin Gareus [Mon, 30 Sep 2019 21:10:33 +0000 (23:10 +0200)]
Update Fluidsynth to v2.0.7
Sunil Chopra [Mon, 3 Jun 2019 02:15:05 +0000 (21:15 -0500)]
added an Ardour-focused smartphone layout for Touch OSC
Robin Gareus [Mon, 30 Sep 2019 19:00:29 +0000 (21:00 +0200)]
Fix remaining doxygen warnings (!)
Robin Gareus [Mon, 30 Sep 2019 19:02:49 +0000 (21:02 +0200)]
Add LTC frame doc image
Robin Gareus [Mon, 30 Sep 2019 17:06:00 +0000 (19:06 +0200)]
NO-OP: whitespace, indent
Robin Gareus [Mon, 30 Sep 2019 16:20:15 +0000 (18:20 +0200)]
No more doxygen warnings for gtk2_arodur/*
That's with doxgen 1.8.13.
Robin Gareus [Mon, 30 Sep 2019 04:27:24 +0000 (06:27 +0200)]
Fix use of doxygen documented parameters in running text