summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-02-27Prevent concurrent loop and punch recording (backend)Robin Gareus
This also prevents switching between punch-in/out record and looping without transport-stop.
2020-02-26Add example Lua DSP script with multiple MIDI outputsR
2020-02-26Add support for Lua DSP scripts with multiple MIDI outputsR
2020-02-26And removing even more unused forward declarations.André Nusser
2020-02-26Consolidate loop en/disable callsRobin Gareus
2020-02-26Update script to use new process_map() APIRobin Gareus
2020-02-26Add a mute/gate pluginRobin Gareus
2020-02-26Fix DSP::process_map() plugin-pin I/O map handingRobin Gareus
The previous approach failed in case where PluginInsert uses no-inplace buffers with a linear map. Since buffers are replicated up to a total of number of all (inputs + outputs), the number of output buffers could not be determined. There was insufficient information using the I/O map alone. With a known number of outputs processing and applying the i/o map is also a lot easier and faster. This break the API of process_map().
2020-02-26Add Lua bindings for libardour amp's simple gainRobin Gareus
2020-02-26Fix PI bypass, fix apply linear pin-connectionsRobin Gareus
Previously this could assert(), copying a buffer to itself.
2020-02-26Remove easter-eggRobin Gareus
Every day can be x-mas day, how else can we be lovers? :)
2020-02-26Fix Conditional jump or move depends on uninitialised value(s)Robin Gareus
(valgrind trace, line-numbers from mixbus+6.0-190-g0ec6bc35a) This may happen initially for unconnected graph nodes, e.g. Foldback Busses from ARDOUR::Session::post_engine_init(). ==29797== Conditional jump or move depends on uninitialised value(s) ==29797== at 0x6167D3F: trace_terminal(boost::shared_ptr<ARDOUR::Route>, boost::shared_ptr<ARDOUR::Route>, bool) (session.cc:2174) ==29797== by 0x6167D99: trace_terminal(boost::shared_ptr<ARDOUR::Route>, boost::shared_ptr<ARDOUR::Route>, bool) (session.cc:2174) ==29797== by 0x6167D99: trace_terminal(boost::shared_ptr<ARDOUR::Route>, boost::shared_ptr<ARDOUR::Route>, bool) (session.cc:2174) ==29797== by 0x616890D: ARDOUR::Session::resort_routes_using(boost::shared_ptr<std::__cxx11::list<boost::shared_ptr<ARDOUR::Route>, std::allocator<boost::shared_ptr<ARDOUR::Route> > > >) (session.cc:2289)
2020-02-26Fix potential memory corruption at session closeRobin Gareus
(valgrind trace, line-numbers from mixbus+6.0-190-g0ec6bc35a) ==29797== Invalid write of size 4 ==29797== at 0x619BB3F: boost::dynamic_bitset<unsigned int, std::allocator<unsigned int> >::reference::do_reset() (dynamic_bitset.hpp:120) ==29797== by 0x6196002: boost::dynamic_bitset<unsigned int, std::allocator<unsigned int> >::reference::do_assign(bool) (dynamic_bitset.hpp:122) ==29797== by 0x618F670: boost::dynamic_bitset<unsigned int, std::allocator<unsigned int> >::reference::operator=(bool) (dynamic_bitset.hpp:107) ==29797== by 0x617E426: ARDOUR::Session::unmark_send_id(unsigned int) (session.cc:5633) ==29797== by 0x6156714: ARDOUR::Send::~Send() (send.cc:125) ==29797== by 0x5CE12A7: ARDOUR::InternalSend::~InternalSend() (internal_send.cc:71) ==29797== by 0x5CE1319: ARDOUR::InternalSend::~InternalSend() (internal_send.cc:76) ==29797== by 0x1556128: void boost::checked_delete<ARDOUR::InternalSend>(ARDOUR::InternalSend*) (checked_delete.hpp:34) ==29797== by 0x155E689: boost::detail::sp_counted_impl_p<ARDOUR::InternalSend>::dispose() (sp_counted_impl.hpp:92) ==29797== by 0xCC0E30: boost::detail::sp_counted_base::release() (sp_counted_base_std_atomic.hpp:110) ==29797== by 0xCC0EA6: boost::detail::shared_count::~shared_count() (shared_count.hpp:426) ==29797== by 0x134BD15: boost::shared_ptr<ARDOUR::InternalSend>::~shared_ptr() (shared_ptr.hpp:366) ==29797== by 0x60FACC1: ARDOUR::Route::~Route() (route.cc:498) ==29797== by 0x60FAF4D: ARDOUR::Route::~Route() (route.cc:517) ==29797== by 0x166144C: void boost::checked_delete<ARDOUR::Route>(ARDOUR::Route*) (checked_delete.hpp:34) ==29797== by 0x166338F: boost::detail::sp_counted_impl_p<ARDOUR::Route>::dispose() (sp_counted_impl.hpp:92) ==29797== by 0xCC0E30: boost::detail::sp_counted_base::release() (sp_counted_base_std_atomic.hpp:110) ==29797== by 0xCC0EA6: boost::detail::shared_count::~shared_count() (shared_count.hpp:426) ==29797== by 0xCD2385: boost::shared_ptr<ARDOUR::Route>::~shared_ptr() (shared_ptr.hpp:366) ==29797== by 0x615D0E5: ARDOUR::Session::~Session() (session.cc:455) ==29797== by 0x615D4A3: ARDOUR::Session::~Session() (session.cc:461)
2020-02-25Fix deadlock, shared_ptr d'tor called from ScopedConnectionList d'torRobin Gareus
See https://ardour.org/styleguide.html #10 https://pastebin.com/gJfrNhL2
2020-02-25Consolidate shared-ptr debuggingRobin Gareus
2020-02-25Fix mem-leak, Playlist/Region SessionHandleRefRobin Gareus
When a playlist is deleted and drops_references(), any undo/redo StatefulDiffCommand referncing playlist invoke Destructible::drop_references() of the Command. This leads to command_death(). As opposed to UndoTransaction::clear() the StatefulDiffCommand was not destroyed. In case of playlists StatefulDiffCommand::_changes contains PBD::SequenceProperty<std::list<boost::shared_ptr<Region> > > and shared pointer reference of the playlist regions were kept indefinitely. This fixes the following scenario: New session, import an file, delete the created track, clean up unused sources (delete unused playlists)[, quit]. A reference to the imported region was kept, because of the playlist's undo command (insert region). Yet the source file was deleted. PS. Most playlist changes are accompanied by GUI zoom/selection MementoCommands. Those are currently never directly dropped. command_death() leaves those in place.
2020-02-25Remove undo function from global namespaceRobin Gareus
2020-02-25NO-OP: whitespaceRobin Gareus
2020-02-25Cleanup SourceList: remove unused copy/pasted region-list codeRobin Gareus
2020-02-25NO-OP: whitespaceRobin Gareus
2020-02-25SourceList: Drop references as requestedRobin Gareus
2020-02-25Disable Transport Master boost debugRobin Gareus
2020-02-25Fix cleanup, lock source-list, emit SourceRemovedRobin Gareus
This fixes various cases where SessionHandleRef shared_ptr<> were kept when sources were removed.
2020-02-25Remove history file when it's emptyRobin Gareus
Various operations clear the history (e.g. cleanup). In that case the GUI correctly had an empty Undo/Redo history, but the file on disk was left in place. Next session load restored the old, incorrect Undo/Redo history.
2020-02-25Update region-factory boost-debugRobin Gareus
2020-02-25Notify owners when removing regions during cleanupRobin Gareus
Previously the region was only removed from the Session's region_map without sending notifications.
2020-02-25Prefer const iteratorsRobin Gareus
2020-02-24fix thinko when handling set_speed (0.0)Paul Davis
Code only handled a reversing->rolling path, not reversing->stopped
2020-02-24fix incorrect handling of MIDI data by AsyncMIDIPortPaul Davis
This type of MIDI port fetches all of its data from inside ::cycle_start(), and delivers it to a FIFO connected to another thread (typically a control surface). Unlike regular MidiPorts, which will be read from inside a Session::process() call, these ports will read their data once per AudioEngine::process() cycle. They therefore cannot use MidiPort::get_midi_buffer() which scales and adjusts event timestamps as if the data is being accessed from within Session::process(). It is still an open question whether or not AsyncMIDIPort::cycle_start() should still scale event timestamps by speed. In some respects it seems more appropriate to do so, and the reading thread (e.g. a control surface) doesn't care about the "nframes" limit on timestamps that exists for calls within a Session::process() tree. For now, leave the timestamps unscaled by speed.
2020-02-24NOOP: remove whitespacePaul Davis
2020-02-25Clear import-status shared-ptr<> after useRobin Gareus
Previously "Sequence files" set import_status.track and never reset() the shared pointer. This resulted in various follow up issues.
2020-02-25Add a method to clear ImportStatus arraysRobin Gareus
This is in preparation to fix a "SessionHandleRef exists across session deletion" error.
2020-02-25Update source-factory boost-debugRobin Gareus
2020-02-25Update boost-ptr debug patch for boost 1.67Robin Gareus
2020-02-24Remove unused forward declaration.André Nusser
2020-02-24Remove GUI thread x-run reset on engine re-startRobin Gareus
This has been superseded by the previous commit, doing this independently from the GTK GUI.
2020-02-24Zero x-run count after session-load and engine restartRobin Gareus
2020-02-24Consolidate startup `state = Clean;` callsRobin Gareus
This also emits DirtyChanged() only if needed.
2020-02-24Websockets: error on unhandled callbacksRobin Gareus
This prevents unhandled http request from hogging the backend.
2020-02-24Websockets: use established NDEBUG - see assert(3)Robin Gareus
2020-02-24Fix initial audible noise on muted or silenced tracksRobin Gareus
When loading a session with muted tracks, those tracks were not initially muted, but ardour only faded them out. The same happened to sends, and also tracks with non unity fader: an initial fade from unity to target gain was done. Now this send and deliveries always fade-in (like default Amp does).
2020-02-24Always set the natural position timestamp when importing audio files.Todd Naugle
If the file has a timestamp, it should be set in the region during import. This keeps the BWF timestamp from being lost and allows the region context menu item "Move to original Position" to work. It does not affect where the region will be positioned during import. That still follows the import dialog menu selection (playhead, session start, etc). It just maintains data that the user can decided to use if needed. This change also allows files to be imported to the source list and then later placed on the timeline in the correct timestamped position.
2020-02-24Fix uninitialized member variable.Todd Naugle
2020-02-24NOP: No need to set this variable to itself.Todd Naugle
2020-02-24Revert "Add symbolic link scripts -> share/scripts"Robin Gareus
This reverts commit 72ab9a0ac76ad39a3b43bc09182eeb0544a4061d. GitHub http/s does not 307 redirect follow symlinks. Oh well.
2020-02-24Add symbolic link scripts -> share/scriptsRobin Gareus
This is only for the benefit of preserving http/s links to scripts on github :(
2020-02-24Tweak mach thread priority debug msgRobin Gareus
2020-02-24Fix setting CoreAudio RT-priorityRobin Gareus
2020-02-24Default to device reported systemic latencyRobin Gareus
2020-02-24Fix CoreAudio systemic latency, implement hw latency reportRobin Gareus