Commit graph

26928 commits

Author SHA1 Message Date
Len Ovens
894145c527 OSC: specify which stiripable type we want 2018-11-07 17:00:16 -08:00
Len Ovens
0140b24248 Change get_routes to get_routelist where appropriate. 2018-11-07 17:00:16 -08:00
Len Ovens
80fd215a5c get_stripables and get_routelist are now presentationinfo aware 2018-11-07 17:00:16 -08:00
Robin Gareus
41abf75077 Consolidate VST Plugin Info
This unifies common PluginManager VST code to construct *VSTPluginInfo
and also provides a dedicated is_instrument() method for VST plugins.
2018-11-07 23:37:10 +01:00
Robin Gareus
bc83e6f753 Force VST category to be "Instrument" for instruments.
This way it is picked up by the default PluginInfo::is_instrument()
method.
2018-11-07 23:05:54 +01:00
Robin Gareus
0b9c648e49 Honor effFlagsIsSynth and always assume those VSTs are instruments
This will incorrectly list some vocders or reaktor and the likes of
plugins with audio + midi input as Instruments IFF they also announce
effFlagsIsSynth flag.

NB. this is a first step only. we still need to override PluginInfo
2018-11-07 21:39:52 +01:00
Robin Gareus
b06713bd8e GUI options to select FLAC as media format 2018-11-07 19:59:51 +01:00
Robin Gareus
2991afaf0d Add support for recording to .flac 2018-11-07 19:21:39 +01:00
Robin Gareus
1ca76c4e18 NO-OP: whitespace 2018-11-07 19:21:10 +01:00
Robin Gareus
197a1e4446 Close files at rec-stop (re-open as needed)
This is in preparation to allow recording .flac files which are either
read or write not cannot be in read/write mode
2018-11-07 19:13:03 +01:00
Robin Gareus
a58f7caca1 Skip updating options for hidden file-dialog
This may also fix an edge-case issue where changing track selection
combined with invalid file selection may trigger a bad_file_message.
2018-11-06 23:00:26 +01:00
Robin Gareus
2bb22d2a14 DSP-Load Window: subscribe to newly added routes
This fixes an issue when adding plugins with the route (e.g MIDI)
or showing the window before adding a route in the first place.
2018-11-05 20:15:01 +01:00
Robin Gareus
9971e718fe Save Lua UI scripts separately
Previously EditorAction and ExitorHook scripts were saved with
instant.xml. The were saved with each session and in the config
dir (for new sessions). This allowed inconsistent UI setups, especially
when loading old sessions that had no or different scripts.

Now Editor scripts (actions and hooks) are saved in a dedicated file,
session-independently. This goes along with ui_config in general
e.g. action-table-columns

The scripts are not saved with ui_config file for two reasons:
ui_config settings related to built-in  ui_config_vars.h,
and in the future there may be further indirection like "ui-rc-file".

Note: previously loaded editor scripts are lost with this change.
2018-11-04 18:47:14 +01:00
Johannes Mueller
abb0957028 NO-OP: whitespace 2018-11-04 17:03:11 +01:00
Robin Gareus
8a4518d76f Remove C++11'ism
While gnu-gcc had `std::map:at const` as non-standard extension
it is n/a for older gcc on OSX.

Surprisingly this const& p() const; performs a tad better as well, likely
due to different exception handling.

Perhaps it is also worth investigating boost::flat_map<> as replacement
for std::map<>, here. Our common case is just a single entry, so using
a std::vector emulated mapping might help.
2018-11-04 15:37:46 +01:00
Robin Gareus
c9bf89392f Fix AudioUnit, missing const in cbef72b8a1 2018-11-04 04:10:07 +01:00
Robin Gareus
8d6d0b3232 Prefer const references for Pin/Channel maps
Another micro-optmization shaving off some ten microseconds for every
plugin. Also copying maps isn't RT-safe.

This may however cause issue if const map references can change
while a plugin is running.
2018-11-04 03:25:36 +01:00
Robin Gareus
e4c7cb1e75 Plugin pin-mapping micro-optimization
Prefer std::map::at() over std::map::operator[] to allow const maps.
For debug builds, there should probably some try{} catch{} along with this.
2018-11-04 02:21:53 +01:00
Robin Gareus
cbef72b8a1 Optimize Plugin connect & run API, use const maps 2018-11-04 02:16:34 +01:00
Robin Gareus
51e33796f1 Optimize Parameter Control Loop
For plugins with 10000 Control Inputs, dynamic_pointer_cast<> overhead
is significant, here ~2msec (~0.2usec per cast, optimized build, i7-5600U,
2.60GHz)
2018-11-04 02:16:34 +01:00
Paul Davis
6bd583803e rename TransportMasterManager::init() to ::set_default_configuration() to make its purpose more clear 2018-11-02 21:52:00 -04:00
Paul Davis
bf2d9e7a34 fix crash during first-run configuration of the application, caused by using an incomplete TransportMasterManager 2018-11-02 21:52:00 -04:00
Len Ovens
c04fc2efe2 Allow strips to add or remove personal sends
in processor box context menu
2018-11-01 17:43:35 -07:00
Len Ovens
06ffebca76 A listen route has no aux sends 2018-11-01 17:43:35 -07:00
Robin Gareus
b81fdeaa66 Work around tooltips in treeviews selection issue #7678
When tooltips are disabled, but a tooltip column is set for a treeview,
the treeview selection behaves inconsistently. It requires a 3rd click
after expanding any child-rows to select a child.
2018-11-01 23:21:23 +01:00
Johannes Mueller
fe318c0cd5 Create sidechain ports when created from template (#0007680)
When a route with a sidechain is created from a template or by route
duplication the number of ports of the sidechain are set according to the
XMLNode defining the sidechain. Then the names are set according to the name of
the newly created route.

Thus all the pin connections defined in the template are replicated in the
newly created route.
2018-11-01 22:17:01 +01:00
Len Ovens
287ce3d477 Allow ListenBus to be added by GUI 2018-11-01 13:13:48 -07:00
Robin Gareus
3b1d9193ba Prefer key-event dispatch over emulated events for VST plugins. 2018-11-01 20:09:20 +01:00
Robin Gareus
197f5460df Add API to dispatch keyboard events to VST Plugins 2018-11-01 20:09:20 +01:00
Len Ovens
abdc0da6e3 Correct new track/bus/VCA dialog text 2018-11-01 11:31:46 -07:00
Johannes Mueller
cc83e1a9bf Consider size of port matrix column labels for size of row labels
The column labels are drawn in an angle towards the edge where the row labels
are. Therefore, if the column labels are much longer than the row labels it can
happen that they go beyond the left edge. In that case we have to add an extra
width to the row labels.
2018-11-01 18:53:27 +01:00
Johannes Mueller
732fd75f9b Update names of sidechains.
When a PluginInsert is created it does not have an owner right away. That's why
a we need to set the sidechains name once the owner is known, in order to
include owner's name into the name.

Furthermore we need to follow renames of the owner.
2018-11-01 18:53:27 +01:00
Johannes Mueller
9a01ef35e7 Put the sidechain ports into a dedicated tab in PortMatrix 2018-11-01 18:52:51 +01:00
Robin Gareus
694c5fcfa6 Skip VST version check to detect MIDI inputs
Some plugins return 0 from effGetVstVersion and are hence not detected
as instruments. e.g. VeeSeeVSTRack (VCV). This may also explain why MIDI
port of some other VSTs are not exposed.

Most VST2.4 return 2400, so checking  [effGetVstVersion] >=2 (and not 2000)
was incorrect to begin with.
2018-11-01 15:27:08 +01:00
Robin Gareus
d9fcab88f0 Fix key-forwarding to linuxVST UIs
Tested with VeeSeeVST
2018-11-01 01:27:30 +01:00
Robin Gareus
a79fe23935 Allow to limit strip-inline controls (GUI optimization) 2018-10-31 23:44:04 +01:00
Robin Gareus
63a4cc9cf6 Preference Dropdown to limit Automatable Parameters 2018-10-31 23:44:04 +01:00
Robin Gareus
fd832d9d1a Add option to limit automatable control parmaters
VCVRack VST currently exposes 9999 automatable-control parmaters.
This slows down various GUI dropdown lists and dialogs.
(even worse: those parameters are not mapped to anything by default).

This change allows to limit automatable parameters to a reasonable number,
without loosing state of already automated parameters in existing sessions.
2018-10-31 23:44:04 +01:00
Robin Gareus
befa339d4b Remove duplicate call
Automatable::add_control() already does insert a given parameter
to the _can_automate_list list if it's automatable.
2018-10-31 23:44:04 +01:00
Robin Gareus
352c824fa3 NO-OP: whitespace 2018-10-31 23:44:04 +01:00
Len Ovens
f7b67501a9 OSC: Allow non-cue surfaces to create personal send and ListenBus 2018-10-30 12:15:28 -07:00
Len Ovens
be5a89aa22 Add ListenBus to stripable types 2018-10-30 12:15:28 -07:00
Robin Gareus
5b2eb6107c New Route dialog: add fallback default selection
This fixes an issue with Mixbus. If the default "Create Audio Tracks.."
template/script is not available. Nothing is selected.

Selecting a type/template is required to update various other dialog
fields. eg. "Name" field.

Previously: Create VCA. OK+Close. Re-open dialog. Now the
implicit default was "Audio Track" but the Name-field still showed "VCA".
2018-10-30 16:09:22 +01:00
Robin Gareus
5bd9bf868f Safe-guard non-rt-safe sidechain operations
This is required by 7d8b93ad for showing error when actively recording.
It also prevents other UIs (OSC, Lua,..) to change re-configuring
sidechain ports/plugins while recording.
2018-10-29 21:52:47 +01:00
Robin Gareus
7d8b93add1 Consolidate PinDialog Session/recording checks
- _session cannot be NULL while the dialog is visible.
  This removes extra `if (_session)` tests.
- Operations now no longer fail silently, but show error messages.
2018-10-29 21:50:08 +01:00
Johannes Mueller
6c19a776f4 Set session of PluginPinWidget created after ::set_session()
PluginPinWidgets initially receive their Session pointer by
PluginPinDialog::set_session(). When a RouteProcessorChange occurs all
PluginPinWidgets are recreated. Those newly created instances need a pointer to
the session.
2018-10-29 18:31:15 +01:00
Robin Gareus
20fb871d5a Processor-box control context menu update 2018-10-28 21:03:43 +01:00
Robin Gareus
ebcabf59da Don't show hidden controls inline in the mixer-strip 2018-10-28 20:37:20 +01:00
Robin Gareus
b30ab9802a Only allow LV2 touch events for control inputs
This fixes a crash when a plugin sends a touch events for non-control ports.
2018-10-28 20:34:21 +01:00
Robin Gareus
383bd2526c Fix incorrect VST callback fall-though (effective NOOP) 2018-10-27 10:33:58 +02:00