View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0009472 | ardour | bugs | public | 2023-10-08 16:44 | 2023-10-23 10:40 |
Reporter | fredo.faure | Assigned To | |||
Priority | normal | Severity | major | Reproducibility | always |
Status | new | Resolution | open | ||
Platform | Ubuntu | OS | Linux | OS Version | (any) |
Summary | 0009472: CC Midi messages are transmitted from one track to another but not recorded on midi tracks | ||||
Description | I have two Midi tracks: Track0 with plugin0 and Track1 with plugin1. The two tracks are Midi connected: Track0->Track1. In the loop processBlock, the plugin0 creates some midi messages and print them. the plugin1 receive the messages and print them. At the same time i ask the track1 to record the midi messages and i export this in a file.mid. Concerning the printed messages everything is ok, all messages are transmitted. But in the file some messages are missing. I repeated many times and this is reproducible. But i don't understand the exact rule, but observe that the missing messages in my example are (but sometimes they are here): b0,e,*, b0,17,*, b0,18,*, b0,35,*, b0,36,*, b0,37,*, b0,38,*, I give below 3 files: log1.txt :that contains the printed midi messages (with their time measured from the start of the loop), from plugin0 (output) and plugin1 (input). From this file we can check that the messages are all transmited correctly. log2.txt: that contains the printed midi messages from plugin1 (input) when we read the recorded file on track1. From this we can compare with log1.txt and observe that some CC messages are missing. Precisely this is for the sequences of 5 messages: b0,7,17, 97.9692 b0,15,7d, 97.9693 b0,16,2, 97.9693 e0,20,41, 97.9693 90,3e,7f, 97.9693 ---------------------- where we expect instead the 12 messages: b0,e,3, 84.5669 b0,15,7d, 84.5669 b0,16,2, 84.567 b0,17,0, 84.567 b0,18,0, 84.567 b0,35,0, 84.567 b0,36,0, 84.567 b0,37,0, 84.567 b0,38,0, 84.567 b0,7,17, 84.567 e0,20,41, 84.567 90,3e,7f, 84.5671 ---------------------- file.mid that contains the recorded midi file. Looking carefuly we see that it corresponds to log1.txt. So some midi messages are missing. | ||||
Tags | No tags attached. | ||||
|
log2.txt (2,039 bytes)
MM1. Input. Begin of processBlock, list of messages of size =c, plugin:1 b0,7,1, 95.3918 b0,e,3, 95.3919 b0,15,0, 95.3919 b0,16,0, 95.3919 b0,17,0, 95.3919 b0,18,0, 95.3919 b0,35,0, 95.3919 b0,36,0, 95.3919 b0,37,0, 95.3919 b0,38,0, 95.3919 e0,0,40, 95.3919 90,3c,7f, 95.3919 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =c, plugin:1 b1,7,21, 96.4434 b1,e,3, 96.4434 b1,15,7f, 96.4434 b1,16,1, 96.4434 b1,17,0, 96.4434 b1,18,0, 96.4434 b1,35,0, 96.4435 b1,36,0, 96.4435 b1,37,0, 96.4435 b1,38,0, 96.4435 e1,50,40, 96.4435 91,43,7f, 96.4435 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 80,3c,0, 97.5864 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =5, plugin:1 b0,7,17, 97.9692 b0,15,7d, 97.9693 b0,16,2, 97.9693 e0,20,41, 97.9693 90,3e,7f, 97.9693 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 81,43,0, 99.2581 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =c, plugin:1 b1,7,24, 99.6761 b1,e,3, 99.6762 b1,15,7c, 99.6762 b1,16,3, 99.6762 b1,17,0, 99.6762 b1,18,0, 99.6762 b1,35,0, 99.6762 b1,36,0, 99.6762 b1,37,0, 99.6762 b1,38,0, 99.6762 e1,70,41, 99.6762 91,45,7f, 99.6762 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 80,3e,0, 100.686 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =c, plugin:1 b0,7,1b, 101.11 b0,e,3, 101.11 b0,15,7a, 101.11 b0,16,4, 101.11 b0,17,0, 101.11 b0,18,0, 101.11 b0,35,0, 101.11 b0,36,0, 101.11 b0,37,0, 101.11 b0,38,0, 101.11 e0,40,42, 101.111 90,40,7f, 101.111 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 81,45,0, 102.41 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 80,40,0, 103.275 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =20, plugin:1 log1.txt (4,521 bytes)
================================== MM3. Ouput. End of processblock., list of messages of size =12, plugin:0 b0,e,3, 81.9906 b0,15,0, 81.9906 b0,16,0, 81.9906 b0,17,0, 81.9906 b0,18,0, 81.9906 b0,35,0, 81.9907 b0,36,0, 81.9907 b0,37,0, 81.9907 b0,38,0, 81.9907 e0,0,40, 81.9907 b0,7,1, 81.9907 90,3c,7f, 81.9907 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =c, plugin:1 b0,e,3, 81.989 b0,15,0, 81.989 b0,16,0, 81.989 b0,17,0, 81.989 b0,18,0, 81.989 b0,35,0, 81.989 b0,36,0, 81.989 b0,37,0, 81.989 b0,38,0, 81.9891 b0,7,1, 81.9891 e0,0,40, 81.9891 90,3c,7f, 81.9891 ---------------------- ================================== MM3. Ouput. End of processblock., list of messages of size =c, plugin:0 b1,e,3, 83.0416 b1,15,7f, 83.0417 b1,16,1, 83.0417 b1,17,0, 83.0417 b1,18,0, 83.0417 b1,35,0, 83.0417 b1,36,0, 83.0417 b1,37,0, 83.0417 b1,38,0, 83.0417 e1,50,40, 83.0417 b1,7,21, 83.0417 91,43,7f, 83.0418 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =c, plugin:1 b1,e,3, 83.04 b1,15,7f, 83.04 b1,16,1, 83.04 b1,17,0, 83.04 b1,18,0, 83.04 b1,35,0, 83.0401 b1,36,0, 83.0401 b1,37,0, 83.0401 b1,38,0, 83.0401 b1,7,21, 83.0401 e1,50,40, 83.0401 91,43,7f, 83.0401 ---------------------- ================================== MM3. Ouput. End of processblock., list of messages of size =1, plugin:0 80,3c,0, 84.1856 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 80,3c,0, 84.1835 ---------------------- ================================== MM3. Ouput. End of processblock., list of messages of size =c, plugin:0 b0,e,3, 84.5687 b0,15,7d, 84.5687 b0,16,2, 84.5687 b0,17,0, 84.5687 b0,18,0, 84.5687 b0,35,0, 84.5687 b0,36,0, 84.5687 b0,37,0, 84.5687 b0,38,0, 84.5688 e0,20,41, 84.5688 b0,7,17, 84.5688 90,3e,7f, 84.5688 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =c, plugin:1 b0,e,3, 84.5669 b0,15,7d, 84.5669 b0,16,2, 84.567 b0,17,0, 84.567 b0,18,0, 84.567 b0,35,0, 84.567 b0,36,0, 84.567 b0,37,0, 84.567 b0,38,0, 84.567 b0,7,17, 84.567 e0,20,41, 84.567 90,3e,7f, 84.5671 ---------------------- ================================== MM3. Ouput. End of processblock., list of messages of size =1, plugin:0 81,43,0, 85.8566 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 81,43,0, 85.8545 ---------------------- ================================== MM3. Ouput. End of processblock., list of messages of size =c, plugin:0 b1,e,3, 86.2747 b1,15,7c, 86.2747 b1,16,3, 86.2747 b1,17,0, 86.2747 b1,18,0, 86.2747 b1,35,0, 86.2747 b1,36,0, 86.2747 b1,37,0, 86.2748 b1,38,0, 86.2748 e1,70,41, 86.2748 b1,7,24, 86.2748 91,45,7f, 86.2748 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =c, plugin:1 b1,e,3, 86.2731 b1,15,7c, 86.2731 b1,16,3, 86.2731 b1,17,0, 86.2731 b1,18,0, 86.2731 b1,35,0, 86.2731 b1,36,0, 86.2731 b1,37,0, 86.2732 b1,38,0, 86.2732 b1,7,24, 86.2732 e1,70,41, 86.2732 91,45,7f, 86.2732 ---------------------- ================================== MM3. Ouput. End of processblock., list of messages of size =1, plugin:0 80,3e,0, 87.2845 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 80,3e,0, 87.2824 ---------------------- ================================== MM3. Ouput. End of processblock., list of messages of size =c, plugin:0 b0,e,3, 87.7086 b0,15,7a, 87.7086 b0,16,4, 87.7086 b0,17,0, 87.7086 b0,18,0, 87.7086 b0,35,0, 87.7086 b0,36,0, 87.7087 b0,37,0, 87.7087 b0,38,0, 87.7087 e0,40,42, 87.7087 b0,7,1b, 87.7087 90,40,7f, 87.7087 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =c, plugin:1 b0,e,3, 87.7068 b0,15,7a, 87.7068 b0,16,4, 87.7068 b0,17,0, 87.7068 b0,18,0, 87.7069 b0,35,0, 87.7069 b0,36,0, 87.7069 b0,37,0, 87.7069 b0,38,0, 87.7069 b0,7,1b, 87.7069 e0,40,42, 87.7069 90,40,7f, 87.7069 ---------------------- ================================== MM3. Ouput. End of processblock., list of messages of size =1, plugin:0 81,45,0, 89.0095 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 81,45,0, 89.0075 ---------------------- ================================== MM3. Ouput. End of processblock., list of messages of size =1, plugin:0 80,40,0, 89.8735 ---------------------- MM1. Input. Begin of processBlock, list of messages of size =1, plugin:1 80,40,0, 89.8714 ---------------------- |
|
I can add the following information: This Ardour 7.5.0 "Neroli" (rev 7.5) Intel 64 bits On Ubuntu, but i observed the same with Ardour 7.5 on MacOs. My Plugins are VST3 made with JUCE 7. |
|
Can you retest this with a setup where track 1 has no MIDI plugin at all? I would do it myself, but (a) busy with the release process for Ardour 8 (b) i can't compare it quickly with the plugin you are using |
|
perhaps this is a VST3 issue? CCs are mapped to plugin control input parameters, and not sent as MIDI messages. |
|
I am sur to understand very weel, but i removed the plugin on track 1, recorded and see the same problem. |
|
I just checked . I created a MIDI file with CCs 1..127 on channel one with midicomp (https://github.com/markc/midicomp/) a MIDI to/form text tool:MFile 0 1 19200 MTrk 0 Par ch=1 c=1 v=127 4800 Par ch=1 c=1 v=0 4800 Par ch=1 c=2 v=127 9600 Par ch=1 c=2 v=0 9600 Par ch=1 c=3 v=127 14400 Par ch=1 c=3 v=0 14400 Par ch=1 c=4 v=127 19200 Par ch=1 c=4 v=0 # ... SNIP ... 604800 Par ch=1 c=126 v=0 604800 Par ch=1 c=127 v=127 609600 Par ch=1 c=127 v=0 609600 Meta TrkEnd TrkEnd Imported it to Ardour on a track without synth. Then created a 2nd MIDI track, and connected its input to the output of the track with the sequence. For good measure I have added "ACE MDI Monitor" plugin (comes with Ardour) to both tracks. Rec-arm, record. save, quit and then used MIDIcomp again to check the recorded midi file (from the session's interchange/*/midifiles/ folder). All CCs were correctly recorded. So either there is an issue with Ardour's VST3 implementation not passing all MIDI events on, or something specific to your JUCE plugin. Older versions of JUCE default generates 127 * 16 VST3 hidden control ports. One for each MIDI CC and channel. I don't know if that is still the case for JUCE7. While generating MIDI still uses an event based API. 1. Can you try if you receive all MIDI events if you play the attached file into your plugin? 2. Can you check with ACE MIDI Monitor added after your plugin on the same track if all events are correctly generated? |
|
I did the test, thank you, it works. I see no problem using this file. So i have to find the problem with my situation. |
|
But i am not sure that the problem comes from my plugin, because, i checked that the midi messages are well transmited if i put an intermediary midi track (without recording). The problem is when i record. May be too many CC messages at the same time? |
Date Modified | Username | Field | Change |
---|---|---|---|
2023-10-08 16:44 | fredo.faure | New Issue | |
2023-10-08 16:44 | fredo.faure | File Added: file.mid | |
2023-10-08 16:44 | fredo.faure | File Added: log2.txt | |
2023-10-08 16:44 | fredo.faure | File Added: log1.txt | |
2023-10-08 16:50 | fredo.faure | Note Added: 0028156 | |
2023-10-08 17:01 | paul | Note Added: 0028157 | |
2023-10-08 19:12 | x42 | Note Added: 0028158 | |
2023-10-08 20:32 | fredo.faure | Note Added: 0028159 | |
2023-10-08 21:14 | x42 | Note Added: 0028160 | |
2023-10-08 21:14 | x42 | File Added: MIDI-CC.mid | |
2023-10-08 21:30 | x42 | Note Edited: 0028160 | |
2023-10-23 10:26 | fredo.faure | Note Added: 0028243 | |
2023-10-23 10:40 | fredo.faure | Note Added: 0028244 |