Commit graph

579 commits

Author SHA1 Message Date
Robin Gareus
b7e06693be nitpick 2016-01-07 20:44:59 +01:00
Paul Davis
d735145969 fix missing symbol on OS X 2016-01-07 10:40:08 -05:00
John Emmas
8649c1759e #define BACKEND_NAME when building with MSVC (portaudio_backend)
N.B. We aren't yet building the blocking PortAudio backend but that can be added quite easily, if needed.
2015-12-23 15:09:18 +00:00
Robin Gareus
b67892833b ship both blocking and callback PA backends (for debug purposes)
this just works (no symbol conflicts)
2015-12-21 22:12:15 +01:00
Robin Gareus
fe0802169c standardize port-names 2015-12-08 15:32:05 +01:00
Robin Gareus
1372407f82 fix previous commit. 2015-12-08 00:52:06 +01:00
Robin Gareus
8781004ca2 portaudio connect & graph-changed callbacks (untested) 2015-12-08 00:36:29 +01:00
Robin Gareus
7ad8ad8823 JACK: expose --nperiods option 2015-12-05 13:56:18 +01:00
Robin Gareus
4dc49ee4fa fix -Wreorder 2015-12-05 02:42:58 +01:00
Robin Gareus
a6f27f09a7 update ALSA backend: separate playback/capture periods
fixed: 2 for capture,  configurable 2,3 for playback.
2015-12-05 01:53:13 +01:00
Robin Gareus
bfd2cbaa3f ALSA: allow to dynamically add/remove midi devices & update their latency. 2015-12-04 22:19:47 +01:00
Robin Gareus
ac075560bd ALSA: allow to measure & set systemic audio latency w/o restart.
(MIDI needs a bit more work)
2015-12-04 17:45:49 +01:00
Robin Gareus
990fd75c5f implement ALSA period/cycle setting 2015-12-04 10:16:19 +01:00
Tim Mayberry
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
Tim Mayberry
b4fb1d610b Use portaudio callback API by default in portaudio backend 2015-12-02 10:24:07 +10:00
Tim Mayberry
5f267f92bf Rename member variables in Portaudio Backend for consistency 2015-12-02 10:24:07 +10:00
Tim Mayberry
29feb914b9 Rename blocking process function in portaudio backend 2015-12-02 10:24:06 +10:00
Tim Mayberry
3e6b28daca Rename blocking thread function in portaudio backend 2015-12-02 10:24:05 +10:00
Robin Gareus
73d1de3b75 NOOP, remove trailing whitespace, replace tabs in python scripts 2015-11-29 17:54:31 +01:00
Robin Gareus
5bdab24746 add some midi-debug printf() to the dummy backend 2015-11-28 22:54:00 +01:00
Tim Mayberry
07b2518979 Fix windows build when using pthreads-win32 library 2015-11-19 20:54:38 +10:00
Tim Mayberry
ac301b998a Use a range of values for ASIO buffer sizes if provided by driver
This has been tested on four devices:

- A RME HDSP Multiface
- A Yamaha AG06
- A Focusrite 2i2
- A built-in soundcard running ASIO4ALL

The HDSP and the AG06 only return one buffer size when queried so the preferred
size is used as before.

The Focusrite returns a min corresponding to the position of the slider in the
control dialog and the max is 1024. The granularity is 1 so this means that the
number of values needs to be reduced for the current UI design with a combo
box so the granularity is increased until there are around 8-9 buffer sizes to
choose from evenly spaced between min and max(but we could easily change this
if the UI changes etc).

The ASIO4ALL driver returns a min of 64 and a max of 2048 and a granularity of
8. So where the minimum buffer size and granularity is a power of 2 use only
buffer sizes that are power of 2.

If the driver returns different values for min and max it is not currently
possible to indicate which is the driver preferred value. A checkbox or other
UI element could be added to the AudioSetup dialog to only use the preferred
value but that is more work and perhaps not necessary.
2015-11-19 10:23:26 +10:00
Tim Mayberry
f1b336b01e Add support for callback API to portaudio backend but keep blocking API as default
Don't use the callback API for now until further and wider testing.
2015-11-19 10:23:26 +10:00
Robin Gareus
4b25c80cb9 fix edge-case in Dummy-backend random number generator initialization 2015-11-12 09:49:40 -06:00
Robin Gareus
661ffe7576 fix JACK/windows compilation 2015-10-28 14:11:17 +01:00
Robin Gareus
997f47360d use weak-jack's jack_port_rename wrapper
This avoids "[ERROR]: JACK: jack_port_set_name: deprecated".

if libjack does not have jack_port_rename(), weak_libjack.def provides
a fallback using jack_port_set_name().
2015-10-28 01:21:24 +01:00
Robin Gareus
7c58b4de5f coreaudio: reset freewheeling after export
fixes lively with session-fadeout
2015-10-10 02:42:13 +02:00
Tim Mayberry
5fd4ee3ef1 Fix handling of Sysex messages with WinMME midi driver 2015-10-07 21:48:56 +10:00
Paul Davis
2af78143c1 more debugging for MIDI input via WinMME 2015-10-06 12:42:01 -04:00
Paul Davis
89156be67a add more debugging to portaudio/MME MIDI backend 2015-10-06 11:01:58 -04:00
Tim Mayberry
4ebc6ef0b4 Fix WinMME midi driver shutdown with sysex enabled
midiInReset triggers the sysex callback to tell the application that it has
finished with the buffer. Calling midiInAddBuffer results in an infinite loop
so just return during shutdown.
2015-10-06 13:29:57 +10:00
Tim Mayberry
34d9b2148e Remove an unnecessary boolean argument in jack utils
Specify latency in JackCommandLineOptions instead
2015-10-06 13:29:57 +10:00
Robin Gareus
97bd6db2b7 remove i/ofstream from libardour
except: 
 * audio-unit (ifstream is known to work on OSX)
 * evoral curve algorithm debugger
 * cycle-timer debug code
 * export_handler's CDMarker  -> TODO
2015-10-05 22:15:17 +02:00
Paul Davis
eb4c9b022a try enabling windows MME MIDI sysex support 2015-10-05 12:24:15 -04:00
Robin Gareus
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Paul Davis
4178db5f63 globally remove all trailing whitespace from .cpp and .hpp files missed by previous commit 2015-10-04 15:11:15 -04:00
Paul Davis
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
Robin Gareus
87c36aba60 use new error-messages 2015-10-02 17:51:17 +02:00
Robin Gareus
3f99c44ff6 improve CoreAudio error reporting 2015-10-02 17:28:28 +02:00
Robin Gareus
6b4e5f1d47 ALSA: update error-codes for HW initialization. 2015-10-01 12:42:05 +02:00
Tim Mayberry
dcf327f86a Return meaningful error codes when ALSA backend fails to start
Unfortunately it seems that in zita-alsa-pcmi doesn't set state() correctly in
some cases. Setting an invalid SR doesn't display the correct error message,
first guess would be that set_hwpar is failing and state() is not
representative of the actual error.
2015-10-01 09:10:19 +10:00
Tim Mayberry
aa713fcd83 Return meaningful error codes when PortaudioBackend fails to start
So they can be used to give a contextual error message in the GUI
2015-10-01 09:10:19 +10:00
Tim Mayberry
f178152114 Use portaudio error codes in the PortaudioIO class.
Having error codes defined in PortaudioIO means it is not dependent on the
ErrorCodes in AudioBackend but it doesn't really make sense to have another
set, so just use the PA ones until they become insufficient.
2015-10-01 09:10:19 +10:00
Robin Gareus
bd5b97e964 Dummy: add a CC only test-sequence 2015-09-19 19:00:43 +02:00
John Emmas
44ea59495c MSVC projects - accommodate some modules that recently got moved or removed
(mostly these got moved out of the PortAudio backend and into libpbd)
2015-09-18 10:25:11 +01:00
Robin Gareus
1691e965a5 update reported DSP load for ALSA & Dummy 2015-09-16 18:24:57 +02:00
Robin Gareus
1c43383e92 CoreAudio: use libardour provided DSP load calc. 2015-09-16 18:24:57 +02:00
Tim Mayberry
faa38a0d29 Use ARDOUR::DSPLoadCalculator in DummyBackend 2015-09-16 11:22:17 +10:00
Tim Mayberry
305f1d73bb Use PBD::get_microseconds() from pbd/windows_timer_utils.h in DummyBackend 2015-09-16 11:22:17 +10:00
Tim Mayberry
782dbf0e3f Set max time of DSPLoadCalculator in every cycle in ALSA backend 2015-09-16 11:22:17 +10:00