13
0
Commit Graph

714 Commits

Author SHA1 Message Date
2b7c585dba Update backend API: read-only MIDI input buffers 2017-08-05 15:36:36 +02:00
c125cd2647 Reduce DSP thread priority (main-i/o > midi i/o > computation) 2017-08-05 01:28:11 +02:00
38c5e9de6d CoreAudio: Set MachThread RT Priority 2017-08-04 06:25:23 +02:00
4ec72b5c76 DummyBackend: allow changing SPP 2017-08-04 03:53:51 +02:00
6b5d374352 Some more assert() debugging 2017-08-03 23:46:05 +02:00
660096b037 Fix typo 2017-07-31 19:54:23 +02:00
80ecac672f Modify our MSVC project to add libltc as a dependency of 'dummy_backend' (which now needs to link to it) 2017-07-29 10:46:53 +01:00
7f03c9a664 Fix an ambiguous call to 'floor()'
MSVC complains, so let's specify which override we want.
2017-07-29 10:44:00 +01:00
7b7cc9ea6d Add a LTC generator to the dummy backend 2017-07-28 17:47:36 +02:00
e511985ad9 Report Dummy as not available if not running
This fixes an issue with port-connections being polled from the backend
even when it's not running.
2017-06-25 20:53:47 +02:00
0d668b9beb ALSA backend: always register ports with systemic latency
and allow re-start to un/set reporting latency.
2017-04-27 20:59:15 +02:00
d7d86a99d2 Re-nice ALSA MIDI port names 2017-04-21 10:43:22 +02:00
bf5864aaca Use PBD::to_string() from pbd/string_convert.h in JACK utils
Use pbd/string_convert.h API instead of std::ostream for numeric formatting to
remain locale independent and not have to use a LocaleGuard.
2017-04-19 09:37:00 +10:00
6968c9f909 Drain ALSA raw-midi buffers after 64 bytes
Very long sequence of *concurrent* events may otherwise be truncated
because the backend requests a buffer-size of 64 bytes via
snd_rawmidi_params_set_buffer_size().
2017-04-09 05:03:19 +02:00
f9db9bf5fd Retain order of concurrent MIDI events
This fixes an issue with FaderPort8 (and maybe other surfaces or synths).
2017-04-08 23:43:50 +02:00
9a45e0fde9 Add a missing #define to our MSVC project (portaudio_backend) 2017-02-20 09:16:51 +00:00
9bf4f339b9 revert 335debfa for the PA backend
The same device may have different names for input + output
2016-11-27 00:42:08 +01:00
335debfa2f Add API to enforce valid device selection. 2016-11-26 15:31:21 +01:00
d10913e2de Fix intermittent hang when stopping PortaudioBackend
This issue is not always reproducible but when it does occur it happens
somewhat consistently on both 32bit and 64bit builds(Tested on Windows 7).

The midiOutReset call does not return (or it takes so long that it might as
well be indefinite) and as it is not strictly necessary just remove it.

Resolves: http://tracker.ardour.org/view.php?id=7095
2016-11-15 09:36:52 +10:00
43bd7f5db1 fix const-cast 2016-11-12 16:20:43 +01:00
nick_m
33e95a1577 rename Tempo _beats_per_minute to _note_types_per_minute, provide pulse helpers.
- adds quarter_notes_per_minute(), note_divisions_per_minute (double)
	  pulses_per_minute() and frames_per_quarter_note()

	- this should be a no-op except for the use of tempo by
	  the vst callback which definitely uses quarter notes per minute.

	- the XML node for TempoSection named 'beats-per-minute'
	  has been renamed.
2016-11-11 03:37:08 +11:00
8b5fad0cf9 Use better debug output in PortaudioBackend
When failing to open audio stream in callback mode
2016-11-10 15:23:43 +10:00
56711b99c9 Work around OSX MIDI devices that send no timestamps 2016-10-19 19:45:53 +02:00
d29d93f4cd fix retrieval of port properties (metadata) when the value has no type 2016-10-18 16:46:33 -04:00
69cbcb84a6 spelling corrections from Jaromír Mikeš <mira.mikes@seznam.cz>
Corresponds to https://anonscm.debian.org/cgit/pkg-multimedia/ardour.git/tree/debian/patches/0070-spelling.patch
2016-10-17 17:57:39 -04:00
Kamil Rytarowski
1ac7dad84e NetBSD ships with pollts(2) similar to Linux specific ppoll() 2016-10-04 22:17:49 +02:00
Kamil Rytarowski
f69776e5b7 NetBSD ships with <sys/endian.h> not <endian.h> 2016-10-04 22:17:12 +02:00
0ff233d234 Update our MSVC project files to generate the most recent Ardour session file format (ver 5) rather than the older v3 format 2016-08-30 07:15:00 +01:00
355fa64c79 fix Coreaudio Aggregate for separate devices with identical names 2016-08-28 13:44:30 +02:00
957f59f351 print a warning if CoreAudio falls back to non realtime priority 2016-08-22 17:38:45 +02:00
cdcccd8101 handle edge-case where jack-meta-data may be NULL, but the call succeeds
this fixes #6968
2016-08-19 14:38:37 +02:00
a76607486c kilo is a lower-case 'k' 2016-07-24 16:54:08 +02:00
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
8444837b71 properly sort port-names 2016-07-14 16:52:43 +02:00
b65cb37d24 add a MTC/sysex test sequence 2016-07-11 16:58:53 +02:00
ac923be7af fix port-sort order for good.
TODO find out how to make std::set::find() work with custom sort order,
as std::find may only be O(N) and not O(log (N)).
2016-07-08 21:37:42 +02:00
f84a7605d8 pre-sort port-names 2016-07-08 20:44:21 +02:00
0ae634cb1e fix jack_port_rename() detection 2016-07-01 19:08:52 +02:00
60200bf923 bump max number of possible ALSA backend channels 2016-05-29 20:36:32 +02:00
nick_m
34c9ac9dd7 Tempo ramps - rename bbt_time() -> bbt_at_frame(), frame_time() -> frame_at_bbt() 2016-05-27 23:38:17 +10:00
nick_m
7fc3b0c34c Initial stab at tempo ramps.
Replaces the list of points in TempoMap with TempoSection functions, which
compute tempo-at or tick-at time relative to tempo section start.
TempoMap consults them additively to determine things like bbt_time(),
frame_time() get_grid() etc.
This has a marked effect on scrolling speed along with the code simplification
in the places it has been attempted.

Several things are broken here.
Currently every ramp except the last one is an exponential ramp. this may
be simple to fix :).
Mouse-over midi grid doesn't match mouse click grid. should also be simple.

Many things seem to work, but their accuracy should be in question until
each area has been addressed.
2016-05-27 23:38:09 +10:00
94187e66a2 add a test-sequence for polyphonic pressure 2016-05-27 12:12:00 +02:00
afc1186759 NO-OP indent 2016-05-22 19:36:54 +02:00
39ba60aaef Make sure MSVC knows which version of 'floor()' we want 2016-05-22 15:53:16 +01:00
9ad096b611 Dummy Backend evolution
- pretty port-names for Dummy generators: show frequency
- add 1/3 Octave spaced sine-wave generator
2016-05-21 22:38:39 +02:00
b0200b23f2 Accommodate the fact that 'msvc_resources.rc.in' got moved to a new path 2016-05-21 10:33:18 +01:00
d8ac5eddf7 add missing include 2016-05-06 21:25:21 +02:00
514da9881d convert WinMME Device names to UTF-8 2016-05-06 20:59:24 +02:00
dc1a2fbca7 MSVC won't compile 'const float _demolition[]' because it uses 'divide by zero' while initializing
Hopefully we can use INFINITY and NAN for the relevant initializers ?
2016-05-03 17:30:58 +01:00
69bd02bd25 remove skeleton backend (superseded by portaudio) 2016-04-29 16:43:09 +02:00
69f99ee184 I wanna be nasty, I wanna be cruel,..
Somme disastrous signal generators for QA.
2016-04-29 16:10:09 +02:00
43e620504a port 93eac8b0 to ALSA and CoreAudio 2016-04-26 18:19:48 +02:00
7f8c7d8647 #define HAVE_JACK_PORT_RENAME when building with MSVC
This means needing to build against libjack v1.9.11 (or later) although that's probably not a bad thing.
2016-04-26 15:02:20 +01:00
93eac8b068 Use 'const_iterator' to prevent MSVC from complaining 2016-04-26 14:58:16 +01:00
2169de3975 keep portmap & portindex in sync when renaming ports
Fixes crash on session re-load (introduced in 800c8182 and fde99e68)
2016-04-26 02:26:20 +02:00
fde99e68f7 ..and CoreAudio. 2016-04-24 20:45:50 +02:00
800c8182c6 O(log(n)) port and connection lookup for ALSA 2016-04-24 20:45:37 +02:00
ce052ba20a now with C++98 compat 2016-04-24 18:34:31 +02:00
d1874d4685 optimize port lookup, adding/removing/reconnecting routes
xxxAudioBackend::connected_to() is called O(N^2) when building the graph.
Mitigate this by using an O(log(N)) lookup.

This duplicates the storage (both set and map and both are kept in sync.
Changing this to a boost:bidirectional might be nice, before updating
other backends.
2016-04-24 18:26:39 +02:00
9840a11537 implement metadata-set for remaining backends 2016-04-18 00:35:51 +02:00
10140a8e68 implement pretty-name set-property for ALSA and Dummy 2016-04-17 18:22:21 +02:00
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