summaryrefslogtreecommitdiff
path: root/libs/ardour/audioengine.cc
AgeCommit message (Collapse)Author
2016-12-03Fix warningsDavid Robillard
2016-11-26Add [hidden] option to list "Dummy" backend with optmized bundlesRobin Gareus
2016-10-20infrastructure for save/restore of MIDI port user-provided informationPaul Davis
2016-10-19NOOP: whitespacing tweakPaul Davis
2016-10-17convert cerr<< to DEBUG_TRACEPaul Davis
2016-10-13new scheme for managing port deletionPaul Davis
shared_ptr<Port> now uses a deleter functor which pushes Port* to a lock-free FIFO so that the Port is always deleted (and thus unregistered with the PortEngine/backend) in a safe context w.r.t. various callbacks in the host. Currently the auto_connect_thread in Session has been tasked with doing these deletions.
2016-10-11Hide Dummy backend from optimized release buildsRobin Gareus
Prepare to bundle session-utils with releases. Session-utils use libardour which needs an Engine. "Dummy" is the only engine that always works
2016-09-13Fixes 7004 - Ardour crash on Just Quit when AudioEngine is stopped. ↵Nathan Stewart
AudioEngine::stop() if running() is not true and _backend->stop() is true, mutex was being unlocked without being locked.
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-05-25fix timecode update after locate.Robin Gareus
Various session rt-events set "_send_timecode_update" to true, but at the same time queue post-transport-work. The timecode-update is generated, but due to pending transport work session->silent() is true and the timecode was never sent.
2016-04-24plug some memory leaks in libardourRobin Gareus
2016-01-14ensure that each and every audioengine-related thread has a unique namePaul Davis
2015-12-28redesign cross-thread registration/signalling systemPaul Davis
This new design will work even when threads that need to receive messages from RT threads are created *after* the RT threads. The existing design would fail because the RT thread(s) would never be known the later created threads, and so signals emitted by the RT thread and causing call_slot() in the receiver would end up being enqueued using a lock-protected list. The new design ensures that communication always uses a lock-free FIFO instead
2015-12-12correct name of Midi-UI thread memory-pool and request-queueRobin Gareus
2015-12-09fix/workaround OSX "No Memory Pool"Robin Gareus
fixes issue on MacBookPro11,1 OSX 10.10 * Coreaudio: internal speaker + internal Mic * start recording * plug-in headphone * stop recording -> crash process_callback -> [..] stop_transport -> no RT memory pool for realtime event.
2015-12-04update engine to allow latency measurement w/o restart.Robin Gareus
2015-12-04fix thinko in engine latency stateRobin Gareus
(skip Halted signal when stopped for latency)
2015-10-06Initialize AudioEngine::last_backend_error() to the default error stringTim Mayberry
Currently the last backend error string is only set when calling AudioBackend::start. Errors that occur when calling other AudioBackend methods like AudioBackend::set_buffer_size do not set the last backend error string. So until all the required AudioBackend methods return an ErrorCode and last_backend_error() can be removed just set it to a default string. Until all errors that occur are correctly indicated by returning an error code there will still be situations where last_backend_error() is not indicative of the true error. For instance AudioEngine::start is called and it fails but returns a valid error code so last_backend_error() is set, then some other engine/backend method is called that fails and as last_backend_error is not set the GUI will display the incorrect error message.
2015-10-06Show DSP/CPU load of 0.0% when AudioEngine isn't runningTim Mayberry
2015-10-05NOOP, remove trailing tabs/whitespace.Robin Gareus
2015-10-04globally remove all trailing whitespace from ardour code base.Paul Davis
Paul Davis was responsible for introducing almost all of this.
2015-10-02remove debug outputPaul Davis
2015-10-02the return of the 1 second fade out at session closePaul Davis
2015-10-01Reinterpret the return value of AudioBackend::start as AudioBackend::ErrorCodeTim Mayberry
This will allow backends to return a more meaningful error message. Eventually an error code could be returned by AudioEngine::start and the GUI can then use AudioBackend::get_error_string to convert the error into a translated error message directly, or it may be desirable to define its own error messages. The reasons for not doing that right now is that this is a workable solution with the least change required.
2015-08-28synchronous shutdown of process graph.Robin Gareus
2015-08-11fix deadlock at exit on SMP systemsRobin Gareus
graph process-threads won't terminate properly while active.
2015-06-29Fixed incomplete merge for audioengine.ccGZharun
[To be reviewed by] Paul Davis
2015-06-29increase event pool for backend reset thread (somewhat unnecessarily, but ↵Paul Davis
lets keep Kyiv happy)
2015-06-29AudioEngine tweaks from Tracks, related to stopping audioengine and haltingPaul Davis
2015-06-29initial incorporation of Tracks' automatic reconnect features, based on ↵Paul Davis
current Tracks code
2015-06-29[Summary] Added possibility to identify IO thread which does not have ↵GZharun
required resources initialized during process callback handling Conflicts: libs/ardour/ardour/audioengine.h libs/backends/wavesaudio/waves_audiobackend.cc libs/pbd/pbd/pool.h
2015-05-04fix thinko in 2e4428bRobin Gareus
perspective of Ardour: signal sinks are outputs
2015-05-03no more noise during startup.Robin Gareus
2015-05-02professionalize peak-metersRobin Gareus
The peak meter needs to withstand various test-signals without visual jitter (in particular 1kHz sine) regardless of settings (period-size, sample-rate, custom fall-off). This needs to be done in sync (and not by a random non-rt ‘smoothing’ thread). On the downside this voids the ‘visual smoothing’ particularly with large buffersizes - but then again exactly this “always fall-off no matter what [the next real data will be]” is the problem. One the upside, there’s one less high-frequency (100Hz) thread (Yay!) PS. it probably never worked on windows, anyway. Only peak-meters are affected by his change. K-meters, IEC I/II and VU were never visually smoothed.
2015-04-30don’t count silent [x]runs if there’s no session.Robin Gareus
2015-04-29emit an xrun if the process_lock is takenRobin Gareus
2015-04-26Fix crash when switching backends.Robin Gareus
cycle_end() can write to invalid buffers.
2015-04-22Initial Gain Coefficient tweaksBen Loftis
1) Disambiguate 1.0 to GAIN_COEFF_UNITY, and 0.0 to GAIN_COEFF_ZERO 2) Add GAIN_COEFF_SMALL which replaces SMALL_SIGNAL (-140dB) 3) GAIN_COEFF_SMALL can used to avoid interpolating towards -inf on a db scale 4) GAIN_COEFF_SMALL is used to detect very small (denormal?) gains and memset to zero
2015-04-05fix ambiguous use of pow()Paul Davis
2015-04-05bump default silent-after-seconds duration to 10 minutesPaul Davis
2015-04-05add libardour code for going completely silent after a compile-time defined ↵Paul Davis
number of seconds
2015-03-31[Summary] Fixed several backend issues: made reset counter check atomic, ↵Greg Zharun
removed copy/paste mistakes Conflicts: libs/ardour/audioengine.cc libs/ardour/engine_state_controller.cc libs/backends/wavesaudio/waves_audiobackend.cc
2015-03-31[Summary] Added actions to handle abnormal behavior during stream stop for ↵Greg Zharun
MIDI and Audio devices. Made correct error handling for cases we didn't see before. Removed redundant and experimental code I forgot to remove months ago. Added debug output which will help in future testing Conflicts: libs/ardour/ardour/audioengine.h libs/ardour/engine_state_controller.cc libs/backends/wavesaudio/waves_midi_device.cc
2015-03-31[Summary] Made device control panel open request synchronized with other ↵Greg Zharun
critical device operations. Made device reset correctly when control panel is closed. Conflicts: gtk2_ardour/tracks_control_panel.logic.cc libs/ardour/ardour/audioengine.h libs/backends/wavesaudio/wavesapi/devicemanager/WCMRPortAudioDeviceManager.cpp
2015-03-05create engine thread before sending notifications.Robin Gareus
Fixes missing thread in Pool in session_process, when switching backend threads (CoreAudio, Waves)
2015-02-28fix routing midi data on export:Robin Gareus
MidiPort::cycle_end() was never called, hence after the first cycle all midi buffers were assumed to be “mixed down” already. this fixes Midi-track 1 -[midi]-> Midi-track2 synth -[audio]-> out on export.
2015-02-19change Audio backend sample time methods to use a 64 bit timelinePaul Davis
2015-01-25audio-engine use internal API to stopRobin Gareus
emit signal(s) when engine is stopped due to backend change.
2014-12-03fix audio-engine dtor.Robin Gareus
backends - once instantiated - keep a reference to the engine. when audioengine is destroyed, the backends must be deinstantiated. This fixes various unit-test cases.
2014-11-18remove superfluous if-branch (_session is checked a few lines above)Robin Gareus