Steps to reproduce :
Load in Vestige a VSTi made in cabbage like the one in example (in Cabbage)
Add a note on the pianoroll to hear the bug. (the note keeps playing)
More Infos :
Vestige loads perfectly the plugin and everything works well when the notes are played in the little piano of the Vestige window.
The bug only happens when the user click in the pianoroll to create a note : the note never stops playing.
I tested a lot of plugins made in cabbage from lots of people, I tried the examples provided with the software and I tried to create simple plugin myself, the issue is still the same.
So I think note events and pianoroll click events are a bit different and that may be the source of the bug, but I'm not sure so I'll be glad if someone could have a look.
System config :
Windows 7 64bits
LMMS 64bits v1.1.3 (same issue with beta releases)
Cabbage 64bits v2.0.02
If you need more informations, please let me know, I will do everything I can to help.
Cabbage seems really powerful to make great VST, it would be perfect if they work in LMMS !
Thanks in advance,
T0NIT0 RMX
_EDIT 03/06/2018 : I opened a topic on Cabbage's forum http://forum.cabbageaudio.com/t/problem-with-vst-from-cabbage-in-lmms/1079 to inform the dev about the issues._
Tagging @DomClark
Have you tried on a 1.2 release candidate?
Sent from my iPhone
On 28 May 2018, at 23:09, T0NIT0 RMX notifications@github.com wrote:
Hi there,
I would like to report a bug about VSTi that come from Cabbage.Vestige loads perfectly the plugin and everything works well when the notes are played in the little piano of the Vestige window.
The bug only happens when the user click in the pianoroll to create a note : the note never stops playing.I tested a lot of plugins made in cabbage from lots of people, I tried the examples provided with the software and I tried to create simple plugin myself, the issue is still the same.
So I think note events and pianoroll click events are a bit different and that may be the source of the bug, but I'm not sure so I'll be glad if someone could have a look.
Please find enclosed a little example, just load the VSTi64bits in Vestige and put a note on the pianoroll to reproduce the bug.
cabbage.zipI am using LMMS 1.1.3 64bits on Windows7 (I tried with the latest beta build, same bug)
If you need more informations, please let me know, I will do everything I can to help.
Cabbage seems really powerful to make great VST, it would be perfect if they work in LMMS !Thanks in advance,
T0NIT0 RMX
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.
The post mentions that they tried the latest release candidate as well.
Reproduced (1.2.0-RC6, Windows 10 x64). Will investigate when I have time.
(I couldn't load the provided VST, but upon installing Cabbage and exporting a sample synth, the behaviour was exactly as described.)
Thanks a lot ! Yes, sorry, I forgot to include the .csd file that has to be in the same folder as the VST... I apologize for that.
And also, I found out that the VST settings are NOT saved with the project, which is an other problem. I'm not sure if it's related to LMMS or Cabbage, but I will also open an issue on Cabbage's forum to inform the dev about this problem !
@DomClark @SecondFlight I investigated. I found something in the pianoroll.cpp, in the testPlayNote method which is triggered when a user click on the pianoroll, it is used to preview the note.
When I commented the 3 last lines, Cabbage VTS's works perfectly.
I think there is an issue with the 2 midi events generated by this method, one with handleKeyPress, and the other with processInEvent (probably used by intruments that handle panning notes like 3xOSC).
but we can't just remove these lines because now the 3xOsc for example don't handle panning on preview when the user clicks on the pianoroll (with panning applied to the slider bellow the pianoroll)
Otherwise, during playback, everything is fine.
That's why I updated my post, because now I don't have all the needed knowledge to fix that cleanly, so maybe this will help you fix the bug the right way !
let me know if I can help in any way !
Thanks in advance,
void PianoRoll::testPlayNote( Note * n )
{
m_lastKey = n->key();
if( ! n->isPlaying() && ! m_recording )
{
n->setIsPlaying( true );
const int baseVelocity = m_pattern->instrumentTrack()->midiPort()->baseVelocity();
m_pattern->instrumentTrack()->pianoModel()->handleKeyPress( n->key(), n->midiVelocity( baseVelocity ) );
MidiEvent event( MidiMetaEvent, -1, n->key(), panningToMidi( n->getPanning() ) );
event.setMetaEvent( MidiNotePanning );
m_pattern->instrumentTrack()->processInEvent( event, 0 );
}
}
@T0NIT0RMX Thanks for investigation! It seems like Cabbage plays a note when receives custom MIDI meta event MidiNotePanning.
I think we shouldn't send that event to anywhere outside LMMS because this is a custom event. Sending custom one doesn't make sense because we can't expect how the event will be handled.
I think the real problem is the last 3 lines here. If so, I suggest removing this overridden function.
https://github.com/LMMS/lmms/blob/2f19fa11c886374adcc74990e52d3ed0473fbf08/src/core/NotePlayHandle.cpp#L180-L188
Alright @PhysSong I tried to remove the 3 lines you suggested (on 1.2-stable branch) and it works great, no more issues.
It doesn't broke the panning of the 3xosc because, if I understand, the Note::setPanning already triggers a Note event, is that right ?
It doesn't broke the panning of the 3xosc because, if I understand, the
Note::setPanningalready triggers a Note event, is that right ?
InstrumentTrack::processAudioBuffer already handles the note panning, so those 3 lines are not needed.
@PhysSong alright ! Should I submit a PR for this modification ? I've never done it before but I'd be glad to learn how to proceed !
Fixed in #4766.
Most helpful comment
Fixed in #4766.