View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008828 | ardour | bugs | public | 2021-11-29 21:42 | 2021-11-30 19:45 |
Reporter | rohanlean | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | GNU | OS | Linux | OS Version | (any) |
Product Version | 6.9 | ||||
Summary | 0008828: Two separate MIDI tracks feeding the same bus can result in overlapping notes | ||||
Description | When two MIDI tracks send their messages to the same bus, then the messages of the first added track will arrive first. This means that a note "On" event of the first track arrives before a note "Off" event of the second track if the notes start and end, respectively, at the same musical time. The events are then directly forwarded to the plugins, resulting in errors because of the overlapping notes. This behaviour is a bit unintuitive and annoying to fix in the midi files. I assume that the messages are triggered in a single frame (terminology?), so that maybe the bus could sort its incoming messages before forwarding them. | ||||
Tags | No tags attached. | ||||
|
Which backend do you use? mixing is done by the port-engine. In case this is JACK, this would be a bug in jACK (or pipewire). Try with Ardour/ALSA. |
|
> Try with Ardour/ALSA. I did not manage to get audio out with ALSA, but the MIDI messages still had the same issue. Normally I do use the JACK emulation of pipewire, though. |
|
Correction: the MIDI messages have the same issue with "ALSA raw devices" selected as MIDI system, but not with "ALSA sequencer". |
|
I cannot reproduce nor explain why ALSA raw and ALSA sequencer makes any difference here. Mixing is independent of hardware I/O but performed by the port-engine which is identical for ALSA (raw and seq I/O backends). JACK 2 used to have an issue with this but this was fixed a few years ago. |
|
Given that you cannot use Ardour/ALSA, it is likely that pipewire still runs and uses the soundcard. So Ardour cannot use it, and you also end up using PW's MIDI emulation under the hood. |
|
> I cannot reproduce nor explain why ALSA raw and ALSA sequencer makes any difference here. I have retested and now the messages are sequenced correctly also with ALSA raw. I am almost entirely certain that they were not before. |
|
> Given that you cannot use Ardour/ALSA, it is likely that pipewire still runs and uses the soundcard. So Ardour cannot use it, and you also end up using PW's MIDI emulation under the hood. Yeah, I expected something like that. Theoretically Ardour should be able to ask pipewire for full control, it has "org.freedesktop.ReserveDevice1.*" permissions on the session bus. |
|
>Theoretically Ardour should be able to ask pipewire for full control, it has "org.freedesktop.ReserveDevice1.*" permissions on the session bus. Ardour does that, at least binaries from https://ardour.org/download -- some distros however disable this, or screw this up when packaging ardour. |
|
OK, so it is fixed now for the original tracks that I added, because somewhere along the way their relative sequencing seems to have changed. I have no idea how or why. But when reproducing the bug anew, it triggers consistently again. ¯\_(?)_/¯ So I guess this is almost certainly a bug in PW then, anyway. I will try to report it in the PW bug tracker. |
|
Thanks, if needed you can cross-link this issue to the PW bugtracker. |
|
@x42, could you have a look at the pipewire bug report at https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1868 please? A pipewire developer has some concerns that I think you are more qualified to answer than I. |
|
Based on what you wrote over there: if note-off--note-on at the same time is not technically wrong (and therefore also possibly present in well-behaved external MIDI sources), should Ardour offer a plugin that sorts the events from multiple sources in the same way in which Ardour already sorts the events of a track? Although I would guess that this is so cheap, you might as well just invisibly include it all the time as a courtesy. I do not quite see how your suggestion of using multiple channels is a solution. Wouldn't that rely on the later consumers of the MIDI stream to discriminate by channel? When I actually encountered this issue, simply switching a channel would not have helped. |
|
Instead of port-connections, you could use aux-sends to a MIDI Bus. This is an Ardour internal connections and events are also sorted there. |
|
Alright, perfect; thank you for your help. I will close this now. |
Date Modified | Username | Field | Change |
---|---|---|---|
2021-11-29 21:42 | rohanlean | New Issue | |
2021-11-29 21:51 | x42 | Note Added: 0026253 | |
2021-11-29 22:23 | rohanlean | Note Added: 0026254 | |
2021-11-29 22:26 | rohanlean | Note Added: 0026255 | |
2021-11-29 22:28 | x42 | Note Added: 0026256 | |
2021-11-29 22:30 | x42 | Note Added: 0026257 | |
2021-11-29 22:35 | rohanlean | Note Added: 0026258 | |
2021-11-29 22:38 | rohanlean | Note Added: 0026259 | |
2021-11-29 22:48 | x42 | Note Added: 0026260 | |
2021-11-29 22:56 | rohanlean | Note Added: 0026261 | |
2021-11-29 23:05 | x42 | Note Added: 0026262 | |
2021-11-30 09:38 | rohanlean | Note Added: 0026263 | |
2021-11-30 18:17 | rohanlean | Note Added: 0026264 | |
2021-11-30 19:02 | x42 | Note Added: 0026265 | |
2021-11-30 19:45 | rohanlean | Note Added: 0026266 | |
2021-11-30 19:45 | rohanlean | Status | new => closed |
2021-11-30 19:45 | rohanlean | Resolution | open => fixed |