40aa4cfe06
Modify our MSVC projects to build liblua as a DLL rather than a static lib
2016-04-04 16:40:20 +01:00
5dbfca9953
Fix build on El Capitan
...
In which Apple once again changed the name of the MIDI kit from CoreMidi to CoreMIDI, something
they did for the Lion release of OS X
2016-03-01 12:20:59 -05:00
ba78359129
prepare for update to waf 1.8
...
uselib is no longer implicit (inherited by .use). This is still incomplete,
some uselibs for non-linux variants may be missing.
bld.is_defined("HAVE_XXX") also no longer works and will have to be
changed (I think to bld.env["HAVE_XXX"]) in countless places.
2016-02-28 21:16:44 +01:00
d3634c5779
Accommodate 'lua' search paths in various projects where they're needed
...
(i.e. so that MSVC can find header files from lua).
2016-02-27 16:29:55 +00:00
9472200727
fix hang at exit (after freewheeling) with PA-nonblocking backend
2016-02-27 00:50:02 +01:00
fcf757139f
Accommodate newly introduced source(s) in our MSVC project (portaudio_backend)
2016-02-12 12:31:23 +00:00
148f2ab8e5
Add debugging output for WinMME midi device names
2016-02-11 12:15:07 +10:00
1499cd8670
Only build one version of the Portaudio backend that supports both blocking and callback API
2016-02-11 12:15:07 +10:00
830db39585
Implement new AudioBackend API in PA backend to choose between callback and blocking API
2016-02-11 12:15:07 +10:00
d50a821374
Add a missing include from portaudio WINMME source file
...
Apparently this is now required by my version of gcc/mingw
2016-02-11 12:15:07 +10:00
b2cf028fcb
Implement MIDI device enumeration and latency offset/calibration in portaudio backend
2016-02-11 12:15:07 +10:00
90c4985604
remove wavesaudio backend
2016-01-12 08:06:47 -05:00
cf6a3afcaa
name ALSA midi ports after device
2016-01-11 11:46:10 +01:00
0fc06b4a1b
fix warning message typo
2016-01-11 11:45:44 +01:00
a9995c59cc
coremidi: do not clear port buffer for every call to parse_events()
...
This was limiting the data flow to 1 MIDI event per process cycle.
2016-01-10 17:46:36 -05:00
36fb8c44c1
add explanatory comment regarding coremidi data flow
2016-01-09 14:45:38 -05:00
4a99727dea
coremidi: be sure to mark _event._pending false after queueing, so that it doesn't get queued up again later
2016-01-09 13:53:17 -05:00
ef45a6c84b
coreaudio: remove debug output
2016-01-08 09:43:33 -05:00
63cbe11c67
coreaudio: remove debug output
2016-01-08 09:39:55 -05:00
cae2f82278
NOOP: fix whitespace/indendentation in coreaudio backend code
2016-01-08 09:39:00 -05:00
3d5e345800
coreaudio: reset MIDI parsers when entering and leaving freewheeling
2016-01-08 09:23:05 -05:00
9d3cbe44a3
coreaudio: correctly clear MIDI port buffers
2016-01-07 18:11:45 -05:00
c615e26f3c
coreaudio: factor out common code for stuffing MIDI data into a CoreMidiPort buffer
2016-01-07 18:11:45 -05:00
6e71d3b445
coreaudio: per-port parser for incoming MIDI, copied from ALSA Raw MIDI support
2016-01-07 16:42:34 -05:00
b7e06693be
nitpick
2016-01-07 20:44:59 +01:00
d735145969
fix missing symbol on OS X
2016-01-07 10:40:08 -05:00
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
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
fe0802169c
standardize port-names
2015-12-08 15:32:05 +01:00
1372407f82
fix previous commit.
2015-12-08 00:52:06 +01:00
8781004ca2
portaudio connect & graph-changed callbacks (untested)
2015-12-08 00:36:29 +01:00
7ad8ad8823
JACK: expose --nperiods option
2015-12-05 13:56:18 +01:00
4dc49ee4fa
fix -Wreorder
2015-12-05 02:42:58 +01:00
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
bfd2cbaa3f
ALSA: allow to dynamically add/remove midi devices & update their latency.
2015-12-04 22:19:47 +01:00
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
990fd75c5f
implement ALSA period/cycle setting
2015-12-04 10:16:19 +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
73d1de3b75
NOOP, remove trailing whitespace, replace tabs in python scripts
2015-11-29 17:54:31 +01:00
5bdab24746
add some midi-debug printf() to the dummy backend
2015-11-28 22:54:00 +01:00
07b2518979
Fix windows build when using pthreads-win32 library
2015-11-19 20:54:38 +10:00
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
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
4b25c80cb9
fix edge-case in Dummy-backend random number generator initialization
2015-11-12 09:49:40 -06:00
661ffe7576
fix JACK/windows compilation
2015-10-28 14:11:17 +01:00
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
7c58b4de5f
coreaudio: reset freewheeling after export
...
fixes lively with session-fadeout
2015-10-10 02:42:13 +02:00
5fd4ee3ef1
Fix handling of Sysex messages with WinMME midi driver
2015-10-07 21:48:56 +10:00
2af78143c1
more debugging for MIDI input via WinMME
2015-10-06 12:42:01 -04:00
89156be67a
add more debugging to portaudio/MME MIDI backend
2015-10-06 11:01:58 -04:00
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
34d9b2148e
Remove an unnecessary boolean argument in jack utils
...
Specify latency in JackCommandLineOptions instead
2015-10-06 13:29:57 +10:00
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
eb4c9b022a
try enabling windows MME MIDI sysex support
2015-10-05 12:24:15 -04:00
22b07e0233
NOOP, remove trailing tabs/whitespace.
2015-10-05 16:17:49 +02:00
4178db5f63
globally remove all trailing whitespace from .cpp and .hpp files missed by previous commit
2015-10-04 15:11:15 -04:00
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
87c36aba60
use new error-messages
2015-10-02 17:51:17 +02:00
3f99c44ff6
improve CoreAudio error reporting
2015-10-02 17:28:28 +02:00
6b4e5f1d47
ALSA: update error-codes for HW initialization.
2015-10-01 12:42:05 +02:00
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
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
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
bd5b97e964
Dummy: add a CC only test-sequence
2015-09-19 19:00:43 +02:00
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
1691e965a5
update reported DSP load for ALSA & Dummy
2015-09-16 18:24:57 +02:00
1c43383e92
CoreAudio: use libardour provided DSP load calc.
2015-09-16 18:24:57 +02:00
faa38a0d29
Use ARDOUR::DSPLoadCalculator in DummyBackend
2015-09-16 11:22:17 +10:00
305f1d73bb
Use PBD::get_microseconds() from pbd/windows_timer_utils.h in DummyBackend
2015-09-16 11:22:17 +10:00
782dbf0e3f
Set max time of DSPLoadCalculator in every cycle in ALSA backend
2015-09-16 11:22:17 +10:00
ccfe3e1015
Use ARDOUR::DSPLoadCalculator in ALSA Backend
2015-09-16 11:22:17 +10:00
d007fc05b1
De/Initialize MMCSS on windows in PBD::init/cleanup instead of in PA Backend
2015-09-16 11:22:16 +10:00
091c4ed3a7
Move Windows MMCSS related utility functions into libpbd
2015-09-16 11:22:16 +10:00
d76fe212b7
Move MMCSS related utility functions into PBD namespace
...
In preparation for moving to libpbd
2015-09-16 11:22:16 +10:00
3f5c01e4eb
Move Windows timer utility functions from PA backend into libpbd
2015-09-16 11:22:16 +10:00
4ffe8ffc0f
Put Windows timer functions into PBD namespace in preparation for moving them to libpbd
...
Add functions for get/set the Multimedia timer resolution, although we are
really only interested in the minimum, this will facilitate testing
Put timer utility functions inside nested namespaces as they are platform
specific
2015-09-16 11:22:16 +10:00
4330db1aa7
Update timestamp types in CycleTimer class to be signed
2015-09-16 11:22:16 +10:00
b2a7393553
Change types in DSPLoadCalculator to signed integer after change in utils::get_microsecond
2015-09-16 11:22:16 +10:00
a974659504
Check return value of windows timer functions and handle errors
...
Change return type of utils::get_microseconds to signed int and return -1 when
failing to read timer
2015-09-16 11:22:16 +10:00
ec06f2c49f
spelling error fixes (notably "overriden" => "overidden") from IOhannes m zmölnig
2015-09-11 09:23:43 -04:00
d2e083397c
Add support for newly introduced class ARDOUR::DSPLoadCalculator (when building with MSVC)
2015-09-10 10:22:38 +01:00
28803fface
Remove DSPLoadCalculator class in portaudio backend source
2015-09-10 12:12:56 +10:00
c2e5bdedff
Use ARDOUR::DSPLoadCalculator in PortAudioBackend
2015-09-10 12:12:56 +10:00
d11b15fbca
dummy, allow 8k buffer-size.
2015-09-08 15:14:02 +02:00
788234e317
fix dummy-backend driver state
...
When loading previous state, set_driver() is called before
enumerate_drivers().
The available driver list must be available early on.
2015-09-06 10:42:29 +02:00
3fc5bf617a
mode dummy speeds
2015-09-06 00:46:05 +02:00
4ef62a0d6d
add dummy-backend speed-selection
2015-09-06 00:33:24 +02:00
7e589dcda2
Add some newly introduced sources to our MSVC project (portaudio_backend)
2015-09-05 18:04:29 +01:00
d6df63ed91
Dummy-Backend: special case unit-test
2015-09-05 01:15:28 +02:00
fa32fa1abe
replace "None" with DeviceNone in ALSA/Coreaudio
...
TODO: separate MidiSystemNone
2015-09-02 13:33:40 +02:00
7521028831
Add debug output for errors when setting MMCSS thread characteristics
2015-09-02 12:07:59 +10:00
3618689103
Use MMCSS utility functions in PortaudioBackend
2015-09-02 12:07:59 +10:00
b288a40220
Add utility functions in PortaudioBackend for re/setting MMCSS thread characteristics
2015-09-02 12:07:59 +10:00
77ce989dfa
Pass input and output audio buffers into PortaudioBackend blocking process function
...
This makes it possible to reuse the method for callback based processing
2015-09-02 12:07:59 +10:00
a6fb71022f
Add audio_utils.h header in PortaudioBackend for de/interleaving audio data
2015-09-02 12:07:59 +10:00
23a490c906
Add two utility methods to abstract PortAudioBackend state
...
These may change as support for callback API is added
2015-09-02 12:07:58 +10:00
f143d76523
Extract MIDI input/output processing in PortAudioBackend into new methods
2015-09-02 12:07:58 +10:00
a65b1ddedc
Add a DSPLoadCalculator class to the PortAudioBackend for DSP load calculation
...
The class uses the same algorithm as in the coreaudio and alsa backends and
should probably go into libardour at some point
2015-09-02 12:07:58 +10:00
cb7bac5599
Fix include style of system header
2015-09-02 12:07:58 +10:00
5448c229d9
Extract main processing section of PortAudioBackend into new method
2015-09-02 12:07:58 +10:00
f27d8e1e23
Extract freewheel processing in PortAudioBackend into new method
2015-09-02 12:07:58 +10:00
cf81caa798
Don't update unused dsp timer variable in freewheel process in PortaudioBackend
2015-09-02 12:07:58 +10:00
7b23f80b03
Refactor port change handling part of PA Backend process function into new method
2015-09-02 12:07:58 +10:00
684701427e
Rename variables in PortaudioBackend in preparation for using PA callback API
2015-09-02 12:07:58 +10:00
56b5e04c3b
Fix copy and paste error in debug output message in WINMME Midi Output
2015-09-02 12:07:58 +10:00
ac5eac471d
Signal WinMME Midi output thread so the thread wakes up and terminates properly
2015-09-02 12:07:15 +10:00
d520b9c878
Stop WINMME midi driver/devices when PortAudio backend is stopped
2015-09-02 12:07:15 +10:00
2dbdaaa8f5
Refactor part of PortAudioBackend::_start/stop into new methods
2015-09-02 12:07:15 +10:00
f58282844d
Don't add "None" devices for ASIO driver in PortaudioBackend
2015-09-02 12:07:15 +10:00
0396df963f
Implement new AudioBackend API for force updating devices in PortaudioBackend
2015-09-02 12:07:15 +10:00
585930f058
Update devices in PortaudioBackend when setting the driver
...
Reinitialize portaudio to pick up changes in devices and ASIO buffer settings
2015-09-02 12:07:15 +10:00
8c2b9dac59
Rename several methods in PortAudioIO class
...
return ErrorCode's and handle them where necessary
2015-09-02 12:07:15 +10:00
82f84d6203
Refactor part of PortAudioIO::pcm_setup into new method
2015-09-02 12:07:15 +10:00
1cb36108bb
Change the functions related to initializing the Portaudio library
2015-09-02 12:07:15 +10:00
3b71674eee
Remove unused and cryptic _state member from PortAudioIO
2015-09-02 12:07:15 +10:00
fd0b54f459
Use PortAudioIO::ErrorCode as return value from PortAudioIO::pcm_setup
2015-09-02 12:07:15 +10:00
4e75220661
Define some error codes in PortAudioIO class
2015-09-02 12:07:15 +10:00
e42f9d649b
Refactor parts of PortAudioIO class into new method
2015-09-02 12:07:15 +10:00
c857008b93
Refactor part of PortAudioIO::pcm_setup into 2 new methods
2015-09-02 12:07:14 +10:00
41211c984c
Make two private methods in PortAudioIO const
2015-09-02 12:07:14 +10:00
8e0e3fcdee
Refactor part of PortAudioIO::pcm_setup into new method
2015-09-02 12:07:14 +10:00
58cfd00e5a
Add utility method to PortAudioIO class to remove goto from pcm_setup
2015-09-02 12:07:14 +10:00
d6f7066e80
Remove apple specific fixes from PortaudioBackend now that it is windows only
2015-09-02 12:07:14 +10:00
dd93aec029
Don't query supported sample rates for ASIO devices in PortaudioBackend
...
There has been reports this can take several minutes on some devices so just
return the default rates(and fail to open the device when a SR is specified
that isn't supported)
2015-09-02 12:07:14 +10:00
519f97b91d
Use two private utility functions in PortaudioIO class for default SR's and buffer sizes
2015-09-02 12:07:14 +10:00
cc7e97f296
Reindent and reformat switch statements in PortaudioBackend
...
This is more readable and consistent with the rest of the source files
2015-09-02 12:07:14 +10:00
71a1e9e90d
Use translated error messages in PortaudioBackend when SR or i/o channel counts don't match requested
...
These errors are probably preventable but currently they do occur so at least
tell the user about them(and hope they check the error log window)
2015-09-02 12:07:14 +10:00
ba4f685d2d
Use a translated error message in PortaudioBackend when unable to open audio device
2015-09-02 12:07:14 +10:00
432e0073f6
Convert some error output to debug output in PortaudioBackend
2015-09-02 12:07:14 +10:00
9185978d2f
Use translated error message in PortaudioBackend with failing to aquire RT perms
2015-09-02 12:07:14 +10:00
9d67d22e70
Use debug output rather than sending errors for developer relevant port errors
...
Most of these are not errors that are intended for the user, they are only
intended for developers so don't send them to PBD::error. The errors that may
be relevant to users should be handled in libardour or the GUI in response to
return values
2015-09-02 12:07:14 +10:00
a272c50597
Move AudioBackend related debug bits into libardour
...
I put these in libpbd as that is where the debug bits are for the Waves backend
but I think it makes more sense for them to be in libardour as that is where
the AudioBackend class is defined
I left the Waves debug bits in libpbd for now.
2015-09-02 12:07:14 +10:00
201d91aedd
Use PortaudioIO::get_current_host_api_type utility function in PortaudioIO class
2015-09-02 12:07:14 +10:00
c6c0654b5a
Add Utility function to get host API type in PortaudioIO class
2015-09-02 12:07:14 +10:00
08d6dd153e
Add "None" devices to PortaudioBackend
...
This allows for disabling either input or output, but not both
2015-09-02 12:07:14 +10:00
440e6cd591
Use AudioBackend standard device names for "Default" in PortaudioBackend
2015-09-02 12:07:14 +10:00
3a3d811e82
Use StandardDevices enum in PortaudioIO for default devices
...
This just makes it a bit easier to read through the code rather than using
magic numbers.
2015-09-02 12:07:14 +10:00
5a5226dded
Add StandardDevice enum to portaudio_io.h header
2015-09-02 12:07:14 +10:00
7537a992b3
Use translated error message in PortaudioBackend for audio device I/O error
2015-09-02 12:07:14 +10:00
07f3dae936
Use translated error message for failing to set thread priorities in PortaudioBackend
2015-09-02 12:07:14 +10:00
ee77a7a883
Use AudioBackend::get_standard_device_name for "None" midi device in PortaudioBackend
2015-09-02 12:07:14 +10:00
451e35002c
Use pretty name infrastructure to display MIDI device name
2015-09-02 12:07:14 +10:00
b6f51b2497
coreaudio: re-classify port-errors as warnings
2015-08-28 15:41:33 +02:00
dace872af8
fix Dummy backend API. Already_configured means "externally".
2015-08-14 16:26:44 +02:00
548340eb05
remove -Woverload-virtual ambiguity (from 1d3690d
)
...
this breaks compilation in engine_dialog.cc
2015-08-11 23:50:56 +02:00
679903fd22
fix jack startup on OSX (w/midi)
2015-08-11 19:43:57 +02:00