summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-11-29fix seamless midi-looping - fixes #5438Robin Gareus
well, now... - Midi-Ports have a midi-buffer. - Midi-Tracks have a midi-buffer. - Midi-tracks have a diskstream. - Midi-diskstream has a midi-ring-buffer. - Midi-tracks have a delivery - The delivery can get a reference to the actual backend-ports - The delivery calls the Midi-Port's flush() buffer to send out queued events at the end of a cycle all clear ? :) - when splitting the process-cycle: only the Ports are informed. all other objects see a "normal" short process cycle starting at "0". The offset needs to be applied early on, so that internally routed buffers push the event at the correct time when combining the buffer with immediate and async events. Luckily Port::port_offset() is a static member, available to all, objects, which allows to bridge the conceptual gap between the diskstream and the delivery. There's a snag: When there's a note-on directly at the beginning of the loop it coincides with the panic message sent when looping. The panic comes before note events, so it *should* be good. Also the final note-offs (state tracker end of loop/region) are sent 1 sample too early (smells like an off-by-one), and are hence dropped. (no matter we send a panic right after it). It should really be at the same time, just before the panic.
2015-11-28don't clear MIDI buffers during split-cyclesRobin Gareus
if dst_offset is zero, MidiBuffer::read_from() clears the buffer. copy_to_outputs() eventually calls MidiBuffer::read_from().
2015-11-28add some midi-debug printf() to the dummy backendRobin Gareus
2015-11-28fix typo in panic message, honor event-time.Robin Gareus
2015-11-28midi-panic needs to honor split-cycle buffer offset,Robin Gareus
otherwise panic message will be delivered out-of-order when seamlessly looping.
2015-11-28filling the midi playback buffer is a private operation.Robin Gareus
2015-11-27faderport: shift+encoder controls pan width (for ardour only), input trim ↵Paul Davis
now controlled by user+encoder. User is now a modifier key
2015-11-27faderport: basic panning via encoder knob.Paul Davis
Doesn't help with 2=>2 panner, where width control is also required
2015-11-27fadeport: make fader touch workPaul Davis
2015-11-26Mackie Control: Disable Selected group in User/Selected view mode to allow ↵Len Ovens
individual adjustment.
2015-11-25implement more Faderport buttons (window and fader automation). ToDo: ↵Ben Loftis
automation LEDs, fader banking
2015-11-26use human readable port-names in Mackie config.Robin Gareus
2015-11-25faderport: simpler logic for master/monitor/otherPaul Davis
When choosing master or monitor, do NOT save master or monitor as the pre_{master,monitor}_route under any circumstances. This means that master/monitor choices do not stack, and just switch between them.
2015-11-25Merge branch 'chaot4-feature_include_more_options_in_help'Paul Davis
2015-11-25Correct spelling of action names. Translation context for Reference.André Nusser
2015-11-25Add more menu entries to the 'Help' menu.André Nusser
* The functions were already implemented -- I just added the links in ardour.menu.in, corrected spelling and the link to the tracker. * The tracker link was corrected as I considered it confusing when one is not already logged in.
2015-11-25faderport: handle mute for monitor out by using monitor processor ops; try ↵Paul Davis
to blink mute button when cut-all is in effect. Still some logic bugs when switching between master, monitor and other
2015-11-25faderport: fix odd interaction when selecting master-then-monitor or ↵Paul Davis
monitor-then-master and toggling back
2015-11-25faderport: fix odd interaction when selecting master-then-monitor or ↵Paul Davis
monitor-then-master and toggling back
2015-11-25faderport: output button is a toggle between master (or monitor) and ↵Paul Davis
currently used route
2015-11-25faderport: enable "Output" button to select master out (or, with Shift, ↵Paul Davis
monitor out if it exists) as the target route
2015-11-25handle encoder changes. shift+knob = input trim. ToDo: panner controlBen Loftis
2015-11-25cruft removal from faderport codePaul Davis
2015-11-25faderport: implement fader supportPaul Davis
2015-11-25restore measured Insert latencyRobin Gareus
(XML underscore vs dash)
2015-11-25faderport: track GUI selection, use first selected route; implement mute, ↵Paul Davis
solo, rec
2015-11-25check for itstool (>= 1.0.4, -j option)Robin Gareus
2015-11-25faderport: put back the working version of operations.ccPaul Davis
2015-11-24stub file to enable nightly buildsBen Loftis
2015-11-24faderport: more global button functions addedPaul Davis
2015-11-24add goto_zero() function for BasicUIPaul Davis
2015-11-24faderport: more interesting behaviour for the play button (locate to last ↵Paul Davis
start if pressed while rolling, then keep rolling)
2015-11-24clarify a DEBUG_TRACE remarkPaul Davis
2015-11-24faderport: make loop, prev marker, next marker and marker buttons do stuffPaul Davis
2015-11-24add debug "bits" for FaderPortPaul Davis
2015-11-24faderport: allow forcing LED state for use in ::all_lights_out()Paul Davis
2015-11-24faderport: fix modifiers for rewind, stop, undo etc ; listen to session ↵Paul Davis
transport signals and display state with button LEDs; add blinking
2015-11-24fadeport: restructure button info actions to allow modifiers (shift, rewind, ↵Paul Davis
stop) and set up undo and shift-undo (redo)
2015-11-24give the faderport its own thread and event loop, rather than riding on the ↵Paul Davis
back of the MIDI UI thread in libardour
2015-11-24faderport: after connecting, turn off all lights, then party with them, then ↵Paul Davis
turn them all off
2015-11-24add some faderport infrastructure for button handling, and bind up the ↵Paul Davis
transport functions to their obvious methods
2015-11-24namespace and filename cleanupPaul Davis
2015-11-25Prevent crash at session-close when analysing.Robin Gareus
The Analyser only holds a weak-pointer the the Source, session-destruction frees the actual Source, which is fatal for any ongoing audio analysis. This fix simply waits for the current ongoing analysis to complete, ideally TransientDetector::run, EBUr128Analysis::run, OnsetDetector::run and AudioAnalyser::analyse could be interrupted. Alternate option: cancel the Analyser::work thread (and re-create with the every session).
2015-11-24remove debugging outputPaul Davis
2015-11-24create data structure to handle the fact that faderport firmware 1.38 uses ↵Paul Davis
different button IDs for input and output (!!!)
2015-11-24get faderport i/o working, basics of identifying control activityPaul Davis
2015-11-24rough-in for faderport protocol backendBen Loftis
2015-11-24prevent concurrent peak-file init.Robin Gareus
When embedding external files. the same file is queued twice for peak-file generation. Since there are two peak_thread_work threas in SourceFactory, this can lead to inconsistent/missing peaks. TODO: fix the actual cause, duplicate call to setup_peakfile(): #0 ARDOUR::SourceFactory::setup_peakfile (s=..., async=true) at ../libs/ardour/source_factory.cc:116 #1 0x00007ffff6c2552f in ARDOUR::SourceFactory::createExternal (type=..., s=..., path="/tmp/CB_bass_Track08.wav", chn=0, flags=(unknown: 0), announce=true, defer_peaks=true) at ../libs/ardour/source_factory.cc:254 #2 0x0000000000886f50 in Editor::embed_sndfiles (this=0x3810340, paths=std::vector of length 1, capacity 1 = {...}, multifile=false, check_sample_rate=@0x7fffffffc2df: true, disposition=Editing::ImportDistinctFiles, mode=Editing::ImportAsTrack, pos=@0x7fffffffc458: -1, target_regions=1, target_tracks=-1, track=..., instrument=...) at ../gtk2_ardour/editor_audio_import.cc:630 #3 0x0000000000885c7c in Editor::do_embed (this=0x3810340, paths=std::vector of length 1, capacity 1 = {...}, import_as=Editing::ImportDistinctFiles, mode=Editing::ImportAsTrack, pos=@0x7fffffffc458: -1, instrument=...) at ../gtk2_ardour/editor_audio_import.cc:414 #4 0x0000000000e93aeb in SoundFileOmega::do_something (this=0x490f530, action=-5) at ../gtk2_ardour/sfdb_ui.cc:1983 #0 ARDOUR::SourceFactory::setup_peakfile (s=..., async=true) at ../libs/ardour/source_factory.cc:116 #1 0x0000000000888954 in Editor::add_sources (this=0x3810340, paths=std::vector of length 1, capacity 1 = {...}, sources=std::vector of length 1, capacity 1 = {...}, pos=@0x7fffffffc458: 0, disposition=Editing::ImportDistinctFiles, mode=Editing::ImportAsTrack, target_regions=1, target_tracks=-1, track=..., instrument=...) at ../gtk2_ardour/editor_audio_import.cc:883 #2 0x0000000000887131 in Editor::embed_sndfiles (this=0x3810340, paths=std::vector of length 1, capacity 1 = {...}, multifile=false, check_sample_rate=@0x7fffffffc2df: true, disposition=Editing::ImportDistinctFiles, mode=Editing::ImportAsTrack, pos=@0x7fffffffc458: 0, target_regions=1, target_tracks=-1, track=..., instrument=...) at ../gtk2_ardour/editor_audio_import.cc:653 #3 0x0000000000885c7c in Editor::do_embed (this=0x3810340, paths=std::vector of length 1, capacity 1 = {...}, import_as=Editing::ImportDistinctFiles, mode=Editing::ImportAsTrack, pos=@0x7fffffffc458: 0, instrument=...) at ../gtk2_ardour/editor_audio_import.cc:414 #4 0x0000000000e93aeb in SoundFileOmega::do_something (this=0x490f530, action=-5) at ../gtk2_ardour/sfdb_ui.cc:1983
2015-11-24update configure time tests and code to use libsndfile 1.0.26's version of ↵Paul Davis
the R64 auto-downgrade-to-WAV code
2015-11-23git ignore appdata translation(s)Robin Gareus