Arpeggiator returns a sustained note
-
@Christoph-Hart and @d-healey is it possible put the Arpeggiator ResetButton action into the function onNoteOff() ?
-
That would be a fix on the wrong level - it sounds like a bug in the arp code.
Can you make a patch that reproduces the problem consistently?
-
@Christoph-Hart said in Arpeggiator returns a sustained note:
That would be a fix on the wrong level - it sounds like a bug in the arp code.
Can you make a patch that reproduces the problem consistently?Ok, I will do it.
-
@Christoph-Hart Well, I found where the Arpeggiator fails. When the LengthSliderPack note values are "100", the Arpeggiator returns sustained notes, if the value are below "100", everything work fine.
Arpege.7z -
I already noticed this problem. Already with hise 1.5 and 1.6
it depends on the created preset. I suspect the AHDSR. depending on the settings it does, or not.edit:
ok, not read the last message.
will try the length solution ;)
maybe scripting it to go up to 90/95 % max. So you won't hit the 100 % and having the problem anymore -
@staiff said in Arpeggiator returns a sustained note:
I already noticed this problem. Already with hise 1.5 and 1.6
it depends on the created preset. I suspect the AHDSR. depending on the settings it does, or not.edit:
ok, not read the last message.
will try the length solution ;)
maybe scripting it to go up to 90/95 % max. So you won't hit the 100 % and having the problem anymoreThat's a forced solution. I hope @Christoph-Hart will find the bug... probably it will stay inside the .h or .cpp code of Arpeggiator. ;)
-
@staiff I'm not sure that just only change in a lower value the .cpp:
lengthSliderPack->set("max", 100);
it works. Probably the section on .h is the point where Cristoph could find the bug:
...
bool curr_step_is_tied()
{
return getSliderValueWithoutDisplay(lengthSliderPack, currentStep) == 100.0f;
};bool next_step_will_be_tied() { int nextStep = incAndWrapValueFromZeroToMax(currentStep, stepSkipSlider->getValue(), lengthSliderPack->getNumSliders()); return getSliderValueWithoutDisplay(lengthSliderPack, nextStep) == 100.0f; }; bool curr_step_is_skip() { return getSliderValueWithoutDisplay(lengthSliderPack, currentStep) == 0.0f; }; bool next_step_will_be_skipped() { int nextStep = incAndWrapValueFromZeroToMax(currentStep, stepSkipSlider->getValue(), lengthSliderPack->getNumSliders()); return getSliderValueWithoutDisplay(lengthSliderPack, nextStep) == 0.0f; }; static float getSliderValueWithoutDisplay(ScriptingApi::Content::ScriptSliderPack* sp, int index) { auto array = sp->getSliderPackData()->getDataArray(); if (index < array.size()) return (float)array[index]; else { //jassertfalse; return 0.0f; } }
-
Actually the note length 100 indicates that the step should be tied (the previous note will continue to ring). The only problem was that the code that stops the tied notes was missing. Should be fixed now.
-
@Christoph-Hart said in Arpeggiator returns a sustained note:
Actually the note length 100 indicates that the step should be tied (the previous note will continue to ring). The only problem was that the code that stops the tied notes was missing. Should be fixed now.
I'm downloading the HISE-Master fixed now. Thank you @Christoph-Hart :)
-
This post is deleted! -
@Christoph-Hart said in Arpeggiator returns a sustained note:
Actually the note length 100 indicates that the step should be tied (the previous note will continue to ring). The only problem was that the code that stops the tied notes was missing. Should be fixed now.
Well, I compiled HISE standalone from the last code you made and the Arpeggiator bug is fixed! :) <3