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
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