View Issue Details

IDProjectCategoryView StatusLast Update
0002112ardourbugspublic2020-04-19 20:13
ReporterAlex Stone Assigned Tocth103  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Summary0002112: 1st note in midi track continues...
DescriptionIn a midi track, and regardless of which track or input, the first note continues to play past the note length. It also continues regardless of region length, unless another note of the same pitch is placed after it.
This could be a failure related to the the first note not receiving a note off signal.
In addition, the last note in a region suffers from the same effect, if the note finishes its duration right at the end of the region, again the note will continue to sound, and with no midi panic button or component (a global send all notes off) the programme needs restarting.
This happens in Ardour3 built from revision 3046.
TagsNo tags attached.

Activities

Alex Stone

2008-03-03 16:51

reporter   ~0004763

A further update to this. The above issue with no note offs at start is also present when i stop the playhead at a point in the region, then restart it. For example, if i have a g4 at the start of bar 2, and i stop the playhead just before it. When i hit play again, the g4 is treated as the new 'first' note, and is missing the note off to cut the signal at the end of the note length.

Alex Stone

2008-03-08 17:25

reporter   ~0004775

An added problem with this, is a hard lock of the programme, requiring a restart.

hansfbaier

2008-04-01 01:48

reporter   ~0004821

Here is the solution:

MidiModel::const_iterator&
MidiModel::const_iterator::operator=(const const_iterator& other)
{
    if (_locked && _model != other._model)
        _model->read_unlock();

    assert( ! other._event.owns_buffer());

    _model = other._model;
    _event = other._event;
        // This was missing ----v
    _active_notes = other._active_notes;
    _is_end = other._is_end;
    _locked = other._locked;
    _note_iter = other._note_iter;
    _control_iters = other._control_iters;
    _control_iter = other._control_iter;
    
    assert( ! _event.owns_buffer());

    return *this;
}

cth103

2009-09-02 21:57

administrator   ~0006629

It seems the code that Hans suggested patching has moved around a bit, but it looks like this was fixed. Is it still a problem?

cth103

2009-10-19 18:56

administrator   ~0006726

Assuming that this has been resolved; no feedback to the contrary.

system

2020-04-19 20:13

developer   ~0021650

Issue has been closed automatically, by Trigger Close Plugin.
Feel free to re-open with additional information if you think the issue is not resolved.

Issue History

Date Modified Username Field Change
2008-03-03 15:31 Alex Stone New Issue
2008-03-03 16:51 Alex Stone Note Added: 0004763
2008-03-08 17:25 Alex Stone Note Added: 0004775
2008-04-01 01:48 hansfbaier Note Added: 0004821
2009-09-02 21:57 cth103 Note Added: 0006629
2009-09-02 21:57 cth103 Status new => feedback
2009-10-19 18:56 cth103 cost => 0.00
2009-10-19 18:56 cth103 Note Added: 0006726
2009-10-19 18:56 cth103 Status feedback => resolved
2009-10-19 18:56 cth103 Resolution open => fixed
2009-10-19 18:56 cth103 Assigned To => cth103
2020-04-19 20:13 system Note Added: 0021650
2020-04-19 20:13 system Status resolved => closed