13
0
Commit Graph

34843 Commits

Author SHA1 Message Date
da0d16c712 midi state tracker: invert use of 0x80 to indicate "unset"
If a state variable has the 8th bit set, that indicates that it is unset.
2022-02-08 20:33:46 -07:00
19a4f6a437
Fix restoring Trigger state 2022-02-09 02:30:40 +01:00
5f84209c30
Add API to ignore PC per TriggerBox 2022-02-09 02:30:40 +01:00
43b98524b5 Cue page: cues are timeline rulers so color them(?); pixel-pushing 2022-02-08 17:04:09 -06:00
6c6e7ba2ee cue markers: pixel pushing 2022-02-08 17:04:09 -06:00
292faff26e Mini-timeline: Cues are events but they are also continuous 2022-02-08 17:04:09 -06:00
6b064c1599
NO-OP: whitespace 2022-02-08 23:20:40 +01:00
ba32ee0e87
Initial version of MIDI Trigger patch override UI 2022-02-08 23:15:24 +01:00
f57bef7c93
Remove debug message 2022-02-08 23:06:45 +01:00
f9dbe34900
Add missing include 2022-02-08 21:24:54 +01:00
54b3a3bf6b less marimbas! 2022-02-07 19:43:34 -06:00
e0b14f0231 clip picker: Add midi file properties; only shown when .mid is chosen 2022-02-07 19:33:43 -06:00
65f7e158a9 clip picker: tweak layout and rename _dir variable 2022-02-07 19:33:43 -06:00
51f458220d
Abstract Patch Change Widget, prepare to reuse for Slots 2022-02-08 01:25:37 +01:00
9b21c2be54
Bundle autotune plugin (with mixbus) 2022-02-07 18:54:38 +01:00
5f9d0743c9
Allow to loop auditioning 2022-02-07 04:39:05 +01:00
2328df23e5
Collect and postpone send delayline updates
In order to detect if route delaylines need to be updated,
aux-send delaylines need to be updated first. This was previously
done directly in the latency-callback, which may be concurrent
with processing.

Now only the information (pending_delay) is set, and the actual
change happens later at the end of process().
2022-02-07 04:31:42 +01:00
31b7e18d7d
Fix edge-case race initialize_latencies() vs process()
Due to _init_countdown when the engine starts, it is
extremely unlikely that Session::initialize_latencies(),
which is invoked by AudioEngine::Running runs concurrently
with Session::process, but at least in theory it would be possible.
2022-02-06 00:45:49 +01:00
0a49586b1a
Fix macOS builds (incomplete type, missing include in 9eb626cc37) 2022-02-06 00:39:36 +01:00
77bca98fc0
Revert "Triggerbox: revert test-code"
This reverts commit 220b1386ab.
because it causes crashes when saving sessions.

_channel_map[] must not be empty, otherwise

Program terminated with signal SIGSEGV, Segmentation fault.
snprintf (buf, sizeof (buf), "%d", _channel_map[chn]);
#0  ARDOUR::MIDITrigger::get_state() (this=0x55d676b4c600) at ../libs/ardour/triggerbox.cc:1962
#1  0x00007f58ccb40b12 in ARDOUR::TriggerBox::get_state() (this=0x55d676b4d720) at ../libs/ardour/triggerbox.cc:33
2022-02-05 19:19:37 +01:00
77bfba1281
Revert "Fix playback of initial notes during MIDI audition"
This reverts commit 617697a823.
2022-02-05 19:16:44 +01:00
c870c22c87
Process Audition: process events before run
Calls DR::set_pending_overwrite() sets DR::run_must_resolve
before the first run.

Previously this variable was set after the first ::run,
which resulted in notes at the beginning of audition to be
cut short.
2022-02-05 19:16:00 +01:00
0db261cf64
Merge Overwrite request for the track
Previously events with different reasons where treated as two
separate events. Processing an Overwrite request causes
post-transport-work to set.

Since ::non_realtime_work_pending() is true, process_event()
is not called, and no further immediate events are evaluated in
the same cycle.

So Overwrite requests were repeated over multiple cycles.
2022-02-05 19:04:22 +01:00
cd53301d06
Significantly speed up loading SMF tempo-maps
Files that have many tracks, each with tempo information
were near impossible to load (30+ mins on modern 4.2Ghz CPU!),
because tempo is parsed incrementally:

```
For each new track:
  for each new tempo-event:
    rewind()
    for each loaded track so far:
      for each event on this track so far
```

This reduces the complexity from O(tracks^2 * tempos^2)
to O(tracks * tempos).

"Come Thou Fount Tempo Map.mid" has 238 Tracks and 56168 total
Tempo Changes (236 per track). This now requires only 56168 iterations
in smf_create_tempo_map_and_compute_seconds, rather than 1.64e+9
iterations
2022-02-05 17:33:21 +01:00
3da54244ea
FIX smf-tool compilation (library ordering) 2022-02-05 17:33:21 +01:00
207ad2d369
Add API to query SMF note-count and pgm-changes
This information is useful for trigger-clips, in particular
if the file can change synth-settings via patch-changes.
2022-02-05 17:33:21 +01:00
220b1386ab Triggerbox: revert test-code 2022-02-04 21:48:45 -06:00
d22269f59f Trigger Page: add an audition-synth selector to Clip Picker 2022-02-04 21:41:34 -06:00
e2c550bcdd Auditioner: expose synth_info 2022-02-04 21:41:34 -06:00
9ad82787a1 Instrument Selector: use a 3-way Disposition to disambiguate the uses of this widget 2022-02-04 21:33:12 -06:00
9eb626cc37 Auditioner: hide unnecessary widgets for auditioner synth GUI 2022-02-04 20:18:00 -06:00
3694009176
Fix silence w/MonitoringSilence and triggerbox 2022-02-05 01:10:27 +01:00
91609791b4
Format used MIDI channels in Import Dialog Info Box 2022-02-05 00:13:28 +01:00
ef8904210e
Add method to format set of MIDI channels
eg. channels 1,2,3,5,6
will be formatted as "1-3, 5, 6"
2022-02-05 00:13:28 +01:00
12e8235193
Add API to query set of used MIDI channels in a SMF 2022-02-05 00:13:27 +01:00
fa29647246 Fix dmg failure caused by out of space issue
With no clear reason why, copying the program to the dmg is running
out of space. Possibly a bug in latest catalina.

Instead of using a fixed extra space amount. Add 25% of the Product Dir
size to the dmg size.
2022-02-04 15:24:24 -06:00
d2a5fa2d9f Fix trap error case
At this point TMPDMG already has .dmg added to it and
the original mktemp file was removed above.
2022-02-04 15:18:29 -06:00
617697a823
Fix playback of initial notes during MIDI audition 2022-02-04 19:32:34 +01:00
6df1bd3ad5
Triggger Clip Picker: fix crash at session close 2022-02-04 13:58:22 +01:00
834e164df0
Trigger Clip Picker: Idle update audition synth
This keeps the plugin in sync with any changes made to the
Plugin UI. In particular General MIDI Synth will send
notifications once patch/program changes are processed.
ACE Fluidsynth can load sf2 files, etc.
2022-02-04 13:57:33 +01:00
4fe9d99674
Auditioner: add API for UI to run the synth (idle)
This allows the synth to process injected out-of-band MIDI
data, such as Program/Patch Changes while audition is inactive.
2022-02-04 13:46:13 +01:00
604652b7d6 fix duplicate behavior
We were adding the "span" value to the position before calling
Playlist::duplicate(), but it does that internally.
2022-02-03 20:51:04 -07:00
c7d4729238
Expose session config triggerbox-overrides-disk-monitoring option 2022-02-04 01:47:29 +01:00
e2bc670e6b
Update monitoring display when TB cues change 2022-02-04 01:47:26 +01:00
5e2912b7eb
Auto Monitoring takes TriggerBox into account
MonitoringDisk is now only set implicitly if the triggerbox
contains no cues.
2022-02-04 01:47:20 +01:00
18207c6896
Fix Triggerbox empty(), active-slots count on session load 2022-02-04 01:40:54 +01:00
05f4ffa598
Fix cue selection
TriggerEntry has 3 child items:
 * play-button, follow-button, name-button.

On mouse-down the TriggerEntry is grab()bed in preparation
to start a drag. From then on all events are directly sent to
TriggerEntry, which can only pass it up to parent items.
Mouse-release hence reaches the TriggerStrip and selects it.
2022-02-03 23:29:01 +01:00
e51427413c
Tweak TB event passthrough
Play/Stop and Follow buttons no longer pass events up.
That way the strip will not be selected on mouse-up.
2022-02-03 21:57:13 +01:00
d9ec733c47
Dump XML node if loading a source fails
This helps to debug issues, in case this comes up in a session
with many sources.
2022-02-03 21:57:13 +01:00
3c2fdab1ce triggerbox: add Properties::channel_map (and sent it); save/restore channel map state (untested) 2022-02-03 13:07:04 -07:00