ardour.git
7 years agoTweak behavior of Play-With-Preroll action
Ben Loftis [Mon, 19 Dec 2016 18:50:51 +0000 (12:50 -0600)]
Tweak behavior of Play-With-Preroll action

7 years agoFollow Edits => Follow Range
Ben Loftis [Mon, 19 Dec 2016 18:22:39 +0000 (12:22 -0600)]
Follow Edits => Follow Range
* "Follow Edits" button had several behaviors that confused users.
* "Follow Range" only has 2 behaviors:
** Click anywhere in Range mode (or Smart mode) to locate the playhead.
** When you select a Range, "Play" will play the selected range.

7 years agoupdate mini-timeline to immediately display tempo-map changes
Robin Gareus [Mon, 19 Dec 2016 18:25:14 +0000 (19:25 +0100)]
update mini-timeline to immediately display tempo-map changes

7 years agoShow relevant preferences on sync-button right-click
Robin Gareus [Mon, 19 Dec 2016 18:21:38 +0000 (19:21 +0100)]
Show relevant preferences on sync-button right-click

7 years agocont'd work on mini-timeline:
Robin Gareus [Mon, 19 Dec 2016 18:12:13 +0000 (19:12 +0100)]
cont'd work on mini-timeline:

* add context-menu to configure visible time-span
* prelight markers on mouse-over
* constrain active click area (mouse-up)
* change scroll-event granularity: multiple of configured span.

7 years agoSession::_ac_thread_active should be used with atomics to create memory barriers...
Paul Davis [Mon, 19 Dec 2016 15:33:54 +0000 (15:33 +0000)]
Session::_ac_thread_active should be used with atomics to create memory barriers, even though lock ordering is likely correct now

7 years agoSession::auto_connect_thread_terminate() cannot use ::auto_connect_thread_wakeup...
Paul Davis [Mon, 19 Dec 2016 14:35:29 +0000 (14:35 +0000)]
Session::auto_connect_thread_terminate() cannot use ::auto_connect_thread_wakeup() because that method is allowed to "fail".

Should fix hangs when closing a session with the ALSA backend (and perhaps others too).

7 years agoupdate canvas test tool
Robin Gareus [Mon, 19 Dec 2016 12:38:05 +0000 (13:38 +0100)]
update canvas test tool

7 years agoTowards packing CairoWidgets on ArdourCanvas.
Robin Gareus [Mon, 19 Dec 2016 12:36:42 +0000 (13:36 +0100)]
Towards packing CairoWidgets on ArdourCanvas.

7 years agovertically center text in time rulers
Robin Gareus [Mon, 19 Dec 2016 12:24:20 +0000 (13:24 +0100)]
vertically center text in time rulers

7 years agoNO-OP: whitespace
Robin Gareus [Mon, 19 Dec 2016 12:23:40 +0000 (13:23 +0100)]
NO-OP: whitespace

7 years agoUpdate Marker display style: consistent height & color
Robin Gareus [Mon, 19 Dec 2016 12:23:06 +0000 (13:23 +0100)]
Update Marker display style: consistent height & color

7 years agoRuler labels should be normal weight.
Ben Loftis [Mon, 19 Dec 2016 02:13:38 +0000 (20:13 -0600)]
Ruler labels should be normal weight.

7 years agoConsolidate clock bg colors to use the same dark grey
Ben Loftis [Mon, 19 Dec 2016 01:51:43 +0000 (19:51 -0600)]
Consolidate clock bg colors to use the same dark grey

7 years agoConsolidate green clock colors to use the same green
Ben Loftis [Mon, 19 Dec 2016 01:36:32 +0000 (19:36 -0600)]
Consolidate green clock colors to use the same green

7 years agoReinstate spacer between Punch In,Out.
Ben Loftis [Sun, 18 Dec 2016 23:14:02 +0000 (17:14 -0600)]
Reinstate spacer between Punch In,Out.

7 years agoClean up Clock Tempo, TimeSignature labels
Robin Gareus [Sun, 18 Dec 2016 22:41:42 +0000 (23:41 +0100)]
Clean up Clock Tempo, TimeSignature labels

7 years agoHave the computer count columns for us.
Robin Gareus [Sun, 18 Dec 2016 22:20:14 +0000 (23:20 +0100)]
Have the computer count columns for us.

7 years agoShorten sync-button label/size
Robin Gareus [Sun, 18 Dec 2016 22:17:29 +0000 (23:17 +0100)]
Shorten sync-button label/size

7 years agofix table layout typo
Robin Gareus [Sun, 18 Dec 2016 21:59:17 +0000 (22:59 +0100)]
fix table layout typo

7 years agofix blank mini-timeline
Robin Gareus [Sun, 18 Dec 2016 21:58:19 +0000 (22:58 +0100)]
fix blank mini-timeline

7 years agoconsolidate mini-timeline code, latch expose
Robin Gareus [Sun, 18 Dec 2016 21:21:10 +0000 (22:21 +0100)]
consolidate mini-timeline code, latch expose

7 years agoSimplify spacer code
Robin Gareus [Sun, 18 Dec 2016 20:39:36 +0000 (21:39 +0100)]
Simplify spacer code

7 years agoTransport Layout: horizontal separator makes it look too busy. Commented out for...
Ben Loftis [Sun, 18 Dec 2016 19:47:14 +0000 (13:47 -0600)]
Transport Layout: horizontal separator makes it look too busy. Commented out for now.

7 years agorepack widgets, and add some spacer elements
Ben Loftis [Sun, 18 Dec 2016 19:29:19 +0000 (13:29 -0600)]
repack widgets, and add some spacer elements

7 years agoAdd clock-button tooltips
Robin Gareus [Sun, 18 Dec 2016 18:23:12 +0000 (19:23 +0100)]
Add clock-button tooltips

7 years agoTweak Tempo and Meter precision, and shorten the label to accomodate
Robin Gareus [Sun, 18 Dec 2016 17:58:56 +0000 (18:58 +0100)]
Tweak Tempo and Meter precision, and shorten the label to accomodate

7 years agoRevert mini-timeline marker drawing to before 448f921d
Robin Gareus [Sun, 18 Dec 2016 17:17:10 +0000 (18:17 +0100)]
Revert mini-timeline marker drawing to before 448f921d

7 years agoconsistent size of sync-button
Robin Gareus [Sun, 18 Dec 2016 17:16:21 +0000 (18:16 +0100)]
consistent size of sync-button

7 years agoshow all parameters when adding a meter via the tempo dialog.
nick_m [Sun, 18 Dec 2016 17:15:46 +0000 (04:15 +1100)]
show all parameters when adding a meter via the tempo dialog.

7 years agoTempoMap - rename some methods.
nick_m [Sun, 18 Dec 2016 17:13:17 +0000 (04:13 +1100)]
TempoMap - rename some methods.
gui_move_tempo   -> gui_set_tempo_position
gui_move_meter   -> gui_set_meter_position
gui_dilate_tempo -> gui_stretch_tempo

7 years agoadd frame parameter for Meter ctor and TempoMap::replace_meter(). allow for various...
nick_m [Sun, 18 Dec 2016 17:02:01 +0000 (04:02 +1100)]
add frame parameter for Meter ctor and TempoMap::replace_meter(). allow for various failures.

7 years agomini-tl: subscribe to location add/remove signals
Robin Gareus [Sun, 18 Dec 2016 13:52:26 +0000 (14:52 +0100)]
mini-tl: subscribe to location add/remove signals

7 years agothere is no curve for identical note_types_per_minute values.
nick_m [Sun, 18 Dec 2016 16:23:33 +0000 (03:23 +1100)]
there is no curve for identical note_types_per_minute values.

7 years agoTransport Layout:
Ben Loftis [Sun, 18 Dec 2016 15:02:13 +0000 (09:02 -0600)]
Transport Layout:
* Remove some redundant containers and frames, for a cleaner look.
* Adjust transport button spacing and sizes to more closely match the editor toolbar.

7 years agoTransport Layout: Alert buttons do not need to be red when inactive
Ben Loftis [Sun, 18 Dec 2016 04:41:25 +0000 (22:41 -0600)]
Transport Layout: Alert buttons do not need to be red when inactive

7 years agoTransport Layout: Attempts to standardize button sizes and padding.
Ben Loftis [Sun, 18 Dec 2016 04:32:38 +0000 (22:32 -0600)]
Transport Layout: Attempts to standardize button sizes and padding.

7 years agoMini-timeline: Any click not on a marker should trigger a locate
Ben Loftis [Sun, 18 Dec 2016 01:18:16 +0000 (19:18 -0600)]
Mini-timeline: Any click not on a marker should trigger a locate

7 years agoMini-timeline: Use timeline colors from config
Ben Loftis [Sun, 18 Dec 2016 01:16:09 +0000 (19:16 -0600)]
Mini-timeline: Use timeline colors from config

7 years agoshould not really bind a shared_ptr<Port> to a sigc slot, so don't do that
Paul Davis [Sun, 18 Dec 2016 00:07:17 +0000 (00:07 +0000)]
should not really bind a shared_ptr<Port> to a sigc slot, so don't do that

7 years agomove termination of auto connect thread till after control protocols are destroyed.
Paul Davis [Sun, 18 Dec 2016 00:06:44 +0000 (00:06 +0000)]
move termination of auto connect thread till after control protocols are destroyed.

Otherwise, control protocol ports don't actually get deleted

7 years agoPrepare configurable mini-timeline time-span
Robin Gareus [Sat, 17 Dec 2016 23:06:39 +0000 (00:06 +0100)]
Prepare configurable mini-timeline time-span

7 years agoremove channel filter status and button from MIDI track header, access via context...
Paul Davis [Sat, 17 Dec 2016 17:58:44 +0000 (17:58 +0000)]
remove channel filter status and button from MIDI track header, access via context menu

7 years agofix gcc4 compilation (local type used in template)
Robin Gareus [Sat, 17 Dec 2016 12:00:33 +0000 (13:00 +0100)]
fix gcc4 compilation (local type used in template)

7 years agoRefine transport tool bar layout
Robin Gareus [Sat, 17 Dec 2016 00:43:24 +0000 (01:43 +0100)]
Refine transport tool bar layout

7 years agoPrepare mini-timeline widget for toolbar
Robin Gareus [Sat, 17 Dec 2016 00:43:09 +0000 (01:43 +0100)]
Prepare mini-timeline widget for toolbar

7 years agoremove cruft
Robin Gareus [Sat, 17 Dec 2016 00:40:22 +0000 (01:40 +0100)]
remove cruft

7 years agoAdd UI to set global track layered mode
Robin Gareus [Mon, 12 Dec 2016 20:48:29 +0000 (21:48 +0100)]
Add UI to set global track layered mode

7 years agoHide/remove per-track record-mode in favor of global setting.
Robin Gareus [Mon, 12 Dec 2016 18:44:03 +0000 (19:44 +0100)]
Hide/remove per-track record-mode in favor of global setting.

7 years agoMove selection/punch clocks to editor Sidebar
Robin Gareus [Sat, 17 Dec 2016 01:31:41 +0000 (02:31 +0100)]
Move selection/punch clocks to editor Sidebar

7 years agoCommence transport tool bar re-layout
Robin Gareus [Sun, 11 Dec 2016 16:24:30 +0000 (17:24 +0100)]
Commence transport tool bar re-layout

7 years agoRework shuttle control display
Robin Gareus [Sun, 11 Dec 2016 00:33:23 +0000 (01:33 +0100)]
Rework shuttle control display

7 years agoAdd API to query editor's playhead cursor position
Robin Gareus [Fri, 16 Dec 2016 14:02:29 +0000 (15:02 +0100)]
Add API to query editor's playhead cursor position

7 years agoinitial attempt at importing SMF tempo maps during MIDI import.
Paul Davis [Fri, 16 Dec 2016 16:49:52 +0000 (16:49 +0000)]
initial attempt at importing SMF tempo maps during MIDI import.

Still with debug output

7 years agoadd copy constructor, operator= and a clean ::dump() method for TempoMap
Paul Davis [Fri, 16 Dec 2016 16:49:27 +0000 (16:49 +0000)]
add copy constructor, operator= and a clean ::dump() method for TempoMap

7 years agoadd arguments (unusued) to control whether or not SMF tempo map is used during import
Paul Davis [Fri, 16 Dec 2016 14:57:14 +0000 (14:57 +0000)]
add arguments (unusued) to control whether or not SMF tempo map is used during import

7 years agoadd arguments (unusued) to control whether or not SMF tempo map is used during import
Paul Davis [Fri, 16 Dec 2016 14:57:10 +0000 (14:57 +0000)]
add arguments (unusued) to control whether or not SMF tempo map is used during import

7 years agotweak presentation of SMF tempo option
Paul Davis [Fri, 16 Dec 2016 14:14:08 +0000 (14:14 +0000)]
tweak presentation of SMF tempo option

7 years agoshow tempo information for MIDI files in preview pane; start to offer choice about...
Paul Davis [Fri, 16 Dec 2016 13:46:13 +0000 (13:46 +0000)]
show tempo information for MIDI files in preview pane; start to offer choice about using tempo map when importing

7 years ago"toll free bridging" between smf_tempo_t and Evoral::SMF::Tempo
Paul Davis [Fri, 16 Dec 2016 13:45:43 +0000 (13:45 +0000)]
"toll free bridging" between smf_tempo_t and Evoral::SMF::Tempo

7 years agoexpose SMF tempo information in Evoral::SMF
Paul Davis [Fri, 16 Dec 2016 10:43:52 +0000 (10:43 +0000)]
expose SMF tempo information in Evoral::SMF

7 years agoadd function to get number of tempos found in SMF tempo map
Paul Davis [Fri, 16 Dec 2016 10:43:41 +0000 (10:43 +0000)]
add function to get number of tempos found in SMF tempo map

7 years agounused but slightly tricky code to add track name/instrument to an SMF file when...
Paul Davis [Thu, 15 Dec 2016 17:23:44 +0000 (17:23 +0000)]
unused but slightly tricky code to add track name/instrument to an SMF file when saved

7 years agoadd comments about limitations for Evoral::SMF and tracks
Paul Davis [Thu, 15 Dec 2016 17:22:48 +0000 (17:22 +0000)]
add comments about limitations for Evoral::SMF and tracks

7 years agoMIDI tracer actually changes the event-loop
Robin Gareus [Fri, 16 Dec 2016 00:56:15 +0000 (01:56 +0100)]
MIDI tracer actually changes the event-loop

7 years agofix generic plugins for toggle with 2 scalepoints (enum)
Robin Gareus [Fri, 16 Dec 2016 00:55:28 +0000 (01:55 +0100)]
fix generic plugins for toggle with 2 scalepoints (enum)

Signed-off-by: Robin Gareus <robin@gareus.org>
7 years agosome further invalidation details:
Robin Gareus [Thu, 15 Dec 2016 17:16:03 +0000 (18:16 +0100)]
some further invalidation details:

Prevent double unref during when the EventLoop terminates:
deleting the ringbuffer deletes all requests, some of which may
contain stale invalidation

remove the buffer_map_lock, now that signals ref-count the IR.

7 years agostore InvalidationRecord in a Connection object and ref/unref it as appropriate
Paul Davis [Thu, 15 Dec 2016 16:36:39 +0000 (16:36 +0000)]
store InvalidationRecord in a Connection object and ref/unref it as appropriate

7 years agoadd ::use_count() method to InvalidationRecord
Paul Davis [Thu, 15 Dec 2016 16:35:37 +0000 (16:35 +0000)]
add ::use_count() method to InvalidationRecord

7 years agobe a bit less flickery when redrawing tempo/meter markers.
nick_m [Thu, 15 Dec 2016 15:56:58 +0000 (02:56 +1100)]
be a bit less flickery when redrawing tempo/meter markers.

7 years agofix unused Outside filled framed curve for constant points outside the draw area.
nick_m [Thu, 15 Dec 2016 15:54:10 +0000 (02:54 +1100)]
fix unused Outside filled framed curve for constant points outside the draw area.

7 years agorevert c3ab67dd now that this misbehaviour is understood.
nick_m [Thu, 15 Dec 2016 15:52:39 +0000 (02:52 +1100)]
revert c3ab67dd now that this misbehaviour is understood.

7 years agofix issue with disappearing tempo curve at constant tempi.
nick_m [Thu, 15 Dec 2016 15:50:07 +0000 (02:50 +1100)]
fix issue with disappearing tempo curve at constant tempi.

7 years agotempo before the initial section is always constant.
nick_m [Thu, 15 Dec 2016 15:15:56 +0000 (02:15 +1100)]
tempo before the initial section is always constant.

7 years agoamend incomplete change in previous commit.
nick_m [Thu, 15 Dec 2016 15:01:50 +0000 (02:01 +1100)]
amend incomplete change in previous commit.

7 years agomore work on patch change redisplay.
nick_m [Thu, 15 Dec 2016 14:58:58 +0000 (01:58 +1100)]
more work on patch change redisplay.

- fixes just-introduced undo crash.

7 years agofix thinko in TempoMap::framepos_plus_qn.
nick_m [Thu, 15 Dec 2016 14:04:22 +0000 (01:04 +1100)]
fix thinko in TempoMap::framepos_plus_qn.

- affects region relative time conversion when
  initial meter is non-zero.

7 years agocorrect return syntax
Paul Davis [Thu, 15 Dec 2016 11:57:31 +0000 (11:57 +0000)]
correct return syntax

7 years agostd::list::erase() needs a non-const iterator.;
Paul Davis [Thu, 15 Dec 2016 11:36:55 +0000 (11:36 +0000)]
std::list::erase() needs a non-const iterator.;

at least for some versions of gcc.

7 years agospeed up patch change redisplay when using scroomer / adjusting height.
nick_m [Thu, 15 Dec 2016 11:35:23 +0000 (22:35 +1100)]
speed up patch change redisplay when using scroomer / adjusting height.

- zoom is still a bit slow.

7 years agoand now with erase
Robin Gareus [Thu, 15 Dec 2016 09:57:40 +0000 (10:57 +0100)]
and now with erase

7 years agoC++98 compatible iterator erase
Robin Gareus [Thu, 15 Dec 2016 09:40:45 +0000 (10:40 +0100)]
C++98 compatible iterator erase

7 years agorework request invalidation
Robin Gareus [Thu, 15 Dec 2016 05:11:20 +0000 (06:11 +0100)]
rework request invalidation

This kills 2 birds with 1 stone: Removes the necessity of locks
and makes call_slot() realtime safe (req->invalidation->requests list
push_back). On object destruction, the invalidation-record (IR) itself is
invalidated.

Invalidated IRs are pushed onto a trash-pool and deleted in the event-loop
of the invalidated object (GUI thread) once all requests that reference it
have been processed.

One last detail remains: PBD::signal connect should reference the IR
and disconnect unreference it. This will guarantee that signal emission
will not reference the IR while the pool trash is dropped.

7 years agoAdd a trash pool for invalidation requests.
Robin Gareus [Wed, 14 Dec 2016 21:38:37 +0000 (22:38 +0100)]
Add a trash pool for invalidation requests.

While EventLoop::invalidate_request() does invalidate request in the
request-list. It does *not* invalidate requests in the
per-thread-request-ringbuffer(s).
The invalidation record cannot be deleted in EventLoop::invalidate_request
see 6b5891a78f.

7 years agoNO-OP: re-indent
Robin Gareus [Wed, 14 Dec 2016 21:21:11 +0000 (22:21 +0100)]
NO-OP: re-indent

7 years agoAtomically to invalidate request
Robin Gareus [Wed, 14 Dec 2016 21:19:33 +0000 (22:19 +0100)]
Atomically to invalidate request

Yet another slightly overkill approach, but it /may/ explain crashes.

7 years agoAdd some more invalidation debug messages.
Robin Gareus [Wed, 14 Dec 2016 18:43:12 +0000 (19:43 +0100)]
Add some more invalidation debug messages.

7 years agoThe threading anecdotes - Episode 7
Robin Gareus [Wed, 14 Dec 2016 17:46:01 +0000 (18:46 +0100)]
The threading anecdotes - Episode 7

When do_request() destroys the receiver object, the receiver will
free the invalidation record. So the IR needs to be removed from the list
before executing the request.

Invalid read of size 8
   at: AbstractUI<Gtkmm2ext::UIRequest>::handle_ui_requests() (abstract_ui.cc:242)
   by: BaseUI::request_handler(Glib::IOCondition) (base_ui.cc:141)
   by: sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition>::operator()(Glib::IOCondition const&) const (mem_fun.h:2066)
   by: sigc::adaptor_functor<sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition> >::deduce_result_type<Glib::IOCondition const&, void, void, void, void, void, void>::type sigc::adaptor_functor<sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition> >::operator()<Glib::IOCondition const&>(Glib::IOCondition const&) const (adaptor_trait.h:89)
   by: sigc::internal::slot_call1<sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition>, bool, Glib::IOCondition>::call_it(sigc::internal::slot_rep*, Glib::IOCondition const&) (slot.h:148)
   by: sigc::slot1<bool, Glib::IOCondition>::operator()(Glib::IOCondition const&) const (slot.h:643)
   by: cross_thread_channel_call_receive_slot(_GIOChannel*, GIOCondition, void*) (crossthread.cc:49)
   by: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2)
   by: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2)
   by: g_main_loop_run (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2)
   by: gtk_main (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.31)
   by: Gtkmm2ext::UI::run(Receiver&) (gtk_ui.cc:286)
   by main (main.cc:408)
 Addrd1b8 is 24 bytes inside a block of size 48 free'd
   at: operator delete(void*) (vg_replace_malloc.c:576)
   by: PBD::EventLoop::invalidate_request(void*) (event_loop.cc:98)
   by: sigc::internal::trackable_callback_list::~trackable_callback_list() (in /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0.0.0)
   by: sigc::trackable::notify_callbacks() (in /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0.0.0)
   by: ProcessorEntry::LuaPluginDisplay::~LuaPluginDisplay() (processor_box.cc:1757)
   by: ProcessorEntry::LuaPluginDisplay::~LuaPluginDisplay() (processor_box.cc:1760)
   by: ProcessorEntry::~ProcessorEntry() (processor_box.cc:251)

7 years agoskip dead threads (if the event remains, it'll be cleaned up below)
Robin Gareus [Wed, 14 Dec 2016 16:48:44 +0000 (17:48 +0100)]
skip dead threads (if the event remains, it'll be cleaned up below)

7 years agofix potential invalid lock
Robin Gareus [Wed, 14 Dec 2016 16:31:31 +0000 (17:31 +0100)]
fix potential invalid lock

7 years agorework locking (fa07233a, 112fba182)
Robin Gareus [Wed, 14 Dec 2016 12:42:45 +0000 (13:42 +0100)]
rework locking (fa07233a112fba182)

For now: use a single lock, which should fix all related crashes.
optimize (with less contended partial locks) if this works.

7 years agoGUI changes to allow user to specify how/if to use SMF track/instrument names during...
Paul Davis [Wed, 14 Dec 2016 12:31:16 +0000 (12:31 +0000)]
GUI changes to allow user to specify how/if to use SMF track/instrument names during import

7 years agochange ordering of options for multichannel import
Paul Davis [Wed, 14 Dec 2016 11:45:37 +0000 (11:45 +0000)]
change ordering of options for multichannel import

7 years agotemporary default value for ImportStatus.midi_track_name_source
Paul Davis [Wed, 14 Dec 2016 11:45:18 +0000 (11:45 +0000)]
temporary default value for ImportStatus.midi_track_name_source

7 years agouse SMF track or instrument names in imported MIDI track names, if requested
Paul Davis [Wed, 14 Dec 2016 11:44:40 +0000 (11:44 +0000)]
use SMF track or instrument names in imported MIDI track names, if requested

7 years agoadd new member to ImportStatus object to allow specifying how to name new MIDI tracks
Paul Davis [Wed, 14 Dec 2016 11:44:01 +0000 (11:44 +0000)]
add new member to ImportStatus object to allow specifying how to name new MIDI tracks

7 years agoadd a new enum to identify how SMF data should be used when naming imported MIDI...
Paul Davis [Wed, 14 Dec 2016 11:43:23 +0000 (11:43 +0000)]
add a new enum to identify how SMF data should be used when naming imported MIDI tracks

7 years agoadd API to Evoral::SMF to retrieve all track/instrument names for use when importing
Paul Davis [Wed, 14 Dec 2016 11:42:54 +0000 (11:42 +0000)]
add API to Evoral::SMF to retrieve all track/instrument names for use when importing

7 years agoextract track and instrument names from SMF while loading
Paul Davis [Wed, 14 Dec 2016 11:42:10 +0000 (11:42 +0000)]
extract track and instrument names from SMF while loading

7 years agoadd braces and warning for unlikely error
Paul Davis [Wed, 14 Dec 2016 11:41:09 +0000 (11:41 +0000)]
add braces and warning for unlikely error