13
0
Commit Graph

9427 Commits

Author SHA1 Message Date
20facc4d18 Faderport: map automation indicator LEDs 2015-12-02 20:06:29 -06:00
16a100703b GenericMidi: Partially working IO selectors.
2 remaining problems:
*  IO selectors are not updated if you change the connection outside the dialog.
*  occasional crash on the next startup, after a connection is made from the menu.
2015-12-02 19:18:22 -06:00
90275ded6a faderport: a clever hack to make the Shift modifier "sticky"
The user can now press+release Shift, then another key OR press Shift, then another key before releasing Shift. Both
event sequences will have the same result
2015-12-02 17:40:58 -05:00
ba02c171f1 add session safeguards to OSC callbacks 2015-12-02 22:40:36 +01:00
Johannes Mueller
f11e18555e Cleanup to make it coding style compliant. 2015-12-02 22:38:29 +01:00
Johannes Mueller
4a429fab0e Add support to signal the transport state by OSC
Implement transport_speed in the same style like transport_frame. Up to
now transport_speed and record_enabled are implemented.
2015-12-02 22:38:29 +01:00
André Nusser
ba4db8f6cb Add function to duplicate until a certain frame.
This excludes the 'end' frame.
2015-12-02 14:59:43 -05:00
c93f0b77bf rename ProcessSemaphore to Semaphore (libs) 2015-12-02 20:18:48 +01:00
3242f16d44 consolidate semaphore implementation (part four) 2015-12-02 16:27:14 +01:00
15c958e32f consolidate semaphore implementation (part three) 2015-12-02 16:09:51 +01:00
003b632ed1 consolidate semaphore implementation (part one) 2015-12-02 16:03:28 +01:00
14d6470ad3 prefer pthread-semaphores (posix API) with mingw
Hopefully this resolves glitches on hyperthreading machines.
Apart from using unnamed Semaphores, pthread-w32 includes additional locks
(guess: mem-barriers), a fallback implementation and windows-specific
tricks that I'd rather not want to know about :)
2015-12-02 13:59:48 +01:00
e9be313c11 Fix latency compensation for audio data in portaudio backend
For drivers that correctly report latency values(ASIO) this should result a
much closer alignment of audio in a loopback test. Measurement and
adjustment may still be needed, especially for non-ASIO drivers.

Testing with the RME HDSP Multiface and Yamaha AG06 using ASIO drivers results
in maximum offset of a couple of samples.
2015-12-02 10:24:08 +10:00
b4fb1d610b Use portaudio callback API by default in portaudio backend 2015-12-02 10:24:07 +10:00
5f267f92bf Rename member variables in Portaudio Backend for consistency 2015-12-02 10:24:07 +10:00
29feb914b9 Rename blocking process function in portaudio backend 2015-12-02 10:24:06 +10:00
3e6b28daca Rename blocking thread function in portaudio backend 2015-12-02 10:24:05 +10:00
aaebeb3d2b fix typo in variable name 2015-12-02 00:59:32 +01:00
0544e74fdf merge from mixbus branch.
keep control surfaces special cases upstream.
2015-12-02 00:55:01 +01:00
b0fe298f72 faderport: factor out encoder divider into a const double 2015-12-01 18:47:29 -05:00
ee9524c9b6 faderport: make punch button LED indicate punch status 2015-12-01 18:45:43 -05:00
fd44adfe01 faderport: change panning dividers to give full range across very roughly 270 degrees of rotation 2015-12-01 18:32:55 -05:00
cb965cba16 start tweaks to make Shift sticky; remove Shift-press combobox from gui since we don't allow that to be bound (next-marker) 2015-12-01 16:19:16 -05:00
37961a6bbe faderport: switch long-press mechanism to a timeout
This makes the long press action fire after the timeout even if the user is still holding the button,
which feels more satisfactory
2015-12-01 13:15:38 -05:00
03a4926790 faderport: allow User button to be bound to ANY possible action.
This does involve nagivating some really gnarly menus, which is unfortunate, but we don't have a good general
solution for this yet (it is fundamentally the same problem that affects the key binding editor and Mackie support
2015-12-01 11:20:09 -05:00
0e629cd162 faderport: add punch action 2015-12-01 10:35:37 -05:00
0c9fd363ca faderport: GUI tweaks 2015-12-01 10:35:37 -05:00
4bd66dd17c fix AU preset list
Don't require user-presets to be present in order to include
factory presets
2015-12-01 15:26:24 +01:00
daf02e8c73 remove "medium-length" press concept from faderport code and GUI 2015-12-01 09:23:08 -05:00
620f1caf23 faderport: stick a nice little image of the faderport in the surface GUI
Ideally, the PNG file would be part of the surface GUI but for now just put the PNG into gtk2_ardour/icons
2015-12-01 09:23:08 -05:00
44f46d2b0d Fix broken load-session utility and change it to load and save a session
Rename run-session-tests.sh script to load-save-session.sh and make it operate on
only a single session and add a separate load-save-session-collection.sh script

Add --massif option to load-save-session.sh script

Rename some poorly named variables and add some documentation to the
load-save-session.sh script
2015-12-01 15:44:10 +10:00
7f3118c8fe Don't indent inside namespace declaration to be consistent with ardour style 2015-12-01 14:22:38 +10:00
e025415516 Use PBD::demangle_symbol in PBD::demangled_name<T> to reduce code duplication 2015-12-01 14:22:38 +10:00
36fa670309 Rename PBD::symbol_demangle and some variable names to improve readability
Rename PBD::symbol_demangle to demangle_symbol so the transitive verb is
infront of the object.

Rename some local variables and fix documentation.
2015-12-01 14:22:38 +10:00
5f4f89fb39 Move PBD symbol demangle functions into pbd/demangle.h/cc
Add pbd/demangle.cc source file and move functions from pbd/stacktrace.cc into
it
2015-12-01 14:22:38 +10:00
254c1e2c91 faderport: correctly restore mix/proj/trns state from XML 2015-11-30 20:54:23 -05:00
41d0336f80 faderport: cleanup 2015-11-30 20:34:51 -05:00
f1dd53e37a faderport: add some "curated" actions for mix, proj and trns; make new bindings use release, not press 2015-11-30 15:05:30 -05:00
b8ed62453f faderport: restore button actions, and correctly indicate current action in GUI 2015-11-30 13:50:33 -05:00
682e152aaf faderport: some code cleanups, add timing for button presses, add new comboboxes to GUI to allow more button programming, save button state 2015-11-30 12:51:18 -05:00
149f6795bb no-op: add comment to faderport button ID definitions 2015-11-29 11:58:36 -05:00
73d1de3b75 NOOP, remove trailing whitespace, replace tabs in python scripts 2015-11-29 17:54:31 +01:00
c6dfb947eb faderport: add two functioning actions for the mix button 2015-11-29 11:43:14 -05:00
6380403dad basic structure for Faderport GUI
Not fully functional (or sensible yet) but the pieces are all there
2015-11-29 11:33:23 -05:00
7a5cea45e1 fix seamless midi-looping - fixes #5438
well, now...
 - Midi-Ports have a midi-buffer.
 - Midi-Tracks have a midi-buffer.
 - Midi-tracks have a diskstream.
 - Midi-diskstream has a midi-ring-buffer.
 - Midi-tracks have a delivery
 - The delivery can get a reference to the actual backend-ports
 - The delivery calls the Midi-Port's flush() buffer to send out queued events
   at the end of a cycle

all clear ? :)

 - when splitting the process-cycle: only the Ports are informed.
   all other objects see a "normal" short process cycle starting at "0".

The offset needs to be applied early on, so that internally routed buffers
push the event at the correct time when combining the buffer with
immediate and async events.

Luckily Port::port_offset() is a static member, available to all, objects,
which allows to bridge the conceptual gap between the diskstream and
the delivery.

There's a snag:
When there's a note-on directly at the beginning of the loop it coincides
with the panic message sent when looping.
The panic comes before note events, so it *should* be good.

Also the final note-offs (state tracker end of loop/region) are sent
1 sample too early (smells like an off-by-one), and are hence dropped.
(no matter we send a panic right after it).
It should really be at the same time, just before the panic.
2015-11-29 01:27:18 +01:00
c4f8a69526 don't clear MIDI buffers during split-cycles
if dst_offset is zero, MidiBuffer::read_from() clears the buffer.
copy_to_outputs() eventually calls MidiBuffer::read_from().
2015-11-28 23:40:03 +01:00
5bdab24746 add some midi-debug printf() to the dummy backend 2015-11-28 22:54:00 +01:00
1fd04baeb3 fix typo in panic message, honor event-time. 2015-11-28 22:34:54 +01:00
aa8d512ee7 midi-panic needs to honor split-cycle buffer offset,
otherwise panic message will be delivered out-of-order when
seamlessly looping.
2015-11-28 22:33:43 +01:00
03ed56b247 filling the midi playback buffer is a private operation. 2015-11-28 22:30:54 +01:00