Commit Graph

34734 Commits

Author SHA1 Message Date
Ben Loftis 9b2d6c136d clip_picker: tweak .smf file info text 2022-02-28 08:11:24 -06:00
Ben Loftis 0ec6a60307 patch_change_widget: only show tabs for the channels that a slot is using 2022-02-28 08:11:24 -06:00
Ben Loftis be5a56fae3 triggerbox: we no longer need to store Triggerbox::estimated_tempo in the snapshot file
* estimated tempo is cached in the SegmentDescriptor
* storing it in the Source's SD allows us to skip minibpm if we find a tempo there
2022-02-28 08:11:24 -06:00
Ben Loftis 00db64a4ed triggerbox: call copy_to_ui_state() after audio|midi state is recalled 2022-02-28 08:11:24 -06:00
Ben Loftis cd63f615e1 triggerbox: implement 'replace midi-file PGMs with the triggerbox PGMs"
* intercept {pgm|bank}-change messages, and replace them with triggerbox values
* check is_set() extensively; we have arrays of pgms but most are unused
2022-02-28 08:11:23 -06:00
Ben Loftis 0cee4f45ce triggerbox: maintain UsedChannels and Patch Change data
preserve this data across drag&drop, session save, etc
2022-02-28 08:11:23 -06:00
Ben Loftis dce3f2eb65 triggerbox: estimate_midi_patches tries to retain patch info across domains
* initialize patches to GM standard (drums on 10) in case file has none
* in the case where file had none, check the Auditioner to see if user set any
* in the case where a file has patches, use those instead

* also stash the UsedChannels so we can show only the used chans in the UI
2022-02-28 08:11:23 -06:00
Ben Loftis fcd45cfca7 auditioner: do not reset my patches when changing files
* if a file has program-changes, then it will set() my patches
* if a file does *not* have PCs, the user might choose one (which sets() it)
* if the next file does *not* have PCs, we should preserve the user's selection
* if the next file has PCs, it will set() it (losing the user selection)
2022-02-28 08:11:23 -06:00
Ben Loftis bda8048873 segment_descriptor: stash UsedChannels here
* similar to segment_tempo, it is conceivable that a midi file would
 use different midi channels in different time ranges of the source
2022-02-28 08:11:23 -06:00
Ben Loftis 75e3646ed8 utils: re-implement used_channels_as_string to use UsedChannels (bitset) 2022-02-28 08:11:23 -06:00
Ben Loftis c83b8396c2 smf_source: implement SMF::UsedChannels, and move midi screening into load_model()
Some MIDI sources (esp immediately after import) are not yet on disk,
 but are only in memory.  So Open() does not properly initalize
 data like UsedChannels and program info
2022-02-28 08:11:22 -06:00
Ben Loftis 9266e47558 PatchChange: fix set_channel() 2022-02-28 08:11:22 -06:00
Ben Loftis 472be6e50e PatchChange: yet more checks to keep patch state in sync (is_set())
* bank 2nd byte is the one that gets 'set'
2022-02-26 13:09:42 -06:00
Ben Loftis 8436e55e1b add DEBUG flag: miditriggers 2022-02-26 13:09:41 -06:00
Ben Loftis 3280523e90 trigger_ui: pixel pushing for mac 2022-02-26 13:09:41 -06:00
Todd Naugle dd1156e900 Improved reporting of glib throw errors during session creation 2022-02-23 17:32:09 -06:00
Todd Naugle 2217e8d9ce Log text passed to a dialog needs escaped to avoid markup errors
For example, the following log text creates a markup error that results in
the session loading dialog being completely empty.

WARNING: VST3<C:\Program Files\Common Files\VST3\Plugins.VST.Someplugin.vst3\Contents\x86-win\Plugins.VST.Someplugin.vst3>: Invalid Module Path
...

Gtk-WARNING **: 16:46:28.447: Failed to set text from markup due to error parsing markup: Error on line 7 char 40: ?Files\Common? is not a valid name: ?\?
2022-02-23 10:25:46 -06:00
Paul Davis 8408d5916c triggerbox: if we find a cue marker, we are no longer locate armed 2022-02-22 22:00:11 -07:00
Paul Davis 4048118926 triggerbox: stop-all-cues cue event now stops all running triggers
This is done regardless of whether or not the trigger was started by a cue or individually
2022-02-21 21:06:17 -07:00
Paul Davis e8dc95ded5 NOOP: whitespace conventions 2022-02-21 16:13:48 -07:00
Paul Davis 2eda6d1865 initialize sync mark/line in Region copied from another region 2022-02-21 16:13:30 -07:00
Paul Davis 20d4a9b935 remove debug output 2022-02-21 15:02:08 -07:00
Paul Davis 11fd0b84b1 derive TriggerUI from sigc::trackable so that it can be automically disconnected from signals
The explicit disconnect in the destructor prevents any more signal->connection firing, but the invalidator
is required to remove existing queued slot calls in the receiving thread
2022-02-21 15:01:36 -07:00
Paul Davis 87bcd4d83b Revert "derive TriggerUI from sigc::trackable so that it can be automically disconnected from signals"
This reverts commit 06eb154db2.
2022-02-21 13:40:56 -07:00
Paul Davis 06eb154db2 derive TriggerUI from sigc::trackable so that it can be automically disconnected from signals
Note: this still seems suspicious: we explicitly disconnected from signals in the destructor. However,
it is better form to be able to use invalidator() in the connection call
2022-02-21 13:28:17 -07:00
Paul Davis 28db0c1d2b triggerbox: fix logic error in handling of locate-while-playing-triggers 2022-02-21 12:45:13 -07:00
Paul Davis 92d82866e0 temporal: add some basic BBT time tests
Some of the subtraction tests may need revising because it is not immediately clear that the
current answers are correct.
2022-02-21 11:55:44 -07:00
Paul Davis 47bf18101b triggerbox: don't set transition times when we are not transitioning
At some point during code refactoring, we ended up setting up the 3 transition times, intedned
to define when the *previous* transition occured, as we checked to see if a transition
would occur during this ::run() call. This led to (in particular) MIDI clips ending early,
because the transition_beats value was set to the *next* (upcoming) transition, and we used
this to define the timeline position of MIDI events
2022-02-20 11:00:01 -07:00
Paul Davis 685a3ebc7e do not use a write copy of the tempo map when not planning to modify the map 2022-02-20 09:31:23 -07:00
Paul Davis b9de15d285 triggerbox: split apart semantics of WaitingToStop
This allows for a different quantization to be used when WaitingToSwitch,
used when we explicitly start a different Trigger. When "just stopping"
we continue to use 1 bar quantization; when switching to a different
Trigger we use the quantization of the next Trigger
2022-02-20 09:20:47 -07:00
Paul Davis 61b728bdcc more avoidance of double initialization 2022-02-19 16:42:03 -07:00
Ben Loftis 08768e8185 draw the Stop All Cues marker as a square 2022-02-19 13:39:59 -06:00
Ben Loftis c7dbfb9961 trigger_ui: add a hint re: randomness of selections in the Multi-Jump dialog 2022-02-19 12:34:45 -06:00
Ben Loftis ee9e7589ee trigger_ui: add more tooltips 2022-02-19 12:12:43 -06:00
Ben Loftis ab44c9a750 trigger_ui: add some tooltips 2022-02-19 11:49:01 -06:00
Ben Loftis 5f0c7fe3d6 move cue-behavior to session config (gtk part) 2022-02-19 11:49:01 -06:00
Ben Loftis b506a243a2 move cue-behavior from rc_configuration to per-session config 2022-02-19 11:48:56 -06:00
Paul Davis dcdfd3ff0f no need to repeat initialization 2022-02-19 09:03:48 -07:00
Paul Davis 4ae5c04fd7 remove duplicate sync_mark member in AudioRegionView (decl'd in RegionView) 2022-02-19 09:03:36 -07:00
Paul Davis 3bfcfe178d triggerbox: some work towards keeping GUI state in sync with "Play Cues"
This still needs some mechanism to request a fast-forward when "Play Cues" is enabled
in a (G)UI thread
2022-02-19 08:53:30 -07:00
Paul Davis a01325c693 triggerbox: NOOP: whitespace cleanup 2022-02-18 18:02:56 -07:00
Paul Davis 1e7ca734d6 triggerbox: reapply change in 9abc4642 with more explanatory comments 2022-02-18 18:01:52 -07:00
Paul Davis 00185aadcf triggerbox: leave a possibly helpful comment 2022-02-18 12:57:14 -07:00
Paul Davis f5ef5f44a3 triggerbox: include change intended to be in cb815bf8d
This properly splits the condition into "before final beat" and
"after final beat"
2022-02-18 12:57:14 -07:00
Paul Davis 66b9bc5c40 triggerbox: alter several DEBUG_TRACE statements 2022-02-18 12:57:14 -07:00
Paul Davis fe76432061 triggerbox: help MIDITriggers find their ends consistently 2022-02-18 12:57:14 -07:00
Paul Davis 19f6a6a739 triggerbox: during fast-forward, if there's nothing to do, set_currently_playing to null
if left non-null, the next TriggerBox::run() method will start the transport
rolling.
2022-02-18 12:57:14 -07:00
Paul Davis 8a36f9fce8 triggerbox: reset _loop_cnt to zero on shutdown
This helps with preventing _loop_cnt incrementing to unintended values.
2022-02-18 12:57:14 -07:00
Paul Davis 0762ef4f35 triggerbox: remove Playout enum from enums registation 2022-02-18 12:57:14 -07:00
Paul Davis 401e5a572c triggerbox: clean up comments for Trigger state decls 2022-02-18 12:57:14 -07:00